├── .gitignore
├── .idea
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
└── runConfigurations.xml
├── MagicShow
├── .gitignore
├── CMakeLists.txt
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── zero
│ │ └── magicshow
│ │ └── core
│ │ └── ApplicationTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── filter
│ │ │ ├── amaro_mask1.jpg
│ │ │ ├── amaro_mask2.jpg
│ │ │ ├── amaromap.png
│ │ │ ├── blackboard1024.png
│ │ │ ├── blend1.jpg
│ │ │ ├── bluevintage_mask1.jpg
│ │ │ ├── brannan_blowout.png
│ │ │ ├── brannan_contrast.png
│ │ │ ├── brannan_luma.png
│ │ │ ├── brannan_process.png
│ │ │ ├── brannan_screen.png
│ │ │ ├── brooklynCurves1.png
│ │ │ ├── brooklynCurves2.png
│ │ │ ├── calm_mask1.jpg
│ │ │ ├── calm_mask2.jpg
│ │ │ ├── earlybirdOverlayMap.png
│ │ │ ├── earlybirdblowout.png
│ │ │ ├── earlybirdcurves.png
│ │ │ ├── earlybirdmap.png
│ │ │ ├── earlybirdoverlaymap_new.png
│ │ │ ├── edgeburn.png
│ │ │ ├── fairy_tale.png
│ │ │ ├── filter_map_first.png
│ │ │ ├── flower_layer2c.jpg
│ │ │ ├── freud_rand.png
│ │ │ ├── healthy_mask_1.jpg
│ │ │ ├── hefegradientmap.png
│ │ │ ├── hefemap.png
│ │ │ ├── hefemetal.png
│ │ │ ├── hefesoftlight.png
│ │ │ ├── hudsonbackground.png
│ │ │ ├── hudsonmap.png
│ │ │ ├── inkwellmap.png
│ │ │ ├── kelvinmap.png
│ │ │ ├── line_layer_c.jpg
│ │ │ ├── lomomap_new.png
│ │ │ ├── lookup_amatorka_02.png
│ │ │ ├── lookup_highkey.png
│ │ │ ├── n1977blowout.png
│ │ │ ├── n1977map.png
│ │ │ ├── nashvillemap.png
│ │ │ ├── overlaymap.png
│ │ │ ├── pixar_curves.png
│ │ │ ├── rise_mask1.jpg
│ │ │ ├── rise_mask2.jpg
│ │ │ ├── risemap.png
│ │ │ ├── sierramap.png
│ │ │ ├── sierravignette.png
│ │ │ ├── softlight.png
│ │ │ ├── sutrocurves.png
│ │ │ ├── sutroedgeburn.png
│ │ │ ├── sutrometal.png
│ │ │ ├── toastercolorshift.png
│ │ │ ├── toastercurves.png
│ │ │ ├── toastermetal.png
│ │ │ ├── toasteroverlaymapwarm.png
│ │ │ ├── toastersoftlight.png
│ │ │ ├── toy_mask1.jpg
│ │ │ ├── toy_mask2.jpg
│ │ │ ├── toy_mask3.jpg
│ │ │ ├── valenciagradientmap.png
│ │ │ ├── valenciamap.png
│ │ │ ├── vignette_map.png
│ │ │ ├── vignettemap_new.png
│ │ │ ├── walden_map.png
│ │ │ ├── warm_layer1.jpg
│ │ │ └── xpromap.png
│ ├── cpp
│ │ ├── MagicJni.cpp
│ │ ├── beautify
│ │ │ ├── MagicBeautify.cpp
│ │ │ └── MagicBeautify.h
│ │ └── bitmap
│ │ │ ├── BitmapOperation.cpp
│ │ │ ├── BitmapOperation.h
│ │ │ ├── Conversion.cpp
│ │ │ ├── Conversion.h
│ │ │ └── JniBitmap.h
│ ├── java
│ │ └── com
│ │ │ └── zero
│ │ │ └── magicshow
│ │ │ ├── MagicShowManager.java
│ │ │ ├── activity
│ │ │ ├── AlbumActivity.java
│ │ │ └── CameraActivity.java
│ │ │ ├── adapter
│ │ │ └── FilterAdapter.java
│ │ │ ├── common
│ │ │ ├── base
│ │ │ │ ├── BaseActivity.java
│ │ │ │ └── MagicBaseView.java
│ │ │ ├── config
│ │ │ │ ├── CameraConfig.java
│ │ │ │ └── PathConfig.java
│ │ │ ├── entity
│ │ │ │ └── MagicShowResultEntity.java
│ │ │ ├── iface
│ │ │ │ ├── CameraShootCallBack.java
│ │ │ │ ├── DialogYesOrNoCallBack.java
│ │ │ │ ├── GravityCallBack.java
│ │ │ │ ├── ImageEditCallBack.java
│ │ │ │ └── MagicListener.java
│ │ │ └── utils
│ │ │ │ ├── BaseUtil.java
│ │ │ │ ├── CameraBitmapUtil.java
│ │ │ │ ├── CameraParamUtil.java
│ │ │ │ ├── Constants.java
│ │ │ │ ├── DateUtils.java
│ │ │ │ ├── FilterTypeHelper.java
│ │ │ │ ├── GravityUtil.java
│ │ │ │ ├── MagicParams.java
│ │ │ │ ├── OpenGlUtils.java
│ │ │ │ ├── Rotation.java
│ │ │ │ ├── RxBus.java
│ │ │ │ ├── SavePictureTask.java
│ │ │ │ ├── TextureRotationUtil.java
│ │ │ │ └── ZeroSubject.java
│ │ │ ├── core
│ │ │ ├── MagicEngine.java
│ │ │ ├── beautify
│ │ │ │ └── MagicJni.java
│ │ │ ├── camera
│ │ │ │ ├── CameraEngine.java
│ │ │ │ └── utils
│ │ │ │ │ ├── CameraInfo.java
│ │ │ │ │ └── CameraUtils.java
│ │ │ ├── encoder
│ │ │ │ ├── gles
│ │ │ │ │ ├── EglCore.java
│ │ │ │ │ └── EglSurfaceBase.java
│ │ │ │ └── video
│ │ │ │ │ ├── TextureMovieEncoder.java
│ │ │ │ │ ├── VideoEncoderCore.java
│ │ │ │ │ └── WindowSurface.java
│ │ │ ├── filter
│ │ │ │ ├── advanced
│ │ │ │ │ ├── MagicAmaroFilter.java
│ │ │ │ │ ├── MagicAntiqueFilter.java
│ │ │ │ │ ├── MagicBeautyFilter.java
│ │ │ │ │ ├── MagicBlackCatFilter.java
│ │ │ │ │ ├── MagicBrannanFilter.java
│ │ │ │ │ ├── MagicBrooklynFilter.java
│ │ │ │ │ ├── MagicCalmFilter.java
│ │ │ │ │ ├── MagicCoolFilter.java
│ │ │ │ │ ├── MagicCrayonFilter.java
│ │ │ │ │ ├── MagicEarlyBirdFilter.java
│ │ │ │ │ ├── MagicEmeraldFilter.java
│ │ │ │ │ ├── MagicEvergreenFilter.java
│ │ │ │ │ ├── MagicFairytaleFilter.java
│ │ │ │ │ ├── MagicFreudFilter.java
│ │ │ │ │ ├── MagicHealthyFilter.java
│ │ │ │ │ ├── MagicHefeFilter.java
│ │ │ │ │ ├── MagicHudsonFilter.java
│ │ │ │ │ ├── MagicImageAdjustFilter.java
│ │ │ │ │ ├── MagicInkwellFilter.java
│ │ │ │ │ ├── MagicKevinFilter.java
│ │ │ │ │ ├── MagicLatteFilter.java
│ │ │ │ │ ├── MagicLomoFilter.java
│ │ │ │ │ ├── MagicN1977Filter.java
│ │ │ │ │ ├── MagicNashvilleFilter.java
│ │ │ │ │ ├── MagicNostalgiaFilter.java
│ │ │ │ │ ├── MagicPixarFilter.java
│ │ │ │ │ ├── MagicRiseFilter.java
│ │ │ │ │ ├── MagicRomanceFilter.java
│ │ │ │ │ ├── MagicSakuraFilter.java
│ │ │ │ │ ├── MagicSierraFilter.java
│ │ │ │ │ ├── MagicSketchFilter.java
│ │ │ │ │ ├── MagicSkinWhitenFilter.java
│ │ │ │ │ ├── MagicSunriseFilter.java
│ │ │ │ │ ├── MagicSunsetFilter.java
│ │ │ │ │ ├── MagicSutroFilter.java
│ │ │ │ │ ├── MagicSweetsFilter.java
│ │ │ │ │ ├── MagicTenderFilter.java
│ │ │ │ │ ├── MagicToasterFilter.java
│ │ │ │ │ ├── MagicValenciaFilter.java
│ │ │ │ │ ├── MagicWaldenFilter.java
│ │ │ │ │ ├── MagicWarmFilter.java
│ │ │ │ │ ├── MagicWhiteCatFilter.java
│ │ │ │ │ └── MagicXproIIFilter.java
│ │ │ │ ├── base
│ │ │ │ │ ├── MagicBaseGroupFilter.java
│ │ │ │ │ ├── MagicCameraInputFilter.java
│ │ │ │ │ ├── MagicLookupFilter.java
│ │ │ │ │ └── gpuimage
│ │ │ │ │ │ ├── GPUImageBrightnessFilter.java
│ │ │ │ │ │ ├── GPUImageContrastFilter.java
│ │ │ │ │ │ ├── GPUImageExposureFilter.java
│ │ │ │ │ │ ├── GPUImageFilter.java
│ │ │ │ │ │ ├── GPUImageHueFilter.java
│ │ │ │ │ │ ├── GPUImageSaturationFilter.java
│ │ │ │ │ │ └── GPUImageSharpenFilter.java
│ │ │ │ └── utils
│ │ │ │ │ ├── MagicFilterFactory.java
│ │ │ │ │ └── MagicFilterType.java
│ │ │ └── widget
│ │ │ │ ├── BubbleSeekBar.java
│ │ │ │ ├── MagicCameraView.java
│ │ │ │ ├── MagicImageView.java
│ │ │ │ └── TwoLineSeekBar.java
│ │ │ ├── view
│ │ │ └── edit
│ │ │ │ ├── ImageEditFragment.java
│ │ │ │ ├── ImageEditManager.java
│ │ │ │ ├── adjust
│ │ │ │ └── ImageEditAdjustView.java
│ │ │ │ ├── beauty
│ │ │ │ └── ImageEditBeautyView.java
│ │ │ │ ├── filter
│ │ │ │ └── ImageEditFilterView.java
│ │ │ │ ├── iface
│ │ │ │ └── ImageEditNavListener.java
│ │ │ │ └── navigation
│ │ │ │ └── ImageEditNavigationView.java
│ │ │ └── viewmanager
│ │ │ └── CameraManager.java
│ ├── libs
│ │ └── zero.jar
│ └── res
│ │ ├── anim
│ │ ├── bottom_sliding_in.xml
│ │ └── bottom_sliding_out.xml
│ │ ├── color
│ │ ├── selector_image_back.xml
│ │ ├── selector_image_edit.xml
│ │ └── selector_image_edit_yellow.xml
│ │ ├── drawable-hdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ ├── button_take_pic_normal.png
│ │ ├── button_take_pic_pressed.png
│ │ ├── close_black_seq.png
│ │ ├── close_blue_round.png
│ │ ├── edit_bg_adjust_contrast.png
│ │ ├── edit_bg_adjust_contrast_press.png
│ │ ├── edit_bg_adjust_exposure.png
│ │ ├── edit_bg_adjust_exposure_press.png
│ │ ├── edit_bg_adjust_hdr.png
│ │ ├── edit_bg_adjust_hdr_press.png
│ │ ├── edit_bg_adjust_saturation.png
│ │ ├── edit_bg_adjust_saturation_press.png
│ │ ├── edit_bg_adjust_sharpness.png
│ │ ├── edit_bg_adjust_sharpness_press.png
│ │ ├── edit_bg_adjust_vibrance.png
│ │ ├── edit_bg_adjust_vibrance_press.png
│ │ ├── edit_bg_done.png
│ │ ├── edit_bg_done_disenable.png
│ │ ├── edit_bg_done_press.png
│ │ ├── edit_color_hue.png
│ │ ├── edit_color_hue_press.png
│ │ ├── i_adds.png
│ │ ├── i_adds_blue.png
│ │ ├── i_auto_beauty.png
│ │ ├── i_auto_beauty_pressed.png
│ │ ├── i_cosmesis.png
│ │ ├── i_cosmesis_blue.png
│ │ ├── i_edit.png
│ │ ├── i_edit_blue.png
│ │ ├── i_effect.png
│ │ ├── i_effect_blue.png
│ │ ├── i_frame.png
│ │ ├── i_frame_blue.png
│ │ ├── i_skinprocess.png
│ │ ├── i_skinprocess_pressed.png
│ │ ├── ic_camera_beauty.png
│ │ ├── ic_camera_beauty_pressed.png
│ │ ├── ic_camera_filter.png
│ │ ├── ic_collage_layout_filters_bar_close_normal.png
│ │ ├── ic_collage_layout_filters_bar_close_pressed.png
│ │ ├── ic_launcher.png
│ │ ├── ic_seekbar_smallsize_thumb_light_normal.png
│ │ ├── ic_seekbar_smallsize_thumb_light_pressed.png
│ │ ├── ic_seekbar_thumb_light_normal.png
│ │ ├── ic_seekbar_thumb_light_pressed.png
│ │ ├── ic_seekbar_thumb_normal.png
│ │ ├── ic_seekbar_thumb_pressed.png
│ │ ├── icon_camera.png
│ │ ├── icon_video.png
│ │ ├── image_edit_back.png
│ │ ├── image_edit_save.png
│ │ ├── mix_gallery_bottom_back_click.png
│ │ ├── mix_gallery_bottom_back_normal.png
│ │ ├── record_camera_switch_normal.png
│ │ ├── record_camera_switch_press.png
│ │ ├── seekbar_bg.9.png
│ │ ├── seekbar_bg_light.9.png
│ │ ├── seekbar_primary_progress.9.png
│ │ ├── seekbar_transparent_bg.9.png
│ │ └── tooltip_bg.9.png
│ │ ├── drawable-xxhdpi
│ │ ├── balance_lack_close_icon.png
│ │ ├── filter_thumb_1977.jpg
│ │ ├── filter_thumb_amoro.jpg
│ │ ├── filter_thumb_antique.png
│ │ ├── filter_thumb_beauty.png
│ │ ├── filter_thumb_blackcat.png
│ │ ├── filter_thumb_brannan.jpg
│ │ ├── filter_thumb_brooklyn.jpg
│ │ ├── filter_thumb_calm.png
│ │ ├── filter_thumb_cool.png
│ │ ├── filter_thumb_crayon.jpg
│ │ ├── filter_thumb_earlybird.jpg
│ │ ├── filter_thumb_emerald.png
│ │ ├── filter_thumb_evergreen.png
│ │ ├── filter_thumb_fairytale.png
│ │ ├── filter_thumb_freud.jpg
│ │ ├── filter_thumb_healthy.png
│ │ ├── filter_thumb_hefe.jpg
│ │ ├── filter_thumb_hudson.jpg
│ │ ├── filter_thumb_inkwell.jpg
│ │ ├── filter_thumb_kevin.jpg
│ │ ├── filter_thumb_latte.png
│ │ ├── filter_thumb_lomo.jpg
│ │ ├── filter_thumb_nashville.jpg
│ │ ├── filter_thumb_nostalgia.png
│ │ ├── filter_thumb_original.png
│ │ ├── filter_thumb_piaxr.jpg
│ │ ├── filter_thumb_rise.jpg
│ │ ├── filter_thumb_romance.png
│ │ ├── filter_thumb_sakura.png
│ │ ├── filter_thumb_sierra.jpg
│ │ ├── filter_thumb_sketch.png
│ │ ├── filter_thumb_sunrise.png
│ │ ├── filter_thumb_sunset.png
│ │ ├── filter_thumb_sutro.jpg
│ │ ├── filter_thumb_sweets.png
│ │ ├── filter_thumb_tender.png
│ │ ├── filter_thumb_toastero.jpg
│ │ ├── filter_thumb_valencia.jpg
│ │ ├── filter_thumb_walden.jpg
│ │ ├── filter_thumb_warm.png
│ │ ├── filter_thumb_whitecat.png
│ │ ├── filter_thumb_xpro.jpg
│ │ ├── ic_launcher.png
│ │ ├── image_edit_modify_close.png
│ │ ├── image_edit_modify_save.png
│ │ ├── take_filter_confirm_btn_skin_flat.png
│ │ ├── take_filter_favorite_btn01_layer00_skin_flat.png
│ │ ├── take_filter_favorite_btn01_layer01_skin_flat.png
│ │ ├── take_filter_favorite_btn02_skin_flat.png
│ │ ├── take_filter_favorite_icon01_skin_flat.png
│ │ ├── take_filter_favorite_icon02_skin_flat.png
│ │ ├── take_filter_random_btn_skin_flat.png
│ │ └── yes_or_no_dialog_line.9.png
│ │ ├── drawable
│ │ ├── btn_camera_beauty.xml
│ │ ├── btn_camera_filter.xml
│ │ ├── btn_camera_shutter.xml
│ │ ├── btn_layout_filters_bar_close.xml
│ │ ├── corners_yuanjiao_dialog.xml
│ │ ├── seekbar_progress.xml
│ │ ├── seekbar_progress_light.xml
│ │ ├── seekbar_thumb.xml
│ │ ├── seekbar_thumb_light.xml
│ │ ├── selector_filter_favorite_btn.xml
│ │ ├── selector_filter_selected.xml
│ │ ├── selector_image_adds.xml
│ │ ├── selector_image_back.xml
│ │ ├── selector_image_beauty.xml
│ │ ├── selector_image_edit.xml
│ │ ├── selector_image_edit_adjust_bright.xml
│ │ ├── selector_image_edit_adjust_contrast.xml
│ │ ├── selector_image_edit_adjust_exposure.xml
│ │ ├── selector_image_edit_adjust_hue.xml
│ │ ├── selector_image_edit_adjust_saturation.xml
│ │ ├── selector_image_edit_adjust_sharpness.xml
│ │ ├── selector_image_edit_adjust_vibrance.xml
│ │ ├── selector_image_filter.xml
│ │ ├── selector_image_fragment_skin.xml
│ │ ├── selector_image_frame.xml
│ │ ├── selector_image_save.xml
│ │ ├── selector_rewardcamera.xml
│ │ └── take_filter_favorite_btn.xml
│ │ ├── layout
│ │ ├── activity_camera.xml
│ │ ├── activity_image.xml
│ │ ├── activity_main.xml
│ │ ├── dialog_yes_or_no.xml
│ │ ├── filter_item_layout.xml
│ │ ├── filter_layout.xml
│ │ ├── fragment_image_edit_adjust.xml
│ │ ├── fragment_image_edit_beauty.xml
│ │ └── fragment_image_edit_filter.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── raw
│ │ ├── amaro.glsl
│ │ ├── antique.glsl
│ │ ├── beauty.glsl
│ │ ├── blackcat.glsl
│ │ ├── brannan.glsl
│ │ ├── brooklyn.glsl
│ │ ├── calm.glsl
│ │ ├── cool.glsl
│ │ ├── crayon.glsl
│ │ ├── default_fragment.glsl
│ │ ├── default_vertex.glsl
│ │ ├── earlybird.glsl
│ │ ├── emerald.glsl
│ │ ├── evergreen.glsl
│ │ ├── freud.glsl
│ │ ├── healthy.glsl
│ │ ├── hefe.glsl
│ │ ├── hudson.glsl
│ │ ├── inkwell.glsl
│ │ ├── kevin_new.glsl
│ │ ├── latte.glsl
│ │ ├── lomo.glsl
│ │ ├── n1977.glsl
│ │ ├── nashville.glsl
│ │ ├── nostalgia.glsl
│ │ ├── pixar.glsl
│ │ ├── rise.glsl
│ │ ├── romance.glsl
│ │ ├── sakura.glsl
│ │ ├── sierra.glsl
│ │ ├── sketch.glsl
│ │ ├── skinwhiten.glsl
│ │ ├── suger_tablets.glsl
│ │ ├── sunrise.glsl
│ │ ├── sunset.glsl
│ │ ├── sutro.glsl
│ │ ├── sweets.glsl
│ │ ├── tender.glsl
│ │ ├── toaster2_filter_shader.glsl
│ │ ├── valencia.glsl
│ │ ├── walden.glsl
│ │ ├── warm.glsl
│ │ ├── whitecat.glsl
│ │ └── xproii_filter_shader.glsl
│ │ ├── values-v11
│ │ └── styles.xml
│ │ ├── values-v14
│ │ └── styles.xml
│ │ ├── values-v21
│ │ └── styles.xml
│ │ ├── values-w820dp
│ │ └── dimens.xml
│ │ ├── values-zh-rCN
│ │ └── strings.xml
│ │ └── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── zero
│ └── magicshow
│ └── core
│ └── ExampleUnitTest.java
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── zero
│ │ └── magicshow
│ │ └── ApplicationTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── dark.jpg
│ ├── java
│ │ └── com
│ │ │ └── zero
│ │ │ └── magicshowsim
│ │ │ └── MainActivity.java
│ └── res
│ │ ├── anim
│ │ ├── bottom_sliding_in.xml
│ │ └── bottom_sliding_out.xml
│ │ ├── color
│ │ ├── selector_image_back.xml
│ │ ├── selector_image_edit.xml
│ │ └── selector_image_edit_yellow.xml
│ │ ├── drawable-hdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── values-v11
│ │ └── styles.xml
│ │ ├── values-v14
│ │ └── styles.xml
│ │ ├── values-v21
│ │ └── styles.xml
│ │ ├── values-w820dp
│ │ └── dimens.xml
│ │ ├── values-zh-rCN
│ │ └── strings.xml
│ │ └── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── zero
│ └── magicshow
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── tools
└── versions_configuration.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | MagicShow/.externalNativeBuild
10 | .idea/*
11 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/MagicShow/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/MagicShow/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # For more information about using CMake with Android Studio, read the
2 | # documentation: https://d.android.com/studio/projects/add-native-code.html
3 |
4 | # Sets the minimum version of CMake required to build the native library.
5 |
6 | cmake_minimum_required(VERSION 3.4.1)
7 |
8 | #C 的编译选项是 CMAKE_C_FLAGS
9 | # 指定编译参数,可选
10 |
11 | # SET(CMAKE_CXX_FLAGS "-Wno-error=format-security -Wno-error=pointer-sign")
12 |
13 | # Creates and names a library, sets it as either STATIC
14 | # or SHARED, and provides the relative paths to its source code.
15 | # You can define multiple libraries, and CMake builds them for you.
16 | # Gradle automatically packages shared libraries with your APK.
17 |
18 | add_library( # Sets the name of the library.
19 | MagicJni
20 |
21 | # Sets the library as a shared library.
22 | SHARED
23 |
24 | # Provides a relative path to your source file(s).
25 | src/main/cpp/beautify/MagicBeautify.cpp
26 | src/main/cpp/bitmap/BitmapOperation.cpp
27 | src/main/cpp/bitmap/Conversion.cpp
28 | src/main/cpp/MagicJni.cpp
29 | )
30 |
31 | target_link_libraries( MagicJni
32 | log )
33 |
34 | # Searches for a specified prebuilt library and stores the path as a
35 | # variable. Because CMake includes system libraries in the search path by
36 | # default, you only need to specify the name of the public NDK library
37 | # you want to add. CMake verifies that the library exists before
38 | # completing its build.
39 |
40 | find_library( # Sets the name of the path variable.
41 | log-lib
42 |
43 | # Specifies the name of the NDK library that
44 | # you want CMake to locate.
45 | log )
46 |
47 | # Specifies libraries CMake should link to your target library. You
48 | # can link multiple libraries, such as libraries you define in this
49 | # build script, prebuilt third-party libraries, or system libraries.
50 | # 设置生成的so动态库最后输出的路径
51 |
52 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})
53 |
54 | target_link_libraries( # Specifies the target library.
55 | MagicJni
56 | # Links the target library to the log library
57 | # included in the NDK.
58 | #加入该依赖库
59 | jnigraphics
60 | ${log-lib} )
--------------------------------------------------------------------------------
/MagicShow/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | //apply from: "$project.rootDir/tools/versions_configuration.gradle"
3 | // JitPack Maven
4 | apply plugin: 'com.github.dcendents.android-maven'
5 | // Your Group
6 | group='com.github.zerochl'
7 | android {
8 | compileSdkVersion 28
9 | buildToolsVersion "28.0.0"
10 |
11 | defaultConfig {
12 | minSdkVersion 18
13 | targetSdkVersion 28
14 | versionCode 1
15 | versionName "1.0"
16 | externalNativeBuild {
17 | cmake {
18 | cppFlags "-std=c++11"
19 | // cppFlags "-DANDROID_NDK","-D_DEBUG"
20 | }
21 | }
22 | ndk{
23 | moduleName "MagicJni"
24 | abiFilters "armeabi-v7a","arm64-v8a","x86","x86_64"
25 | // stl = "stlport_static"
26 | }
27 | }
28 |
29 | lintOptions {
30 | abortOnError false
31 | }
32 | externalNativeBuild {
33 | cmake {
34 | path "CMakeLists.txt"
35 | }
36 | }
37 | sourceSets{
38 | main{
39 | jniLibs.srcDirs = ['src/main/jniLibs']
40 | }
41 | }
42 |
43 | buildTypes {
44 | release {
45 | minifyEnabled = false
46 | proguardFiles.add(file('proguard-rules.txt'))
47 | }
48 | }
49 | }
50 |
51 |
52 | dependencies {
53 | api fileTree(include: ['*.jar'], dir: 'libs')
54 | testImplementation 'junit:junit:4.12'
55 | api files('src/main/libs/zero.jar')
56 | api "com.android.support:design:27.1.1"
57 | api "com.android.support:appcompat-v7:27.1.1"
58 | api 'io.reactivex:rxjava:latest.integration'
59 | api 'io.reactivex:rxandroid:latest.integration'
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/MagicShow/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\android-sdk-windows/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/MagicShow/src/androidTest/java/com/zero/magicshow/core/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/amaro_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/amaro_mask1.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/amaro_mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/amaro_mask2.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/amaromap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/amaromap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/blackboard1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/blackboard1024.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/blend1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/blend1.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/bluevintage_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/bluevintage_mask1.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/brannan_blowout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/brannan_blowout.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/brannan_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/brannan_contrast.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/brannan_luma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/brannan_luma.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/brannan_process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/brannan_process.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/brannan_screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/brannan_screen.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/brooklynCurves1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/brooklynCurves1.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/brooklynCurves2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/brooklynCurves2.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/calm_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/calm_mask1.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/calm_mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/calm_mask2.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/earlybirdOverlayMap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/earlybirdOverlayMap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/earlybirdblowout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/earlybirdblowout.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/earlybirdcurves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/earlybirdcurves.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/earlybirdmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/earlybirdmap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/earlybirdoverlaymap_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/earlybirdoverlaymap_new.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/edgeburn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/edgeburn.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/fairy_tale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/fairy_tale.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/filter_map_first.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/filter_map_first.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/flower_layer2c.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/flower_layer2c.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/freud_rand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/freud_rand.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/healthy_mask_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/healthy_mask_1.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/hefegradientmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/hefegradientmap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/hefemap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/hefemap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/hefemetal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/hefemetal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/hefesoftlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/hefesoftlight.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/hudsonbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/hudsonbackground.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/hudsonmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/hudsonmap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/inkwellmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/inkwellmap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/kelvinmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/kelvinmap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/line_layer_c.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/line_layer_c.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/lomomap_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/lomomap_new.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/lookup_amatorka_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/lookup_amatorka_02.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/lookup_highkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/lookup_highkey.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/n1977blowout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/n1977blowout.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/n1977map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/n1977map.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/nashvillemap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/nashvillemap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/overlaymap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/overlaymap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/pixar_curves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/pixar_curves.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/rise_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/rise_mask1.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/rise_mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/rise_mask2.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/risemap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/risemap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/sierramap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/sierramap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/sierravignette.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/sierravignette.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/softlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/softlight.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/sutrocurves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/sutrocurves.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/sutroedgeburn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/sutroedgeburn.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/sutrometal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/sutrometal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/toastercolorshift.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/toastercolorshift.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/toastercurves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/toastercurves.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/toastermetal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/toastermetal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/toasteroverlaymapwarm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/toasteroverlaymapwarm.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/toastersoftlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/toastersoftlight.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/toy_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/toy_mask1.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/toy_mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/toy_mask2.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/toy_mask3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/toy_mask3.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/valenciagradientmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/valenciagradientmap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/valenciamap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/valenciamap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/vignette_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/vignette_map.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/vignettemap_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/vignettemap_new.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/walden_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/walden_map.png
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/warm_layer1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/warm_layer1.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/assets/filter/xpromap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/assets/filter/xpromap.png
--------------------------------------------------------------------------------
/MagicShow/src/main/cpp/beautify/MagicBeautify.h:
--------------------------------------------------------------------------------
1 | #ifndef _MAGIC_BEAUTIFY_H_
2 | #define _MAGIC_BEAUTIFY_H_
3 |
4 | #include "../bitmap/JniBitmap.h"
5 |
6 | class MagicBeautify
7 | {
8 | public:
9 | void initMagicBeautify(JniBitmap* jniBitmap);
10 | void unInitMagicBeautify();
11 |
12 | void startSkinSmooth(float smoothlevel);
13 | void startWhiteSkin(float whitenlevel);
14 |
15 | static MagicBeautify* getInstance();
16 | ~MagicBeautify();
17 |
18 | static void* _startWhiteSkinAsync(void* args);
19 | private:
20 | static MagicBeautify * instance;
21 | MagicBeautify();
22 |
23 | uint64_t *mIntegralMatrix;
24 | uint64_t *mIntegralMatrixSqr;
25 |
26 | uint32_t *storedBitmapPixels;
27 | uint32_t *mImageData_rgb;
28 |
29 | uint8_t *mImageData_yuv;
30 | uint8_t *mSkinMatrix;
31 |
32 | int mImageWidth;
33 | int mImageHeight;
34 | float mSmoothLevel;
35 | float mWhitenLevel;
36 |
37 | void initIntegral();
38 |
39 | void initSkinMatrix();
40 |
41 | void _startBeauty(float smoothlevel, float whitenlevel);
42 | void _startSkinSmooth(float smoothlevel);
43 | void _startWhiteSkin(float whitenlevel);
44 | };
45 | #endif
46 |
--------------------------------------------------------------------------------
/MagicShow/src/main/cpp/bitmap/BitmapOperation.h:
--------------------------------------------------------------------------------
1 | #ifndef _BITMAP_OPERATION_H_
2 | #define _BITMAP_OPERATION_H_
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include "JniBitmap.h"
11 |
12 | class BitmapOperation
13 | {
14 | public:
15 |
16 | static int32_t convertArgbToInt(ARGB argb);
17 | static void convertIntToArgb(uint32_t pixel, ARGB* argb);
18 |
19 | static jobject jniStoreBitmapData(
20 | JNIEnv * env, jobject obj, jobject bitmap);
21 | static void jniFreeBitmapData(
22 | JNIEnv * env, jobject obj, jobject handle);
23 | static jobject jniGetBitmapFromStoredBitmapData(
24 | JNIEnv * env, jobject obj, jobject handle);
25 | };
26 | #endif
27 |
--------------------------------------------------------------------------------
/MagicShow/src/main/cpp/bitmap/Conversion.cpp:
--------------------------------------------------------------------------------
1 | #include "Conversion.h"
2 |
3 | void Conversion::YCbCrToRGB(uint8_t* From, uint8_t* To, int length)
4 | {
5 | if (length < 1) return;
6 | int Red, Green, Blue;
7 | int Y, Cb, Cr;
8 | int i,offset;
9 | for(i = 0; i < length; i++)
10 | {
11 | offset = (i << 1) + i;
12 | Y = From[offset]; Cb = From[offset+1] - 128; Cr = From[offset+2] - 128;
13 | Red = Y + ((RGBRCrI * Cr + HalfShiftValue) >> Shift);
14 | Green = Y + ((RGBGCbI * Cb + RGBGCrI * Cr + HalfShiftValue) >> Shift);
15 | Blue = Y + ((RGBBCbI * Cb + HalfShiftValue) >> Shift);
16 | if (Red > 255) Red = 255; else if (Red < 0) Red = 0;
17 | if (Green > 255) Green = 255; else if (Green < 0) Green = 0;
18 | if (Blue > 255) Blue = 255; else if (Blue < 0) Blue = 0;
19 | offset = i << 2;
20 | To[offset] = (uint8_t)Blue;
21 | To[offset+1] = (uint8_t)Green;
22 | To[offset+2] = (uint8_t)Red;
23 | To[offset+3] = 0xff;
24 | }
25 | }
26 |
27 | void Conversion::RGBToYCbCr(uint8_t* From, uint8_t* To, int length)
28 | {
29 | if (length < 1) return;
30 | int Red, Green, Blue;
31 | int i,offset;
32 | for(i = 0; i < length; i++)
33 | {
34 | offset = i << 2;
35 | Blue = From[offset]; Green = From[offset+1]; Red = From[offset+2];
36 | offset = (i << 1) + i;
37 | To[offset] = (uint8_t)((YCbCrYRI * Red + YCbCrYGI * Green + YCbCrYBI * Blue + HalfShiftValue) >> Shift);
38 | To[offset+1] = (uint8_t)(128 + ((YCbCrCbRI * Red + YCbCrCbGI * Green + YCbCrCbBI * Blue + HalfShiftValue) >> Shift));
39 | To[offset+2] = (uint8_t)(128 + ((YCbCrCrRI * Red + YCbCrCrGI * Green + YCbCrCrBI * Blue + HalfShiftValue) >> Shift));
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/MagicShow/src/main/cpp/bitmap/Conversion.h:
--------------------------------------------------------------------------------
1 | #ifndef _CONVERSION_H_
2 | #define _CONVERSION_H_
3 |
4 | #include
5 | #include
6 |
7 | const float YCbCrYRF = 0.299F;
8 | const float YCbCrYGF = 0.587F;
9 | const float YCbCrYBF = 0.114F;
10 | const float YCbCrCbRF = -0.168736F;
11 | const float YCbCrCbGF = -0.331264F;
12 | const float YCbCrCbBF = 0.500000F;
13 | const float YCbCrCrRF = 0.500000F;
14 | const float YCbCrCrGF = -0.418688F;
15 | const float YCbCrCrBF = -0.081312F;
16 |
17 | const float RGBRYF = 1.00000F;
18 | const float RGBRCbF = 0.0000F;
19 | const float RGBRCrF = 1.40200F;
20 | const float RGBGYF = 1.00000F;
21 | const float RGBGCbF = -0.34414F;
22 | const float RGBGCrF = -0.71414F;
23 | const float RGBBYF = 1.00000F;
24 | const float RGBBCbF = 1.77200F;
25 | const float RGBBCrF = 0.00000F;
26 |
27 | const int Shift = 20;
28 | const int HalfShiftValue = 1 << (Shift - 1);
29 |
30 | const int YCbCrYRI = (int)(YCbCrYRF * (1 << Shift) + 0.5);
31 | const int YCbCrYGI = (int)(YCbCrYGF * (1 << Shift) + 0.5);
32 | const int YCbCrYBI = (int)(YCbCrYBF * (1 << Shift) + 0.5);
33 | const int YCbCrCbRI = (int)(YCbCrCbRF * (1 << Shift) + 0.5);
34 | const int YCbCrCbGI = (int)(YCbCrCbGF * (1 << Shift) + 0.5);
35 | const int YCbCrCbBI = (int)(YCbCrCbBF * (1 << Shift) + 0.5);
36 | const int YCbCrCrRI = (int)(YCbCrCrRF * (1 << Shift) + 0.5);
37 | const int YCbCrCrGI = (int)(YCbCrCrGF * (1 << Shift) + 0.5);
38 | const int YCbCrCrBI = (int)(YCbCrCrBF * (1 << Shift) + 0.5);
39 |
40 | const int RGBRYI = (int)(RGBRYF * (1 << Shift) + 0.5);
41 | const int RGBRCbI = (int)(RGBRCbF * (1 << Shift) + 0.5);
42 | const int RGBRCrI = (int)(RGBRCrF * (1 << Shift) + 0.5);
43 | const int RGBGYI = (int)(RGBGYF * (1 << Shift) + 0.5);
44 | const int RGBGCbI = (int)(RGBGCbF * (1 << Shift) + 0.5);
45 | const int RGBGCrI = (int)(RGBGCrF * (1 << Shift) + 0.5);
46 | const int RGBBYI = (int)(RGBBYF * (1 << Shift) + 0.5);
47 | const int RGBBCbI = (int)(RGBBCbF * (1 << Shift) + 0.5);
48 | const int RGBBCrI = (int)(RGBBCrF * (1 << Shift) + 0.5);
49 |
50 | class Conversion
51 | {
52 | public:
53 | static void YCbCrToRGB(uint8_t* From, uint8_t* To, int Length);
54 | static void RGBToYCbCr(uint8_t* From, uint8_t* To, int Length);
55 | private:
56 |
57 | };
58 | #endif
59 |
--------------------------------------------------------------------------------
/MagicShow/src/main/cpp/bitmap/JniBitmap.h:
--------------------------------------------------------------------------------
1 | #ifndef _JNI_BITMAP_H_
2 | #define _JNI_BITMAP_H_
3 | #include
4 |
5 | typedef struct
6 | {
7 | uint8_t alpha, red, green, blue;
8 | } ARGB;
9 |
10 | class JniBitmap
11 | {
12 | public:
13 | uint32_t* _storedBitmapPixels;
14 | AndroidBitmapInfo _bitmapInfo;
15 | JniBitmap()
16 | {
17 | _storedBitmapPixels = NULL;
18 | }
19 | };
20 | #endif
21 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/base/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.base;
2 |
3 | import android.support.v4.app.FragmentActivity;
4 | import android.view.KeyEvent;
5 |
6 | /**
7 | * Created by hongli on 2017/8/22.
8 | */
9 |
10 | public abstract class BaseActivity extends FragmentActivity{
11 | protected void doFinishAction(){
12 | finish();
13 | }
14 | @Override
15 | public boolean onKeyDown(int keyCode, KeyEvent event) {
16 | if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
17 | doFinishAction();
18 | return true;
19 | }
20 | return super.onKeyDown(keyCode, event);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/config/CameraConfig.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.config;
2 |
3 | /**
4 | * Created by hongli on 2017/9/1.
5 | */
6 |
7 | public class CameraConfig {
8 |
9 | public static int orientation;
10 |
11 | public static int pictureWidth = 1280;
12 |
13 | public static int pictureHeight = 720;
14 |
15 | public static void setCameraConfig(int pictureWidth,int pictureHeight){
16 | CameraConfig.pictureWidth = pictureWidth;
17 | CameraConfig.pictureHeight = pictureHeight;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/config/PathConfig.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.config;
2 |
3 | import android.os.Environment;
4 |
5 | /**
6 | * Created by hongli on 2017/8/30.
7 | */
8 |
9 | public class PathConfig {
10 | private static String SD_DIRECTORY = "/Android/data/com.zero.lib/cache";
11 | private static String tempCache = Environment.getExternalStorageDirectory().getAbsolutePath() + SD_DIRECTORY;
12 | public static void setTempCache(String path){
13 | tempCache = path;
14 | }
15 |
16 | public static String getTempPath(){
17 | return tempCache;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/entity/MagicShowResultEntity.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.entity;
2 |
3 | /**
4 | * Created by hongli on 2017/8/31.
5 | */
6 |
7 | public class MagicShowResultEntity {
8 | private int resultCode;
9 | private String resultMsg;
10 | private String filePath;
11 | private int imageWidth;
12 | private int imageHeight;
13 | private int angle;
14 |
15 | public int getAngle() {
16 | return angle;
17 | }
18 |
19 | public void setAngle(int angle) {
20 | this.angle = angle;
21 | }
22 |
23 | public int getResultCode() {
24 | return resultCode;
25 | }
26 |
27 | public void setResultCode(int resultCode) {
28 | this.resultCode = resultCode;
29 | }
30 |
31 | public String getResultMsg() {
32 | return resultMsg;
33 | }
34 |
35 | public void setResultMsg(String resultMsg) {
36 | this.resultMsg = resultMsg;
37 | }
38 |
39 | public String getFilePath() {
40 | return filePath;
41 | }
42 |
43 | public void setFilePath(String filePath) {
44 | this.filePath = filePath;
45 | }
46 |
47 | public int getImageWidth() {
48 | return imageWidth;
49 | }
50 |
51 | public void setImageWidth(int imageWidth) {
52 | this.imageWidth = imageWidth;
53 | }
54 |
55 | public int getImageHeight() {
56 | return imageHeight;
57 | }
58 |
59 | public void setImageHeight(int imageHeight) {
60 | this.imageHeight = imageHeight;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/iface/CameraShootCallBack.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.iface;
2 |
3 | import com.zero.magicshow.common.entity.MagicShowResultEntity;
4 |
5 | /**
6 | * Created by hongli on 2017/9/1.
7 | */
8 |
9 | public interface CameraShootCallBack {
10 | public abstract void onCompentFinished(MagicShowResultEntity magicShowResultEntity);
11 | }
12 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/iface/DialogYesOrNoCallBack.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.iface;
2 |
3 | /**
4 | * Created by hongli on 2017/8/30.
5 | */
6 |
7 | public interface DialogYesOrNoCallBack {
8 | public void onYesClick();
9 | public void onNoClick();
10 | }
11 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/iface/GravityCallBack.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.iface;
2 |
3 | /**
4 | * Created by hongli on 2017/9/1.
5 | */
6 |
7 | public interface GravityCallBack {
8 | public void onGravityChange(int direction);
9 | }
10 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/iface/ImageEditCallBack.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.iface;
2 |
3 | import com.zero.magicshow.common.entity.MagicShowResultEntity;
4 |
5 | /**
6 | * Created by hongli on 2017/8/31.
7 | */
8 |
9 | public interface ImageEditCallBack {
10 | public abstract void onCompentFinished(MagicShowResultEntity magicShowResultEntity);
11 | }
12 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/iface/MagicListener.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.iface;
2 |
3 | /**
4 | * Created by hongli on 2017/8/23.
5 | */
6 |
7 | public interface MagicListener {
8 | public void onEnd();
9 | }
10 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/utils/CameraBitmapUtil.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.utils;
2 |
3 | import android.app.Activity;
4 | import android.graphics.Bitmap;
5 | import android.graphics.Matrix;
6 | import android.hardware.Camera;
7 | import android.view.Surface;
8 |
9 | /**
10 | * Created by hongli on 2017/12/14.
11 | */
12 |
13 | public class CameraBitmapUtil {
14 |
15 | public static Bitmap handlerCameraBitmap(Activity activity, Bitmap takeBitmap,int cameraId) {
16 | Matrix matrix = new Matrix();
17 | matrix.postRotate(getCameraDisplayOrientation(activity, cameraId));
18 | matrix.postScale(1, cameraId == 1 ? -1 : 1);
19 | Bitmap cropRotateScaled = Bitmap.createBitmap(takeBitmap, 0, 0, takeBitmap.getWidth(), takeBitmap.getHeight(), matrix, true);
20 | if (cropRotateScaled != takeBitmap) {
21 | takeBitmap.recycle();
22 | }
23 | return cropRotateScaled;
24 | }
25 |
26 | public static int getCameraDisplayOrientation(Activity activity,int cameraId) {
27 | int result = 90;
28 | try {
29 | android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
30 | android.hardware.Camera.getCameraInfo(cameraId, info);
31 | int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
32 | int degrees = 0;
33 | switch (rotation) {
34 | case Surface.ROTATION_0:
35 | degrees = 0;
36 | break;
37 | case Surface.ROTATION_90:
38 | degrees = 90;
39 | break;
40 | case Surface.ROTATION_180:
41 | degrees = 180;
42 | break;
43 | case Surface.ROTATION_270:
44 | degrees = 270;
45 | break;
46 | }
47 |
48 | if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
49 | result = (info.orientation + degrees) % 360;
50 | result = (360 - result) % 360; // compensate the mirror
51 | } else { // back-facing
52 | result = (info.orientation - degrees + 360) % 360;
53 | }
54 | } catch (Exception e) {
55 | e.printStackTrace();
56 | }
57 | return result;
58 |
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/utils/DateUtils.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.utils;
2 |
3 | import com.zero.zerolib.util.DateUtil;
4 |
5 | import java.text.SimpleDateFormat;
6 | import java.util.Date;
7 |
8 | /**
9 | * Created by hongli on 2017/8/30.
10 | */
11 |
12 | public class DateUtils extends DateUtil{
13 | /**
14 | * 获取时间戳
15 | * @return 20180521172011
16 | */
17 | public static String getTimeStamp(){
18 | SimpleDateFormat sim = new SimpleDateFormat("yyyyMMddHHmmss");
19 | try {
20 | return sim.format(new Date());
21 | }catch(Exception e){
22 | e.printStackTrace();
23 | }
24 | return "";
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/utils/MagicParams.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.utils;
2 |
3 | import android.content.Context;
4 | import android.os.Environment;
5 |
6 | import com.zero.magicshow.common.base.MagicBaseView;
7 |
8 | /**
9 | * Created by why8222 on 2016/2/26.
10 | */
11 | public class MagicParams {
12 | public static Context context;
13 | public static MagicBaseView magicBaseView;
14 |
15 | public static String videoPath = Environment.getExternalStorageDirectory().getPath();
16 | public static String videoName = "MagicCamera_test.mp4";
17 |
18 | public static int beautyLevel = 0;
19 |
20 | public MagicParams() {
21 |
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/utils/Rotation.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2012 CyberAgent
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.zero.magicshow.common.utils;
18 |
19 | public enum Rotation {
20 | NORMAL, ROTATION_90, ROTATION_180, ROTATION_270;
21 |
22 | /**
23 | * Retrieves the int representation of the Rotation.
24 | *
25 | * @return 0, 90, 180 or 270
26 | */
27 | public int asInt() {
28 | switch (this) {
29 | case NORMAL: return 0;
30 | case ROTATION_90: return 90;
31 | case ROTATION_180: return 180;
32 | case ROTATION_270: return 270;
33 | default: throw new IllegalStateException("Unknown Rotation!");
34 | }
35 | }
36 |
37 | /**
38 | * Create a Rotation from an integer. Needs to be either 0, 90, 180 or 270.
39 | *
40 | * @param rotation 0, 90, 180 or 270
41 | * @return Rotation object
42 | */
43 | public static Rotation fromInt(int rotation) {
44 | switch (rotation) {
45 | case 0: return NORMAL;
46 | case 90: return ROTATION_90;
47 | case 180: return ROTATION_180;
48 | case 270: return ROTATION_270;
49 | case 360: return NORMAL;
50 | default: throw new IllegalStateException(
51 | rotation + " is an unknown rotation. Needs to be either 0, 90, 180 or 270!");
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/utils/SavePictureTask.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.utils;
2 |
3 | import android.graphics.Bitmap;
4 | import android.os.AsyncTask;
5 |
6 | import com.zero.magicshow.common.entity.MagicShowResultEntity;
7 |
8 | import java.io.File;
9 | import java.io.FileNotFoundException;
10 | import java.io.FileOutputStream;
11 | import java.io.IOException;
12 |
13 | public class SavePictureTask extends AsyncTask{
14 |
15 | private OnPictureSaveListener onPictureSaveListener;
16 | private File file;
17 |
18 | public SavePictureTask(File file, OnPictureSaveListener listener){
19 | this.onPictureSaveListener = listener;
20 | this.file = file;
21 | }
22 |
23 | @Override
24 | protected void onPreExecute() {
25 | super.onPreExecute();
26 | }
27 |
28 | @Override
29 | protected void onPostExecute(final MagicShowResultEntity result) {
30 | if(result != null){
31 | if (onPictureSaveListener != null){
32 | onPictureSaveListener.onSaved(result);
33 | }
34 | // BaseUtil.scanFile(result);
35 | }
36 | }
37 |
38 | @Override
39 | protected MagicShowResultEntity doInBackground(Bitmap... params) {
40 | if(file == null)
41 | return null;
42 | MagicShowResultEntity resultEntity = new MagicShowResultEntity();
43 | resultEntity.setAngle(params[0].getHeight() > params[0].getWidth() ? 90 : 0);
44 | resultEntity.setFilePath(saveBitmap(params[0]));
45 | return resultEntity;
46 | }
47 |
48 | private String saveBitmap(Bitmap bitmap) {
49 | if (file.exists()) {
50 | file.delete();
51 | }
52 | try {
53 | // Log.e("HongLi","bitmap degree:" + bitmap.getConfig());
54 | FileOutputStream out = new FileOutputStream(file);
55 | bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
56 | out.flush();
57 | out.close();
58 | bitmap.recycle();
59 | return file.toString();
60 | } catch (FileNotFoundException e) {
61 | e.printStackTrace();
62 | } catch (IOException e) {
63 | e.printStackTrace();
64 | }
65 | return null;
66 | }
67 |
68 | public interface OnPictureSaveListener{
69 | void onSaved(MagicShowResultEntity resultEntity);
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/common/utils/ZeroSubject.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.common.utils;
2 |
3 | import rx.functions.Action1;
4 | import rx.subjects.Subject;
5 |
6 | /**
7 | * Created by hongli on 2017/8/31.
8 | */
9 |
10 | public class ZeroSubject{
11 | private int actionType;
12 | private Subject subject;
13 | private Action1 action;
14 | public ZeroSubject(Subject subject, int actionType, Action1 action) {
15 | this.actionType = actionType;
16 | this.subject = subject;
17 | this.action = action;
18 | }
19 |
20 | public int getActionType(){
21 | return actionType;
22 | }
23 |
24 | public Subject getSubject(){
25 | return subject;
26 | }
27 |
28 | public Action1 getAction() {
29 | return action;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/beautify/MagicJni.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.beautify;
2 |
3 | import android.graphics.Bitmap;
4 |
5 | import java.nio.ByteBuffer;
6 |
7 | /**
8 | * Created by why8222 on 2016/2/29.
9 | */
10 | public class MagicJni {
11 | static{
12 | System.loadLibrary("MagicJni");
13 | }
14 | //初始化
15 | public static native void jniInitMagicBeautify(ByteBuffer handler);
16 | public static native void jniUnInitMagicBeautify();
17 | //局部均方差磨皮
18 | public static native void jniStartSkinSmooth(float denoiseLevel);
19 | //log曲线美白
20 | public static native void jniStartWhiteSkin(float whitenLevel);
21 | //Bitmap操作
22 | public static native ByteBuffer jniStoreBitmapData(Bitmap bitmap);
23 | public static native void jniFreeBitmapData(ByteBuffer handler);
24 | public static native Bitmap jniGetBitmapFromStoredBitmapData(ByteBuffer handler);
25 | }
26 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/camera/utils/CameraInfo.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.camera.utils;
2 |
3 | /**
4 | * Created by why8222 on 2016/2/25.
5 | */
6 | public class CameraInfo {
7 |
8 | public int previewWidth;
9 |
10 | public int previewHeight;
11 |
12 | public int orientation;
13 |
14 | public boolean isFront;
15 |
16 | public int pictureWidth;
17 |
18 | public int pictureHeight;
19 | }
20 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/camera/utils/CameraUtils.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.camera.utils;
2 |
3 | import android.hardware.Camera;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * Created by why8222 on 2016/2/25.
9 | */
10 | public class CameraUtils {
11 |
12 | public static Camera.Size getLargePictureSize(Camera camera){
13 | if(camera != null){
14 | List sizes = camera.getParameters().getSupportedPictureSizes();
15 | Camera.Size temp = sizes.get(0);
16 | for(int i = 1;i < sizes.size();i ++){
17 | float scale = (float)(sizes.get(i).height) / sizes.get(i).width;
18 | if(temp.width < sizes.get(i).width && scale < 0.6f && scale > 0.5f)
19 | temp = sizes.get(i);
20 | }
21 | return temp;
22 | }
23 | return null;
24 | }
25 |
26 | public static Camera.Size getLargePreviewSize(Camera camera){
27 | if(camera != null){
28 | List sizes = camera.getParameters().getSupportedPreviewSizes();
29 | Camera.Size temp = sizes.get(0);
30 | for(int i = 1;i < sizes.size();i ++){
31 | if(temp.width < sizes.get(i).width)
32 | temp = sizes.get(i);
33 | }
34 | return temp;
35 | }
36 | return null;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicBeautyFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | /**
11 | * Created by Administrator on 2016/5/22.
12 | */
13 | public class MagicBeautyFilter extends GPUImageFilter{
14 | private int mSingleStepOffsetLocation;
15 | private int mParamsLocation;
16 |
17 | public MagicBeautyFilter(){
18 | super(NO_FILTER_VERTEX_SHADER ,
19 | OpenGlUtils.readShaderFromRawResource(R.raw.beauty));
20 | }
21 |
22 | protected void onInit() {
23 | super.onInit();
24 | mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset");
25 | mParamsLocation = GLES20.glGetUniformLocation(getProgram(), "params");
26 | setBeautyLevel(MagicParams.beautyLevel);
27 | }
28 |
29 | private void setTexelSize(final float w, final float h) {
30 | setFloatVec2(mSingleStepOffsetLocation, new float[] {2.0f / w, 2.0f / h});
31 | }
32 |
33 | @Override
34 | public void onInputSizeChanged(final int width, final int height) {
35 | super.onInputSizeChanged(width, height);
36 | setTexelSize(width, height);
37 | }
38 |
39 | public void setBeautyLevel(int level){
40 | switch (level) {
41 | case 1:
42 | setFloat(mParamsLocation, 1.0f);
43 | break;
44 | case 2:
45 | setFloat(mParamsLocation, 0.8f);
46 | break;
47 | case 3:
48 | setFloat(mParamsLocation,0.6f);
49 | break;
50 | case 4:
51 | setFloat(mParamsLocation, 0.4f);
52 | break;
53 | case 5:
54 | setFloat(mParamsLocation,0.33f);
55 | break;
56 | default:
57 | setFloat(mParamsLocation,0.0f);
58 | break;
59 | }
60 | }
61 |
62 | public void onBeautyLevelChanged(){
63 | setBeautyLevel(MagicParams.beautyLevel);
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicCrayonFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.OpenGlUtils;
8 |
9 | public class MagicCrayonFilter extends GPUImageFilter{
10 |
11 | private int mSingleStepOffsetLocation;
12 | //1.0 - 5.0
13 | private int mStrengthLocation;
14 |
15 | public MagicCrayonFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.crayon));
17 | }
18 |
19 | protected void onInit() {
20 | super.onInit();
21 | mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset");
22 | mStrengthLocation = GLES20.glGetUniformLocation(getProgram(), "strength");
23 | setFloat(mStrengthLocation, 2.0f);
24 | }
25 |
26 | protected void onDestroy() {
27 | super.onDestroy();
28 | }
29 |
30 | protected void onInitialized(){
31 | super.onInitialized();
32 | setFloat(mStrengthLocation, 0.5f);
33 | }
34 |
35 | private void setTexelSize(final float w, final float h) {
36 | setFloatVec2(mSingleStepOffsetLocation, new float[] {1.0f / w, 1.0f / h});
37 | }
38 |
39 | @Override
40 | public void onInputSizeChanged(final int width, final int height) {
41 | super.onInputSizeChanged(width, height);
42 | setTexelSize(width, height);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicFairytaleFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import com.zero.magicshow.core.filter.base.MagicLookupFilter;
4 |
5 | public class MagicFairytaleFilter extends MagicLookupFilter{
6 |
7 | public MagicFairytaleFilter() {
8 | super("filter/fairy_tale.png");
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicInkwellFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicInkwellFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1};
12 | private int[] inputTextureUniformLocations = {-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicInkwellFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.inkwell));
17 | }
18 |
19 | public void onDestroy() {
20 | super.onDestroy();
21 | GLES20.glDeleteTextures(1, inputTextureHandles, 0);
22 | for(int i = 0; i < inputTextureHandles.length; i++)
23 | inputTextureHandles[i] = -1;
24 | }
25 |
26 | protected void onDrawArraysAfter(){
27 | for(int i = 0; i < inputTextureHandles.length
28 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
29 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
30 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
32 | }
33 | }
34 |
35 | protected void onDrawArraysPre(){
36 | for(int i = 0; i < inputTextureHandles.length
37 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
38 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
39 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
40 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
41 | }
42 | }
43 |
44 | protected void onInit(){
45 | super.onInit();
46 | for(int i=0; i < inputTextureUniformLocations.length; i++)
47 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
48 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
49 | "strength");
50 | }
51 |
52 | protected void onInitialized(){
53 | super.onInitialized();
54 | setFloat(mGLStrengthLocation, 1.0f);
55 | runOnDraw(new Runnable(){
56 | public void run(){
57 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/inkwellmap.png");
58 | }
59 | });
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicKevinFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicKevinFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1};
12 | private int[] inputTextureUniformLocations = {-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicKevinFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.kevin_new));
17 | }
18 |
19 | protected void onDestroy() {
20 | super.onDestroy();
21 | GLES20.glDeleteTextures(1, inputTextureHandles, 0);
22 | for(int i = 0; i < inputTextureHandles.length; i++)
23 | inputTextureHandles[i] = -1;
24 | }
25 |
26 | protected void onDrawArraysAfter(){
27 | for(int i = 0; i < inputTextureHandles.length
28 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
29 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
30 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
32 | }
33 | }
34 |
35 | protected void onDrawArraysPre(){
36 | for(int i = 0; i < inputTextureHandles.length
37 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
38 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
39 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
40 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
41 | }
42 | }
43 |
44 | protected void onInit(){
45 | super.onInit();
46 | for(int i=0; i < inputTextureUniformLocations.length; i++)
47 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
48 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
49 | "strength");
50 | }
51 |
52 | protected void onInitialized(){
53 | super.onInitialized();
54 | setFloat(mGLStrengthLocation, 1.0f);
55 | runOnDraw(new Runnable(){
56 | public void run(){
57 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/kelvinmap.png");
58 | }
59 | });
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicLomoFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicLomoFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1,-1};
12 | private int[] inputTextureUniformLocations = {-1,-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicLomoFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.lomo));
17 | }
18 |
19 | protected void onDestroy() {
20 | super.onDestroy();
21 | GLES20.glDeleteTextures(inputTextureHandles.length, inputTextureHandles, 0);
22 | for(int i = 0; i < inputTextureHandles.length; i++)
23 | inputTextureHandles[i] = -1;
24 | }
25 |
26 | protected void onDrawArraysAfter(){
27 | for(int i = 0; i < inputTextureHandles.length
28 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
29 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
30 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
32 | }
33 | }
34 |
35 | protected void onDrawArraysPre(){
36 | for(int i = 0; i < inputTextureHandles.length
37 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
38 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
39 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
40 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
41 | }
42 | }
43 |
44 | protected void onInit(){
45 | super.onInit();
46 | for(int i=0; i < inputTextureUniformLocations.length; i++)
47 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
48 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
49 | "strength");
50 | }
51 |
52 | protected void onInitialized(){
53 | super.onInitialized();
54 | setFloat(mGLStrengthLocation, 1.0f);
55 | runOnDraw(new Runnable(){
56 | public void run(){
57 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/lomomap_new.png");
58 | inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicParams.context, "filter/vignette_map.png");
59 | }
60 | });
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicN1977Filter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicN1977Filter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1,-1};
12 | private int[] inputTextureUniformLocations = {-1,-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicN1977Filter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.n1977));
17 | }
18 |
19 | protected void onDrawArraysAfter(){
20 | for(int i = 0; i < inputTextureHandles.length
21 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
22 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
23 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
24 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
25 | }
26 | }
27 |
28 | protected void onDrawArraysPre(){
29 | for(int i = 0; i < inputTextureHandles.length
30 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
32 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
33 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
34 | }
35 | }
36 |
37 | protected void onInit(){
38 | super.onInit();
39 | for(int i=0; i < inputTextureUniformLocations.length; i++)
40 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
41 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
42 | "strength");
43 | }
44 |
45 | protected void onInitialized(){
46 | super.onInitialized();
47 | setFloat(mGLStrengthLocation, 1.0f);
48 | runOnDraw(new Runnable(){
49 | public void run(){
50 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/n1977map.png");
51 | inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicParams.context, "filter/n1977blowout.png");
52 | }
53 | });
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicNashvilleFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicNashvilleFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1};
12 | private int[] inputTextureUniformLocations = {-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicNashvilleFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.nashville));
17 | }
18 |
19 | public void onDestroy() {
20 | super.onDestroy();
21 | GLES20.glDeleteTextures(1, inputTextureHandles, 0);
22 | for(int i = 0; i < inputTextureHandles.length; i++)
23 | inputTextureHandles[i] = -1;
24 | }
25 |
26 | protected void onDrawArraysAfter(){
27 | for(int i = 0; i < inputTextureHandles.length
28 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
29 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
30 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
32 | }
33 | }
34 |
35 | protected void onDrawArraysPre(){
36 | for(int i = 0; i < inputTextureHandles.length
37 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
38 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
39 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
40 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
41 | }
42 | }
43 |
44 | public void onInit(){
45 | super.onInit();
46 | for(int i=0; i < inputTextureUniformLocations.length; i++)
47 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
48 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
49 | "strength");
50 | }
51 |
52 | public void onInitialized(){
53 | super.onInitialized();
54 | setFloat(mGLStrengthLocation, 1.0f);
55 | runOnDraw(new Runnable(){
56 | public void run(){
57 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/nashvillemap.png");
58 | }
59 | });
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicPixarFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicPixarFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1};
12 | private int[] inputTextureUniformLocations = {-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicPixarFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.pixar));
17 | }
18 |
19 | public void onDestroy() {
20 | super.onDestroy();
21 | GLES20.glDeleteTextures(1, inputTextureHandles, 0);
22 | for(int i = 0; i < inputTextureHandles.length; i++)
23 | inputTextureHandles[i] = -1;
24 | }
25 |
26 | protected void onDrawArraysAfter(){
27 | for(int i = 0; i < inputTextureHandles.length
28 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
29 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
30 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
32 | }
33 | }
34 |
35 | protected void onDrawArraysPre(){
36 | for(int i = 0; i < inputTextureHandles.length
37 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
38 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
39 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
40 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
41 | }
42 | }
43 |
44 | public void onInit(){
45 | super.onInit();
46 | for(int i=0; i < inputTextureUniformLocations.length; i++)
47 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
48 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
49 | "strength");
50 | }
51 |
52 | public void onInitialized(){
53 | super.onInitialized();
54 | setFloat(mGLStrengthLocation, 1.0f);
55 | runOnDraw(new Runnable(){
56 | public void run(){
57 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/pixar_curves.png");
58 | }
59 | });
60 | }
61 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicRiseFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicRiseFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1,-1,-1};
12 | private int[] inputTextureUniformLocations = {-1,-1,-1};
13 |
14 | public MagicRiseFilter(){
15 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.rise));
16 | }
17 |
18 | public void onDestroy() {
19 | super.onDestroy();
20 | GLES20.glDeleteTextures(inputTextureHandles.length, inputTextureHandles, 0);
21 | for(int i = 0; i < inputTextureHandles.length; i++)
22 | inputTextureHandles[i] = -1;
23 | }
24 |
25 | protected void onDrawArraysAfter(){
26 | for(int i = 0; i < inputTextureHandles.length
27 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
28 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
29 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
30 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
31 | }
32 | }
33 |
34 | protected void onDrawArraysPre(){
35 | for(int i = 0; i < inputTextureHandles.length
36 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
37 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
38 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
39 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
40 | }
41 | }
42 |
43 | public void onInit(){
44 | super.onInit();
45 | for(int i=0; i < inputTextureUniformLocations.length; i++){
46 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
47 | }
48 | }
49 |
50 | public void onInitialized(){
51 | super.onInitialized();
52 | runOnDraw(new Runnable(){
53 | public void run(){
54 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/blackboard1024.png");
55 | inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicParams.context, "filter/overlaymap.png");
56 | inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicParams.context, "filter/risemap.png");
57 | }
58 | });
59 | }
60 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicSketchFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.OpenGlUtils;
8 |
9 | public class MagicSketchFilter extends GPUImageFilter{
10 |
11 | private int mSingleStepOffsetLocation;
12 | //0.0 - 1.0
13 | private int mStrengthLocation;
14 |
15 | public MagicSketchFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.sketch));
17 | }
18 |
19 | protected void onInit() {
20 | super.onInit();
21 | mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset");
22 | mStrengthLocation = GLES20.glGetUniformLocation(getProgram(), "strength");
23 | }
24 |
25 | protected void onDestroy() {
26 | super.onDestroy();
27 | }
28 |
29 | private void setTexelSize(final float w, final float h) {
30 | setFloatVec2(mSingleStepOffsetLocation, new float[] {1.0f / w, 1.0f / h});
31 | }
32 |
33 | protected void onInitialized(){
34 | super.onInitialized();
35 | setFloat(mStrengthLocation, 0.5f);
36 | }
37 |
38 | @Override
39 | public void onInputSizeChanged(final int width, final int height) {
40 | super.onInputSizeChanged(width, height);
41 | setTexelSize(width, height);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicValenciaFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicValenciaFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1,-1};
12 | private int[] inputTextureUniformLocations = {-1,-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicValenciaFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.valencia));
17 | }
18 |
19 | protected void onDrawArraysAfter(){
20 | for(int i = 0; i < inputTextureHandles.length
21 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
22 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
23 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
24 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
25 | }
26 | }
27 |
28 | protected void onDrawArraysPre(){
29 | for(int i = 0; i < inputTextureHandles.length
30 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
32 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
33 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
34 | }
35 | }
36 |
37 | public void onInit(){
38 | super.onInit();
39 | for(int i = 0; i < inputTextureUniformLocations.length; i++)
40 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
41 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
42 | "strength");
43 | }
44 |
45 | public void onDestroy() {
46 | super.onDestroy();
47 | GLES20.glDeleteTextures(inputTextureHandles.length, inputTextureHandles, 0);
48 | for(int i = 0; i < inputTextureHandles.length; i++)
49 | inputTextureHandles[i] = -1;
50 | }
51 |
52 | public void onInitialized(){
53 | super.onInitialized();
54 | setFloat(mGLStrengthLocation, 1.0f);
55 | runOnDraw(new Runnable(){
56 | public void run(){
57 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/valenciamap.png");
58 | inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicParams.context, "filter/valenciagradientmap.png");
59 | }
60 | });
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicWaldenFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicWaldenFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1,-1};
12 | private int[] inputTextureUniformLocations = {-1,-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicWaldenFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.walden));
17 | }
18 |
19 | public void onDestroy() {
20 | super.onDestroy();
21 | GLES20.glDeleteTextures(inputTextureHandles.length, inputTextureHandles, 0);
22 | for(int i = 0; i < inputTextureHandles.length; i++)
23 | inputTextureHandles[i] = -1;
24 | }
25 |
26 | protected void onDrawArraysAfter(){
27 | for(int i = 0; i < inputTextureHandles.length
28 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
29 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
30 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
32 | }
33 | }
34 |
35 | protected void onDrawArraysPre(){
36 | for(int i = 0; i < inputTextureHandles.length
37 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
38 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
39 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
40 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
41 | }
42 | }
43 |
44 | public void onInit(){
45 | super.onInit();
46 | for(int i = 0; i < inputTextureUniformLocations.length; i++)
47 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
48 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
49 | "strength");
50 | }
51 |
52 | public void onInitialized(){
53 | super.onInitialized();
54 | setFloat(mGLStrengthLocation, 1.0f);
55 | runOnDraw(new Runnable(){
56 | public void run(){
57 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/walden_map.png");
58 | inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicParams.context, "filter/vignette_map.png");
59 | }
60 | });
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/advanced/MagicXproIIFilter.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.zero.magicshow.R;
6 | import com.zero.magicshow.core.filter.base.gpuimage.GPUImageFilter;
7 | import com.zero.magicshow.common.utils.MagicParams;
8 | import com.zero.magicshow.common.utils.OpenGlUtils;
9 |
10 | public class MagicXproIIFilter extends GPUImageFilter{
11 | private int[] inputTextureHandles = {-1,-1};
12 | private int[] inputTextureUniformLocations = {-1,-1};
13 | private int mGLStrengthLocation;
14 |
15 | public MagicXproIIFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.xproii_filter_shader));
17 | }
18 |
19 | public void onDestroy() {
20 | super.onDestroy();
21 | GLES20.glDeleteTextures(inputTextureHandles.length, inputTextureHandles, 0);
22 | for(int i = 0; i < inputTextureHandles.length; i++)
23 | inputTextureHandles[i] = -1;
24 | }
25 |
26 | protected void onDrawArraysAfter(){
27 | for(int i = 0; i < inputTextureHandles.length
28 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
29 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
30 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
31 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
32 | }
33 | }
34 |
35 | protected void onDrawArraysPre(){
36 | for(int i = 0; i < inputTextureHandles.length
37 | && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){
38 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
39 | GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
40 | GLES20.glUniform1i(inputTextureUniformLocations[i], (i + 3));
41 | }
42 | }
43 |
44 | public void onInit(){
45 | super.onInit();
46 | for(int i = 0; i < inputTextureUniformLocations.length; i++)
47 | inputTextureUniformLocations[i] = GLES20.glGetUniformLocation(getProgram(), "inputImageTexture"+(2+i));
48 | mGLStrengthLocation = GLES20.glGetUniformLocation(mGLProgId,
49 | "strength");
50 | }
51 |
52 | public void onInitialized(){
53 | super.onInitialized();
54 | setFloat(mGLStrengthLocation, 1.0f);
55 | runOnDraw(new Runnable(){
56 | public void run(){
57 | inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicParams.context, "filter/xpromap.png");
58 | inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicParams.context, "filter/vignettemap_new.png");
59 | }
60 | });
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/core/filter/utils/MagicFilterType.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.core.filter.utils;
2 |
3 | /**
4 | * Created by why8222 on 2016/2/25.
5 | */
6 | public enum MagicFilterType {
7 | NONE,
8 | FAIRYTALE,
9 | SUNRISE,
10 | SUNSET,
11 | WHITECAT,
12 | BLACKCAT,
13 | SKINWHITEN,
14 | HEALTHY,
15 | SWEETS,
16 | ROMANCE,
17 | SAKURA,
18 | WARM,
19 | ANTIQUE,
20 | NOSTALGIA,
21 | CALM,
22 | LATTE,
23 | TENDER,
24 | COOL,
25 | EMERALD,
26 | EVERGREEN,
27 | CRAYON,
28 | SKETCH,
29 | AMARO,
30 | BRANNAN,
31 | BROOKLYN,
32 | EARLYBIRD,
33 | FREUD,
34 | HEFE,
35 | HUDSON,
36 | INKWELL,
37 | KEVIN,
38 | LOMO,
39 | N1977,
40 | NASHVILLE,
41 | PIXAR,
42 | RISE,
43 | SIERRA,
44 | SUTRO,
45 | TOASTER2,
46 | VALENCIA,
47 | WALDEN,
48 | XPROII,
49 | //image adjust
50 | CONTRAST,
51 | BRIGHTNESS,
52 | EXPOSURE,
53 | HUE,
54 | SATURATION,
55 | SHARPEN,
56 | IMAGE_ADJUST
57 | }
58 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/view/edit/ImageEditFragment.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.view.edit;
2 |
3 | import android.support.v4.app.Fragment;
4 |
5 | import com.zero.magicshow.common.iface.DialogYesOrNoCallBack;
6 | import com.zero.magicshow.common.utils.BaseUtil;
7 | import com.zero.magicshow.core.MagicEngine;
8 |
9 | public abstract class ImageEditFragment extends Fragment {
10 | protected onHideListener mOnHideListener;
11 |
12 | public void doFinishAction(){
13 | if(isChanged()){
14 | BaseUtil.openYesOrNoDialog(getActivity(), "是否应用修改?", "是否应用修改?", "是", "否", new DialogYesOrNoCallBack() {
15 | @Override
16 | public void onYesClick() {
17 | onDialogButtonClick();
18 | MagicEngine.getInstance().commitImage();
19 | }
20 |
21 | @Override
22 | public void onNoClick() {
23 | onDialogButtonClick();
24 | MagicEngine.getInstance().restoreImage();
25 | }
26 | });
27 | }else if(null != mOnHideListener){
28 | mOnHideListener.onAfterHide();
29 | }
30 | }
31 |
32 | public void doSaveConfigeAction(){
33 | if(isChanged()){
34 | MagicEngine.getInstance().commitImage();
35 | }
36 | if(mOnHideListener != null){
37 | mOnHideListener.onAfterHide();
38 | }
39 | }
40 |
41 | public void setOnHideListener(onHideListener l){
42 | this.mOnHideListener = l;
43 | }
44 |
45 | protected abstract boolean isChanged();
46 |
47 | protected void onDialogButtonClick(){
48 | if(mOnHideListener != null){
49 | mOnHideListener.onAfterHide();
50 | }
51 | }
52 |
53 | public interface onHideListener{
54 | void onAfterHide();
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/view/edit/iface/ImageEditNavListener.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.view.edit.iface;
2 |
3 | import android.view.View;
4 |
5 | /**
6 | * Created by hongli on 2017/8/22.
7 | */
8 |
9 | public interface ImageEditNavListener {
10 | public void onClick(View view, String type);
11 | }
12 |
--------------------------------------------------------------------------------
/MagicShow/src/main/java/com/zero/magicshow/viewmanager/CameraManager.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow.viewmanager;
2 |
3 | import android.animation.ObjectAnimator;
4 | import android.animation.ValueAnimator;
5 | import android.widget.ImageView;
6 |
7 | /**
8 | * Created by hongli on 2017/9/1.
9 | */
10 |
11 | public class CameraManager {
12 | public static ObjectAnimator getShutterAnim(ImageView btnShutter){
13 | ObjectAnimator animator = ObjectAnimator.ofFloat(btnShutter,"rotation",0,360);
14 | animator.setDuration(500);
15 | animator.setRepeatCount(ValueAnimator.INFINITE);
16 | return animator;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/MagicShow/src/main/libs/zero.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/libs/zero.jar
--------------------------------------------------------------------------------
/MagicShow/src/main/res/anim/bottom_sliding_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/anim/bottom_sliding_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/color/selector_image_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/color/selector_image_edit.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/color/selector_image_edit_yellow.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/button_take_pic_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/button_take_pic_normal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/button_take_pic_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/button_take_pic_pressed.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/close_black_seq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/close_black_seq.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/close_blue_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/close_blue_round.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_contrast.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_contrast_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_contrast_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_exposure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_exposure.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_exposure_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_exposure_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_hdr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_hdr.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_hdr_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_hdr_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_saturation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_saturation.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_saturation_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_saturation_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_sharpness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_sharpness.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_sharpness_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_sharpness_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_vibrance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_vibrance.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_vibrance_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_adjust_vibrance_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_done.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_done_disenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_done_disenable.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_bg_done_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_bg_done_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_color_hue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_color_hue.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/edit_color_hue_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/edit_color_hue_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_adds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_adds.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_adds_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_adds_blue.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_auto_beauty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_auto_beauty.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_auto_beauty_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_auto_beauty_pressed.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_cosmesis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_cosmesis.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_cosmesis_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_cosmesis_blue.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_edit.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_edit_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_edit_blue.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_effect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_effect.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_effect_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_effect_blue.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_frame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_frame.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_frame_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_frame_blue.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_skinprocess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_skinprocess.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/i_skinprocess_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/i_skinprocess_pressed.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_camera_beauty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_camera_beauty.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_camera_beauty_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_camera_beauty_pressed.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_camera_filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_camera_filter.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_collage_layout_filters_bar_close_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_collage_layout_filters_bar_close_normal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_collage_layout_filters_bar_close_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_collage_layout_filters_bar_close_pressed.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_smallsize_thumb_light_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_smallsize_thumb_light_normal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_smallsize_thumb_light_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_smallsize_thumb_light_pressed.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_thumb_light_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_thumb_light_normal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_thumb_light_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_thumb_light_pressed.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_thumb_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_thumb_normal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_thumb_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/ic_seekbar_thumb_pressed.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/icon_camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/icon_camera.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/icon_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/icon_video.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/image_edit_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/image_edit_back.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/image_edit_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/image_edit_save.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/mix_gallery_bottom_back_click.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/mix_gallery_bottom_back_click.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/mix_gallery_bottom_back_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/mix_gallery_bottom_back_normal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/record_camera_switch_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/record_camera_switch_normal.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/record_camera_switch_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/record_camera_switch_press.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/seekbar_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/seekbar_bg.9.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/seekbar_bg_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/seekbar_bg_light.9.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/seekbar_primary_progress.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/seekbar_primary_progress.9.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/seekbar_transparent_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/seekbar_transparent_bg.9.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xhdpi/tooltip_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xhdpi/tooltip_bg.9.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/balance_lack_close_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/balance_lack_close_icon.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_1977.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_1977.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_amoro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_amoro.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_antique.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_antique.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_beauty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_beauty.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_blackcat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_blackcat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_brannan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_brannan.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_brooklyn.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_brooklyn.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_calm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_calm.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_cool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_cool.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_crayon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_crayon.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_earlybird.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_earlybird.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_emerald.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_emerald.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_evergreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_evergreen.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_fairytale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_fairytale.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_freud.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_freud.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_healthy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_healthy.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_hefe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_hefe.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_hudson.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_hudson.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_inkwell.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_inkwell.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_kevin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_kevin.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_latte.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_latte.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_lomo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_lomo.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_nashville.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_nashville.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_nostalgia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_nostalgia.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_original.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_original.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_piaxr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_piaxr.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_rise.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_rise.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_romance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_romance.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sakura.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sakura.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sierra.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sierra.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sketch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sketch.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sunrise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sunrise.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sunset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sunset.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sutro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sutro.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sweets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_sweets.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_tender.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_tender.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_toastero.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_toastero.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_valencia.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_valencia.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_walden.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_walden.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_warm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_warm.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_whitecat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_whitecat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_xpro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/filter_thumb_xpro.jpg
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/image_edit_modify_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/image_edit_modify_close.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/image_edit_modify_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/image_edit_modify_save.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/take_filter_confirm_btn_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/take_filter_confirm_btn_skin_flat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_btn01_layer00_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_btn01_layer00_skin_flat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_btn01_layer01_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_btn01_layer01_skin_flat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_btn02_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_btn02_skin_flat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_icon01_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_icon01_skin_flat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_icon02_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/take_filter_favorite_icon02_skin_flat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/take_filter_random_btn_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/take_filter_random_btn_skin_flat.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable-xxhdpi/yes_or_no_dialog_line.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/drawable-xxhdpi/yes_or_no_dialog_line.9.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/btn_camera_beauty.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/btn_camera_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/btn_camera_shutter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/btn_layout_filters_bar_close.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/corners_yuanjiao_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/seekbar_progress.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 | -
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/seekbar_progress_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 | -
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/seekbar_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/seekbar_thumb_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_filter_favorite_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_filter_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_adds.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_beauty.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_edit.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_edit_adjust_bright.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_edit_adjust_contrast.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_edit_adjust_exposure.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_edit_adjust_hue.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_edit_adjust_saturation.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_edit_adjust_sharpness.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_edit_adjust_vibrance.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_fragment_skin.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_frame.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_image_save.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/selector_rewardcamera.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/drawable/take_filter_favorite_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/layout/filter_item_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
13 |
19 |
24 |
28 |
34 |
35 |
36 |
45 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/layout/filter_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
20 |
21 |
29 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/layout/fragment_image_edit_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
19 |
20 |
21 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
41 |
52 |
53 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/MagicShow/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/amaro.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //blowout;
7 | uniform sampler2D inputImageTexture3; //overlay;
8 | uniform sampler2D inputImageTexture4; //map
9 |
10 | uniform float strength;
11 |
12 | void main()
13 | {
14 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | mapped.rgb = mix(originColor.rgb, mapped.rgb, strength);
29 |
30 | gl_FragColor = mapped;
31 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/antique.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 |
3 | precision highp float;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D curve;
7 |
8 | void main()
9 | {
10 | highp vec4 textureColor;
11 | highp vec4 textureColorRes;
12 | highp float satVal = 65.0 / 100.0;
13 |
14 | float xCoordinate = textureCoordinate.x;
15 | float yCoordinate = textureCoordinate.y;
16 |
17 | highp float redCurveValue;
18 | highp float greenCurveValue;
19 | highp float blueCurveValue;
20 |
21 | textureColor = texture2D( inputImageTexture, vec2(xCoordinate, yCoordinate));
22 | textureColorRes = textureColor;
23 |
24 | redCurveValue = texture2D(curve, vec2(textureColor.r, 0.0)).r;
25 | greenCurveValue = texture2D(curve, vec2(textureColor.g, 0.0)).g;
26 | blueCurveValue = texture2D(curve, vec2(textureColor.b, 0.0)).b;
27 |
28 | highp float G = (redCurveValue + greenCurveValue + blueCurveValue);
29 | G = G / 3.0;
30 |
31 | redCurveValue = ((1.0 - satVal) * G + satVal * redCurveValue);
32 | greenCurveValue = ((1.0 - satVal) * G + satVal * greenCurveValue);
33 | blueCurveValue = ((1.0 - satVal) * G + satVal * blueCurveValue);
34 | redCurveValue = (((redCurveValue) > (1.0)) ? (1.0) : (((redCurveValue) < (0.0)) ? (0.0) : (redCurveValue)));
35 | greenCurveValue = (((greenCurveValue) > (1.0)) ? (1.0) : (((greenCurveValue) < (0.0)) ? (0.0) : (greenCurveValue)));
36 | blueCurveValue = (((blueCurveValue) > (1.0)) ? (1.0) : (((blueCurveValue) < (0.0)) ? (0.0) : (blueCurveValue)));
37 |
38 | redCurveValue = texture2D(curve, vec2(redCurveValue, 0.0)).a;
39 | greenCurveValue = texture2D(curve, vec2(greenCurveValue, 0.0)).a;
40 | blueCurveValue = texture2D(curve, vec2(blueCurveValue, 0.0)).a;
41 |
42 | highp vec4 base = vec4(redCurveValue, greenCurveValue, blueCurveValue, 1.0);
43 | highp vec4 overlayer = vec4(250.0/255.0, 227.0/255.0, 193.0/255.0, 1.0);
44 |
45 | textureColor = overlayer * base;
46 | base = (textureColor - base) * 0.850980 + base;
47 | textureColor = base;
48 |
49 | gl_FragColor = vec4(textureColor.r, textureColor.g, textureColor.b, 1.0);
50 | }
51 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/cool.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision highp float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform sampler2D curve;
6 |
7 | void main()
8 | {
9 | lowp vec4 textureColor;
10 | lowp vec4 textureColorOri;
11 |
12 | float xCoordinate = textureCoordinate.x;
13 | float yCoordinate = textureCoordinate.y;
14 |
15 | highp float redCurveValue;
16 | highp float greenCurveValue;
17 | highp float blueCurveValue;
18 |
19 | textureColor = texture2D( inputImageTexture, vec2(xCoordinate, yCoordinate));
20 | textureColorOri = textureColor;
21 | // step1 curve
22 | redCurveValue = texture2D(curve, vec2(textureColor.r, 0.0)).r;
23 | greenCurveValue = texture2D(curve, vec2(textureColor.g, 0.0)).g;
24 | blueCurveValue = texture2D(curve, vec2(textureColor.b, 0.0)).b;
25 | // step2 level
26 | redCurveValue = texture2D(curve, vec2(redCurveValue, 0.0)).a;
27 | greenCurveValue = texture2D(curve, vec2(greenCurveValue, 0.0)).a;
28 | blueCurveValue = texture2D(curve, vec2(blueCurveValue, 0.0)).a;
29 | // step3 brightness/constrast adjust
30 | redCurveValue = redCurveValue * 1.25 - 0.12549;
31 | greenCurveValue = greenCurveValue * 1.25 - 0.12549;
32 | blueCurveValue = blueCurveValue * 1.25 - 0.12549;
33 | //redCurveValue = (((redCurveValue) > (1.0)) ? (1.0) : (((redCurveValue) < (0.0)) ? (0.0) : (redCurveValue)));
34 | //greenCurveValue = (((greenCurveValue) > (1.0)) ? (1.0) : (((greenCurveValue) < (0.0)) ? (0.0) : (greenCurveValue)));
35 | //blueCurveValue = (((blueCurveValue) > (1.0)) ? (1.0) : (((blueCurveValue) < (0.0)) ? (0.0) : (blueCurveValue)));
36 | // step4 normal blending with original
37 | textureColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, 1.0);
38 | textureColor = (textureColorOri - textureColor) * 0.549 + textureColor;
39 |
40 | gl_FragColor = vec4(textureColor.r, textureColor.g, textureColor.b, 1.0);
41 | }
42 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/crayon.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision mediump float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform vec2 singleStepOffset;
6 | uniform float strength;
7 |
8 | const highp vec3 W = vec3(0.299,0.587,0.114);
9 |
10 | const mat3 rgb2yiqMatrix = mat3(
11 | 0.299, 0.587, 0.114,
12 | 0.596,-0.275,-0.321,
13 | 0.212,-0.523, 0.311);
14 |
15 | const mat3 yiq2rgbMatrix = mat3(
16 | 1.0, 0.956, 0.621,
17 | 1.0,-0.272,-1.703,
18 | 1.0,-1.106, 0.0);
19 |
20 |
21 | void main()
22 | {
23 | vec4 oralColor = texture2D(inputImageTexture, textureCoordinate);
24 |
25 | vec3 maxValue = vec3(0.,0.,0.);
26 |
27 | for(int i = -2; i<=2; i++)
28 | {
29 | for(int j = -2; j<=2; j++)
30 | {
31 | vec4 tempColor = texture2D(inputImageTexture, textureCoordinate+singleStepOffset*vec2(i,j));
32 | maxValue.r = max(maxValue.r,tempColor.r);
33 | maxValue.g = max(maxValue.g,tempColor.g);
34 | maxValue.b = max(maxValue.b,tempColor.b);
35 | }
36 | }
37 |
38 | vec3 textureColor = oralColor.rgb / maxValue;
39 |
40 | float gray = dot(textureColor, W);
41 | float k = 0.223529;
42 | float alpha = min(gray,k)/k;
43 |
44 | textureColor = textureColor * alpha + (1.-alpha)*oralColor.rgb;
45 |
46 | vec3 yiqColor = textureColor * rgb2yiqMatrix;
47 |
48 | yiqColor.r = max(0.0,min(1.0,pow(gray,strength)));
49 |
50 | textureColor = yiqColor * yiq2rgbMatrix;
51 |
52 | gl_FragColor = vec4(textureColor, oralColor.w);
53 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/default_vertex.glsl:
--------------------------------------------------------------------------------
1 | attribute vec4 position;
2 | attribute vec4 inputTextureCoordinate;
3 |
4 | uniform mat4 textureTransform;
5 | varying vec2 textureCoordinate;
6 |
7 | void main()
8 | {
9 | textureCoordinate = (textureTransform * inputTextureCoordinate).xy;
10 | gl_Position = position;
11 | }
12 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/hefe.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //edgeBurn
7 | uniform sampler2D inputImageTexture3; //hefeMap
8 | uniform sampler2D inputImageTexture4; //hefeGradientMap
9 | uniform sampler2D inputImageTexture5; //hefeSoftLight
10 | uniform sampler2D inputImageTexture6; //hefeMetal
11 |
12 | uniform float strength;
13 |
14 | void main()
15 | {
16 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
17 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
18 | vec3 edge = texture2D(inputImageTexture2, textureCoordinate).rgb;
19 | texel = texel * edge;
20 |
21 | texel = vec3(
22 | texture2D(inputImageTexture3, vec2(texel.r, .16666)).r,
23 | texture2D(inputImageTexture3, vec2(texel.g, .5)).g,
24 | texture2D(inputImageTexture3, vec2(texel.b, .83333)).b);
25 |
26 | vec3 luma = vec3(.30, .59, .11);
27 | vec3 gradSample = texture2D(inputImageTexture4, vec2(dot(luma, texel), .5)).rgb;
28 | vec3 final = vec3(
29 | texture2D(inputImageTexture5, vec2(gradSample.r, texel.r)).r,
30 | texture2D(inputImageTexture5, vec2(gradSample.g, texel.g)).g,
31 | texture2D(inputImageTexture5, vec2(gradSample.b, texel.b)).b
32 | );
33 |
34 | vec3 metal = texture2D(inputImageTexture6, textureCoordinate).rgb;
35 | vec3 metaled = vec3(
36 | texture2D(inputImageTexture5, vec2(metal.r, texel.r)).r,
37 | texture2D(inputImageTexture5, vec2(metal.g, texel.g)).g,
38 | texture2D(inputImageTexture5, vec2(metal.b, texel.b)).b
39 | );
40 |
41 | metaled.rgb = mix(originColor.rgb, metaled.rgb, strength);
42 |
43 | gl_FragColor = vec4(metaled, 1.0);
44 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/hudson.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //blowout;
7 | uniform sampler2D inputImageTexture3; //overlay;
8 | uniform sampler2D inputImageTexture4; //map
9 |
10 | uniform float strength;
11 |
12 | void main()
13 | {
14 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
15 |
16 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
17 |
18 | vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;
19 |
20 | texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
21 | texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
22 | texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;
23 |
24 | vec4 mapped;
25 | mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
26 | mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
27 | mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
28 | mapped.a = 1.0;
29 |
30 | mapped.rgb = mix(originColor.rgb, mapped.rgb, strength);
31 |
32 | gl_FragColor = mapped;
33 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/inkwell.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 |
8 | void main()
9 | {
10 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
11 | texel = vec3(dot(vec3(0.3, 0.6, 0.1), texel));
12 | texel = vec3(texture2D(inputImageTexture2, vec2(texel.r, .16666)).r);
13 | gl_FragColor = vec4(texel, 1.0);
14 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/kevin_new.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 |
8 | void main()
9 | {
10 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
11 |
12 | vec2 lookup;
13 | lookup.y = .5;
14 |
15 | lookup.x = texel.r;
16 | texel.r = texture2D(inputImageTexture2, lookup).r;
17 |
18 | lookup.x = texel.g;
19 | texel.g = texture2D(inputImageTexture2, lookup).g;
20 |
21 | lookup.x = texel.b;
22 | texel.b = texture2D(inputImageTexture2, lookup).b;
23 |
24 | gl_FragColor = vec4(texel, 1.0);
25 | }
26 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/lomo.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 | uniform sampler2D inputImageTexture3;
8 |
9 | uniform float strength;
10 |
11 | void main()
12 | {
13 | vec4 originColor = vec4(0.2,0.6,0.9,1.0);
14 |
15 | vec3 texel;
16 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
17 | float d = dot(tc, tc);
18 | vec2 lookup = vec2(d, originColor.r);
19 | texel.r = texture2D(inputImageTexture3, lookup).r;
20 | lookup.y = originColor.g;
21 | texel.g = texture2D(inputImageTexture3, lookup).g;
22 | lookup.y = originColor.b;
23 | texel.b = texture2D(inputImageTexture3, lookup).b;
24 |
25 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
26 |
27 | gl_FragColor = vec4(texel,1.0);
28 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/n1977.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 |
8 | void main()
9 | {
10 |
11 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
12 |
13 | texel = vec3(
14 | texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
15 | texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
16 | texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
17 |
18 | gl_FragColor = vec4(texel, 1.0);
19 | }
20 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/nashville.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 |
8 | void main()
9 | {
10 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
11 | texel = vec3(
12 | texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
13 | texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
14 | texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
15 | gl_FragColor = vec4(texel, 1.0);
16 | }
17 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/rise.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //blowout;
7 | uniform sampler2D inputImageTexture3; //overlay;
8 | uniform sampler2D inputImageTexture4; //map
9 |
10 | uniform float strength;
11 |
12 | void main()
13 | {
14 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | mapped.rgb = mix(originColor.rgb, mapped.rgb, strength);
29 |
30 | gl_FragColor = mapped;
31 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/romance.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision highp float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform sampler2D curve;
6 |
7 | void main()
8 | {
9 | lowp vec4 textureColor;
10 | lowp vec4 textureColorRes;
11 | lowp vec4 textureColorOri;
12 | vec4 grey1Color;
13 | vec4 layerColor;
14 | mediump float satVal = 115.0 / 100.0;
15 |
16 | float xCoordinate = textureCoordinate.x;
17 | float yCoordinate = textureCoordinate.y;
18 |
19 | highp float redCurveValue;
20 | highp float greenCurveValue;
21 | highp float blueCurveValue;
22 |
23 | textureColor = texture2D( inputImageTexture, vec2(xCoordinate, yCoordinate));
24 | textureColorRes = textureColor;
25 | textureColorOri = textureColor;
26 |
27 | // step1. screen blending
28 | textureColor = 1.0 - ((1.0 - textureColorOri) * (1.0 - textureColorOri));
29 | textureColor = (textureColor - textureColorOri) + textureColorOri;
30 |
31 | // step2. curve
32 | redCurveValue = texture2D(curve, vec2(textureColor.r, 0.0)).r;
33 | greenCurveValue = texture2D(curve, vec2(textureColor.g, 0.0)).g;
34 | blueCurveValue = texture2D(curve, vec2(textureColor.b, 0.0)).b;
35 |
36 | // step3. saturation
37 | highp float G = (redCurveValue + greenCurveValue + blueCurveValue);
38 | G = G / 3.0;
39 |
40 | redCurveValue = ((1.0 - satVal) * G + satVal * redCurveValue);
41 | greenCurveValue = ((1.0 - satVal) * G + satVal * greenCurveValue);
42 | blueCurveValue = ((1.0 - satVal) * G + satVal * blueCurveValue);
43 |
44 | textureColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, 1.0);
45 |
46 | gl_FragColor = vec4(textureColor.r, textureColor.g, textureColor.b, 1.0);
47 | }
48 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/sakura.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | uniform sampler2D inputImageTexture;
4 | uniform sampler2D curve;
5 | uniform float texelWidthOffset;
6 | uniform float texelHeightOffset;
7 |
8 | varying mediump vec2 textureCoordinate;
9 |
10 | vec4 gaussianBlur(sampler2D sampler) {
11 | lowp float strength = 1.;
12 | vec4 color = vec4(0.);
13 | vec2 step = vec2(0.);
14 |
15 | color += texture2D(sampler,textureCoordinate)* 0.25449 ;
16 |
17 | step.x = 1.37754 * texelWidthOffset * strength;
18 | step.y = 1.37754 * texelHeightOffset * strength;
19 | color += texture2D(sampler,textureCoordinate+step) * 0.24797;
20 | color += texture2D(sampler,textureCoordinate-step) * 0.24797;
21 |
22 | step.x = 3.37754 * texelWidthOffset * strength;
23 | step.y = 3.37754 * texelHeightOffset * strength;
24 | color += texture2D(sampler,textureCoordinate+step) * 0.09122;
25 | color += texture2D(sampler,textureCoordinate-step) * 0.09122;
26 |
27 | step.x = 5.37754 * texelWidthOffset * strength;
28 | step.y = 5.37754 * texelHeightOffset * strength;
29 | color += texture2D(sampler,textureCoordinate+step) * 0.03356;
30 | color += texture2D(sampler,textureCoordinate-step) * 0.03356;
31 |
32 | return color;
33 | }
34 |
35 | vec4 overlay(vec4 c1, vec4 c2){
36 | vec4 r1 = vec4(0.,0.,0.,1.);
37 |
38 | r1.r = c1.r < 0.5 ? 2.0*c1.r*c2.r : 1.0 - 2.0*(1.0-c1.r)*(1.0-c2.r);
39 | r1.g = c1.g < 0.5 ? 2.0*c1.g*c2.g : 1.0 - 2.0*(1.0-c1.g)*(1.0-c2.g);
40 | r1.b = c1.b < 0.5 ? 2.0*c1.b*c2.b : 1.0 - 2.0*(1.0-c1.b)*(1.0-c2.b);
41 |
42 | return r1;
43 | }
44 |
45 | vec4 level0c(vec4 color, sampler2D sampler) {
46 | color.r = texture2D(sampler, vec2(color.r, 0.)).r;
47 | color.g = texture2D(sampler, vec2(color.g, 0.)).r;
48 | color.b = texture2D(sampler, vec2(color.b, 0.)).r;
49 | return color;
50 | }
51 |
52 | vec4 normal(vec4 c1, vec4 c2, float alpha) {
53 | return (c2-c1) * alpha + c1;
54 | }
55 |
56 | vec4 screen(vec4 c1, vec4 c2) {
57 | vec4 r1 = vec4(1.) - ((vec4(1.) - c1) * (vec4(1.) - c2));
58 | return r1;
59 | }
60 |
61 | void main() {
62 | // naver skin
63 | lowp vec4 c0 = texture2D(inputImageTexture, textureCoordinate);
64 | lowp vec4 c1 = gaussianBlur(inputImageTexture);
65 | lowp vec4 c2 = overlay(c0, level0c(c1, curve));
66 | lowp vec4 c3 = normal(c0,c2,0.15);
67 |
68 | gl_FragColor = c3;
69 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/sierra.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //blowout;
7 | uniform sampler2D inputImageTexture3; //overlay;
8 | uniform sampler2D inputImageTexture4; //map
9 |
10 | uniform float strength;
11 |
12 | void main()
13 | {
14 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | mapped.rgb = mix(originColor.rgb, mapped.rgb, strength);
29 | gl_FragColor = mapped;
30 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/sketch.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision mediump float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform vec2 singleStepOffset;
6 | uniform float strength;
7 |
8 | const highp vec3 W = vec3(0.299,0.587,0.114);
9 |
10 |
11 | void main()
12 | {
13 | float threshold = 0.0;
14 | //pic1
15 | vec4 oralColor = texture2D(inputImageTexture, textureCoordinate);
16 |
17 | //pic2
18 | vec3 maxValue = vec3(0.,0.,0.);
19 |
20 | for(int i = -2; i<=2; i++)
21 | {
22 | for(int j = -2; j<=2; j++)
23 | {
24 | vec4 tempColor = texture2D(inputImageTexture, textureCoordinate+singleStepOffset*vec2(i,j));
25 | maxValue.r = max(maxValue.r,tempColor.r);
26 | maxValue.g = max(maxValue.g,tempColor.g);
27 | maxValue.b = max(maxValue.b,tempColor.b);
28 | threshold += dot(tempColor.rgb, W);
29 | }
30 | }
31 | //pic3
32 | float gray1 = dot(oralColor.rgb, W);
33 |
34 | //pic4
35 | float gray2 = dot(maxValue, W);
36 |
37 | //pic5
38 | float contour = gray1 / gray2;
39 |
40 | threshold = threshold / 25.;
41 | float alpha = max(1.0,gray1>threshold?1.0:(gray1/threshold));
42 |
43 | float result = contour * alpha + (1.0-alpha)*gray1;
44 |
45 | gl_FragColor = vec4(vec3(result,result,result), oralColor.w);
46 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/suger_tablets.glsl:
--------------------------------------------------------------------------------
1 | varying mediump vec2 textureCoordinate;
2 | varying mediump vec2 textureCoordinate2; // TODO: This is not used
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform sampler2D inputImageTexture2; // lookup texture
6 | uniform mediump float strength;
7 |
8 | void main()
9 | {
10 | mediump vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
11 | mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
12 |
13 | mediump float blueColor = textureColor.b * 63.0;
14 |
15 | mediump vec2 quad1;
16 | quad1.y = floor(floor(blueColor) / 8.0);
17 | quad1.x = floor(blueColor) - (quad1.y * 8.0);
18 |
19 | mediump vec2 quad2;
20 | quad2.y = floor(ceil(blueColor) / 8.0);
21 | quad2.x = ceil(blueColor) - (quad2.y * 8.0);
22 |
23 | mediump vec2 texPos1;
24 | texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
25 | texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
26 |
27 | mediump vec2 texPos2;
28 | texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
29 | texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
30 |
31 | mediump vec4 newColor1 = texture2D(inputImageTexture2, texPos1);
32 | mediump vec4 newColor2 = texture2D(inputImageTexture2, texPos2);
33 |
34 | mediump vec4 newColor = mix(newColor1, newColor2, fract(blueColor));
35 |
36 | newColor.rgb = mix(originColor.rgb, newColor.rgb, strength);
37 |
38 | gl_FragColor = vec4(newColor.rgb, textureColor.w);
39 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/sutro.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //sutroMap;
7 | uniform sampler2D inputImageTexture3; //sutroMetal;
8 | uniform sampler2D inputImageTexture4; //softLight
9 | uniform sampler2D inputImageTexture5; //sutroEdgeburn
10 | uniform sampler2D inputImageTexture6; //sutroCurves
11 |
12 | uniform float strength;
13 |
14 | void main()
15 | {
16 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
17 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
18 |
19 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
20 | float d = dot(tc, tc);
21 | vec2 lookup = vec2(d, texel.r);
22 | texel.r = texture2D(inputImageTexture2, lookup).r;
23 | lookup.y = texel.g;
24 | texel.g = texture2D(inputImageTexture2, lookup).g;
25 | lookup.y = texel.b;
26 | texel.b = texture2D(inputImageTexture2, lookup).b;
27 |
28 | vec3 rgbPrime = vec3(0.1019, 0.0, 0.0);
29 | float m = dot(vec3(.3, .59, .11), texel.rgb) - 0.03058;
30 | texel = mix(texel, rgbPrime + m, 0.32);
31 |
32 | vec3 metal = texture2D(inputImageTexture3, textureCoordinate).rgb;
33 | texel.r = texture2D(inputImageTexture4, vec2(metal.r, texel.r)).r;
34 | texel.g = texture2D(inputImageTexture4, vec2(metal.g, texel.g)).g;
35 | texel.b = texture2D(inputImageTexture4, vec2(metal.b, texel.b)).b;
36 |
37 | texel = texel * texture2D(inputImageTexture5, textureCoordinate).rgb;
38 |
39 | texel.r = texture2D(inputImageTexture6, vec2(texel.r, .16666)).r;
40 | texel.g = texture2D(inputImageTexture6, vec2(texel.g, .5)).g;
41 | texel.b = texture2D(inputImageTexture6, vec2(texel.b, .83333)).b;
42 |
43 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
44 |
45 | gl_FragColor = vec4(texel, 1.0);
46 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/toaster2_filter_shader.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //toaster_metal
7 | uniform sampler2D inputImageTexture3; //toaster_soft_light
8 | uniform sampler2D inputImageTexture4; //toaster_curves
9 | uniform sampler2D inputImageTexture5; //toaster_overlay_map_warm
10 | uniform sampler2D inputImageTexture6; //toaster_color_shift
11 |
12 | void main()
13 | {
14 | mediump vec3 texel;
15 | mediump vec2 lookup;
16 | vec2 blue;
17 | vec2 green;
18 | vec2 red;
19 | mediump vec4 tmpvar_1;
20 | tmpvar_1 = texture2D (inputImageTexture, textureCoordinate);
21 | texel = tmpvar_1.xyz;
22 | mediump vec4 tmpvar_2;
23 | tmpvar_2 = texture2D (inputImageTexture2, textureCoordinate);
24 | mediump vec2 tmpvar_3;
25 | tmpvar_3.x = tmpvar_2.x;
26 | tmpvar_3.y = tmpvar_1.x;
27 | texel.x = texture2D (inputImageTexture3, tmpvar_3).x;
28 | mediump vec2 tmpvar_4;
29 | tmpvar_4.x = tmpvar_2.y;
30 | tmpvar_4.y = tmpvar_1.y;
31 | texel.y = texture2D (inputImageTexture3, tmpvar_4).y;
32 | mediump vec2 tmpvar_5;
33 | tmpvar_5.x = tmpvar_2.z;
34 | tmpvar_5.y = tmpvar_1.z;
35 | texel.z = texture2D (inputImageTexture3, tmpvar_5).z;
36 | red.x = texel.x;
37 | red.y = 0.16666;
38 | green.x = texel.y;
39 | green.y = 0.5;
40 | blue.x = texel.z;
41 | blue.y = 0.833333;
42 | texel.x = texture2D (inputImageTexture4, red).x;
43 | texel.y = texture2D (inputImageTexture4, green).y;
44 | texel.z = texture2D (inputImageTexture4, blue).z;
45 | mediump vec2 tmpvar_6;
46 | tmpvar_6 = ((2.0 * textureCoordinate) - 1.0);
47 | mediump vec2 tmpvar_7;
48 | tmpvar_7.x = dot (tmpvar_6, tmpvar_6);
49 | tmpvar_7.y = texel.x;
50 | lookup = tmpvar_7;
51 | texel.x = texture2D (inputImageTexture5, tmpvar_7).x;
52 | lookup.y = texel.y;
53 | texel.y = texture2D (inputImageTexture5, lookup).y;
54 | lookup.y = texel.z;
55 | texel.z = texture2D (inputImageTexture5, lookup).z;
56 | red.x = texel.x;
57 | green.x = texel.y;
58 | blue.x = texel.z;
59 | texel.x = texture2D (inputImageTexture6, red).x;
60 | texel.y = texture2D (inputImageTexture6, green).y;
61 | texel.z = texture2D (inputImageTexture6, blue).z;
62 | mediump vec4 tmpvar_8;
63 | tmpvar_8.w = 1.0;
64 | tmpvar_8.xyz = texel;
65 | gl_FragColor = tmpvar_8;
66 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/valencia.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //map
7 | uniform sampler2D inputImageTexture3; //gradMap
8 |
9 | mat3 saturateMatrix = mat3(
10 | 1.1402,
11 | -0.0598,
12 | -0.061,
13 | -0.1174,
14 | 1.0826,
15 | -0.1186,
16 | -0.0228,
17 | -0.0228,
18 | 1.1772);
19 |
20 | vec3 lumaCoeffs = vec3(.3, .59, .11);
21 |
22 | uniform float strength;
23 |
24 | void main()
25 | {
26 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
27 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
28 |
29 | texel = vec3(
30 | texture2D(inputImageTexture2, vec2(texel.r, .1666666)).r,
31 | texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
32 | texture2D(inputImageTexture2, vec2(texel.b, .8333333)).b
33 | );
34 |
35 | texel = saturateMatrix * texel;
36 | float luma = dot(lumaCoeffs, texel);
37 | texel = vec3(
38 | texture2D(inputImageTexture3, vec2(luma, texel.r)).r,
39 | texture2D(inputImageTexture3, vec2(luma, texel.g)).g,
40 | texture2D(inputImageTexture3, vec2(luma, texel.b)).b);
41 |
42 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
43 | gl_FragColor = vec4(texel, 1.0);
44 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/walden.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //map
7 | uniform sampler2D inputImageTexture3; //vigMap
8 |
9 | uniform float strength;
10 |
11 | void main()
12 | {
13 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
14 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
15 |
16 | texel = vec3(
17 | texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
18 | texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
19 | texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
20 |
21 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
22 | float d = dot(tc, tc);
23 | vec2 lookup = vec2(d, texel.r);
24 | texel.r = texture2D(inputImageTexture3, lookup).r;
25 | lookup.y = texel.g;
26 | texel.g = texture2D(inputImageTexture3, lookup).g;
27 | lookup.y = texel.b;
28 | texel.b = texture2D(inputImageTexture3, lookup).b;
29 |
30 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
31 |
32 | gl_FragColor = vec4(texel, 1.0);
33 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/warm.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision highp float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform sampler2D curve;
6 | uniform sampler2D greyFrame;
7 | uniform sampler2D layerImage;
8 |
9 | void main()
10 | {
11 | lowp vec4 textureColor;
12 | vec4 greyColor;
13 | vec4 layerColor;
14 |
15 | float xCoordinate = textureCoordinate.x;
16 | float yCoordinate = textureCoordinate.y;
17 |
18 | highp float redCurveValue;
19 | highp float greenCurveValue;
20 | highp float blueCurveValue;
21 |
22 | textureColor = texture2D( inputImageTexture, vec2(xCoordinate, yCoordinate));
23 |
24 | greyColor = texture2D(greyFrame, vec2(xCoordinate, yCoordinate));
25 | layerColor = texture2D(layerImage, vec2(xCoordinate, yCoordinate));
26 |
27 | // step1 curve
28 | redCurveValue = texture2D(curve, vec2(textureColor.r, 0.0)).r;
29 | greenCurveValue = texture2D(curve, vec2(textureColor.g, 0.0)).g;
30 | blueCurveValue = texture2D(curve, vec2(textureColor.b, 0.0)).b;
31 |
32 | // step2 curve with mask
33 | textureColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, 1.0);
34 |
35 | redCurveValue = texture2D(curve, vec2(textureColor.r, 0.0)).a;
36 | greenCurveValue = texture2D(curve, vec2(textureColor.g, 0.0)).a;
37 | blueCurveValue = texture2D(curve, vec2(textureColor.b, 0.0)).a;
38 |
39 | lowp vec4 textureColor2 = vec4(redCurveValue, greenCurveValue, blueCurveValue, 1.0);
40 |
41 | // step3 screen with 60%
42 | lowp vec4 base = vec4(mix(textureColor.rgb, textureColor2.rgb, 1.0 - greyColor.r), textureColor.a);
43 | lowp vec4 overlayer = vec4(layerColor.r, layerColor.g, layerColor.b, 1.0);
44 |
45 | // screen blending
46 | textureColor = 1.0 - ((1.0 - base) * (1.0 - overlayer));
47 | textureColor = (textureColor - base) * 0.6 + base;
48 |
49 | redCurveValue = texture2D(curve, vec2(textureColor.r, 1.0)).r;
50 | greenCurveValue = texture2D(curve, vec2(textureColor.g, 1.0)).g;
51 | blueCurveValue = texture2D(curve, vec2(textureColor.b, 1.0)).b;
52 | textureColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, 1.0);
53 |
54 | gl_FragColor = vec4(textureColor.r, textureColor.g, textureColor.b, 1.0);
55 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/raw/xproii_filter_shader.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //map
7 | uniform sampler2D inputImageTexture3; //vigMap
8 |
9 | uniform float strength;
10 |
11 | void main()
12 | {
13 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
14 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
15 |
16 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
17 | float d = dot(tc, tc);
18 | vec2 lookup = vec2(d, texel.r);
19 | texel.r = texture2D(inputImageTexture3, lookup).r;
20 | lookup.y = texel.g;
21 | texel.g = texture2D(inputImageTexture3, lookup).g;
22 | lookup.y = texel.b;
23 | texel.b = texture2D(inputImageTexture3, lookup).b;
24 |
25 | vec2 red = vec2(texel.r, 0.16666);
26 | vec2 green = vec2(texel.g, 0.5);
27 | vec2 blue = vec2(texel.b, .83333);
28 | texel.r = texture2D(inputImageTexture2, red).r;
29 | texel.g = texture2D(inputImageTexture2, green).g;
30 | texel.b = texture2D(inputImageTexture2, blue).b;
31 |
32 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
33 |
34 | gl_FragColor = vec4(texel, 1.0);
35 |
36 | }
--------------------------------------------------------------------------------
/MagicShow/src/main/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 原图
4 | 白猫
5 | 黑猫
6 | 浪漫
7 | 樱花
8 | 复古
9 | 美肤
10 | 平静
11 | 冰冷
12 | 祖母绿
13 | 常青
14 | 童话
15 | 健康
16 | 拿铁
17 | 怀旧
18 | 温柔
19 | 温暖
20 | 甜品
21 | 日出
22 | 日落
23 | 美白
24 | 蜡笔
25 | 素描
26 |
27 | 滤镜
28 | 编辑
29 | 装饰
30 | 边框
31 | 美颜
32 |
33 | 对比度
34 | 曝光
35 | 自然饱和度
36 | 饱和度
37 | 锐化
38 | 亮度
39 | 色调
40 | 确定
41 | 取消
42 |
43 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #ff5cbadc
4 | #3d5afe
5 | #1e3250
6 | #ff6666
7 | #b93221
8 | #fe9833
9 | #cc99cc
10 | #c4c4c4
11 | #c8ca34
12 | #568f35
13 | #e69138
14 | #c8ca34
15 | #ff9933
16 | #89000000
17 |
18 | #e6ffffff
19 | #ffffff
20 | #32c4c4
21 | #3c3c3c
22 | #7d7d7d
23 |
24 |
--------------------------------------------------------------------------------
/MagicShow/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0dip
3 | 6.0dip
4 | 60.0dip
5 | 12.0px
6 | 220.0dip
7 | 2.0px
8 | 34.0dip
9 | 34.0dip
10 | 8.0px
11 | 2.0px
12 | 24.0px
13 |
14 |
--------------------------------------------------------------------------------
/MagicShow/src/test/java/com/zero/magicshow/core/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.zero.lib;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * To work on unit tests, switch the Test Artifact in the Build Variants view.
9 | */
10 | public class ExampleUnitTest {
11 | @Test
12 | public void addition_isCorrect() throws Exception {
13 | assertEquals(4, 2 + 2);
14 | }
15 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### 疯狂的程序员群:186305789,没准你能遇到绝影大神
2 | ### 个人兴趣网站,[zero接码平台](https://xinghai.party)
3 | ### 个人兴趣网站,[猿指](https://blog.xinghai.party)
4 | # MagicShow
5 | 包含美颜等40余种实时滤镜相机,可拍照、图片修改
6 | 图片编辑包含常规参数设置(对比度,饱和度等)、美颜(美白,磨皮)、滤镜
7 | # Demo说明
8 | 本demo并不包含相册功能,所以demo中打开Album请预先在SD卡中存储如下图片:/sdcard/DCIM/dark.jpg
9 | # 集成方法
10 | ```java
11 | // 根目录build.gradle文件下引入jitpack仓库
12 | maven {
13 | url 'https://jitpack.io'
14 | }
15 | // 具体使用的module中添加如下依赖
16 | dependencies {
17 | implementation 'com.github.zerochl:MagicShow:1.0.4'
18 | }
19 | ```
20 | # 使用方式
21 | ```java
22 | MagicShowManager.getInstance().openEdit(activity,imagePath, new ImageEditCallBack() {
23 | @Override
24 | public void onCompentFinished(MagicShowResultEntity magicShowResultEntity) {
25 | Log.e("HongLi","获取图片地址:" + magicShowResultEntity.getFilePath());
26 | }
27 | });
28 | ```
29 |
30 | 打开拍照,拍照之后直接进图片编辑
31 | ```java
32 | MagicShowManager.getInstance().openCameraAndEdit(activity,new ImageEditCallBack(){
33 | @Override
34 | public void onCompentFinished(MagicShowResultEntity magicShowResultEntity) {
35 |
36 | }
37 | });
38 | ```
39 |
40 | 打开拍照,拍照实现了滤镜效果,CameraConfig可设置拍照图片的大小
41 | ```java
42 | MagicShowManager.getInstance().openCamera(activity,new CameraShootCallBack(){
43 | @Override
44 | public void onCompentFinished(MagicShowResultEntity magicShowResultEntity) {
45 |
46 | }
47 | });
48 | ```
49 |
50 | 提供了MagicShowManager方法,回调里面会返回编辑成功之后的图片信息
51 |
52 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply from: "$project.rootDir/tools/versions_configuration.gradle"
3 |
4 | android {
5 | compileSdkVersion getProject().compileSdkVersion
6 | buildToolsVersion getProject().buildToolsVersion
7 |
8 | defaultConfig {
9 | applicationId "com.zero.magicshowsim"
10 | minSdkVersion getProject().minSdkVersion
11 | targetSdkVersion getProject().targetSdkVersion
12 | versionCode getProject().appCode
13 | versionName getProject().appVersions
14 | }
15 | signingConfigs {
16 | release {
17 | // storeFile file("I:\\document\\real\\DuNang.keystore")
18 | storePassword "android"
19 | keyAlias "DuNang"
20 | keyPassword "android"
21 | }
22 | debug {
23 | // storeFile file("I:\\document\\DuNangTest.keystore")
24 | // storePassword "android"
25 | // keyAlias "androiddebugkey"
26 | // keyPassword "android"
27 | }
28 | }
29 | buildTypes {
30 | release {
31 | signingConfig signingConfigs.release
32 | minifyEnabled = false
33 | // Zipalign优化
34 | zipAlignEnabled true
35 | proguardFiles.add(file('proguard-rules.pro'))
36 | }
37 | debug {
38 | minifyEnabled = false
39 | // Zipalign优化
40 | zipAlignEnabled true
41 | proguardFiles.add(file('proguard-rules.pro'))
42 | }
43 | }
44 | sourceSets{
45 | main{
46 | jniLibs.srcDirs = ['src/main/jniLibs']
47 | }
48 | }
49 | lintOptions{
50 | checkReleaseBuilds false
51 | abortOnError false
52 | }
53 | }
54 |
55 |
56 | dependencies {
57 | implementation fileTree(dir: 'libs', include: ['*.jar'])
58 | testImplementation 'junit:junit:4.12'
59 | implementation project(':MagicShow')
60 | }
61 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\android-sdk-windows/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/zero/magicshow/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
13 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/assets/dark.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/assets/dark.jpg
--------------------------------------------------------------------------------
/app/src/main/res/anim/bottom_sliding_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/bottom_sliding_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/selector_image_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/color/selector_image_edit.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/color/selector_image_edit_yellow.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 原图
4 | 白猫
5 | 黑猫
6 | 浪漫
7 | 樱花
8 | 复古
9 | 美肤
10 | 平静
11 | 冰冷
12 | 祖母绿
13 | 常青
14 | 童话
15 | 健康
16 | 拿铁
17 | 怀旧
18 | 温柔
19 | 温暖
20 | 甜品
21 | 日出
22 | 日落
23 | 美白
24 | 蜡笔
25 | 素描
26 |
27 | 滤镜
28 | 编辑
29 | 装饰
30 | 边框
31 | 美颜
32 |
33 | 对比度
34 | 曝光
35 | 自然饱和度
36 | 饱和度
37 | 锐化
38 | 亮度
39 | 色调
40 | 确定
41 | 取消
42 |
43 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #ff5cbadc
4 | #3d5afe
5 | #1e3250
6 | #ff6666
7 | #b93221
8 | #fe9833
9 | #cc99cc
10 | #c4c4c4
11 | #c8ca34
12 | #568f35
13 | #e69138
14 | #c8ca34
15 | #ff9933
16 | #89000000
17 |
18 | #e6ffffff
19 | #ffffff
20 | #32c4c4
21 | #3c3c3c
22 | #7d7d7d
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0dip
3 | 6.0dip
4 | 60.0dip
5 | 12.0px
6 | 220.0dip
7 | 2.0px
8 | 34.0dip
9 | 34.0dip
10 | 8.0px
11 | 2.0px
12 | 24.0px
13 |
14 |
--------------------------------------------------------------------------------
/app/src/test/java/com/zero/magicshow/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.zero.magicshow;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * To work on unit tests, switch the Test Artifact in the Build Variants view.
9 | */
10 | public class ExampleUnitTest {
11 | @Test
12 | public void addition_isCorrect() throws Exception {
13 | assertEquals(4, 2 + 2);
14 | }
15 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | apply from: "$project.rootDir/tools/versions_configuration.gradle"
5 | repositories {
6 | jcenter()
7 | google()
8 | }
9 | dependencies {
10 | // classpath 'com.android.tools.build:gradle-experimental:0.9.3'
11 | classpath "com.android.tools.build:gradle:$libVersions.gradleTool"
12 | classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
13 |
14 | // NOTE: Do not place your application dependencies here; they belong
15 | // in the individual module build.gradle files
16 | }
17 | }
18 |
19 | allprojects {
20 | repositories {
21 | jcenter()
22 | google()
23 | }
24 | }
25 |
26 | task clean(type: Delete) {
27 | delete rootProject.buildDir
28 | }
29 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | ## Project-wide Gradle settings.
2 | #
3 | # For more details on how to configure your build environment visit
4 | # http://www.gradle.org/docs/current/userguide/build_environment.html
5 | #
6 | # Specifies the JVM arguments used for the daemon process.
7 | # The setting is particularly useful for tweaking memory settings.
8 | # Default value: -Xmx1024m -XX:MaxPermSize=256m
9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
10 | #
11 | # When configured, Gradle will run in incubating parallel mode.
12 | # This option should only be used with decoupled projects. More details, visit
13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
14 | # org.gradle.parallel=true
15 | #Thu Jun 21 10:43:50 CST 2018
16 | systemProp.http.proxyHost=127.0.0.1
17 | systemProp.http.proxyPort=1080
18 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zerochl/MagicShow/52438cced13edcdafbf529ba7f0ac68940887fa9/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jan 31 15:25:33 CST 2020
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':MagicShow'
2 |
--------------------------------------------------------------------------------