From 7e2564a591bccd0d400086ea7dd929f4a2729be9 Mon Sep 17 00:00:00 2001 From: thunderllei Date: Thu, 17 Apr 2025 22:24:13 +0800 Subject: [PATCH 1/4] add layer c++ interface setAlpha to ios and android --- android/libpag/src/main/java/org/libpag/PAGLayer.java | 6 ++++++ src/platform/android/JPAGLayer.cpp | 10 ++++++++++ src/platform/cocoa/PAGLayer.h | 6 ++++++ src/platform/cocoa/PAGLayer.m | 4 ++++ src/platform/cocoa/private/PAGLayerImpl.h | 2 ++ src/platform/cocoa/private/PAGLayerImpl.mm | 4 ++++ 6 files changed, 32 insertions(+) diff --git a/android/libpag/src/main/java/org/libpag/PAGLayer.java b/android/libpag/src/main/java/org/libpag/PAGLayer.java index ef47178729..66617b38b5 100644 --- a/android/libpag/src/main/java/org/libpag/PAGLayer.java +++ b/android/libpag/src/main/java/org/libpag/PAGLayer.java @@ -172,6 +172,12 @@ public Matrix getTotalMatrix() { */ public native void setExcludedFromTimeline(boolean value); + /** + * Set the alpha of the layer, which will be concatenated to the current animation opacity for + * displaying. + */ + public native void setAlpha(float value); + private native void nativeRelease(); protected long nativeContext; diff --git a/src/platform/android/JPAGLayer.cpp b/src/platform/android/JPAGLayer.cpp index 9e26ee607d..8600667de8 100644 --- a/src/platform/android/JPAGLayer.cpp +++ b/src/platform/android/JPAGLayer.cpp @@ -297,4 +297,14 @@ PAG_API void Java_org_libpag_PAGLayer_setExcludedFromTimeline(JNIEnv* env, jobje pagLayer->setExcludedFromTimeline(value); } + + PAG_API void Java_org_libpag_PAGLayer_setAlpha(JNIEnv* env, jobject thiz, + jfloat value){ + auto pagLayer = GetPAGLayer(env, thiz); + if(pagLayer == nullptr){ + return; + } + + pagLayer->setAlpha(value); +} } diff --git a/src/platform/cocoa/PAGLayer.h b/src/platform/cocoa/PAGLayer.h index 3cd4b8d71e..eb10886a7b 100644 --- a/src/platform/cocoa/PAGLayer.h +++ b/src/platform/cocoa/PAGLayer.h @@ -165,4 +165,10 @@ PAG_API @interface PAGLayer : NSObject */ - (void)setExcludedFromTimeline:(BOOL)value; +/** + * Set the alpha of the layer, which will be concatenated to the current animation opacity for + * displaying. + */ +- (void)setAlpha:(float)value; + @end diff --git a/src/platform/cocoa/PAGLayer.m b/src/platform/cocoa/PAGLayer.m index 6ea6409d97..abcaa8379f 100644 --- a/src/platform/cocoa/PAGLayer.m +++ b/src/platform/cocoa/PAGLayer.m @@ -133,6 +133,10 @@ - (void)setExcludedFromTimeline:(BOOL)value { [(PAGLayerImpl*)_impl setExcludedFromTimeline:value]; } +- (void)setAlpha:(float)value{ + [(PAGLayerImpl*)_impl setAlpha:value]; +} + - (void)dealloc { [_impl release]; [super dealloc]; diff --git a/src/platform/cocoa/private/PAGLayerImpl.h b/src/platform/cocoa/private/PAGLayerImpl.h index 3ed13448b4..1c34d8660c 100644 --- a/src/platform/cocoa/private/PAGLayerImpl.h +++ b/src/platform/cocoa/private/PAGLayerImpl.h @@ -72,4 +72,6 @@ - (void)setExcludedFromTimeline:(BOOL)value; +- (void)setAlpha:(float)value; + @end diff --git a/src/platform/cocoa/private/PAGLayerImpl.mm b/src/platform/cocoa/private/PAGLayerImpl.mm index 0931630925..225da8618f 100644 --- a/src/platform/cocoa/private/PAGLayerImpl.mm +++ b/src/platform/cocoa/private/PAGLayerImpl.mm @@ -254,4 +254,8 @@ - (void)setExcludedFromTimeline:(BOOL)value { _pagLayer->setExcludedFromTimeline(value); } +- (void)setAlpha:(float)value { + _pagLayer->setAlpha(value); +} + @end From 9ee2e8e35a771cdfb8bdd948e0098e5ece5e9a30 Mon Sep 17 00:00:00 2001 From: thunderllei Date: Fri, 18 Apr 2025 12:27:51 +0800 Subject: [PATCH 2/4] add layer alpha interface to ios and andriod fix format --- .../libpag/src/main/java/org/libpag/PAGLayer.java | 5 +++++ src/platform/android/JPAGLayer.cpp | 14 +++++++++++--- src/platform/cocoa/PAGLayer.h | 5 +++++ src/platform/cocoa/PAGLayer.m | 6 +++++- src/platform/cocoa/private/PAGLayerImpl.h | 2 ++ src/platform/cocoa/private/PAGLayerImpl.mm | 4 ++++ 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/android/libpag/src/main/java/org/libpag/PAGLayer.java b/android/libpag/src/main/java/org/libpag/PAGLayer.java index 66617b38b5..aab86410e2 100644 --- a/android/libpag/src/main/java/org/libpag/PAGLayer.java +++ b/android/libpag/src/main/java/org/libpag/PAGLayer.java @@ -178,6 +178,11 @@ public Matrix getTotalMatrix() { */ public native void setAlpha(float value); + /** + * Returns the current alpha of the layer if previously set. + */ + public native float alpha(); + private native void nativeRelease(); protected long nativeContext; diff --git a/src/platform/android/JPAGLayer.cpp b/src/platform/android/JPAGLayer.cpp index 8600667de8..160855ae9a 100644 --- a/src/platform/android/JPAGLayer.cpp +++ b/src/platform/android/JPAGLayer.cpp @@ -298,13 +298,21 @@ PAG_API void Java_org_libpag_PAGLayer_setExcludedFromTimeline(JNIEnv* env, jobje pagLayer->setExcludedFromTimeline(value); } - PAG_API void Java_org_libpag_PAGLayer_setAlpha(JNIEnv* env, jobject thiz, - jfloat value){ +PAG_API void Java_org_libpag_PAGLayer_setAlpha(JNIEnv* env, jobject thiz, jfloat value) { auto pagLayer = GetPAGLayer(env, thiz); - if(pagLayer == nullptr){ + if (pagLayer == nullptr) { return; } pagLayer->setAlpha(value); } + +PAG_API jfloat Java_org_libpag_PAGLayer_alpha(JNIEnv* env, jobject thiz) { + auto pagLayer = GetPAGLayer(env, thiz); + if (pagLayer == nullptr) { + return 0.0f; + } + + return pagLayer->alpha(); +} } diff --git a/src/platform/cocoa/PAGLayer.h b/src/platform/cocoa/PAGLayer.h index eb10886a7b..8765a2e096 100644 --- a/src/platform/cocoa/PAGLayer.h +++ b/src/platform/cocoa/PAGLayer.h @@ -171,4 +171,9 @@ PAG_API @interface PAGLayer : NSObject */ - (void)setAlpha:(float)value; +/** + * Returns the current alpha of the layer if previously set. + */ +- (float)alpha; + @end diff --git a/src/platform/cocoa/PAGLayer.m b/src/platform/cocoa/PAGLayer.m index abcaa8379f..687f83b421 100644 --- a/src/platform/cocoa/PAGLayer.m +++ b/src/platform/cocoa/PAGLayer.m @@ -133,10 +133,14 @@ - (void)setExcludedFromTimeline:(BOOL)value { [(PAGLayerImpl*)_impl setExcludedFromTimeline:value]; } -- (void)setAlpha:(float)value{ +- (void)setAlpha:(float)value { [(PAGLayerImpl*)_impl setAlpha:value]; } +- (float)alpha { + return [(PAGLayerImpl*)_impl alpha]; +} + - (void)dealloc { [_impl release]; [super dealloc]; diff --git a/src/platform/cocoa/private/PAGLayerImpl.h b/src/platform/cocoa/private/PAGLayerImpl.h index 1c34d8660c..0a25eb2a3c 100644 --- a/src/platform/cocoa/private/PAGLayerImpl.h +++ b/src/platform/cocoa/private/PAGLayerImpl.h @@ -74,4 +74,6 @@ - (void)setAlpha:(float)value; +- (float)alpha; + @end diff --git a/src/platform/cocoa/private/PAGLayerImpl.mm b/src/platform/cocoa/private/PAGLayerImpl.mm index 225da8618f..e7b15e1990 100644 --- a/src/platform/cocoa/private/PAGLayerImpl.mm +++ b/src/platform/cocoa/private/PAGLayerImpl.mm @@ -258,4 +258,8 @@ - (void)setAlpha:(float)value { _pagLayer->setAlpha(value); } +- (float)alpha { + return _pagLayer->alpha(); +} + @end From 3c3b591105e9f927fe8cb2f1901475fcc6a364d2 Mon Sep 17 00:00:00 2001 From: thunderllei Date: Fri, 18 Apr 2025 13:02:01 +0800 Subject: [PATCH 3/4] Adjust the order of the alpha and setAlpha code --- .../libpag/src/main/java/org/libpag/PAGLayer.java | 10 +++++----- src/platform/android/JPAGLayer.cpp | 12 ++++++------ src/platform/cocoa/PAGLayer.h | 10 +++++----- src/platform/cocoa/PAGLayer.m | 8 ++++---- src/platform/cocoa/private/PAGLayerImpl.h | 4 ++-- src/platform/cocoa/private/PAGLayerImpl.mm | 8 ++++---- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/android/libpag/src/main/java/org/libpag/PAGLayer.java b/android/libpag/src/main/java/org/libpag/PAGLayer.java index aab86410e2..f04a0f1f3e 100644 --- a/android/libpag/src/main/java/org/libpag/PAGLayer.java +++ b/android/libpag/src/main/java/org/libpag/PAGLayer.java @@ -172,17 +172,17 @@ public Matrix getTotalMatrix() { */ public native void setExcludedFromTimeline(boolean value); + /** + * Returns the current alpha of the layer if previously set. + */ + public native float alpha(); + /** * Set the alpha of the layer, which will be concatenated to the current animation opacity for * displaying. */ public native void setAlpha(float value); - /** - * Returns the current alpha of the layer if previously set. - */ - public native float alpha(); - private native void nativeRelease(); protected long nativeContext; diff --git a/src/platform/android/JPAGLayer.cpp b/src/platform/android/JPAGLayer.cpp index 160855ae9a..8b99bc48f7 100644 --- a/src/platform/android/JPAGLayer.cpp +++ b/src/platform/android/JPAGLayer.cpp @@ -298,21 +298,21 @@ PAG_API void Java_org_libpag_PAGLayer_setExcludedFromTimeline(JNIEnv* env, jobje pagLayer->setExcludedFromTimeline(value); } -PAG_API void Java_org_libpag_PAGLayer_setAlpha(JNIEnv* env, jobject thiz, jfloat value) { +PAG_API jfloat Java_org_libpag_PAGLayer_alpha(JNIEnv* env, jobject thiz) { auto pagLayer = GetPAGLayer(env, thiz); if (pagLayer == nullptr) { - return; + return 0.0f; } - pagLayer->setAlpha(value); + return pagLayer->alpha(); } -PAG_API jfloat Java_org_libpag_PAGLayer_alpha(JNIEnv* env, jobject thiz) { +PAG_API void Java_org_libpag_PAGLayer_setAlpha(JNIEnv* env, jobject thiz, jfloat value) { auto pagLayer = GetPAGLayer(env, thiz); if (pagLayer == nullptr) { - return 0.0f; + return; } - return pagLayer->alpha(); + pagLayer->setAlpha(value); } } diff --git a/src/platform/cocoa/PAGLayer.h b/src/platform/cocoa/PAGLayer.h index 8765a2e096..9283abdda6 100644 --- a/src/platform/cocoa/PAGLayer.h +++ b/src/platform/cocoa/PAGLayer.h @@ -166,14 +166,14 @@ PAG_API @interface PAGLayer : NSObject - (void)setExcludedFromTimeline:(BOOL)value; /** - * Set the alpha of the layer, which will be concatenated to the current animation opacity for - * displaying. + * Returns the current alpha of the layer if previously set. */ -- (void)setAlpha:(float)value; +- (float)alpha; /** - * Returns the current alpha of the layer if previously set. + * Set the alpha of the layer, which will be concatenated to the current animation opacity for + * displaying. */ -- (float)alpha; +- (void)setAlpha:(float)value; @end diff --git a/src/platform/cocoa/PAGLayer.m b/src/platform/cocoa/PAGLayer.m index 687f83b421..e108fcf4af 100644 --- a/src/platform/cocoa/PAGLayer.m +++ b/src/platform/cocoa/PAGLayer.m @@ -133,14 +133,14 @@ - (void)setExcludedFromTimeline:(BOOL)value { [(PAGLayerImpl*)_impl setExcludedFromTimeline:value]; } -- (void)setAlpha:(float)value { - [(PAGLayerImpl*)_impl setAlpha:value]; -} - - (float)alpha { return [(PAGLayerImpl*)_impl alpha]; } +- (void)setAlpha:(float)value { + [(PAGLayerImpl*)_impl setAlpha:value]; +} + - (void)dealloc { [_impl release]; [super dealloc]; diff --git a/src/platform/cocoa/private/PAGLayerImpl.h b/src/platform/cocoa/private/PAGLayerImpl.h index 0a25eb2a3c..bd15d6031b 100644 --- a/src/platform/cocoa/private/PAGLayerImpl.h +++ b/src/platform/cocoa/private/PAGLayerImpl.h @@ -72,8 +72,8 @@ - (void)setExcludedFromTimeline:(BOOL)value; -- (void)setAlpha:(float)value; - - (float)alpha; +- (void)setAlpha:(float)value; + @end diff --git a/src/platform/cocoa/private/PAGLayerImpl.mm b/src/platform/cocoa/private/PAGLayerImpl.mm index e7b15e1990..1b4d1ba25e 100644 --- a/src/platform/cocoa/private/PAGLayerImpl.mm +++ b/src/platform/cocoa/private/PAGLayerImpl.mm @@ -254,12 +254,12 @@ - (void)setExcludedFromTimeline:(BOOL)value { _pagLayer->setExcludedFromTimeline(value); } -- (void)setAlpha:(float)value { - _pagLayer->setAlpha(value); -} - - (float)alpha { return _pagLayer->alpha(); } +- (void)setAlpha:(float)value { + _pagLayer->setAlpha(value); +} + @end From 0e69737de3208ce96c0412c6c59e2df939d174d7 Mon Sep 17 00:00:00 2001 From: thunderllei Date: Fri, 18 Apr 2025 13:46:53 +0800 Subject: [PATCH 4/4] Fix the indentation format of the alpha comment --- android/libpag/src/main/java/org/libpag/PAGLayer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/libpag/src/main/java/org/libpag/PAGLayer.java b/android/libpag/src/main/java/org/libpag/PAGLayer.java index f04a0f1f3e..ae22e10d58 100644 --- a/android/libpag/src/main/java/org/libpag/PAGLayer.java +++ b/android/libpag/src/main/java/org/libpag/PAGLayer.java @@ -173,8 +173,8 @@ public Matrix getTotalMatrix() { public native void setExcludedFromTimeline(boolean value); /** - * Returns the current alpha of the layer if previously set. - */ + * Returns the current alpha of the layer if previously set. + */ public native float alpha(); /**