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));
+}