Add support for ImageFilters to paint in APEX.
Bug: 305193969
Test: Manual
Flag: ACONFIG com.android.systemui.enable_vector_cursors DEVELOPMENT
Change-Id: I0e5310c51aea32df304cc28ce1824debfe47af44
diff --git a/libs/hwui/apex/android_paint.cpp b/libs/hwui/apex/android_paint.cpp
index cc79cba..5e73e76 100644
--- a/libs/hwui/apex/android_paint.cpp
+++ b/libs/hwui/apex/android_paint.cpp
@@ -14,12 +14,13 @@
* limitations under the License.
*/
-#include "android/graphics/paint.h"
+#include <SkBlendMode.h>
+#include <SkImageFilter.h>
+#include <hwui/Paint.h>
#include "TypeCast.h"
-
-#include <hwui/Paint.h>
-#include <SkBlendMode.h>
+#include "android/graphics/paint.h"
+#include "include/effects/SkImageFilters.h"
using namespace android;
@@ -43,6 +44,22 @@
}
}
+static sk_sp<SkImageFilter> convertImageFilter(AImageFilter imageFilter) {
+ switch (imageFilter) {
+ case AIMAGE_FILTER_DROP_SHADOW_FOR_POINTER_ICON:
+ // Material Elevation Level 1 Drop Shadow.
+ sk_sp<SkImageFilter> key_shadow = SkImageFilters::DropShadow(
+ 0.0f, 1.0f, 2.0f, 2.0f, SkColorSetARGB(0x4D, 0x00, 0x00, 0x00), nullptr);
+ sk_sp<SkImageFilter> ambient_shadow = SkImageFilters::DropShadow(
+ 0.0f, 1.0f, 3.0f, 3.0f, SkColorSetARGB(0x26, 0x00, 0x00, 0x00), nullptr);
+ return SkImageFilters::Compose(ambient_shadow, key_shadow);
+ }
+}
+
void APaint_setBlendMode(APaint* paint, ABlendMode blendMode) {
TypeCast::toPaint(paint)->setBlendMode(convertBlendMode(blendMode));
}
+
+void APaint_setImageFilter(APaint* paint, AImageFilter imageFilter) {
+ TypeCast::toPaint(paint)->setImageFilter(convertImageFilter(imageFilter));
+}