diff --git a/android/build.gradle b/android/build.gradle index 7279ca2..2a50bb5 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -31,6 +31,9 @@ rootProject.allprojects { apply plugin: 'com.android.library' android { + if (project.android.hasProperty("namespace")) { + namespace 'com.tencent.effect.tencent_effect_flutter' + } compileSdkVersion 31 compileOptions { @@ -63,7 +66,7 @@ android { compileOnly fileTree(dir: "libs", include: ['*.aar']) // compileOnly files("$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar") compileOnly 'androidx.annotation:annotation:1.1.0' - compileOnly 'com.tencent.mediacloud:TencentEffect_S1-04:3.5.0.5' + compileOnly 'com.tencent.mediacloud:TencentEffect_S1-07:3.9.0.8' } diff --git a/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicApiManager.java b/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicApiManager.java index ad76097..afe6826 100644 --- a/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicApiManager.java +++ b/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicApiManager.java @@ -15,6 +15,7 @@ import com.tencent.xmagic.XmagicApi; import com.tencent.xmagic.XmagicApi.XmagicAIDataListener; import com.tencent.xmagic.XmagicApi.XmagicTipsListener; +import com.tencent.xmagic.XmagicConstant; import com.tencent.xmagic.XmagicProperty; import com.tencent.xmagic.avatar.AvatarData; import com.tencent.xmagic.bean.TEBodyData; @@ -53,7 +54,7 @@ public class XmagicApiManager implements SensorEventListener, XmagicAIDataListen private int xMagicLogLevel = Log.WARN; - private boolean isPerformance = false; + private XmagicConstant.EffectMode effectMode = XmagicConstant.EffectMode.PRO; private volatile boolean enableAiData = false; @@ -72,7 +73,6 @@ public static XmagicApiManager getInstance() { /** - * * @param context * @return */ @@ -110,7 +110,7 @@ public void setTELicense(Context context, String url, String key, TELicenseCheck } public void onCreateApi() { - XmagicApi api = new XmagicApi(mApplicationContext, XmagicResParser.getResPath(), (s, i) -> { + XmagicApi api = new XmagicApi(mApplicationContext, this.effectMode,XmagicResParser.getResPath(), (s, i) -> { if (managerListener != null) { managerListener.onXmagicPropertyError(s, i); } @@ -124,9 +124,6 @@ public void onCreateApi() { api.setTipsListener(this); } api.setXmagicLogLevel(xMagicLogLevel); - if (isPerformance) { - api.setDowngradePerformance(); - } xmagicApi = api; } @@ -178,7 +175,7 @@ public void onDestroy() { enableAiData = false; enableYTData = false; enableTipsListener = false; - isPerformance = false; + effectMode = XmagicConstant.EffectMode.PRO; currentStreamType = XmagicApi.PROCESS_TYPE_CAMERA_STREAM; if (xMagicApiIsNull()) { LogUtils.e(TAG, "onDestroy: xmagicApi is null "); @@ -248,8 +245,6 @@ public int process(int textureId, int width, int height) { /** - - * * @param properties */ public void isBeautyAuthorized(List> properties) { @@ -262,8 +257,6 @@ public void isBeautyAuthorized(List> properties) { } /** - - * * @return */ public boolean isSupportBeauty() { @@ -275,7 +268,6 @@ public boolean isSupportBeauty() { } /** - * * @param assetsList */ public void isDeviceSupport(List> assetsList) { @@ -288,8 +280,6 @@ public void isDeviceSupport(List> assetsList) { /** - - * * @param motionResPath */ public boolean isDeviceSupport(String motionResPath) { @@ -340,8 +330,6 @@ public Context getApplicationContext() { } /** - - * * @return */ public boolean xMagicApiIsNull() { @@ -357,7 +345,6 @@ public int getCurrentStreamType() { } - public void enableEnhancedMode() { if (xMagicApiIsNull()) { LogUtils.e(TAG, "enableEnhancedMode: xmagicApi is null "); @@ -367,17 +354,39 @@ public void enableEnhancedMode() { } - + @Deprecated public void setDowngradePerformance() { - isPerformance = true; if (xMagicApiIsNull()) { - LogUtils.e(TAG, "setDowngradePerformance: xmagicApi is null "); + LogUtils.w(TAG, "setDowngradePerformance: xmagicApi is null "); return; } - xmagicApi.setDowngradePerformance(); + effectMode = XmagicConstant.EffectMode.NORMAL; } - + @Deprecated + public void enableHighPerformance() { + if (xMagicApiIsNull()) { + LogUtils.w(TAG, "enableHighPerformance: xmagicApi is null "); + return; + } + effectMode = XmagicConstant.EffectMode.NORMAL; + } + + + public void setEffectMode(XmagicConstant.EffectMode effectMode) { + this.effectMode = effectMode; + if (this.xmagicApi != null) { + LogUtils.e(TAG, "enableHighPerformance: xmagicApi is not null "); + } + } + + public int getDeviceLevel(Context context) { + int level = XmagicApi.getDeviceLevel(context).getValue(); + LogUtils.i(TAG, "getDeviceLevel value is " + level); + return level; + } + + public void onPauseAudio() { if (xMagicApiIsNull()) { LogUtils.e(TAG, "onPauseAudio: xmagicApi is null "); @@ -386,7 +395,7 @@ public void onPauseAudio() { xmagicApi.onPauseAudio(); } - + public void setAudioMute(boolean isMute) { if (xMagicApiIsNull()) { LogUtils.e(TAG, "setAudioMute: xmagicApi is null "); @@ -395,7 +404,7 @@ public void setAudioMute(boolean isMute) { xmagicApi.setAudioMute(isMute); } - + public void setFeatureEnableDisable(String featureName, boolean enable) { if (xMagicApiIsNull()) { LogUtils.e(TAG, "setFeatureEnableDisable: xmagicApi is null "); @@ -405,7 +414,6 @@ public void setFeatureEnableDisable(String featureName, boolean enable) { } - public void setImageOrientation(int rotationType) { TEImageOrientation orientation = null; switch (rotationType) { @@ -436,7 +444,7 @@ public void setImageOrientation(int rotationType) { xmagicApi.setImageOrientation(orientation); } - + public void enableAIDataListener(boolean enable) { this.enableAiData = enable; if (this.xmagicApi != null) { @@ -449,7 +457,7 @@ public void enableAIDataListener(boolean enable) { LogUtils.d(TAG, "enableAIDataListener: enable = " + enable); } - + public void enableYTDataListener(boolean enable) { this.enableYTData = enable; if (this.xmagicApi != null) { @@ -462,7 +470,7 @@ public void enableYTDataListener(boolean enable) { LogUtils.d(TAG, "enableYTDataListener: enable = " + enable); } - + public void enableTipsListener(boolean enable) { this.enableTipsListener = enable; if (this.xmagicApi != null) { diff --git a/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicPlugin.java b/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicPlugin.java index 1983cd8..74c8aa3 100644 --- a/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicPlugin.java +++ b/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicPlugin.java @@ -53,7 +53,12 @@ public interface XmagicPlugin { void isDeviceSupportMotion(@NonNull MethodCall call, @NonNull MethodChannel.Result result); void enableEnhancedMode(@NonNull MethodCall call, @NonNull MethodChannel.Result result); + @Deprecated void setDowngradePerformance(@NonNull MethodCall call, @NonNull MethodChannel.Result result); + void enableHighPerformance(@NonNull MethodCall call, @NonNull MethodChannel.Result result); + void setEffectMode(@NonNull MethodCall call, @NonNull MethodChannel.Result result); + + void getDeviceLevel(@NonNull MethodCall call, @NonNull MethodChannel.Result result); void setAudioMute(@NonNull MethodCall call, @NonNull MethodChannel.Result result); diff --git a/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicPluginImp.java b/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicPluginImp.java index 1a5100a..3071c3b 100644 --- a/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicPluginImp.java +++ b/android/src/main/java/com/tencent/effect/tencent_effect_flutter/xmagicplugin/XmagicPluginImp.java @@ -13,6 +13,7 @@ import com.google.gson.reflect.TypeToken; import com.tencent.effect.tencent_effect_flutter.utils.LogUtils; import com.tencent.effect.tencent_effect_flutter.res.XmagicResParser; +import com.tencent.xmagic.XmagicConstant; import com.tencent.xmagic.XmagicProperty; import java.lang.reflect.Type; @@ -423,6 +424,32 @@ public void setDowngradePerformance(@NonNull MethodCall call, @NonNull MethodCha result.success(true); } + @Override + public void enableHighPerformance(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { + XmagicApiManager.getInstance().enableHighPerformance(); + result.success(true); + } + + @Override + public void setEffectMode(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { + if (call.arguments instanceof String) { + String effectMode = (String) call.arguments; + if (effectMode.equals("0")) { + XmagicApiManager.getInstance().setEffectMode(XmagicConstant.EffectMode.NORMAL); + } else { + XmagicApiManager.getInstance().setEffectMode(XmagicConstant.EffectMode.PRO); + } + result.success(null); + return; + } + resultParameterError(call.method, result); + } + + @Override + public void getDeviceLevel(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { + result.success(XmagicApiManager.getInstance().getDeviceLevel(applicationContext)); + } + @Override public void setAudioMute(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { diff --git a/demo/android/app/build.gradle b/demo/android/app/build.gradle index 0d9ea77..b009924 100644 --- a/demo/android/app/build.gradle +++ b/demo/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion flutter.compileSdkVersion + compileSdkVersion 34 //flutter.compileSdkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -55,5 +55,5 @@ flutter { } dependencies { - implementation 'com.tencent.mediacloud:TencentEffect_S1-07:3.5.0.5' + implementation 'com.tencent.mediacloud:TencentEffect_S1-07:3.9.0.8' } diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/jiemao.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/jiemao.png new file mode 100644 index 0000000..a8f5fa0 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/jiemao.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/kouhong.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/kouhong.png new file mode 100644 index 0000000..f140b89 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/kouhong.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/lut.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/lut.png new file mode 100644 index 0000000..0a27411 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/lut.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/meimao.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/meimao.png new file mode 100644 index 0000000..4cf090c Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/meimao.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/meitong.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/meitong.png new file mode 100644 index 0000000..65800a9 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/meitong.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/saihong.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/saihong.png new file mode 100644 index 0000000..a009575 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/saihong.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/xiurong.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/xiurong.png new file mode 100644 index 0000000..b1cee91 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/xiurong.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/yanxian.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/yanxian.png new file mode 100644 index 0000000..3a88944 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/yanxian.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/yanying.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/yanying.png new file mode 100644 index 0000000..75fd580 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/image/yanying.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/makeup.json b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/makeup.json new file mode 100644 index 0000000..3a7512f --- /dev/null +++ b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_baixi/makeup.json @@ -0,0 +1 @@ +[{"alpha":1.0,"effectName":"lut","resourcePath":"image/lut.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureLipsLut","resourcePath":"image/kouhong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureRedCheek","resourcePath":"image/saihong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureSoftlight","resourcePath":"image/xiurong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeShadow","resourcePath":"image/yanying.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeLiner","resourcePath":"image/yanxian.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyelash","resourcePath":"image/jiemao.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyebrow","resourcePath":"image/meimao.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeball","resourcePath":"image/meitong.png"},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyelids","resourcePath":""},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyewocan","resourcePath":""}] \ No newline at end of file diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/kouhong.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/kouhong.png new file mode 100644 index 0000000..b62e067 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/kouhong.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/meimao.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/meimao.png new file mode 100644 index 0000000..0013a26 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/meimao.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/meitong.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/meitong.png new file mode 100644 index 0000000..2d922d3 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/meitong.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/saihong.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/saihong.png new file mode 100644 index 0000000..7c123dc Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/saihong.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/xiurong.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/xiurong.png new file mode 100644 index 0000000..e5c5b78 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/xiurong.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/yanying.png b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/yanying.png new file mode 100644 index 0000000..ff255c9 Binary files /dev/null and b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/image/yanying.png differ diff --git a/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/makeup.json b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/makeup.json new file mode 100644 index 0000000..788d12f --- /dev/null +++ b/demo/android/app/src/main/assets/MotionRes/light_makeup/light_danyan/makeup.json @@ -0,0 +1 @@ +[{"alpha":0.0,"effectName":"lut","resourcePath":""},{"alpha":1.0,"effectName":"beauty.faceFeatureLipsLut","resourcePath":"image/kouhong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureRedCheek","resourcePath":"image/saihong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureSoftlight","resourcePath":"image/xiurong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeShadow","resourcePath":"image/yanying.png"},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeLiner","resourcePath":""},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyelash","resourcePath":""},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyebrow","resourcePath":"image/meimao.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeball","resourcePath":"image/meitong.png"},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyelids","resourcePath":""},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyewocan","resourcePath":""}] \ No newline at end of file diff --git a/demo/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/demo/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java new file mode 100644 index 0000000..910455f --- /dev/null +++ b/demo/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java @@ -0,0 +1,74 @@ +package io.flutter.plugins; + +import androidx.annotation.Keep; +import androidx.annotation.NonNull; +import io.flutter.Log; + +import io.flutter.embedding.engine.FlutterEngine; + +/** + * Generated file. Do not edit. + * This file is generated by the Flutter tool based on the + * plugins that support the Android platform. + */ +@Keep +public final class GeneratedPluginRegistrant { + private static final String TAG = "GeneratedPluginRegistrant"; + public static void registerWith(@NonNull FlutterEngine flutterEngine) { + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin flutter_plugin_android_lifecycle, io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.github.ponnamkarthik.toast.fluttertoast.FlutterToastPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin fluttertoast, io.github.ponnamkarthik.toast.fluttertoast.FlutterToastPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.imagepicker.ImagePickerPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin image_picker_android, io.flutter.plugins.imagepicker.ImagePickerPlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.tencent.live.TencentLiveCloudPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin live_flutter_plugin, com.tencent.live.TencentLiveCloudPlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.github.sososdk.orientation.OrientationPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin orientation, com.github.sososdk.orientation.OrientationPlugin", e); + } + try { + flutterEngine.getPlugins().add(new dev.fluttercommunity.plus.packageinfo.PackageInfoPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin package_info_plus, dev.fluttercommunity.plus.packageinfo.PackageInfoPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.baseflow.permissionhandler.PermissionHandlerPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin permission_handler_android, com.baseflow.permissionhandler.PermissionHandlerPlugin", e); + } + try { + flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin shared_preferences_android, io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.tencent.effect.tencent_effect_flutter.TencentEffectFlutterPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin tencent_effect_flutter, com.tencent.effect.tencent_effect_flutter.TencentEffectFlutterPlugin", e); + } + try { + flutterEngine.getPlugins().add(new com.tencent.trtcplugin.TRTCCloudPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin tencent_trtc_cloud, com.tencent.trtcplugin.TRTCCloudPlugin", e); + } + } +} diff --git a/demo/android/build.gradle b/demo/android/build.gradle index a4d7066..5c8d9b8 100644 --- a/demo/android/build.gradle +++ b/demo/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/demo/android/gradle/wrapper/gradle-wrapper.jar b/demo/android/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 0000000..13372ae Binary files /dev/null and b/demo/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/demo/assets/beauty_panel/beauty.json b/demo/assets/beauty_panel/beauty.json index 376512e..00a6c97 100644 --- a/demo/assets/beauty_panel/beauty.json +++ b/demo/assets/beauty_panel/beauty.json @@ -13,19 +13,28 @@ "icon":"beauty_panel/panel_icon/beauty/beauty_whiten.png", "propertyList":[ { - "displayName":"自然", - "displayNameEn":"Natural", - "icon":"beauty_panel/panel_icon/beauty/beauty_whiten.png", + "displayName":"靓白", + "displayNameEn":"Bright White", + "icon":"beauty_panel/panel_icon/beauty/beauty_whiten_liangbai.png", "sdkParam":{ - "effectName":"beauty.lutFoundationAlpha", + "effectName":"beauty.lutFoundationAlpha0", "effectValue":40 }, "uiState":2 }, + { + "displayName":"自然", + "displayNameEn":"Natural", + "icon":"beauty_panel/panel_icon/beauty/beauty_whiten_nature.png", + "sdkParam":{ + "effectName":"beauty.lutFoundationAlpha", + "effectValue":0 + } + }, { "displayName":"粉白", - "displayNameEn":"PinkishWhite", - "icon":"beauty_panel/panel_icon/beauty/beauty_whiten.png", + "displayNameEn":"Pinkish White", + "icon":"beauty_panel/panel_icon/beauty/beauty_whiten_pink.png", "sdkParam":{ "effectName":"beauty.lutFoundationAlpha2", "effectValue":0 @@ -33,8 +42,8 @@ }, { "displayName":"冷白", - "displayNameEn":"CoolWhite", - "icon":"beauty_panel/panel_icon/beauty/beauty_whiten.png", + "displayNameEn":"Cool White", + "icon":"beauty_panel/panel_icon/beauty/beauty_whiten_cool.png", "sdkParam":{ "effectName":"beauty.lutFoundationAlpha3", "effectValue":0 @@ -43,6 +52,31 @@ ], "uiState":2 }, + { + "displayName":"美黑", + "displayNameEn":"Black", + "icon":"beauty_panel/panel_icon/beauty/beauty_black.png", + "propertyList":[ + { + "displayName":"美黑", + "displayNameEn":"Black", + "icon":"beauty_panel/panel_icon/beauty/beauty_black_01.png", + "sdkParam":{ + "effectName":"beauty.lutBlackAlpha1", + "effectValue":0 + } + }, + { + "displayName":"小麦色", + "displayNameEn":"Brown", + "icon":"beauty_panel/panel_icon/beauty/beauty_black_wheat.png", + "sdkParam":{ + "effectName":"beauty.lutBlackAlpha2", + "effectValue":0 + } + } + ] + }, { "displayName":"磨皮", "displayNameEn":"Smoothskin", @@ -100,6 +134,24 @@ }, "uiState":1 }, + { + "displayName":"亮度", + "displayNameEn":"Brightness", + "icon":"beauty_panel/panel_icon/beauty/beauty_image_brightness.png", + "sdkParam":{ + "effectName":"beauty.imageBrightness", + "effectValue":0 + } + }, + { + "displayName":"弱光降噪", + "displayNameEn":"Denoise", + "icon":"beauty_panel/panel_icon/beauty/beauty_denoise.png", + "sdkParam":{ + "effectName":"postEffect.denoise", + "effectValue":0 + } + }, { "displayName":"色温", "displayNameEn":"Warmth", @@ -256,7 +308,7 @@ { "displayName":"眼睛", "displayNameEn":"Eye", - "icon":"beauty_panel/panel_icon/beauty/beauty_enlarge_eye.png", + "icon":"beauty_panel/panel_icon/beauty/beauty_eye.png", "propertyList":[ { "displayName":"大眼", @@ -278,6 +330,15 @@ }, "uiState":1 }, + { + "displayName":"外眼角", + "displayNameEn":"EyeOutCorner", + "icon":"beauty_panel/panel_icon/beauty/beauty_eye_angle.png", + "sdkParam":{ + "effectName":"basicV7.eyeOutCorner", + "effectValue":0 + } + }, { "displayName":"眼距", "displayNameEn":"Eyedistance", @@ -314,6 +375,15 @@ "effectValue":0 } }, + { + "displayName":"眼睛位置", + "displayNameEn":"Eyeposition", + "icon":"beauty_panel/panel_icon/beauty/beauty_eye_position.png", + "sdkParam":{ + "effectName":"basicV7.eyePosition", + "effectValue":0 + } + }, { "displayName":"祛眼袋", "displayNameEn":"Eyebags", @@ -390,7 +460,7 @@ { "displayName":"鼻子", "displayNameEn":"Nose", - "icon":"beauty_panel/panel_icon/beauty/beauty_nose_position.png", + "icon":"beauty_panel/panel_icon/beauty/beauty_nose.png", "propertyList":[ { "displayName":"瘦鼻", @@ -443,7 +513,7 @@ { "displayName":"嘴巴", "displayNameEn":"Mouth", - "icon":"beauty_panel/panel_icon/beauty/beauty_mouth_size.png", + "icon":"beauty_panel/panel_icon/beauty/beauty_mouth.png", "propertyList":[ { "displayName":"白牙", @@ -585,7 +655,7 @@ { "displayName":"简约", "displayNameEn":"Simple", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_jianyue.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -595,7 +665,7 @@ { "displayName":"盛夏", "displayNameEn":"Summer", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_shengxia.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -605,7 +675,7 @@ { "displayName":"害羞", "displayNameEn":"Shy", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_haixiu.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -615,7 +685,7 @@ { "displayName":"成熟", "displayNameEn":"Mature", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_chengshu.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -625,7 +695,7 @@ { "displayName":"雀斑", "displayNameEn":"Freckles", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_queban.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -635,7 +705,7 @@ { "displayName":"蜜桃", "displayNameEn":"Peach", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_mitao.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -645,7 +715,7 @@ { "displayName":"甜莓", "displayNameEn":"Sweetberry", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_tianmei.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -655,7 +725,7 @@ { "displayName":"橘调", "displayNameEn":"Orangetone", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_judiao.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -665,7 +735,7 @@ { "displayName":"草莓", "displayNameEn":"Strawberry", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_caomei.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -675,7 +745,7 @@ { "displayName":"杏子", "displayNameEn":"Apricot", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_xingzi.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -685,7 +755,7 @@ { "displayName":"玫瑰", "displayNameEn":"Rose", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_meigui.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -695,7 +765,7 @@ { "displayName":"奶橘", "displayNameEn":"Orange", - "icon":"beauty_panel/panel_icon/beauty/beauty_redcheeks.png", + "icon":"beauty_panel/panel_icon/beauty/saihong/saihong_naiju.png", "sdkParam":{ "effectName":"beauty.faceFeatureRedCheek", "effectValue":50, @@ -704,6 +774,82 @@ } ] }, + { + "displayName":"染发", + "displayNameEn":"HairColor", + "icon":"beauty_panel/panel_icon/beauty/hair_color.png", + "propertyList":[ + { + "displayName":"无", + "displayNameEn":"None", + "icon":"beauty_panel/panel_icon/beauty/none.png", + "sdkParam":{ + "effectName":"beauty.hairColorLut", + "effectValue":0 + } + }, + { + "displayName":"red", + "displayNameEn":"red", + "icon":"beauty_panel/panel_icon/beauty/hair_color_red.png", + "sdkParam":{ + "effectName":"beauty.hairColorLut", + "effectValue":70, + "resourcePath":"images/hair_color/red.png" + } + }, + { + "displayName":"purple", + "displayNameEn":"purple", + "icon":"beauty_panel/panel_icon/beauty/hair_color_purple.png", + "sdkParam":{ + "effectName":"beauty.hairColorLut", + "effectValue":70, + "resourcePath":"images/hair_color/purple.png" + } + }, + { + "displayName":"blue", + "displayNameEn":"blue", + "icon":"beauty_panel/panel_icon/beauty/hair_color_blue.png", + "sdkParam":{ + "effectName":"beauty.hairColorLut", + "effectValue":70, + "resourcePath":"images/hair_color/blue.png" + } + }, + { + "displayName":"yellow", + "displayNameEn":"yellow", + "icon":"beauty_panel/panel_icon/beauty/hair_color_yellow.png", + "sdkParam":{ + "effectName":"beauty.hairColorLut", + "effectValue":70, + "resourcePath":"images/hair_color/yellow.png" + } + }, + { + "displayName":"gray", + "displayNameEn":"gray", + "icon":"beauty_panel/panel_icon/beauty/hair_color_gray.png", + "sdkParam":{ + "effectName":"beauty.hairColorLut", + "effectValue":70, + "resourcePath":"images/hair_color/gray.png" + } + }, + { + "displayName":"green", + "displayNameEn":"green", + "icon":"beauty_panel/panel_icon/beauty/hair_color_green.png", + "sdkParam":{ + "effectName":"beauty.hairColorLut", + "effectValue":70, + "resourcePath":"images/hair_color/green.png" + } + } + ] + }, { "displayName":"眼影", "displayNameEn":"EyeShadow", @@ -1052,6 +1198,108 @@ } ] }, + { + "displayName":"双眼皮", + "displayNameEn":"Eyelids", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/eyelids.png", + "propertyList":[ + { + "displayName":"无", + "displayNameEn":"None", + "icon":"beauty_panel/panel_icon/beauty/none.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyelids", + "effectValue":0 + } + }, + { + "displayName":"开扇", + "displayNameEn":"0", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_kaishan_icon.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyelids", + "effectValue":50, + "resourcePath":"/images/beauty/eyes_makeup_eyelids_kaishan.png" + } + }, + { + "displayName":"平扇", + "displayNameEn":"1", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_pingshan_icon.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyelids", + "effectValue":50, + "resourcePath":"/images/beauty/eyes_makeup_eyelids_pingshan.png" + } + }, + { + "displayName":"新月", + "displayNameEn":"2", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_xinyue_icon.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyelids", + "effectValue":50, + "resourcePath":"/images/beauty/eyes_makeup_eyelids_xinyue.png" + } + } + ] + }, + { + "displayName":"卧蚕", + "displayNameEn":"Eyewocan", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/wocan.png", + "propertyList":[ + { + "displayName":"无", + "displayNameEn":"None", + "icon":"beauty_panel/panel_icon/beauty/none.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyewocan", + "effectValue":0 + } + }, + { + "displayName":"可爱", + "displayNameEn":"0", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_keai_icon.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyewocan", + "effectValue":50, + "resourcePath":"/images/beauty/eyes_makeup_eye_wocan_keai.png" + } + }, + { + "displayName":"素颜", + "displayNameEn":"1", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_suyan_icon.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyewocan", + "effectValue":50, + "resourcePath":"/images/beauty/eyes_makeup_eye_wocan_suyan.png" + } + }, + { + "displayName":"甜丧", + "displayNameEn":"2", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_tiansang_icon.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyewocan", + "effectValue":50, + "resourcePath":"/images/beauty/eyes_makeup_eye_wocan_tiansang.png" + } + }, + { + "displayName":"自然", + "displayNameEn":"3", + "icon":"beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_ziran_icon.png", + "sdkParam":{ + "effectName":"beauty.faceFeatureEyesMakeup.eyewocan", + "effectValue":50, + "resourcePath":"/images/beauty/eyes_makeup_eye_wocan_ziran.png" + } + } + ] + }, { "displayName":"美瞳", "displayNameEn":"Eyeball", @@ -1241,7 +1489,7 @@ { "displayName":"自然", "displayNameEn":"Natural", - "icon":"beauty_panel/panel_icon/beauty/beauty_liti.png", + "icon":"beauty_panel/panel_icon/beauty/liti/liti_ziran.png", "sdkParam":{ "effectName":"beauty.faceFeatureSoftlight", "effectValue":50, @@ -1251,7 +1499,7 @@ { "displayName":"俊朗", "displayNameEn":"Smart", - "icon":"beauty_panel/panel_icon/beauty/beauty_liti.png", + "icon":"beauty_panel/panel_icon/beauty/liti/liti_junlang.png", "sdkParam":{ "effectName":"beauty.faceFeatureSoftlight", "effectValue":50, @@ -1261,7 +1509,7 @@ { "displayName":"光芒", "displayNameEn":"Glow", - "icon":"beauty_panel/panel_icon/beauty/beauty_liti.png", + "icon":"beauty_panel/panel_icon/beauty/liti/liti_guangmang.png", "sdkParam":{ "effectName":"beauty.faceFeatureSoftlight", "effectValue":50, @@ -1271,7 +1519,7 @@ { "displayName":"清新", "displayNameEn":"Fresh", - "icon":"beauty_panel/panel_icon/beauty/beauty_liti.png", + "icon":"beauty_panel/panel_icon/beauty/liti/liti_qingxin.png", "sdkParam":{ "effectName":"beauty.faceFeatureSoftlight", "effectValue":50, diff --git a/demo/assets/beauty_panel/beauty_body.json b/demo/assets/beauty_panel/beauty_body.json index 6db6849..66facb5 100644 --- a/demo/assets/beauty_panel/beauty_body.json +++ b/demo/assets/beauty_panel/beauty_body.json @@ -1,6 +1,6 @@ { "displayName":"美体", - "displayNameEn":"Bodyretouch", + "displayNameEn":"Body Shaping", "propertyList":[ { "displayName":"关闭", diff --git a/demo/assets/beauty_panel/light_makeup.json b/demo/assets/beauty_panel/light_makeup.json new file mode 100644 index 0000000..4a99d22 --- /dev/null +++ b/demo/assets/beauty_panel/light_makeup.json @@ -0,0 +1,37 @@ +{ + "displayName":"轻美妆", + "displayNameEn":"Makeup", + "downloadPath":"MotionRes/light_makeup/", + "isShowGridLayout":true, + "propertyList":[ + { + "displayName":"无", + "displayNameEn":"None", + "icon":"beauty_panel/panel_icon/beauty/none.png" + }, + { + "displayName":"白皙", + "displayNameEn":"White", + "icon":"beauty_panel/panel_icon/light_makeup_icon/light_baixi.png", + "resourceUri":"MotionRes/light_makeup/light_baixi", + "sdkParam":{ + "effectValue":50, + "extraInfo":{ + "makeupLutStrength":"50" + } + } + }, + { + "displayName":"淡颜", + "displayNameEn":"Light", + "icon":"beauty_panel/panel_icon/light_makeup_icon/light_danyan.png", + "resourceUri":"MotionRes/light_makeup/light_danyan", + "sdkParam":{ + "effectValue":50, + "extraInfo":{ + "makeupLutStrength":"50" + } + } + } + ] +} \ No newline at end of file diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_basic_face.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_basic_face.png index 0871d7e..249a650 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_basic_face.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_basic_face.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_black.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_black.png new file mode 100644 index 0000000..137674d Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_black.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_black_01.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_black_01.png new file mode 100644 index 0000000..1bd801d Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_black_01.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_black_wheat.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_black_wheat.png new file mode 100644 index 0000000..63e7ae2 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_black_wheat.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_chin.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_chin.png index 89d4885..4b718c4 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_chin.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_chin.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_denoise.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_denoise.png new file mode 100644 index 0000000..a30ab67 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_denoise.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_enlarge_eye.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_enlarge_eye.png index 2a5c2bd..b61e73b 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_enlarge_eye.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_enlarge_eye.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye.png new file mode 100644 index 0000000..0ebb100 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_angle.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_angle.png index d2ea0d9..36c9091 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_angle.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_angle.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_distance.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_distance.png index aab5491..b0853e5 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_distance.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_distance.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_height.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_height.png index 0dae764..67db47a 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_height.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_height.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_lighten.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_lighten.png index f4acd3f..c204f30 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_lighten.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_lighten.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_position.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_position.png new file mode 100644 index 0000000..a2d1ccb Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_position.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_width.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_width.png index 9539474..feecc96 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_width.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eye_width.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyeball.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyeball.png index fbfa470..ad9b70a 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyeball.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyeball.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow.png index e9ffbe2..018858f 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_angle.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_angle.png index 21b4faa..cb43002 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_angle.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_angle.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_distance.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_distance.png index d179f37..b4de5c8 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_distance.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_distance.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_length.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_length.png index a92b0e6..5c186ff 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_length.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_length.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_position.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_position.png index ee06455..f11d1ef 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_position.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_position.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_ridge.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_ridge.png index f291b6d..43c0688 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_ridge.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_ridge.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_thickness.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_thickness.png index 3fc1249..8df88b8 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_thickness.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_eyebrow_thickness.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_face_jaw.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_face_jaw.png index 0f4b68a..984ea0c 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_face_jaw.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_face_jaw.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_forehead.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_forehead.png index 9ea6001..e696f9f 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_forehead.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_forehead.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_brightness.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_brightness.png new file mode 100644 index 0000000..89c3375 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_brightness.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_contrast.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_contrast.png index fb4a038..4010888 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_contrast.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_contrast.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_saturation.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_saturation.png index 3762fb9..0c658d6 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_saturation.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_saturation.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_sharpen.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_sharpen.png index 8dc87e0..f12c391 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_sharpen.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_sharpen.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_tint.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_tint.png index 800b197..7bac2e3 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_tint.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_tint.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_warmth.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_warmth.png index 1c9a1e0..5750ffe 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_warmth.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_image_warmth.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_lips.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_lips.png index 62ceb7f..8dc6153 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_lips.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_lips.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_liti.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_liti.png index a858025..a64fc7c 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_liti.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_liti.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth.png new file mode 100644 index 0000000..7f24bde Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_height.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_height.png index 53edb05..7c3bb1c 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_height.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_height.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_position.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_position.png index 8d82174..fcac926 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_position.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_position.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_size.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_size.png index 88790ae..7f24bde 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_size.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_size.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_smile.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_smile.png index 5b20ae4..262162a 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_smile.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_smile.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_width.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_width.png index 55b724b..aec4b64 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_width.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_mouth_width.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_narrow_face.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_narrow_face.png index d83a903..9ac8e14 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_narrow_face.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_narrow_face.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose.png new file mode 100644 index 0000000..2498da9 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose_position.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose_position.png index 7ca123c..2498da9 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose_position.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose_position.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose_wing.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose_wing.png index cc5d52c..8ece750 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose_wing.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_nose_wing.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_redcheeks.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_redcheeks.png index 21679b2..c78cf5f 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_redcheeks.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_redcheeks.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_remove_eye_pouch.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_remove_eye_pouch.png index a7cf4cf..3f5b4bb 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_remove_eye_pouch.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_remove_eye_pouch.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_remove_pounch.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_remove_pounch.png index 076d43e..ba022bc 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_remove_pounch.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_remove_pounch.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_ruddy.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_ruddy.png index f2ebbfd..b3850ba 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_ruddy.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_ruddy.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_sharpen.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_sharpen.png index 5006640..9be2b89 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_sharpen.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_sharpen.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_short_face.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_short_face.png index 7ceb455..d80d485 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_short_face.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_short_face.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_smooth.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_smooth.png index b62f2d3..109a64b 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_smooth.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_smooth.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_cheek.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_cheek.png index f08cced..72ae20c 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_cheek.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_cheek.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face.png index 9e2a003..49d80b2 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face1.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face1.png index 08a6f30..f96e163 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face1.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face1.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face2.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face2.png index 91e70ac..0cc3e6d 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face2.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face2.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face3.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face3.png index 9e9b672..233b8de 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face3.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_face3.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_nose.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_nose.png index 3c91a0c..2d21662 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_nose.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_thin_nose.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_tooth_beauty.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_tooth_beauty.png index 4f22510..85d987f 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_tooth_beauty.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_tooth_beauty.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_v_face.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_v_face.png index 4be8376..11bcbba 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_v_face.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_v_face.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten.png index bbce61a..275086b 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_cool.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_cool.png new file mode 100644 index 0000000..9febadd Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_cool.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_liangbai.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_liangbai.png new file mode 100644 index 0000000..8e185fc Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_liangbai.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_nature.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_nature.png new file mode 100644 index 0000000..d7e0c12 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_nature.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_pink.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_pink.png new file mode 100644 index 0000000..ee55a50 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_whiten_pink.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/beauty_wrinkle_smooth.png b/demo/assets/beauty_panel/panel_icon/beauty/beauty_wrinkle_smooth.png index 9797963..9c2a7ef 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/beauty_wrinkle_smooth.png and b/demo/assets/beauty_panel/panel_icon/beauty/beauty_wrinkle_smooth.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eye_liner.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eye_liner.png index cbcf1f0..733d8f2 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eye_liner.png and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eye_liner.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eye_shadow.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eye_shadow.png index 1bc919c..d506115 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eye_shadow.png and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eye_shadow.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyelash.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyelash.png index 116d9cf..1736810 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyelash.png and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyelash.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyelids.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyelids.png new file mode 100644 index 0000000..eb45b5b Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyelids.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_keai_icon.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_keai_icon.png new file mode 100644 index 0000000..f64acec Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_keai_icon.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_suyan_icon.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_suyan_icon.png new file mode 100644 index 0000000..2196ef9 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_suyan_icon.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_tiansang_icon.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_tiansang_icon.png new file mode 100644 index 0000000..f998aaa Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_tiansang_icon.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_ziran_icon.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_ziran_icon.png new file mode 100644 index 0000000..4be86d2 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eye_wocan_ziran_icon.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_kaishan_icon.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_kaishan_icon.png new file mode 100644 index 0000000..3d13174 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_kaishan_icon.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_oushi_icon.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_oushi_icon.png new file mode 100644 index 0000000..f0ed5ec Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_oushi_icon.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_pingshan_icon.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_pingshan_icon.png new file mode 100644 index 0000000..45c9dd0 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_pingshan_icon.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_xinyue_icon.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_xinyue_icon.png new file mode 100644 index 0000000..c163a06 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/eyes_makeup_eyelids_xinyue_icon.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/wocan.png b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/wocan.png new file mode 100644 index 0000000..1d61463 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/eyes_makeup/wocan.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/hair_color.png b/demo/assets/beauty_panel/panel_icon/beauty/hair_color.png new file mode 100644 index 0000000..9064bf4 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/hair_color.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/hair_color_blue.png b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_blue.png new file mode 100644 index 0000000..e11bed5 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_blue.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/hair_color_gray.png b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_gray.png new file mode 100644 index 0000000..55a14eb Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_gray.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/hair_color_green.png b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_green.png new file mode 100644 index 0000000..a5d60d6 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_green.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/hair_color_purple.png b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_purple.png new file mode 100644 index 0000000..636c54c Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_purple.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/hair_color_red.png b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_red.png new file mode 100644 index 0000000..03e5bae Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_red.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/hair_color_yellow.png b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_yellow.png new file mode 100644 index 0000000..7b2a1e0 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/hair_color_yellow.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_apple.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_apple.png deleted file mode 100644 index d326f71..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_apple.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_apricot.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_apricot.png deleted file mode 100644 index fefc410..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_apricot.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_cassis.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_cassis.png deleted file mode 100644 index 7189648..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_cassis.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_cherry.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_cherry.png deleted file mode 100644 index eb21277..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_cherry.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_grape.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_grape.png deleted file mode 100644 index be009f5..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_grape.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_laquat.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_laquat.png deleted file mode 100644 index e014ce2..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_laquat.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_lychee.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_lychee.png deleted file mode 100644 index a7f3c3e..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_lychee.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_mango.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_mango.png deleted file mode 100644 index 7205ef6..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_mango.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_peach.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_peach.png deleted file mode 100644 index dada544..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_peach.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_plum.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_plum.png deleted file mode 100644 index 72ca6e7..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_plum.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_raspberry.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_raspberry.png deleted file mode 100644 index a42fa13..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_raspberry.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_strawberry.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_strawberry.png deleted file mode 100644 index a7dcf90..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_strawberry.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/lips_zakuro.png b/demo/assets/beauty_panel/panel_icon/beauty/lips_zakuro.png deleted file mode 100644 index cd9f983..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/lips_zakuro.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_guangmang.png b/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_guangmang.png new file mode 100644 index 0000000..cbe968d Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_guangmang.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_junlang.png b/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_junlang.png new file mode 100644 index 0000000..8507278 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_junlang.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_qingxin.png b/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_qingxin.png new file mode 100644 index 0000000..2c3ce6c Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_qingxin.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_ziran.png b/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_ziran.png new file mode 100644 index 0000000..0116218 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/liti/liti_ziran.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/nasion.png b/demo/assets/beauty_panel/panel_icon/beauty/nasion.png index 762a264..53acadb 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/nasion.png and b/demo/assets/beauty_panel/panel_icon/beauty/nasion.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/none.png b/demo/assets/beauty_panel/panel_icon/beauty/none.png index 7beab28..2ebe0eb 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/none.png and b/demo/assets/beauty_panel/panel_icon/beauty/none.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/nose_bridge_width.png b/demo/assets/beauty_panel/panel_icon/beauty/nose_bridge_width.png index 1696e3e..53d3ce4 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/nose_bridge_width.png and b/demo/assets/beauty_panel/panel_icon/beauty/nose_bridge_width.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_caomei.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_caomei.png new file mode 100644 index 0000000..ca2632d Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_caomei.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_chengshu.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_chengshu.png new file mode 100644 index 0000000..d3fe2ee Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_chengshu.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_haixiu.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_haixiu.png new file mode 100644 index 0000000..8581eaf Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_haixiu.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_jianyue.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_jianyue.png new file mode 100644 index 0000000..97d7a20 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_jianyue.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_judiao.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_judiao.png new file mode 100644 index 0000000..5212002 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_judiao.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_meigui.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_meigui.png new file mode 100644 index 0000000..3213e11 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_meigui.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_mitao.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_mitao.png new file mode 100644 index 0000000..4d1a076 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_mitao.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_naiju.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_naiju.png new file mode 100644 index 0000000..2baf551 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_naiju.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_queban.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_queban.png new file mode 100644 index 0000000..dc6951c Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_queban.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_shengxia.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_shengxia.png new file mode 100644 index 0000000..cb27a8a Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_shengxia.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_tianmei.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_tianmei.png new file mode 100644 index 0000000..e749233 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_tianmei.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_xingzi.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_xingzi.png new file mode 100644 index 0000000..56ad306 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty/saihong/saihong_xingzi.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong_00.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong_00.png deleted file mode 100644 index 7a279d4..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/saihong_00.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong_01.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong_01.png deleted file mode 100644 index 7ed22c0..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/saihong_01.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong_02.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong_02.png deleted file mode 100644 index 9aca90f..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/saihong_02.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong_03.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong_03.png deleted file mode 100644 index f244aea..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/saihong_03.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong_04.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong_04.png deleted file mode 100644 index ab737ef..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/saihong_04.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong_05.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong_05.png deleted file mode 100644 index 93b70db..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/saihong_05.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty/saihong_06.png b/demo/assets/beauty_panel/panel_icon/beauty/saihong_06.png deleted file mode 100644 index 9fd0d93..0000000 Binary files a/demo/assets/beauty_panel/panel_icon/beauty/saihong_06.png and /dev/null differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty_body/beauty_chest.png b/demo/assets/beauty_panel/panel_icon/beauty_body/beauty_chest.png index cd570fe..12574ad 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty_body/beauty_chest.png and b/demo/assets/beauty_panel/panel_icon/beauty_body/beauty_chest.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty_body/body_autohtin_body_strength.png b/demo/assets/beauty_panel/panel_icon/beauty_body/body_autohtin_body_strength.png index 49ab032..f4a5147 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty_body/body_autohtin_body_strength.png and b/demo/assets/beauty_panel/panel_icon/beauty_body/body_autohtin_body_strength.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty_body/body_leg_stretch.png b/demo/assets/beauty_panel/panel_icon/beauty_body/body_leg_stretch.png index 63f3d80..b2aafa3 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty_body/body_leg_stretch.png and b/demo/assets/beauty_panel/panel_icon/beauty_body/body_leg_stretch.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_arm_strength.png b/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_arm_strength.png new file mode 100644 index 0000000..1bb143e Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_arm_strength.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_head_strength.png b/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_head_strength.png index 7399b4f..093e1ca 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_head_strength.png and b/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_head_strength.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_leg_strength.png b/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_leg_strength.png index bc1ec8f..5104147 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_leg_strength.png and b/demo/assets/beauty_panel/panel_icon/beauty_body/body_slim_leg_strength.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty_body/body_thin_shoulder_strength.png b/demo/assets/beauty_panel/panel_icon/beauty_body/body_thin_shoulder_strength.png index f260e79..a4821e3 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty_body/body_thin_shoulder_strength.png and b/demo/assets/beauty_panel/panel_icon/beauty_body/body_thin_shoulder_strength.png differ diff --git a/demo/assets/beauty_panel/panel_icon/beauty_body/body_waish_strength.png b/demo/assets/beauty_panel/panel_icon/beauty_body/body_waish_strength.png index 8d1576f..fad9d19 100644 Binary files a/demo/assets/beauty_panel/panel_icon/beauty_body/body_waish_strength.png and b/demo/assets/beauty_panel/panel_icon/beauty_body/body_waish_strength.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_baixi.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_baixi.png new file mode 100644 index 0000000..b12d0bc Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_baixi.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_danyan.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_danyan.png new file mode 100644 index 0000000..20057d9 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_danyan.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_qingtou.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_qingtou.png new file mode 100644 index 0000000..14de282 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_qingtou.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_qise.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_qise.png new file mode 100644 index 0000000..7fea91e Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_qise.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_shaoniangan.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_shaoniangan.png new file mode 100644 index 0000000..fcd4d6b Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_shaoniangan.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_shensui.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_shensui.png new file mode 100644 index 0000000..40fbb20 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_shensui.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_weisuyan.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_weisuyan.png new file mode 100644 index 0000000..994973d Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_weisuyan.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_xuejie.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_xuejie.png new file mode 100644 index 0000000..b979546 Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_xuejie.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_xuemei.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_xuemei.png new file mode 100644 index 0000000..3ae1a8f Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_xuemei.png differ diff --git a/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_yinglang.png b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_yinglang.png new file mode 100644 index 0000000..0808d4d Binary files /dev/null and b/demo/assets/beauty_panel/panel_icon/light_makeup_icon/light_yinglang.png differ diff --git a/demo/assets/images/icon/beauty_basic_face.png b/demo/assets/images/icon/beauty_basic_face.png deleted file mode 100644 index 0871d7e..0000000 Binary files a/demo/assets/images/icon/beauty_basic_face.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_chin.png b/demo/assets/images/icon/beauty_chin.png deleted file mode 100644 index 89d4885..0000000 Binary files a/demo/assets/images/icon/beauty_chin.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_enlarge_eye.png b/demo/assets/images/icon/beauty_enlarge_eye.png deleted file mode 100644 index 2a5c2bd..0000000 Binary files a/demo/assets/images/icon/beauty_enlarge_eye.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_eye_angle.png b/demo/assets/images/icon/beauty_eye_angle.png deleted file mode 100644 index d2ea0d9..0000000 Binary files a/demo/assets/images/icon/beauty_eye_angle.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_eye_distance.png b/demo/assets/images/icon/beauty_eye_distance.png deleted file mode 100644 index aab5491..0000000 Binary files a/demo/assets/images/icon/beauty_eye_distance.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_eye_lighten.png b/demo/assets/images/icon/beauty_eye_lighten.png deleted file mode 100644 index f4acd3f..0000000 Binary files a/demo/assets/images/icon/beauty_eye_lighten.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_forehead.png b/demo/assets/images/icon/beauty_forehead.png deleted file mode 100644 index 9ea6001..0000000 Binary files a/demo/assets/images/icon/beauty_forehead.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_lips.png b/demo/assets/images/icon/beauty_lips.png deleted file mode 100644 index 62ceb7f..0000000 Binary files a/demo/assets/images/icon/beauty_lips.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_liti.png b/demo/assets/images/icon/beauty_liti.png deleted file mode 100644 index a858025..0000000 Binary files a/demo/assets/images/icon/beauty_liti.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_mouth_height.png b/demo/assets/images/icon/beauty_mouth_height.png deleted file mode 100644 index 53edb05..0000000 Binary files a/demo/assets/images/icon/beauty_mouth_height.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_mouth_size.png b/demo/assets/images/icon/beauty_mouth_size.png deleted file mode 100644 index 88790ae..0000000 Binary files a/demo/assets/images/icon/beauty_mouth_size.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_narrow_face.png b/demo/assets/images/icon/beauty_narrow_face.png deleted file mode 100644 index d83a903..0000000 Binary files a/demo/assets/images/icon/beauty_narrow_face.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_nose_position.png b/demo/assets/images/icon/beauty_nose_position.png deleted file mode 100644 index 7ca123c..0000000 Binary files a/demo/assets/images/icon/beauty_nose_position.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_nose_wing.png b/demo/assets/images/icon/beauty_nose_wing.png deleted file mode 100644 index cc5d52c..0000000 Binary files a/demo/assets/images/icon/beauty_nose_wing.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_redcheeks.png b/demo/assets/images/icon/beauty_redcheeks.png deleted file mode 100644 index 21679b2..0000000 Binary files a/demo/assets/images/icon/beauty_redcheeks.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_remove_eye_pouch.png b/demo/assets/images/icon/beauty_remove_eye_pouch.png deleted file mode 100644 index a7cf4cf..0000000 Binary files a/demo/assets/images/icon/beauty_remove_eye_pouch.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_remove_pounch.png b/demo/assets/images/icon/beauty_remove_pounch.png deleted file mode 100644 index 076d43e..0000000 Binary files a/demo/assets/images/icon/beauty_remove_pounch.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_ruddy.png b/demo/assets/images/icon/beauty_ruddy.png deleted file mode 100644 index f2ebbfd..0000000 Binary files a/demo/assets/images/icon/beauty_ruddy.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_short_face.png b/demo/assets/images/icon/beauty_short_face.png deleted file mode 100644 index 7ceb455..0000000 Binary files a/demo/assets/images/icon/beauty_short_face.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_smooth.png b/demo/assets/images/icon/beauty_smooth.png deleted file mode 100644 index b62f2d3..0000000 Binary files a/demo/assets/images/icon/beauty_smooth.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_thin_cheek.png b/demo/assets/images/icon/beauty_thin_cheek.png deleted file mode 100644 index f08cced..0000000 Binary files a/demo/assets/images/icon/beauty_thin_cheek.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_thin_face.png b/demo/assets/images/icon/beauty_thin_face.png deleted file mode 100644 index 9e2a003..0000000 Binary files a/demo/assets/images/icon/beauty_thin_face.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_thin_face1.png b/demo/assets/images/icon/beauty_thin_face1.png deleted file mode 100644 index 08a6f30..0000000 Binary files a/demo/assets/images/icon/beauty_thin_face1.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_thin_face2.png b/demo/assets/images/icon/beauty_thin_face2.png deleted file mode 100644 index 91e70ac..0000000 Binary files a/demo/assets/images/icon/beauty_thin_face2.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_thin_face3.png b/demo/assets/images/icon/beauty_thin_face3.png deleted file mode 100644 index 9e9b672..0000000 Binary files a/demo/assets/images/icon/beauty_thin_face3.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_thin_nose.png b/demo/assets/images/icon/beauty_thin_nose.png deleted file mode 100644 index 3c91a0c..0000000 Binary files a/demo/assets/images/icon/beauty_thin_nose.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_tooth_beauty.png b/demo/assets/images/icon/beauty_tooth_beauty.png deleted file mode 100644 index 4f22510..0000000 Binary files a/demo/assets/images/icon/beauty_tooth_beauty.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_v_face.png b/demo/assets/images/icon/beauty_v_face.png deleted file mode 100644 index 4be8376..0000000 Binary files a/demo/assets/images/icon/beauty_v_face.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_whiten.png b/demo/assets/images/icon/beauty_whiten.png deleted file mode 100644 index bbce61a..0000000 Binary files a/demo/assets/images/icon/beauty_whiten.png and /dev/null differ diff --git a/demo/assets/images/icon/beauty_wrinkle_smooth.png b/demo/assets/images/icon/beauty_wrinkle_smooth.png deleted file mode 100644 index 9797963..0000000 Binary files a/demo/assets/images/icon/beauty_wrinkle_smooth.png and /dev/null differ diff --git a/demo/assets/images/icon/body_autohtin_body_strength.png b/demo/assets/images/icon/body_autohtin_body_strength.png deleted file mode 100644 index 49ab032..0000000 Binary files a/demo/assets/images/icon/body_autohtin_body_strength.png and /dev/null differ diff --git a/demo/assets/images/icon/body_leg_stretch.png b/demo/assets/images/icon/body_leg_stretch.png deleted file mode 100644 index 63f3d80..0000000 Binary files a/demo/assets/images/icon/body_leg_stretch.png and /dev/null differ diff --git a/demo/assets/images/icon/body_slim_head_strength.png b/demo/assets/images/icon/body_slim_head_strength.png deleted file mode 100644 index 7399b4f..0000000 Binary files a/demo/assets/images/icon/body_slim_head_strength.png and /dev/null differ diff --git a/demo/assets/images/icon/body_slim_leg_strength.png b/demo/assets/images/icon/body_slim_leg_strength.png deleted file mode 100644 index bc1ec8f..0000000 Binary files a/demo/assets/images/icon/body_slim_leg_strength.png and /dev/null differ diff --git a/demo/assets/images/icon/body_thin_shoulder_strength.png b/demo/assets/images/icon/body_thin_shoulder_strength.png deleted file mode 100644 index f260e79..0000000 Binary files a/demo/assets/images/icon/body_thin_shoulder_strength.png and /dev/null differ diff --git a/demo/assets/images/icon/body_waish_strength.png b/demo/assets/images/icon/body_waish_strength.png deleted file mode 100644 index 8d1576f..0000000 Binary files a/demo/assets/images/icon/body_waish_strength.png and /dev/null differ diff --git a/demo/assets/images/icon/btn_back.png b/demo/assets/images/icon/btn_back.png deleted file mode 100644 index 5e243ab..0000000 Binary files a/demo/assets/images/icon/btn_back.png and /dev/null differ diff --git a/demo/assets/images/icon/btn_icon_camera.png b/demo/assets/images/icon/btn_icon_camera.png deleted file mode 100644 index ed1cebf..0000000 Binary files a/demo/assets/images/icon/btn_icon_camera.png and /dev/null differ diff --git a/demo/assets/images/icon/btn_img_input_icon.png b/demo/assets/images/icon/btn_img_input_icon.png deleted file mode 100644 index c51dc87..0000000 Binary files a/demo/assets/images/icon/btn_img_input_icon.png and /dev/null differ diff --git a/demo/assets/images/icon/btn_open_beauty_icon.png b/demo/assets/images/icon/btn_open_beauty_icon.png deleted file mode 100644 index 9b32222..0000000 Binary files a/demo/assets/images/icon/btn_open_beauty_icon.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_baicha.png b/demo/assets/images/icon/filter_baicha.png deleted file mode 100644 index d28f6de..0000000 Binary files a/demo/assets/images/icon/filter_baicha.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_baizhi.png b/demo/assets/images/icon/filter_baizhi.png deleted file mode 100644 index 5490e47..0000000 Binary files a/demo/assets/images/icon/filter_baizhi.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_bohe.png b/demo/assets/images/icon/filter_bohe.png deleted file mode 100644 index 5f86eb3..0000000 Binary files a/demo/assets/images/icon/filter_bohe.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_chulian.png b/demo/assets/images/icon/filter_chulian.png deleted file mode 100644 index ded5fb0..0000000 Binary files a/demo/assets/images/icon/filter_chulian.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_chuxia.png b/demo/assets/images/icon/filter_chuxia.png deleted file mode 100644 index 5d43c29..0000000 Binary files a/demo/assets/images/icon/filter_chuxia.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_dongjing.png b/demo/assets/images/icon/filter_dongjing.png deleted file mode 100644 index 174f640..0000000 Binary files a/demo/assets/images/icon/filter_dongjing.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_gaobai.png b/demo/assets/images/icon/filter_gaobai.png deleted file mode 100644 index b87c1e4..0000000 Binary files a/demo/assets/images/icon/filter_gaobai.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_nuanyang.png b/demo/assets/images/icon/filter_nuanyang.png deleted file mode 100644 index 99899fd..0000000 Binary files a/demo/assets/images/icon/filter_nuanyang.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_qiangwei.png b/demo/assets/images/icon/filter_qiangwei.png deleted file mode 100644 index 87447f7..0000000 Binary files a/demo/assets/images/icon/filter_qiangwei.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_qingcheng.png b/demo/assets/images/icon/filter_qingcheng.png deleted file mode 100644 index c965131..0000000 Binary files a/demo/assets/images/icon/filter_qingcheng.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_qingtou.png b/demo/assets/images/icon/filter_qingtou.png deleted file mode 100644 index 4488d40..0000000 Binary files a/demo/assets/images/icon/filter_qingtou.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_qingyi.png b/demo/assets/images/icon/filter_qingyi.png deleted file mode 100644 index 4693ca6..0000000 Binary files a/demo/assets/images/icon/filter_qingyi.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_xindong.png b/demo/assets/images/icon/filter_xindong.png deleted file mode 100644 index c0e596b..0000000 Binary files a/demo/assets/images/icon/filter_xindong.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_yahui.png b/demo/assets/images/icon/filter_yahui.png deleted file mode 100644 index cadab71..0000000 Binary files a/demo/assets/images/icon/filter_yahui.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_yingtao.png b/demo/assets/images/icon/filter_yingtao.png deleted file mode 100644 index f510a03..0000000 Binary files a/demo/assets/images/icon/filter_yingtao.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_yuantu.png b/demo/assets/images/icon/filter_yuantu.png deleted file mode 100644 index f6643e4..0000000 Binary files a/demo/assets/images/icon/filter_yuantu.png and /dev/null differ diff --git a/demo/assets/images/icon/filter_ziran.png b/demo/assets/images/icon/filter_ziran.png deleted file mode 100644 index 1449db1..0000000 Binary files a/demo/assets/images/icon/filter_ziran.png and /dev/null differ diff --git a/demo/assets/images/icon/image_contrast.png b/demo/assets/images/icon/image_contrast.png deleted file mode 100644 index fb4a038..0000000 Binary files a/demo/assets/images/icon/image_contrast.png and /dev/null differ diff --git a/demo/assets/images/icon/image_saturation.png b/demo/assets/images/icon/image_saturation.png deleted file mode 100644 index 3762fb9..0000000 Binary files a/demo/assets/images/icon/image_saturation.png and /dev/null differ diff --git a/demo/assets/images/icon/image_sharpen.png b/demo/assets/images/icon/image_sharpen.png deleted file mode 100644 index 8dc87e0..0000000 Binary files a/demo/assets/images/icon/image_sharpen.png and /dev/null differ diff --git a/demo/assets/images/icon/motion_2d.png b/demo/assets/images/icon/motion_2d.png deleted file mode 100644 index bd17c81..0000000 Binary files a/demo/assets/images/icon/motion_2d.png and /dev/null differ diff --git a/demo/assets/images/icon/motion_3d.png b/demo/assets/images/icon/motion_3d.png deleted file mode 100644 index 22f1c5c..0000000 Binary files a/demo/assets/images/icon/motion_3d.png and /dev/null differ diff --git a/demo/assets/images/icon/motion_gan.png b/demo/assets/images/icon/motion_gan.png deleted file mode 100644 index 5623936..0000000 Binary files a/demo/assets/images/icon/motion_gan.png and /dev/null differ diff --git a/demo/assets/images/icon/motion_hand.png b/demo/assets/images/icon/motion_hand.png deleted file mode 100644 index 0c924a5..0000000 Binary files a/demo/assets/images/icon/motion_hand.png and /dev/null differ diff --git a/demo/assets/images/icon/naught.png b/demo/assets/images/icon/naught.png deleted file mode 100644 index 7beab28..0000000 Binary files a/demo/assets/images/icon/naught.png and /dev/null differ diff --git a/demo/assets/images/icon/segmentation_danya.png b/demo/assets/images/icon/segmentation_danya.png deleted file mode 100644 index 2f047fe..0000000 Binary files a/demo/assets/images/icon/segmentation_danya.png and /dev/null differ diff --git a/demo/assets/images/icon/segmentation_formulate.png b/demo/assets/images/icon/segmentation_formulate.png deleted file mode 100644 index 8a42c3e..0000000 Binary files a/demo/assets/images/icon/segmentation_formulate.png and /dev/null differ diff --git a/demo/assets/images/icon/segmentation_haiyang.png b/demo/assets/images/icon/segmentation_haiyang.png deleted file mode 100644 index 0c3ca9a..0000000 Binary files a/demo/assets/images/icon/segmentation_haiyang.png and /dev/null differ diff --git a/demo/assets/images/icon/segmentation_linjian.png b/demo/assets/images/icon/segmentation_linjian.png deleted file mode 100644 index ac89e63..0000000 Binary files a/demo/assets/images/icon/segmentation_linjian.png and /dev/null differ diff --git a/demo/assets/images/icon/segmentation_menghuan.png b/demo/assets/images/icon/segmentation_menghuan.png deleted file mode 100644 index bf9b07a..0000000 Binary files a/demo/assets/images/icon/segmentation_menghuan.png and /dev/null differ diff --git a/demo/assets/images/icon/segmentation_wanxia.png b/demo/assets/images/icon/segmentation_wanxia.png deleted file mode 100644 index 2c35827..0000000 Binary files a/demo/assets/images/icon/segmentation_wanxia.png and /dev/null differ diff --git a/demo/assets/images/icon/segmentation_yintian.png b/demo/assets/images/icon/segmentation_yintian.png deleted file mode 100644 index 9bd84a4..0000000 Binary files a/demo/assets/images/icon/segmentation_yintian.png and /dev/null differ diff --git a/demo/assets/images/test_girl.png b/demo/assets/images/test_girl.png deleted file mode 100644 index ac94080..0000000 Binary files a/demo/assets/images/test_girl.png and /dev/null differ diff --git a/demo/assets/labels/i18n.json b/demo/assets/labels/i18n.json index cf75afe..b35268d 100644 --- a/demo/assets/labels/i18n.json +++ b/demo/assets/labels/i18n.json @@ -76,7 +76,8 @@ "demo_live_label4": "Is support Motions", "demo_live_label5": "Get Abilities By XmagicProperty", "panel_slider_type_makeup": "Makeup", - "panel_slider_type_lut": "Filter" + "panel_slider_type_lut": "Filter", + "effect_mode_des":"API Docs—>setEffect\n ]]>" }, "zh": { "none": "无", @@ -155,6 +156,7 @@ "demo_live_label4": "检测设备是否支持此动效", "demo_live_label5": "获取属性所需要的原子能力", "panel_slider_type_makeup": "美妆", - "panel_slider_type_lut": "滤镜" + "panel_slider_type_lut": "滤镜", + "effect_mode_des": "如何选择美颜模式?\n 1,Normal模式提供常用的美颜美型能力,能满足大多数直播场景,且性能较好,适合在中低端机上长时间运行。\n 2,Pro模式美颜美型能力更丰富,提供极致效果,但在低端机上可能卡顿、掉帧。建议仅在高端机(设备level = 5)上使用Pro模式。\n Pro模式包含了Normal模式的全部能力,且优化/新增以下能力:\n 1,美颜:更精致的磨皮效果;增加美黑能力\n 2,画质调整:增加弱光降噪能力\n 3,面部美型:增加女神瘦脸、英俊瘦脸;增加脸型、收下颌、祛法令纹、祛皱\n 4,眼部美型:增加眼宽、眼高、眼睛位置、祛眼袋、亮眼\n 5,眉毛美型:增加眉毛角度、距离、高度、长度、粗细、眉峰\n 6,嘴部美型:增加微笑唇\n 7,鼻子美型:增加鼻梁、山根\n 8,美妆:增加染发\n 9,其他:美白可以仅对皮肤生效\n SDK默认使用Normal模式,如需使用Pro模式,请调用XMagicApi的setEffectMode接口开启。\n 更多说明,请参考官网文档—>API文档—>setEffectMode " } } diff --git a/demo/ios/Flutter/Flutter.podspec b/demo/ios/Flutter/Flutter.podspec new file mode 100644 index 0000000..98e1633 --- /dev/null +++ b/demo/ios/Flutter/Flutter.podspec @@ -0,0 +1,18 @@ +# +# This podspec is NOT to be published. It is only used as a local source! +# This is a generated file; do not edit or check into version control. +# + +Pod::Spec.new do |s| + s.name = 'Flutter' + s.version = '1.0.0' + s.summary = 'A UI toolkit for beautiful and fast apps.' + s.homepage = 'https://flutter.dev' + s.license = { :type => 'BSD' } + s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } + s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s } + s.ios.deployment_target = '12.0' + # Framework linking is handled by Flutter tooling, not CocoaPods. + # Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs. + s.vendored_frameworks = 'path/to/nothing' +end diff --git a/demo/ios/Runner.xcodeproj/project.pbxproj b/demo/ios/Runner.xcodeproj/project.pbxproj index dac0e53..28ebfe3 100644 --- a/demo/ios/Runner.xcodeproj/project.pbxproj +++ b/demo/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -16,11 +16,13 @@ 6EE83B602846412E0096676D /* segmentMotionRes.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 6EE83B512846412E0096676D /* segmentMotionRes.bundle */; }; 6EE83B632846412E0096676D /* 3dMotionRes.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 6EE83B542846412E0096676D /* 3dMotionRes.bundle */; }; 6EE83B6E284F84F90096676D /* makeupMotionRes.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 6EE83B6D284F84F90096676D /* makeupMotionRes.bundle */; }; + 90B747E3827BCDC4BEA4E090 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3DA8F41889129D319FADFD8 /* libPods-Runner.a */; }; 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + CAD185492CF5A99700EAC9A7 /* lightMakeupRes.bundle in Resources */ = {isa = PBXBuildFile; fileRef = CAD185482CF5A99700EAC9A7 /* lightMakeupRes.bundle */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -39,7 +41,9 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 2EF95B4A52AA64E7BC2C45F7 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 5D0450E0CAA3546B512B9B72 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 6EE83B4C2846412D0096676D /* 2dMotionRes.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = 2dMotionRes.bundle; path = xmagic/2dMotionRes.bundle; sourceTree = ""; }; 6EE83B4D2846412D0096676D /* handMotionRes.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = handMotionRes.bundle; path = xmagic/handMotionRes.bundle; sourceTree = ""; }; 6EE83B4F2846412D0096676D /* ganMotionRes.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = ganMotionRes.bundle; path = xmagic/ganMotionRes.bundle; sourceTree = ""; }; @@ -58,6 +62,9 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B866C2AABBDF374AE470FCC9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + CAD185482CF5A99700EAC9A7 /* lightMakeupRes.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = lightMakeupRes.bundle; path = xmagic/lightMakeupRes.bundle; sourceTree = ""; }; + F3DA8F41889129D319FADFD8 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -65,6 +72,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 90B747E3827BCDC4BEA4E090 /* libPods-Runner.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -74,6 +82,7 @@ 6EE83B4A284640C90096676D /* xmagic */ = { isa = PBXGroup; children = ( + CAD185482CF5A99700EAC9A7 /* lightMakeupRes.bundle */, 6EE83B6D284F84F90096676D /* makeupMotionRes.bundle */, 6EE83B4C2846412D0096676D /* 2dMotionRes.bundle */, 6EE83B542846412E0096676D /* 3dMotionRes.bundle */, @@ -102,6 +111,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + D62134E1470A0708755C7DC8 /* Pods */, + AF67EB4CBC84D3B30531BC87 /* Frameworks */, ); sourceTree = ""; }; @@ -138,6 +149,24 @@ name = "Supporting Files"; sourceTree = ""; }; + AF67EB4CBC84D3B30531BC87 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F3DA8F41889129D319FADFD8 /* libPods-Runner.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + D62134E1470A0708755C7DC8 /* Pods */ = { + isa = PBXGroup; + children = ( + B866C2AABBDF374AE470FCC9 /* Pods-Runner.debug.xcconfig */, + 5D0450E0CAA3546B512B9B72 /* Pods-Runner.release.xcconfig */, + 2EF95B4A52AA64E7BC2C45F7 /* Pods-Runner.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -145,12 +174,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 072ED593898F74BC74E6DFF2 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 00CADC0536666A55DBF0C749 /* [CP] Embed Pods Frameworks */, + A4B607768C09038ACAD3F98D /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -172,6 +204,7 @@ TargetAttributes = { 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1600; }; }; }; @@ -204,6 +237,7 @@ 6EE83B632846412E0096676D /* 3dMotionRes.bundle in Resources */, 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 6EE83B5F2846412E0096676D /* lut.bundle in Resources */, + CAD185492CF5A99700EAC9A7 /* lightMakeupRes.bundle in Resources */, 6EE83B6E284F84F90096676D /* makeupMotionRes.bundle in Resources */, 6EE83B5C2846412E0096676D /* handMotionRes.bundle in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, @@ -215,6 +249,45 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 00CADC0536666A55DBF0C749 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 072ED593898F74BC74E6DFF2 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -243,6 +316,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + A4B607768C09038ACAD3F98D /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -333,17 +423,22 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; FLUTTER_BUILD_MODE = release; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.tencent.effect.tencentEffectFlutterExample; + PRODUCT_BUNDLE_IDENTIFIER = com.yunxiao.dev.test; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 6.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; @@ -458,17 +553,25 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 2ZNSKQLPTK; ENABLE_BITCODE = NO; FLUTTER_BUILD_MODE = release; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.tencent.effect.tencentEffectFlutterExample; + PRODUCT_BUNDLE_IDENTIFIER = com.yunxiao.dev.test; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "Yunxiao Develop Profile"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 6.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -478,17 +581,22 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; FLUTTER_BUILD_MODE = release; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.tencent.effect.tencentEffectFlutterExample; + PRODUCT_BUNDLE_IDENTIFIER = com.yunxiao.dev.test; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 6.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/demo/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/demo/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a..1289f15 100644 --- a/demo/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/demo/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -81,7 +81,7 @@ buildConfiguration = "Debug"> diff --git a/demo/ios/Runner/Base.lproj/Main.storyboard b/demo/ios/Runner/Base.lproj/Main.storyboard index f3c2851..7fbb0b2 100644 --- a/demo/ios/Runner/Base.lproj/Main.storyboard +++ b/demo/ios/Runner/Base.lproj/Main.storyboard @@ -1,8 +1,10 @@ - - + + + - + + @@ -14,13 +16,14 @@ - + - + + diff --git a/demo/ios/Runner/GeneratedPluginRegistrant.h b/demo/ios/Runner/GeneratedPluginRegistrant.h new file mode 100644 index 0000000..7a89092 --- /dev/null +++ b/demo/ios/Runner/GeneratedPluginRegistrant.h @@ -0,0 +1,19 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GeneratedPluginRegistrant_h +#define GeneratedPluginRegistrant_h + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GeneratedPluginRegistrant : NSObject ++ (void)registerWithRegistry:(NSObject*)registry; +@end + +NS_ASSUME_NONNULL_END +#endif /* GeneratedPluginRegistrant_h */ diff --git a/demo/ios/Runner/GeneratedPluginRegistrant.m b/demo/ios/Runner/GeneratedPluginRegistrant.m new file mode 100644 index 0000000..c1297cf --- /dev/null +++ b/demo/ios/Runner/GeneratedPluginRegistrant.m @@ -0,0 +1,84 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#import "GeneratedPluginRegistrant.h" + +#if __has_include() +#import +#else +@import fluttertoast; +#endif + +#if __has_include() +#import +#else +@import image_picker_ios; +#endif + +#if __has_include() +#import +#else +@import live_flutter_plugin; +#endif + +#if __has_include() +#import +#else +@import orientation; +#endif + +#if __has_include() +#import +#else +@import package_info_plus; +#endif + +#if __has_include() +#import +#else +@import path_provider_foundation; +#endif + +#if __has_include() +#import +#else +@import permission_handler_apple; +#endif + +#if __has_include() +#import +#else +@import shared_preferences_foundation; +#endif + +#if __has_include() +#import +#else +@import tencent_effect_flutter; +#endif + +#if __has_include() +#import +#else +@import tencent_trtc_cloud; +#endif + +@implementation GeneratedPluginRegistrant + ++ (void)registerWithRegistry:(NSObject*)registry { + [FluttertoastPlugin registerWithRegistrar:[registry registrarForPlugin:@"FluttertoastPlugin"]]; + [FLTImagePickerPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTImagePickerPlugin"]]; + [TencentLiveCloudPlugin registerWithRegistrar:[registry registrarForPlugin:@"TencentLiveCloudPlugin"]]; + [OrientationPlugin registerWithRegistrar:[registry registrarForPlugin:@"OrientationPlugin"]]; + [FLTPackageInfoPlusPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTPackageInfoPlusPlugin"]]; + [PathProviderPlugin registerWithRegistrar:[registry registrarForPlugin:@"PathProviderPlugin"]]; + [PermissionHandlerPlugin registerWithRegistrar:[registry registrarForPlugin:@"PermissionHandlerPlugin"]]; + [SharedPreferencesPlugin registerWithRegistrar:[registry registrarForPlugin:@"SharedPreferencesPlugin"]]; + [TencentEffectFlutterPlugin registerWithRegistrar:[registry registrarForPlugin:@"TencentEffectFlutterPlugin"]]; + [TencentTRTCCloud registerWithRegistrar:[registry registrarForPlugin:@"TencentTRTCCloud"]]; +} + +@end diff --git a/demo/ios/Runner/Info.plist b/demo/ios/Runner/Info.plist index e9fea39..da33e31 100644 --- a/demo/ios/Runner/Info.plist +++ b/demo/ios/Runner/Info.plist @@ -49,5 +49,7 @@ UIViewControllerBasedStatusBarAppearance + CADisableMinimumFrameDurationOnPhone + diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/jiemao.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/jiemao.png new file mode 100644 index 0000000..a8f5fa0 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/jiemao.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/kouhong.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/kouhong.png new file mode 100644 index 0000000..f140b89 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/kouhong.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/lut.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/lut.png new file mode 100644 index 0000000..0a27411 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/lut.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/meimao.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/meimao.png new file mode 100644 index 0000000..4cf090c Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/meimao.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/meitong.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/meitong.png new file mode 100644 index 0000000..65800a9 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/meitong.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/saihong.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/saihong.png new file mode 100644 index 0000000..a009575 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/saihong.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/xiurong.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/xiurong.png new file mode 100644 index 0000000..b1cee91 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/xiurong.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/yanxian.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/yanxian.png new file mode 100644 index 0000000..3a88944 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/yanxian.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/yanying.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/yanying.png new file mode 100644 index 0000000..75fd580 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/image/yanying.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/makeup.json b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/makeup.json new file mode 100644 index 0000000..3a7512f --- /dev/null +++ b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_baixi/makeup.json @@ -0,0 +1 @@ +[{"alpha":1.0,"effectName":"lut","resourcePath":"image/lut.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureLipsLut","resourcePath":"image/kouhong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureRedCheek","resourcePath":"image/saihong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureSoftlight","resourcePath":"image/xiurong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeShadow","resourcePath":"image/yanying.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeLiner","resourcePath":"image/yanxian.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyelash","resourcePath":"image/jiemao.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyebrow","resourcePath":"image/meimao.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeball","resourcePath":"image/meitong.png"},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyelids","resourcePath":""},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyewocan","resourcePath":""}] \ No newline at end of file diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/kouhong.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/kouhong.png new file mode 100644 index 0000000..b62e067 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/kouhong.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/meimao.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/meimao.png new file mode 100644 index 0000000..0013a26 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/meimao.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/meitong.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/meitong.png new file mode 100644 index 0000000..2d922d3 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/meitong.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/saihong.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/saihong.png new file mode 100644 index 0000000..7c123dc Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/saihong.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/xiurong.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/xiurong.png new file mode 100644 index 0000000..e5c5b78 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/xiurong.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/yanying.png b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/yanying.png new file mode 100644 index 0000000..ff255c9 Binary files /dev/null and b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/image/yanying.png differ diff --git a/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/makeup.json b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/makeup.json new file mode 100644 index 0000000..788d12f --- /dev/null +++ b/demo/ios/Runner/xmagic/lightMakeupRes.bundle/light_danyan/makeup.json @@ -0,0 +1 @@ +[{"alpha":0.0,"effectName":"lut","resourcePath":""},{"alpha":1.0,"effectName":"beauty.faceFeatureLipsLut","resourcePath":"image/kouhong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureRedCheek","resourcePath":"image/saihong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureSoftlight","resourcePath":"image/xiurong.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeShadow","resourcePath":"image/yanying.png"},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeLiner","resourcePath":""},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyelash","resourcePath":""},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyebrow","resourcePath":"image/meimao.png"},{"alpha":1.0,"effectName":"beauty.faceFeatureEyesMakeup.eyeball","resourcePath":"image/meitong.png"},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyelids","resourcePath":""},{"alpha":0.0,"effectName":"beauty.faceFeatureEyesMakeup.eyewocan","resourcePath":""}] \ No newline at end of file diff --git a/demo/lib/config/te_res_config.dart b/demo/lib/config/te_res_config.dart index 3183e35..db50f7d 100644 --- a/demo/lib/config/te_res_config.dart +++ b/demo/lib/config/te_res_config.dart @@ -46,6 +46,10 @@ class TEResConfig { .add(TEPanelDataModel(resourcePath, UICategory.SEGMENTATION)); } + void setLightMakeupRes(String resourcePath) { + defaultPanelDataList + .add(TEPanelDataModel(resourcePath, UICategory.LIGHT_MAKEUP)); + } List getPanelDataList() { return defaultPanelDataList; } diff --git a/demo/lib/constant/te_constant.dart b/demo/lib/constant/te_constant.dart index b4d0bbf..5ca3516 100644 --- a/demo/lib/constant/te_constant.dart +++ b/demo/lib/constant/te_constant.dart @@ -1,172 +1,283 @@ class TEffectName { ///Filters static const String EFFECT_LUT = "lut"; + ///Makeup static const String EFFECT_MAKEUP = "makeup"; + ///Animated Effects static const String EFFECT_MOTION = "motion"; + + /// light makeup + static const String EFFECT_LIGHT_MAKEUP = "light.makeup"; + ///Split static const String EFFECT_SEGMENTATION = "segmentation"; + + static const String BEAUTY_WHITEN_0 = "beauty.lutFoundationAlpha0"; + //Brightening static const String BEAUTY_WHITEN = "beauty.lutFoundationAlpha"; + //Whitening 2 static const String BEAUTY_WHITEN_2 = "beauty.lutFoundationAlpha2"; + //Whitening 3 static const String BEAUTY_WHITEN_3 = "beauty.lutFoundationAlpha3"; + + static const String BEAUTY_BLACK_1 = "beauty.lutBlackAlpha1"; + static const String BEAUTY_BLACK_2 = "beauty.lutBlackAlpha2"; + //Skin Smoothing static const String BEAUTY_SMOOTH = "smooth.smooth"; + //Rosy skin static const String BEAUTY_ROSY = "smooth.rosy"; + //Contrast static const String BEAUTY_CONTRAST = "beauty.imageContrastAlpha"; + //Saturation static const String BEAUTY_SATURATION = "smooth.saturation"; + //Clarity static const String BEAUTY_CLEAR = " beauty.lutClearAlpha"; + //Sharpening static const String BEAUTY_SHARPEN = "smooth.sharpen"; + + ///denoise + static const String BEAUTY_IMAGE_DENOISE = "postEffect.denoise"; + ///Color Temperature static const String BEAUTY_IMAGE_WARMTH = "beauty.imageWarmth"; + ///Hue static const String BEAUTY_IMAGE_TINT = "beauty.imageTint"; + + ///Brightness + static const String BEAUTY_IMAGE_BRIGHTNESS = "beauty.imageBrightness"; + //Big Eyes static const String BEAUTY_ENLARGE_EYE = "basicV7.enlargeEye"; + //Bright Eyes static const String BEAUTY_EYE_LIGHTEN = "beauty.eyeLighten"; + //Interpupillary Distance static const String BEAUTY_EYE_DISTANCE = "basicV7.eyeDistance"; + //Canthus static const String BEAUTY_EYE_ANGLE = "basicV7.eyeAngle"; + //Eye Width static const String BEAUTY_EYE_WIDTH = "basicV7.eyeWidth"; + //Eye Level static const String BEAUTY_EYE_HEIGHT = "basicV7.eyeHeight"; + + /// eye out corner + static const String BEAUTY_EYE_OUT_CORNER = "basicV7.eyeOutCorner"; + + ///eye position + static const String BEAUTY_EYE_POSITION = "basicV7.eyePosition"; + //Puffy Eye Removal static const String BEAUTY_FACE_REMOVE_EYE_BAGS = "beauty.removeEyeBags"; + //Eyebrow Angle static const String BEAUTY_EYEBROW_ANGLE = "basicV7.eyebrowAngle"; + //Eyebrow Distance static const String BEAUTY_EYEBROW_DISTANCE = "basicV7.eyebrowDistance"; + //Eyebrow Height static const String BEAUTY_EYEBROW_HEIGHT = "basicV7.eyebrowHeight"; + // Eyebrow Length static const String BEAUTY_EYEBROW_LENGTH = "basicV7.eyebrowLength"; + // Eyebrow Thickness static const String BEAUTY_EYEBROW_THICKNESS = "basicV7.eyebrowThickness"; + // Brow Peak static const String BEAUTY_EYEBROW_RIDGE = "basicV7.eyebrowRidge"; + // Narrow Nose static const String BEAUTY_NOSE_THIN = "basicV7.thinNose"; + // Nose Wings static const String BEAUTY_NOSE_WING = " basicV7.noseWing"; + // Nose Position static const String BEAUTY_NOSE_HEIGHT = "basicV7.noseHeight"; + // Nasal Bridge static const String BEAUTY_NOSE_BRIDGE_WIDTH = "basicV7.noseBridgeWidth"; + // Root of the Nose static const String BEAUTY_NASION = "basicV7.nasion"; + // White Teeth static const String BEAUTY_TOOTH_WHITEN = "beauty.toothWhiten"; + // Mouth Shape static const String BEAUTY_MOUTH_SIZE = "basicV7.mouthSize"; + // Lip Thickness static const String BEAUTY_MOUTH_HEIGHT = "basicV7.mouthHeight"; + // Lip Width static const String BEAUTY_MOUTH_WIDTH = "basicV7.mouthWidth"; + // Lip Position static const String BEAUTY_MOUTH_POSITION = "basicV7.mouthPosition"; + // Smile Lips static const String BEAUTY_SMILE_FACE = "basicV7.smileFace"; + // Narrow Face static const String BEAUTY_FACE_THIN = "basicV7.thinFace"; + // Slim Face (natural) static const String BEAUTY_FACE_NATURE = "basicV7.natureFace"; + // Slim Face (goddess) static const String BEAUTY_FACE_GODNESS = "basicV7.godnessFace"; + // Slim Face (handsome) static const String BEAUTY_FACE_MALE_GOD = "basicV7.maleGodFace"; + // V-shaped Face static const String BEAUTY_FACE_V = "basicV7.vFace"; + // Chin Retraction static const String BEAUTY_FACE_JAW = "basicV7.faceJaw"; + // Short Face static const String BEAUTY_FACE_SHORT = "basicV7.shortFace"; + // Face Shape static const String BEAUTY_FACE_BASIC = "liquefaction.basic3"; + // Chin static const String BEAUTY_FACE_THIN_CHIN = "basicV7.chin"; + // Forehead static const String BEAUTY_FACE_FOREHEAD = "basicV7.forehead"; + // Wrinkle Removal static const String BEAUTY_FACE_REMOVE_WRINKLE = "beauty.removeWrinkle"; + // Remove Nasolabial Folds static const String BEAUTY_FACE_REMOVE_LAW_LINE = "beauty.removeLawLine"; + // Slim Cheeks static const String BEAUTY_FACE_THIN_CHEEKBONE = "basicV7.cheekboneThin"; + // Lipstick static const String BEAUTY_MOUTH_LIPSTICK = "beauty.faceFeatureLipsLut"; + // Blush static const String BEAUTY_FACE_RED_CHEEK = "beauty.faceFeatureRedCheek"; + // Sculpted static const String BEAUTY_FACE_SOFTLIGHT = "beauty.faceFeatureSoftlight"; + // Eyeshadow static const String BEAUTY_FACE_MAKEUP_EYE_SHADOW = "beauty.faceFeatureEyesMakeup.eyeShadow"; + // Eyeliner static const String BEAUTY_FACE_MAKEUP_EYE_LINER = "beauty.faceFeatureEyesMakeup.eyeLiner"; + // Mascara static const String BEAUTY_FACE_MAKEUP_EYELASH = "beauty.faceFeatureEyesMakeup.eyelash"; + // Eyebrows static const String BEAUTY_FACE_MAKEUP_EYEBROW = "beauty.faceFeatureEyesMakeup.eyebrow"; + // Colored Contact Lenses static const String BEAUTY_FACE_MAKEUP_EYEBALL = "beauty.faceFeatureEyesMakeup.eyeball"; + + ///eyeSequins + static const String BEAUTY_FACE_MAKEUP_EYE_SEQUINS = + "beauty.faceFeatureEyesMakeup.eyeSequins"; + + ///EYELIDS + static const String BEAUTY_FACE_MAKEUP_EYELIDS = + "beauty.faceFeatureEyesMakeup.eyelids"; + + ///wocan + static const String BEAUTY_FACE_MAKEUP_EYEWOCAN = + "beauty.faceFeatureEyesMakeup.eyewocan"; + + ///hair color + static const String BEAUTY_HAIR_COLOR_LUT = "beauty.hairColorLut"; + // One-click Slimming static const String BODY_AUTOTHIN_BODY_STRENGTH = "body.autothinBodyStrength"; + // Long Legs static const String BODY_LEG_STRETCH = "body.legStretch"; + // Leg Slimming static const String BODY_SLIM_LEG_STRENGTH = "body.slimLegStrength"; + // Waist Slimming static const String BODY_WAIST_STRENGTH = "body.waistStrength"; + // Shoulder Slimming static const String BODY_THIN_SHOULDER_STRENGTH = "body.thinShoulderStrength"; + // Breast Augmentation static const String BODY_ENLARGE_CHEST_STRENGTH = "body.enlargeChestStrength"; + // Small Head static const String BODY_SLIM_HEAD_STRENGTH = "body.slimHeadStrength"; -} - + ///slim arm + static const String BODY_SLIM_ARM_STRENGTH = "body.slimArmStrength"; +} class TEffectID { /// Natural.thin face - nature static const String BEAUTY_FACE_NATURE_ID = "nature"; + /// Goddess.thin face - goddess static const String BEAUTY_FACE_FEMALE_GOD_ID = "femaleGod"; + /// Handsome.thin face - handsome static const String BEAUTY_FACE_MALE_GOD_ID = "maleGod"; + /// Lipstick ID static const String BEAUTY_LIPS_LIPS_MASK = "beauty.lips.lipsMask"; + /// Blush ID static const String BEAUTY_MAKEUP_MULTIPLY_MULTIPLY_MASK = "beauty.makeupMultiply.multiplyMask"; + /// 3D ID static const String BEAUTY_SOFTLIGHT_SOFTLIGHT_MASK = "beauty.softLight.softLightMask"; + /// Eyeshadow ID static const String BEAUTY_EYE_SHADOW_MASK = "beauty.eyesMakeup.mask.eyeShadow"; + /// Eyeliner ID static const String BEAUTY_EYE_LINER_MASK = "beauty.eyesMakeup.mask.eyeLiner"; + /// Mascara ID static const String BEAUTY_EYELASH_MASK = "beauty.eyesMakeup.mask.eyelash"; + /// Eyebrows ID static const String BEAUTY_EYEBROW_MASK = "beauty.eyesMakeup.mask.eyebrow"; + /// Colored Contact Lenses ID static const String BEAUTY_EYEBALL_MASK = "beauty.eyesMakeup.mask.eyeball"; - } diff --git a/demo/lib/languages/AppLocalizations.dart b/demo/lib/languages/AppLocalizations.dart index 9da2c4f..3cdb624 100644 --- a/demo/lib/languages/AppLocalizations.dart +++ b/demo/lib/languages/AppLocalizations.dart @@ -282,4 +282,8 @@ class AppLocalizations { _localizedStrings[locale.languageCode]!["panel_slider_type_lut"]; + String? get getEffectModeDes => + _localizedStrings[locale.languageCode]!["effect_mode_des"]; + + } diff --git a/demo/lib/main.dart b/demo/lib/main.dart index d2caaec..0bb2e56 100644 --- a/demo/lib/main.dart +++ b/demo/lib/main.dart @@ -12,7 +12,7 @@ import 'package:tencent_effect_flutter_demo/page/live_page.dart'; import 'package:tencent_effect_flutter_demo/page/trtc_page.dart'; import 'package:tencent_effect_flutter_demo/view/progress_dialog.dart'; import 'config/te_res_config.dart'; - +import 'languages/AppLocalizations.dart'; const String licenseUrl = "Please replace it with your license URL."; @@ -29,9 +29,9 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: const [ - GlobalWidgetsLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, APPLocalizationDelegate.delegate ], supportedLocales: const [ @@ -58,6 +58,8 @@ class HomePage extends StatefulWidget { class _HomeState extends State { static const String TAG = "_HomeState"; + EffectMode effectMode = EffectMode.PRO; + @override void initState() { super.initState(); @@ -70,8 +72,7 @@ class _HomeState extends State { appBar: AppBar( title: const Text('Tencent Effect demo'), ), - body: Center( - child: Column( + body: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ TextButton( @@ -86,20 +87,57 @@ class _HomeState extends State { style: TextStyle( fontWeight: FontWeight.bold, ))), - // TextButton( - // onPressed: () => {_onClickPlayer(context)}, - // child: const Text('Player', - // style: TextStyle( - // fontWeight: FontWeight.bold, - // ))), - // TextButton( - // onPressed: () => {_onTestPressed(context)}, - // child: const Text('Test', - // style: TextStyle( - // fontWeight: FontWeight.bold, - // ))), + Padding( + padding: const EdgeInsets.all(16.0), + child: Row( + children: [ + const Text( + "Effect Mode : ", + ), + Expanded( + child: Align( + alignment: Alignment.centerRight, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Radio( + value: EffectMode.NORMAL, + onChanged: (value) { + setState(() { + effectMode = value! as EffectMode; + }); + }, + groupValue: effectMode, + ), + const Text("Normal"), + Radio( + value: EffectMode.PRO, + onChanged: (value) { + setState(() { + effectMode = value! as EffectMode; + }); + }, + groupValue: effectMode, + ), + const Text("Pro"), + ], + ), + )) + ], + ), + ), + Flexible( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + AppLocalizations.of(context)?.getEffectModeDes ?? "", + style: const TextStyle(fontSize: 16.0)), + ), + ), + ) ], - )), + ), ); } @@ -151,8 +189,6 @@ class _HomeState extends State { }); } - - void _onClickTRTC(BuildContext context) { _initSettings((result) { if (result) { @@ -176,14 +212,12 @@ class _HomeState extends State { }); } - ///dismiss dialog _dismissDialog(BuildContext context) { Navigator.of(context).pop(true); } void _requestPermission(BuildContext context, String pageName) async { - ///request permission Map statuses = await [ Permission.camera, @@ -191,16 +225,17 @@ class _HomeState extends State { ].request(); if (statuses[Permission.camera] != PermissionStatus.denied && statuses[Permission.microphone] != PermissionStatus.denied) { + TencentEffectApi.getApi()!.setEffectMode(effectMode); Navigator.of(context).pushNamed(pageName); } } void initPanelViewConfig() { - TEResConfig.getConfig() ..setBeautyRes("assets/beauty_panel/beauty.json") ..setBeautyBodyRes("assets/beauty_panel/beauty_body.json") ..setLutRes("assets/beauty_panel/lut.json") + ..setLightMakeupRes("assets/beauty_panel/light_makeup.json") ..setMakeUpRes("assets/beauty_panel/makeup.json") ..setMotionRes("assets/beauty_panel/motions.json") ..setSegmentationRes("assets/beauty_panel/segmentation.json"); @@ -225,7 +260,6 @@ class _HomeState extends State { "app_version_name", currentAppVersionName); } - _onTestPressed(BuildContext context) async { ///Method for testing copied model bundles (Android only) // Directory directory = await getApplicationSupportDirectory(); diff --git a/demo/lib/manager/res_path_manager.dart b/demo/lib/manager/res_path_manager.dart index c3bace8..accf53a 100644 --- a/demo/lib/manager/res_path_manager.dart +++ b/demo/lib/manager/res_path_manager.dart @@ -16,7 +16,7 @@ abstract class ResPathManager { static const String JSON_RES_MARK_MOTION_GESTURE = "MotionRes/handMotionRes/"; static const String JSON_RES_MARK_MOTION_GAN = "MotionRes/ganMotionRes/"; static const String JSON_RES_MARK_SEG = "MotionRes/segmentMotionRes/"; - + static const String JSON_RES_MARK_LIGHT_MAKEUP = "MotionRes/light_makeup/"; ///Get the storage path of the resource, which is called when the Beauty SDK is initialized Future getResPath(); @@ -45,6 +45,8 @@ abstract class ResPathManager { ///Get the Makeup resource path Future getMakeUpDir(); + Future getLightMakeupDir(); + ///Get split resource path Future getSegDir(); diff --git a/demo/lib/manager/res_path_manager_android.dart b/demo/lib/manager/res_path_manager_android.dart index 7c8dea6..9e17eae 100644 --- a/demo/lib/manager/res_path_manager_android.dart +++ b/demo/lib/manager/res_path_manager_android.dart @@ -34,6 +34,11 @@ class ResPathManagerAndroid implements ResPathManager { return "${await getResPath()}${Platform.pathSeparator}MotionRes${Platform.pathSeparator}handMotionRes${Platform.pathSeparator}"; } + @override + Future getLightMakeupDir() async { + return "${await getResPath()}${Platform.pathSeparator}MotionRes${Platform.pathSeparator}light_makeup${Platform.pathSeparator}"; + } + @override Future getResPath() async { Directory directory = await getApplicationSupportDirectory(); diff --git a/demo/lib/manager/res_path_manager_ios.dart b/demo/lib/manager/res_path_manager_ios.dart index 0cc034e..15e6469 100644 --- a/demo/lib/manager/res_path_manager_ios.dart +++ b/demo/lib/manager/res_path_manager_ios.dart @@ -34,6 +34,11 @@ class ResPathManagerIos implements ResPathManager { return "${await getResPath()}${Platform.pathSeparator}handMotionRes.bundle${Platform.pathSeparator}"; } + @override + Future getLightMakeupDir() async { + return "${await getResPath()}${Platform.pathSeparator}lightMakeupRes.bundle${Platform.pathSeparator}"; + } + @override Future getResPath() async { Directory directory = await getApplicationSupportDirectory(); diff --git a/demo/lib/manager/te_param_manager.dart b/demo/lib/manager/te_param_manager.dart index eb92359..13e747f 100644 --- a/demo/lib/manager/te_param_manager.dart +++ b/demo/lib/manager/te_param_manager.dart @@ -1,4 +1,6 @@ +import 'package:tencent_effect_flutter_demo/utils/producer_utils.dart'; + import '../constant/te_constant.dart'; import '../model/te_ui_property.dart'; @@ -9,6 +11,15 @@ class TEParamManager { if (param != null && param.effectName != null && param.effectName!.isNotEmpty) { + if (TEffectName.EFFECT_LIGHT_MAKEUP == param.effectName) { + //如果是轻美妆 + //当设置了轻美妆的时候 需要删除 单点美妆和滤镜 + removePointMakeup(); + } + if (ProducerUtils.isPointMakeup(param)) { + //当设置了单点妆容或滤镜的时候 需要删除 轻美妆 + removeLightMakeup(); + } String? key = getKey(param); if (key != null) { allData[key] = param; @@ -26,10 +37,14 @@ class TEParamManager { String? getKey(TESDKParam param) { switch (param.effectName) { + case TEffectName.BEAUTY_WHITEN_0: case TEffectName.BEAUTY_WHITEN: case TEffectName.BEAUTY_WHITEN_2: case TEffectName.BEAUTY_WHITEN_3: return TEffectName.BEAUTY_WHITEN; + case TEffectName.BEAUTY_BLACK_1: + case TEffectName.BEAUTY_BLACK_2: + return TEffectName.BEAUTY_BLACK_1; case TEffectName.BEAUTY_FACE_NATURE: case TEffectName.BEAUTY_FACE_GODNESS: case TEffectName.BEAUTY_FACE_MALE_GOD: @@ -54,4 +69,14 @@ class TEParamManager { bool isEmpty() { return allData.isEmpty; } + + void removePointMakeup() { + for (String effectName in ProducerUtils.pointMakeupEffectName) { + allData.remove(effectName); + } + } + + void removeLightMakeup() { + allData.remove(TEffectName.EFFECT_LIGHT_MAKEUP); + } } diff --git a/demo/lib/model/te_ui_property.dart b/demo/lib/model/te_ui_property.dart index 48b2497..6e03c82 100644 --- a/demo/lib/model/te_ui_property.dart +++ b/demo/lib/model/te_ui_property.dart @@ -130,6 +130,7 @@ enum UICategory { MOTION, MAKEUP, SEGMENTATION, + LIGHT_MAKEUP } class UIState { @@ -223,6 +224,8 @@ class EffectValueType { EffectValueType.RANGE_NEG100_POS100, TEffectName.BEAUTY_IMAGE_TINT: EffectValueType.RANGE_NEG100_POS100, + TEffectName.BEAUTY_IMAGE_BRIGHTNESS: + EffectValueType.RANGE_NEG100_POS100, TEffectName.BEAUTY_EYE_DISTANCE: EffectValueType.RANGE_NEG100_POS100, TEffectName.BEAUTY_EYE_ANGLE: @@ -231,6 +234,11 @@ class EffectValueType { EffectValueType.RANGE_NEG100_POS100, TEffectName.BEAUTY_EYE_HEIGHT: EffectValueType.RANGE_NEG100_POS100, + TEffectName.BEAUTY_EYE_OUT_CORNER: + EffectValueType.RANGE_NEG100_POS100, + TEffectName.BEAUTY_EYE_POSITION: + EffectValueType.RANGE_NEG100_POS100, + TEffectName.BEAUTY_EYEBROW_ANGLE: EffectValueType.RANGE_NEG100_POS100, TEffectName.BEAUTY_EYEBROW_DISTANCE: @@ -265,8 +273,10 @@ class EffectValueType { EffectValueType.RANGE_NEG100_POS100, TEffectName.BEAUTY_FACE_FOREHEAD: EffectValueType.RANGE_NEG100_POS100, - - TEffectName.BODY_ENLARGE_CHEST_STRENGTH:EffectValueType.RANGE_NEG100_POS100 + TEffectName.BODY_ENLARGE_CHEST_STRENGTH: + EffectValueType.RANGE_NEG100_POS100, + TEffectName.BODY_SLIM_ARM_STRENGTH: + EffectValueType.RANGE_NEG100_POS100 }; diff --git a/demo/lib/page/default_panel_view_callback.dart b/demo/lib/page/default_panel_view_callback.dart index e82f164..d938ffc 100644 --- a/demo/lib/page/default_panel_view_callback.dart +++ b/demo/lib/page/default_panel_view_callback.dart @@ -3,7 +3,9 @@ import 'package:flutter/cupertino.dart'; import 'package:image_picker/image_picker.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:tencent_effect_flutter/api/tencent_effect_api.dart'; +import 'package:tencent_effect_flutter_demo/constant/te_constant.dart'; import 'package:tencent_effect_flutter_demo/manager/te_param_manager.dart'; +import 'package:tencent_effect_flutter_demo/utils/producer_utils.dart'; import '../model/te_ui_property.dart'; import '../view/beauty_panel_view.dart'; @@ -14,6 +16,7 @@ class DefaultPanelViewCallBack implements BeautyPanelViewCallBack { List? _defaultEffectList; bool _isEnable = false; TEParamManager paramManager = TEParamManager(); + bool hasLightMakeup = false; final bool _pickImg = true ; // true indicates selecting an image for custom background, false indicates selecting a video. @@ -78,8 +81,7 @@ class DefaultPanelViewCallBack implements BeautyPanelViewCallBack { debugPrint("onUpdateEffect ${sdkParam.toJson().toString()}"); if (sdkParam.effectName != null) { paramManager.putTEParam(sdkParam); - TencentEffectApi.getApi()?.setEffect(sdkParam.effectName!, - sdkParam.effectValue, sdkParam.resourcePath, sdkParam.extraInfo); + _setEffect(sdkParam); } } @@ -89,4 +91,22 @@ class DefaultPanelViewCallBack implements BeautyPanelViewCallBack { onUpdateEffect(sdkParam); } } + + void _setEffect(TESDKParam sdkParam){ + _clearLightMakeup(sdkParam); + TencentEffectApi.getApi()?.setEffect(sdkParam.effectName!, + sdkParam.effectValue, sdkParam.resourcePath, sdkParam.extraInfo); + } + + + void _clearLightMakeup(TESDKParam sdkParam) { + if (TEffectName.EFFECT_LIGHT_MAKEUP == sdkParam.effectName) { + hasLightMakeup = true; + } + if (hasLightMakeup && ProducerUtils.isPointMakeup(sdkParam)) { + hasLightMakeup = false; + TencentEffectApi.getApi() + ?.setEffect(TEffectName.EFFECT_LIGHT_MAKEUP, 0, null, null); + } + } } diff --git a/demo/lib/page/trtc_page.dart b/demo/lib/page/trtc_page.dart index a6e634b..9d10d9a 100644 --- a/demo/lib/page/trtc_page.dart +++ b/demo/lib/page/trtc_page.dart @@ -428,8 +428,8 @@ class TRTCPageState extends State with WidgetsBindingObserver { Widget renderView(item, valueKey, width, height) { return TRTCCloudVideoView( key: valueKey, - hitTestBehavior: PlatformViewHitTestBehavior.opaque, - viewType: TRTCCloudDef.TRTC_VideoView_SurfaceView, + hitTestBehavior: PlatformViewHitTestBehavior.transparent, + viewType: TRTCCloudDef.TRTC_VideoView_TextureView, viewMode: TRTCCloudDef.TRTC_VideoView_Model_Virtual, onViewCreated: (viewId) async { if (item['userId'] == userInfo['userId']) { diff --git a/demo/lib/producer/te_general_data_producer.dart b/demo/lib/producer/te_general_data_producer.dart index 14cb7da..6d5cefe 100644 --- a/demo/lib/producer/te_general_data_producer.dart +++ b/demo/lib/producer/te_general_data_producer.dart @@ -22,6 +22,12 @@ class TEGeneralDataProducer implements TEPanelDataProducer { final Map _uiPropertyIndexByNameMap = HashMap(); + + bool hasLightMakeup = false; + bool pointMakeupChecked = false; + bool lightMakeupChecked = false; + List pointMakeup = []; + @override void setPanelDataList(List panelDataList) { _panelDataList = panelDataList; @@ -47,7 +53,7 @@ class TEGeneralDataProducer implements TEPanelDataProducer { _uiPropertyIndexByNameMap.clear(); _dataCategory.clear(); for (var dataModel in _panelDataList!) { - final jsonString = await rootBundle.loadString(dataModel.jsonFilePath!); + final jsonString = await rootBundle.loadString(dataModel.jsonFilePath); Map map = json.decode(jsonString); TEUIProperty uiProperty = TEUIProperty.fromJson(map); uiProperty.uiCategory = dataModel.category; @@ -58,12 +64,38 @@ class TEGeneralDataProducer implements TEPanelDataProducer { _putDataToMap(uiProperty); result.add(uiProperty); _dataCategory[dataModel.category] = uiProperty; + if (uiProperty.uiCategory == UICategory.BEAUTY) { + obtainPointMakeup(uiProperty); + //判断是否有默认设置 + pointMakeupChecked = ProducerUtils.getUsedProperties(pointMakeup).isNotEmpty || pointMakeupChecked; + } + if (uiProperty.uiCategory == UICategory.LUT) { + pointMakeupChecked = ProducerUtils.getUsedProperties(pointMakeup).isNotEmpty || pointMakeupChecked; + } + if (uiProperty.uiCategory == UICategory.LIGHT_MAKEUP) { + hasLightMakeup = true; + //判断是否有默认设置 + lightMakeupChecked = ProducerUtils.getUsedProperties([uiProperty]).isNotEmpty; + } } - syncUIState(); return result; } + void obtainPointMakeup(TEUIProperty? teuiProperty) { + if (teuiProperty == null) { + return; + } + if (teuiProperty.propertyList != null) { + for (TEUIProperty uiProperty in teuiProperty.propertyList!) { + obtainPointMakeup(uiProperty); + } + } else if (teuiProperty.sdkParam != null && + ProducerUtils.isPointMakeup(teuiProperty.sdkParam!)) { + pointMakeup.add(teuiProperty); + } + } + void _completionParam(List list, UICategory category, TEUIProperty parentProperty) { for (TEUIProperty property in list) { @@ -85,6 +117,9 @@ class TEGeneralDataProducer implements TEPanelDataProducer { case UICategory.SEGMENTATION: property.sdkParam!.effectName = TEffectName.EFFECT_SEGMENTATION; break; + case UICategory.LIGHT_MAKEUP: + property.sdkParam!.effectName = TEffectName.EFFECT_LIGHT_MAKEUP; + break; default: break; } @@ -179,6 +214,8 @@ class TEGeneralDataProducer implements TEPanelDataProducer { case UICategory.MOTION: case UICategory.SEGMENTATION: return [ProducerUtils.createNoneItem(TEffectName.EFFECT_MOTION)]; + case UICategory.LIGHT_MAKEUP: + return [ProducerUtils.createNoneItem(TEffectName.EFFECT_LIGHT_MAKEUP)]; } return null; } @@ -242,13 +279,11 @@ class TEGeneralDataProducer implements TEPanelDataProducer { case UICategory.BEAUTY: case UICategory.BODY_BEAUTY: case UICategory.LUT: - TEUIProperty? currentProperty = _dataCategory[uiProperty.uiCategory]; - if ((uiProperty.propertyList == null && uiProperty.sdkParam != null) || uiProperty.isNoneItem()) { - if (currentProperty != null) { - ProducerUtils.revertUIState(currentProperty.propertyList, uiProperty); - ProducerUtils.changeParamUIState(uiProperty, UIState.CHECKED_AND_IN_USE); - } - } + checkItem(uiProperty); + onClickPointMakeup(uiProperty); + break; + case UICategory.LIGHT_MAKEUP: + onClickLightMakeup(uiProperty); break; case UICategory.MAKEUP: case UICategory.MOTION: @@ -273,6 +308,61 @@ class TEGeneralDataProducer implements TEPanelDataProducer { return uiProperty.propertyList; } + void onClickPointMakeup(TEUIProperty property) { + checkItem(property); + if (hasLightMakeup && + property.sdkParam != null && + ProducerUtils.isPointMakeup(property.sdkParam!)) { + //只有在有轻美妆的情况下才会继续判断点击的是否是 单点妆容 + pointMakeupChecked = true; + if (!lightMakeupChecked) { + return; + } + lightMakeupChecked = false; + uncheckLightMakeup(); + } + } + + void onClickLightMakeup(TEUIProperty property) { + lightMakeupChecked = true; + checkItem(property); + if (!pointMakeupChecked) { + return; + } + pointMakeupChecked = false; + uncheckPointMakeup(); + } + + void uncheckPointMakeup() { + TEUIProperty? lutData = _dataCategory[UICategory.LUT]; + if (lutData != null) { + ProducerUtils.revertUIStateToInit([lutData]); + } + if (pointMakeup != null) { + ProducerUtils.revertUIStateToInit(pointMakeup); + } + } + + + + void uncheckLightMakeup() { + TEUIProperty? lightMakeup = _dataCategory[UICategory.LIGHT_MAKEUP]; + if (lightMakeup == null) { + return; + } + ProducerUtils.revertUIStateToInit([lightMakeup]); + } + + void checkItem(TEUIProperty uiProperty) { + TEUIProperty? currentProperty = _dataCategory[uiProperty.uiCategory]; + if ((uiProperty.propertyList == null && uiProperty.sdkParam != null) || uiProperty.isNoneItem()) { + if (currentProperty != null) { + ProducerUtils.revertUIState(currentProperty.propertyList, uiProperty); + ProducerUtils.changeParamUIState(uiProperty, UIState.CHECKED_AND_IN_USE); + } + } + } + @override void onTabItemClick(TEUIProperty uiProperty) { for(TEUIProperty property in _allData){ diff --git a/demo/lib/utils/producer_utils.dart b/demo/lib/utils/producer_utils.dart index e25b9ed..6f7462f 100644 --- a/demo/lib/utils/producer_utils.dart +++ b/demo/lib/utils/producer_utils.dart @@ -1,4 +1,6 @@ +import 'package:flutter/cupertino.dart'; + import '../constant/te_constant.dart'; import '../manager/res_path_manager.dart'; import '../model/te_ui_property.dart'; @@ -7,6 +9,12 @@ class ProducerUtils { static const String HTTP_NAME = "http"; static const String ZIP_NAME = ".zip"; + + static final List BEAUTY_BLACK_EFFECT_NAMES = [ + TEffectName.BEAUTY_BLACK_1, + TEffectName.BEAUTY_BLACK_2, + ]; + static final List BEAUTY_WHITEN_EFFECT_NAMES = [ TEffectName.BEAUTY_WHITEN, TEffectName.BEAUTY_WHITEN_2, @@ -29,6 +37,7 @@ class ProducerUtils { case UICategory.LUT: case UICategory.MAKEUP: case UICategory.MOTION: + case UICategory.LIGHT_MAKEUP: case UICategory.SEGMENTATION: if (uiProperty.resourceUri != null && uiProperty.resourceUri!.isNotEmpty) { @@ -126,7 +135,11 @@ class ProducerUtils { } else if (uiProperty.sdkParam!.resourcePath! .startsWith(ResPathManager.JSON_RES_MARK_SEG)) { stringBuffer.write(await ResPathManager.getResManager().getSegDir()); + }else if (uiProperty.sdkParam!.resourcePath!.startsWith(ResPathManager.JSON_RES_MARK_LIGHT_MAKEUP)) { + debugPrint("completionResPath "); + stringBuffer.write(await ResPathManager.getResManager().getLightMakeupDir()); } + debugPrint("completionResPath 2222"); stringBuffer.write(_getFileName(uiProperty.sdkParam!.resourcePath!)); uiProperty.sdkParam!.resourcePath = stringBuffer.toString(); } @@ -273,16 +286,16 @@ class ProducerUtils { if (property.sdkParam!.effectName == property2.sdkParam!.effectName) { return true; } - if (ProducerUtils.contains( - BEAUTY_WHITEN_EFFECT_NAMES, property.sdkParam!.effectName) && - ProducerUtils.contains( - BEAUTY_WHITEN_EFFECT_NAMES, property2.sdkParam!.effectName)) { + if (ProducerUtils.contains(BEAUTY_WHITEN_EFFECT_NAMES, property.sdkParam!.effectName) && + ProducerUtils.contains(BEAUTY_WHITEN_EFFECT_NAMES, property2.sdkParam!.effectName)) { return true; } - if (ProducerUtils.contains( - BEAUTY_FACE_EFFECT_NAMES, property.sdkParam!.effectName) && - ProducerUtils.contains( - BEAUTY_FACE_EFFECT_NAMES, property2.sdkParam!.effectName)) { + if (ProducerUtils.contains(BEAUTY_FACE_EFFECT_NAMES, property.sdkParam!.effectName) && + ProducerUtils.contains(BEAUTY_FACE_EFFECT_NAMES, property2.sdkParam!.effectName)) { + return true; + } + if (ProducerUtils.contains(BEAUTY_BLACK_EFFECT_NAMES, property.sdkParam!.effectName) && + ProducerUtils.contains(BEAUTY_BLACK_EFFECT_NAMES, property2.sdkParam!.effectName)) { return true; } return false; @@ -305,4 +318,47 @@ class ProducerUtils { teuiProperty.setUiState(uiState); ProducerUtils.changeParamUIState(teuiProperty.parentUIProperty, uiState); } + + /** + * 将item的状态强制设置为 init + * @param uiPropertyList + */ + static void revertUIStateToInit(List? uiPropertyList) { + if (uiPropertyList == null) { + return; + } + + for (TEUIProperty? property in uiPropertyList) { + if (property == null) { + continue; + } + ProducerUtils.revertUIStateToInit(property.propertyList); + if (property.getUiState() == UIState.INIT) { + continue; + } + changeParamUIState(property, UIState.INIT); + } + } + + static bool isPointMakeup(TESDKParam sdkParam) { + if (sdkParam.effectName == null || sdkParam.effectName!.isEmpty) { + return false; + } + return pointMakeupEffectName.contains(sdkParam.effectName); + } + + static List pointMakeupEffectName = [ + TEffectName.BEAUTY_MOUTH_LIPSTICK, + TEffectName.BEAUTY_FACE_RED_CHEEK, + TEffectName.BEAUTY_FACE_SOFTLIGHT, + TEffectName.BEAUTY_FACE_MAKEUP_EYE_SHADOW, + TEffectName.BEAUTY_FACE_MAKEUP_EYE_LINER, + TEffectName.BEAUTY_FACE_MAKEUP_EYELASH, + TEffectName.BEAUTY_FACE_MAKEUP_EYE_SEQUINS, + TEffectName.BEAUTY_FACE_MAKEUP_EYEBROW, + TEffectName.BEAUTY_FACE_MAKEUP_EYEBALL, + TEffectName.BEAUTY_FACE_MAKEUP_EYELIDS, + TEffectName.BEAUTY_FACE_MAKEUP_EYEWOCAN, + TEffectName.EFFECT_LUT + ]; } diff --git a/demo/lib/view/beauty_panel_view.dart b/demo/lib/view/beauty_panel_view.dart index 2d4a0ee..10d2d52 100644 --- a/demo/lib/view/beauty_panel_view.dart +++ b/demo/lib/view/beauty_panel_view.dart @@ -123,7 +123,7 @@ class PanelViewState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ IconButton( - iconSize: 30, + iconSize: 22, onPressed: onSubTitleBackBtnClick, icon: const Icon( Icons.arrow_back_ios, @@ -285,7 +285,7 @@ class PanelViewState extends State { mainAxisSize: MainAxisSize.min, children: [ Container( - margin: const EdgeInsets.fromLTRB(20, 0, 20, 0), + margin: const EdgeInsets.fromLTRB(10, 0, 10, 0), child: _buildListViewItemIcon(index), ), Container( @@ -294,7 +294,7 @@ class PanelViewState extends State { _currentList?[index] == null ? "" : PanelDisplay.getDisplayName(_currentList![index])!, - style: const TextStyle(color: Colors.white, fontSize: 14), + style: const TextStyle(color: Colors.white, fontSize: 11), textAlign: TextAlign.center, )), Container( @@ -489,4 +489,10 @@ class PanelViewState extends State { String _getTypeDataListViewOffsetKey(TEUIProperty property) { return "${property.displayName}${property.displayNameEn}"; } + + + + void _clickItem(TESDKParam sdkParam){ + + } } diff --git a/demo/pubspec.yaml b/demo/pubspec.yaml index fa33aa3..67b9236 100644 --- a/demo/pubspec.yaml +++ b/demo/pubspec.yaml @@ -1,6 +1,8 @@ name: tencent_effect_flutter_demo description: Demonstrates how to use the tencent_effect_flutter plugin. +dependency_overrides: + win32: ^5.5.4 # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev @@ -22,8 +24,10 @@ dependencies: fluttertoast: ^8.0.9 crypto: ^3.0.1 path_provider: ^2.0.1 - image_picker: ^0.8.5+3 - orientation: ^1.3.0 + image_picker: 1.1.0 + orientation: + git: + url: https://github.com/huaxiaolin/flutter_orientation shared_preferences: 2.1.1 package_info_plus: 3.1.2 flutter_localizations: # Add this line @@ -66,11 +70,12 @@ flutter: - assets/beauty_panel/ - assets/beauty_panel/panel_icon/beauty/ - assets/beauty_panel/panel_icon/beauty/eyes_makeup/ + - assets/beauty_panel/panel_icon/beauty/liti/ + - assets/beauty_panel/panel_icon/beauty/saihong/ - assets/beauty_panel/panel_icon/beauty_body/ - assets/beauty_panel/panel_icon/lut_icon/ + - assets/beauty_panel/panel_icon/light_makeup_icon/ - assets/beauty_panel/panel_icon/motions_icon/ - - assets/images/test_girl.png - - assets/images/icon/ - assets/labels/ diff --git a/doc/README.md b/doc/README.md index 6aedf62..54c362b 100644 --- a/doc/README.md +++ b/doc/README.md @@ -38,6 +38,7 @@ Solution: Change the value of FLUTTER_BUILD_MODE in Build Settings in Xcode to r | Flutter version | Android version | iOS version | | -------------- | ------------------- | ------------------- | +| 3.9.0 | 3.9.0 | 3.9.0 | | 3.6.0 | 3.6.0.4 | 3.6.0.3 | | 0.3.5.0 | 3.5.0 | 3.5.0 | | 0.3.1.1 | 3.3.0,3.2.0 | 3.3.0,3.2.0 | @@ -47,6 +48,10 @@ Solution: Change the value of FLUTTER_BUILD_MODE in Build Settings in Xcode to r ## 5. Version Log +### V3.9.0 + +Adapted to Android & iOS 3.9.0, added EffectMode method + ### V0.3.5.0 - Adaptation to Beauty V3.5.0 API. diff --git a/doc/README_zh_CN.md b/doc/README_zh_CN.md index 94c319b..de6d13d 100644 --- a/doc/README_zh_CN.md +++ b/doc/README_zh_CN.md @@ -36,6 +36,7 @@ | flutter 版本 | Android 版本 | iOS版本 | | -------------- | ------------------- | ------------------- | +| 3.9.0 | 3.9.0 | 3.9.0 | | 0.3.5.0 | 3.5.0 | 3.5.0 | | 0.3.1.1 | 3.3.0、3.2.0 | 3.3.0、3.2.0 | | 0.3.0.1、0.3.0 | 3.1.0、3.0.0、3.0.1 | 3.1.0、3.0.0、3.0.1 | @@ -44,6 +45,10 @@ ## 5. 版本日志 +### V3.9.0 + +适配Android & iOS 3.9.0,新增EffectMode + ### V0.3.5.0 - 适配美颜V3.5.0版本api。 diff --git a/ios/Classes/TencentEffectFlutterPlugin.m b/ios/Classes/TencentEffectFlutterPlugin.m index d1aa700..69ba220 100644 --- a/ios/Classes/TencentEffectFlutterPlugin.m +++ b/ios/Classes/TencentEffectFlutterPlugin.m @@ -68,9 +68,13 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { [[XmagicApiManager shareSingleton] updateProperty:call.arguments]; }else if ([@"onPause" isEqualToString:call.method]) { [[XmagicApiManager shareSingleton] onPause]; + result(nil); }else if ([@"onResume" isEqualToString:call.method]) { [[XmagicApiManager shareSingleton] onResume]; - }else if ([@"onDestroy" isEqualToString:call.method]) { [[XmagicApiManager shareSingleton] onDestroy]; + result(nil); + }else if ([@"onDestroy" isEqualToString:call.method]) { + [[XmagicApiManager shareSingleton] onDestroy]; + result(nil); }else if ([@"isBeautyAuthorized" isEqualToString:call.method]) { NSString *res = [[XmagicApiManager shareSingleton] isBeautyAuthorized:call.arguments]; result(res); @@ -87,6 +91,19 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { }else if ([@"setDowngradePerformance" isEqualToString:call.method]) { [[XmagicApiManager shareSingleton] setDowngradePerformance]; result(nil); + }else if ([@"enableHighPerformance" isEqualToString:call.method]) { + [[XmagicApiManager shareSingleton] setDowngradePerformance]; + result(nil); + }else if ([@"getDeviceLevel" isEqualToString:call.method]) { + int level = [[XmagicApiManager shareSingleton] getDeviceLevel]; + result(@(level)); + }else if([@"setEffectMode" isEqualToString:call.method]) { + if([call.arguments isKindOfClass:[NSString class]]) { + NSString *modeType = (NSString *)call.arguments; + [[XmagicApiManager shareSingleton] setTeEffectMode:modeType]; + } + result(nil); + }else if ([@"setAudioMute" isEqualToString:call.method]) { [[XmagicApiManager shareSingleton] setAudioMute:call.arguments]; result(nil); @@ -102,8 +119,10 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { result(@true); }else if ([@"setResourcePath" isEqualToString:call.method]) { [[XmagicApiManager shareSingleton] setResourcePath:call.arguments[@"pathDir"]]; + result(nil); }else if ([@"setEffect" isEqualToString:call.method]) { [[XmagicApiManager shareSingleton] setEffect:call.arguments]; + result(nil); }else { result(FlutterMethodNotImplemented); } diff --git a/ios/Classes/XmagicApiManager.h b/ios/Classes/XmagicApiManager.h index f1d596d..0fb8cf4 100644 --- a/ios/Classes/XmagicApiManager.h +++ b/ios/Classes/XmagicApiManager.h @@ -51,10 +51,14 @@ typedef void (^eventYTDataCallBlock)(id event); -(void)setDowngradePerformance; - +-(void)enableHighPerformance; + +-(void)setTeEffectMode:(NSString *)modeType; + -(void)setAudioMute:(BOOL)mute; - +-(int)getDeviceLevel; + - (void)setFeatureEnableDisable:(NSString *_Nonnull)featureName enable:(BOOL)enable; - (void)setResourcePath:(NSString *)pathDir; diff --git a/ios/Classes/XmagicApiManager.m b/ios/Classes/XmagicApiManager.m index 5cfaa21..8409122 100644 --- a/ios/Classes/XmagicApiManager.m +++ b/ios/Classes/XmagicApiManager.m @@ -35,7 +35,7 @@ @interface XmagicApiManager() @property (nonatomic, strong) NSString *makeup; @property (nonatomic, strong) NSArray *resNames; //resource name @property (nonatomic, strong) NSLock *lock; -@property (nonatomic, assign) BOOL highPerfoemance; +@property (nonatomic, assign) EffectMode effectMode ; @property (nonatomic, strong) NSMutableArray*saveEffectList; @property (nonatomic, assign) BOOL xmagicInit; @@ -52,6 +52,15 @@ + (instancetype)shareSingleton { }); return shareSingleton; } + +- (instancetype)init { + self = [super init]; + if (self) { + _effectMode = EFFECT_MODE_PRO; // 设置默认值 + } + return self; +} + + (instancetype)allocWithZone:(struct _NSZone *)zone { return [XmagicApiManager shareSingleton]; @@ -123,7 +132,7 @@ -(void)copyItemsFromBundleToSandbox:(NSString *)bundleFolderPath sandboxFolderP -(void)initResName{ _resNames = @[@"Light3DPlugin",@"LightBodyPlugin",@"LightCore", - @"LightHandPlugin",@"LightSegmentPlugin",@"makeupMotionRes",@"2dMotionRes", + @"LightHandPlugin",@"LightSegmentPlugin",@"makeupMotionRes",@"lightMakeupRes",@"2dMotionRes", @"3dMotionRes",@"ganMotionRes",@"handMotionRes",@"lut",@"segmentMotionRes"]; } @@ -210,7 +219,27 @@ - (void)enableEnhancedMode{ } - (void)setDowngradePerformance{ - self.highPerfoemance = YES; + _effectMode = EFFECT_MODE_NORMAL; +} + +- (void)enableHighPerformance { + _effectMode = EFFECT_MODE_NORMAL; +} + +- (int)getDeviceLevel { + DeviceLevel level = [XMagic getDeviceLevel]; + return (int)level; +} +-(void)setTeEffectMode:(NSString *)modeType { + if(self.xMagicApi != nil) { + NSLog(@"setEffectMode mothod , the xMagicApi is not nil)"); + } + + if([@"0" isEqualToString:modeType]) { + self.effectMode = EFFECT_MODE_NORMAL; + } else if([@"1" isEqualToString:modeType]) { + self.effectMode = EFFECT_MODE_PRO; + } } - (void)setFeatureEnableDisable:(NSString *)featureName enable:(BOOL)enable{ @@ -236,7 +265,7 @@ - (void)setImageOrientation:(int)orientation{ - (void)buildBeautySDK:(int)width and:(int)height{ NSDictionary *assetsDict = @{@"core_name":@"LightCore.bundle", @"root_path":self.xmagicResPath, - @"setDowngradePerformance":@(self.highPerfoemance) + @"effect_mode":@(self.effectMode) }; // Init beauty kit diff --git a/ios/tencent_effect_flutter.podspec b/ios/tencent_effect_flutter.podspec index b93512c..5b2855b 100644 --- a/ios/tencent_effect_flutter.podspec +++ b/ios/tencent_effect_flutter.podspec @@ -17,7 +17,7 @@ A new Flutter project. s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' # s.dependency 'XMagic' - s.dependency 'TencentEffect_All', '3.8.0.9' + s.dependency 'TencentEffect_S1-07', '3.9.0.3' s.dependency 'TXCustomBeautyProcesserPlugin','1.0.2' s.platform = :ios, '9.0' s.static_framework = true diff --git a/lib/api/android/tencent_effect_api_android.dart b/lib/api/android/tencent_effect_api_android.dart index 91a804f..fcb2952 100644 --- a/lib/api/android/tencent_effect_api_android.dart +++ b/lib/api/android/tencent_effect_api_android.dart @@ -306,5 +306,24 @@ class TencentEffectApiAndroid implements TencentEffectApi { return await _channel.invokeMethod( "isDeviceSupportMotion", {"motionResPath": motionResPath}); } + + @override + void enableHighPerformance() { + _channel.invokeMethod("enableHighPerformance"); + } + + @override + Future getDeviceLevel() async { + return await _channel.invokeMethod("getDeviceLevel"); + } + + @override + void setEffectMode(EffectMode effectMode) { + if (effectMode == EffectMode.NORMAL) { + _channel.invokeMethod("setEffectMode", "0"); + } else { + _channel.invokeMethod("setEffectMode", "1"); + } + } } typedef AddAiModeCallBack = void Function(String inputDir, int code); \ No newline at end of file diff --git a/lib/api/ios/tencent_effect_api_ios.dart b/lib/api/ios/tencent_effect_api_ios.dart index 2c089c2..ba38a87 100644 --- a/lib/api/ios/tencent_effect_api_ios.dart +++ b/lib/api/ios/tencent_effect_api_ios.dart @@ -275,4 +275,24 @@ class TencentEffectApiIOS implements TencentEffectApi { return await _channel.invokeMethod( "isDeviceSupportMotion", {"motionResPath": motionResPath}); } + + @override + void enableHighPerformance() { + _channel.invokeMethod("enableHighPerformance"); + } + + @override + @override + Future getDeviceLevel() async { + return await _channel.invokeMethod("getDeviceLevel"); + } + + @override + void setEffectMode(EffectMode effectMode) { + if (effectMode == EffectMode.NORMAL) { + _channel.invokeMethod("setEffectMode", "0"); + } else { + _channel.invokeMethod("setEffectMode", "1"); + } + } } diff --git a/lib/api/tencent_effect_api.dart b/lib/api/tencent_effect_api.dart index dc6dbfe..8063a8b 100644 --- a/lib/api/tencent_effect_api.dart +++ b/lib/api/tencent_effect_api.dart @@ -46,10 +46,15 @@ abstract class TencentEffectApi { void enableEnhancedMode(); - + @deprecated void setDowngradePerformance(); + @deprecated + void enableHighPerformance(); + void setEffectMode(EffectMode effectMode); + + Future getDeviceLevel(); void setAudioMute(bool isMute); @@ -141,6 +146,10 @@ class LogLevel { static const int ASSERT = 7; } +enum EffectMode { + NORMAL, + PRO +} enum TEImageOrientation { ROTATION_0, diff --git a/lib/model/beauty_constant.dart b/lib/model/beauty_constant.dart index c81e4f7..24ed063 100644 --- a/lib/model/beauty_constant.dart +++ b/lib/model/beauty_constant.dart @@ -1,3 +1,5 @@ + +@deprecated class BeautyConstant { //////////////////////////////////////////////////effkey definition