From 132650e4e0a02786978663b463966054a3fb412d Mon Sep 17 00:00:00 2001
From: J-P Nurmi <jpnurmi@theqtcompany.com>
Date: Sun, 9 Nov 2014 15:51:40 +0100
Subject: [PATCH] Android: extract BitmapDrawable attributes

Task-number: QTBUG-42488
Change-Id: Idd70e6300f78d96b044928885e71957daad1f5af
Reviewed-by: BogDan Vatra <bogdan@kde.org>
---
 .../qtproject/qt5/android/ExtractStyle.java   | 24 +++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java
index 1e30e4a580e..2aeb89d5d56 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java
@@ -67,6 +67,7 @@ import android.graphics.NinePatch;
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.graphics.RectF;
+import android.graphics.PorterDuff;
 import android.graphics.drawable.AnimationDrawable;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.ClipDrawable;
@@ -820,8 +821,27 @@ public class ExtractStyle {
             bmp = (Bitmap) drawable;
         else
         {
-            if (drawable instanceof BitmapDrawable)
-                bmp = ((BitmapDrawable)drawable).getBitmap();
+            if (drawable instanceof BitmapDrawable) {
+                BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable;
+                bmp = bitmapDrawable.getBitmap();
+                try {
+                    json.put("gravity", bitmapDrawable.getGravity());
+                    json.put("tileModeX", bitmapDrawable.getTileModeX());
+                    json.put("tileModeY", bitmapDrawable.getTileModeY());
+                    if (Build.VERSION.SDK_INT >= 18) {
+                        json.put("antialias", (Boolean) BitmapDrawable.class.getMethod("hasAntiAlias").invoke(bitmapDrawable));
+                        json.put("mipMap", (Boolean) BitmapDrawable.class.getMethod("hasMipMap").invoke(bitmapDrawable));
+                    }
+                    if (Build.VERSION.SDK_INT >= 21) {
+                        json.put("tintMode", (PorterDuff.Mode) BitmapDrawable.class.getMethod("getTintMode").invoke(bitmapDrawable));
+                        ColorStateList tintList = (ColorStateList) BitmapDrawable.class.getMethod("getTint").invoke(bitmapDrawable);
+                        if (tintList != null)
+                            json.put("tintList", getColorStateList(tintList));
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
             else
             {
                 if (drawable instanceof ScaleDrawable)
-- 
GitLab