diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index 22a61a98d..12380ffe0 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -19,7 +19,6 @@ - ; } -#dbFlow --keep class * extends com.raizlabs.android.dbflow.config.DatabaseHolder { *; } --keep class * extends com.raizlabs.android.dbflow.config.BaseDatabaseDefinition { *; } --keep class com.raizlabs.android.dbflow.** {*;} - #gson # JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) -keep class * implements com.google.gson.TypeAdapterFactory @@ -69,7 +64,15 @@ -keep class * implements com.google.gson.JsonDeserializer #keep models --keep class com.magicmicky.habitrpgwrapper.lib.models.** { *; } +-keep class com.habitrpg.android.habitica.models.** { *; } + +#realm +-keep class io.realm.annotations.RealmModule +-keep @io.realm.annotations.RealmModule class * +-keep class io.realm.internal.Keep +-keep @io.realm.internal.Keep class * +-dontwarn javax.** +-dontwarn io.realm.** #eventbus -keepclassmembers class ** { @@ -147,6 +150,9 @@ #checkout -keep class com.android.vending.billing.** +#seeds sdk +-keep class com.playseeds.** { *; } + -assumenosideeffects class org.solovyev.android.checkout.Billing { public static void debug(...); public static void warning(...); @@ -164,5 +170,8 @@ -dontwarn okio.** -dontwarn rx.** -dontwarn com.android.volley.toolbox.** +-dontwarn com.facebook.infer.** +-dontwarn com.roughike.bottombar.** +-dontwarn com.viewpagerindicator.** #-ignorewarnings diff --git a/Habitica/res/drawable-hdpi/ic_header_healer.png b/Habitica/res/drawable-hdpi/ic_header_healer.png deleted file mode 100644 index fedf7aeec..000000000 Binary files a/Habitica/res/drawable-hdpi/ic_header_healer.png and /dev/null differ diff --git a/Habitica/res/drawable-hdpi/ic_header_mage.png b/Habitica/res/drawable-hdpi/ic_header_mage.png deleted file mode 100644 index c07ea2998..000000000 Binary files a/Habitica/res/drawable-hdpi/ic_header_mage.png and /dev/null differ diff --git a/Habitica/res/drawable-hdpi/ic_header_rogue.png b/Habitica/res/drawable-hdpi/ic_header_rogue.png deleted file mode 100644 index bdacefc74..000000000 Binary files a/Habitica/res/drawable-hdpi/ic_header_rogue.png and /dev/null differ diff --git a/Habitica/res/drawable-hdpi/ic_header_warrior.png b/Habitica/res/drawable-hdpi/ic_header_warrior.png deleted file mode 100644 index a5be97c1d..000000000 Binary files a/Habitica/res/drawable-hdpi/ic_header_warrior.png and /dev/null differ diff --git a/Habitica/res/drawable-mdpi/ic_header_healer.png b/Habitica/res/drawable-mdpi/ic_header_healer.png deleted file mode 100644 index 972e2995e..000000000 Binary files a/Habitica/res/drawable-mdpi/ic_header_healer.png and /dev/null differ diff --git a/Habitica/res/drawable-mdpi/ic_header_mage.png b/Habitica/res/drawable-mdpi/ic_header_mage.png deleted file mode 100644 index 3f1d58d51..000000000 Binary files a/Habitica/res/drawable-mdpi/ic_header_mage.png and /dev/null differ diff --git a/Habitica/res/drawable-mdpi/ic_header_rogue.png b/Habitica/res/drawable-mdpi/ic_header_rogue.png deleted file mode 100644 index 5d3fa3e96..000000000 Binary files a/Habitica/res/drawable-mdpi/ic_header_rogue.png and /dev/null differ diff --git a/Habitica/res/drawable-mdpi/ic_header_warrior.png b/Habitica/res/drawable-mdpi/ic_header_warrior.png deleted file mode 100644 index c85761fef..000000000 Binary files a/Habitica/res/drawable-mdpi/ic_header_warrior.png and /dev/null differ diff --git a/Habitica/res/drawable-xhdpi/ic_header_healer.png b/Habitica/res/drawable-xhdpi/ic_header_healer.png deleted file mode 100644 index c4ca17543..000000000 Binary files a/Habitica/res/drawable-xhdpi/ic_header_healer.png and /dev/null differ diff --git a/Habitica/res/drawable-xhdpi/ic_header_mage.png b/Habitica/res/drawable-xhdpi/ic_header_mage.png deleted file mode 100644 index 4005242c2..000000000 Binary files a/Habitica/res/drawable-xhdpi/ic_header_mage.png and /dev/null differ diff --git a/Habitica/res/drawable-xhdpi/ic_header_rogue.png b/Habitica/res/drawable-xhdpi/ic_header_rogue.png deleted file mode 100644 index 107cfe9e7..000000000 Binary files a/Habitica/res/drawable-xhdpi/ic_header_rogue.png and /dev/null differ diff --git a/Habitica/res/drawable-xhdpi/ic_header_warrior.png b/Habitica/res/drawable-xhdpi/ic_header_warrior.png deleted file mode 100644 index 789f41511..000000000 Binary files a/Habitica/res/drawable-xhdpi/ic_header_warrior.png and /dev/null differ diff --git a/Habitica/res/drawable-xxhdpi/ic_header_healer.png b/Habitica/res/drawable-xxhdpi/ic_header_healer.png deleted file mode 100644 index 5fa73654d..000000000 Binary files a/Habitica/res/drawable-xxhdpi/ic_header_healer.png and /dev/null differ diff --git a/Habitica/res/drawable-xxhdpi/ic_header_mage.png b/Habitica/res/drawable-xxhdpi/ic_header_mage.png deleted file mode 100644 index 2d61d9d04..000000000 Binary files a/Habitica/res/drawable-xxhdpi/ic_header_mage.png and /dev/null differ diff --git a/Habitica/res/drawable-xxhdpi/ic_header_rogue.png b/Habitica/res/drawable-xxhdpi/ic_header_rogue.png deleted file mode 100644 index dabc6b26e..000000000 Binary files a/Habitica/res/drawable-xxhdpi/ic_header_rogue.png and /dev/null differ diff --git a/Habitica/res/drawable-xxhdpi/ic_header_warrior.png b/Habitica/res/drawable-xxhdpi/ic_header_warrior.png deleted file mode 100644 index c0cd8774a..000000000 Binary files a/Habitica/res/drawable-xxhdpi/ic_header_warrior.png and /dev/null differ diff --git a/Habitica/res/layout/activity_full_profile.xml b/Habitica/res/layout/activity_full_profile.xml index bb07bff36..fa1db2db9 100644 --- a/Habitica/res/layout/activity_full_profile.xml +++ b/Habitica/res/layout/activity_full_profile.xml @@ -93,9 +93,7 @@ android:id="@+id/lvl_tv" android:layout_width="wrap_content" android:layout_height="36dp" - android:drawableLeft="@drawable/ic_header_warrior" android:drawablePadding="6dp" - android:drawableStart="@drawable/ic_header_warrior" android:gravity="center" android:textSize="14sp" /> diff --git a/Habitica/res/layout/avatar_with_bars.xml b/Habitica/res/layout/avatar_with_bars.xml index 06abdfbcf..dd98ed567 100644 --- a/Habitica/res/layout/avatar_with_bars.xml +++ b/Habitica/res/layout/avatar_with_bars.xml @@ -74,8 +74,6 @@ android:id="@+id/lvl_tv" android:layout_width="wrap_content" android:layout_height="36dp" - android:drawableLeft="@drawable/ic_header_warrior" - android:drawableStart="@drawable/ic_header_warrior" android:drawablePadding="6dp" android:gravity="center" android:textSize="14sp" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java index 286191e93..fdd7c731b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java @@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.ui; import android.annotation.TargetApi; import android.content.Context; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.v4.content.res.ResourcesCompat; @@ -93,22 +94,20 @@ public class AvatarWithBarsViewModel { lvlText.setCompoundDrawables(null, null, null, null); } else { lvlText.setText(context.getString(R.string.user_level_with_class, user.getStats().getLvl(), userClass.substring(0, 1).toUpperCase(Locale.getDefault()) + userClass.substring(1))); - Drawable drawable; + Drawable drawable = null; switch (stats.getHabitClass()) { case "warrior": - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_warrior, null); + drawable = new BitmapDrawable(context.getResources(), HabiticaIconsHelper.imageOfWarriorDarkBg()); break; case "rogue": - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_rogue, null); + drawable = new BitmapDrawable(context.getResources(), HabiticaIconsHelper.imageOfRogueDarkBg()); break; case "wizard": - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_mage, null); + drawable = new BitmapDrawable(context.getResources(), HabiticaIconsHelper.imageOfMageDarkBg()); break; case "healer": - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_healer, null); + drawable = new BitmapDrawable(context.getResources(), HabiticaIconsHelper.imageOfHealerDarkBg()); break; - default: - drawable = ResourcesCompat.getDrawable(res, R.drawable.ic_header_warrior, null); } if (drawable != null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java index cbc1fc9d2..ffea64557 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java @@ -13,6 +13,8 @@ import com.habitrpg.android.habitica.events.TaskTappedEvent; import com.habitrpg.android.habitica.models.tasks.Task; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; +import net.pherth.android.emoji_library.EmojiTextView; + import org.greenrobot.eventbus.EventBus; import butterknife.BindColor; @@ -28,10 +30,10 @@ public abstract class BaseTaskViewHolder extends RecyclerView.ViewHolder impleme public Task task; protected Context context; @BindView(R.id.checkedTextView) - TextView titleTextView; + EmojiTextView titleTextView; @BindView(R.id.notesTextView) - TextView notesTextView; + EmojiTextView notesTextView; @Nullable @BindView(R.id.rightBorderView) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java index 1772026a7..7141f8624 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java @@ -76,11 +76,11 @@ public class HabiticaIcons { Paint paint = CacheForHeart.paint; // Local Colors - int heartLightBackground = Color.argb(255, 247, 78, 82); - int fillColor6 = Color.argb(128, 181, 36, 40); - int fillColor3 = Color.argb(128, 255, 255, 255); int heartDarkBackground = Color.argb(178, 255, 255, 255); int fillColor5 = Color.argb(64, 255, 255, 255); + int fillColor6 = Color.argb(128, 181, 36, 40); + int fillColor3 = Color.argb(128, 255, 255, 255); + int heartLightBackground = Color.argb(255, 247, 78, 82); int fillColor2 = Color.argb(255, 255, 97, 101); int fillColor4 = Color.argb(89, 181, 36, 40); @@ -356,11 +356,11 @@ public class HabiticaIcons { Paint paint = CacheForExperience.paint; // Local Colors - int fillColor12 = Color.argb(128, 191, 125, 26); - int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor11 = Color.argb(64, 191, 125, 26); + int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor5 = Color.argb(64, 255, 255, 255); int fillColor10 = Color.argb(255, 255, 166, 35); + int fillColor12 = Color.argb(128, 191, 125, 26); // Resize to Target Frame canvas.save(); @@ -587,11 +587,11 @@ public class HabiticaIcons { Paint paint = CacheForMagic.paint; // Local Colors - int fillColor5 = Color.argb(64, 255, 255, 255); - int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor9 = Color.argb(64, 31, 112, 154); + int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor8 = Color.argb(255, 80, 181, 233); int fillColor7 = Color.argb(255, 41, 149, 205); + int fillColor5 = Color.argb(64, 255, 255, 255); // Resize to Target Frame canvas.save(); @@ -738,11 +738,11 @@ public class HabiticaIcons { Paint paint = CacheForGold.paint; // Local Colors - int fillColor12 = Color.argb(128, 191, 125, 26); int fillColor13 = Color.argb(191, 191, 125, 26); int fillColor5 = Color.argb(64, 255, 255, 255); int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor10 = Color.argb(255, 255, 166, 35); + int fillColor12 = Color.argb(128, 191, 125, 26); // Resize to Target Frame canvas.save(); @@ -892,10 +892,10 @@ public class HabiticaIcons { Paint paint = CacheForGem.paint; // Local Colors - int fillColor3 = Color.argb(128, 255, 255, 255); - int fillColor5 = Color.argb(64, 255, 255, 255); int fillColor15 = Color.argb(89, 27, 153, 107); + int fillColor3 = Color.argb(128, 255, 255, 255); int fillColor14 = Color.argb(255, 36, 204, 143); + int fillColor5 = Color.argb(64, 255, 255, 255); // Resize to Target Frame canvas.save(); @@ -1101,10 +1101,10 @@ public class HabiticaIcons { Paint paint = CacheForHourglass.paint; // Local Colors - int fillColor18 = Color.argb(255, 154, 98, 255); int fillColor19 = Color.argb(255, 79, 42, 147); int fillColor17 = Color.argb(230, 255, 255, 255); int fillColor16 = Color.argb(204, 169, 220, 246); + int fillColor18 = Color.argb(255, 154, 98, 255); // Resize to Target Frame canvas.save(); @@ -1400,7 +1400,7 @@ public class HabiticaIcons { private static class CacheForWarrior { private static Paint paint = new Paint(); - private static RectF originalFrame = new RectF(0f, 0f, 25f, 25f); + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); private static RectF resizedFrame = new RectF(); private static RectF bezierRect = new RectF(); private static Path bezierPath = new Path(); @@ -1448,19 +1448,71 @@ public class HabiticaIcons { private static Path bezier18Path = new Path(); private static RectF bezier19Rect = new RectF(); private static Path bezier19Path = new Path(); - private static RectF group = new RectF(); + private static RectF group3 = new RectF(); private static Path clipPath = new Path(); private static RectF bezier20Rect = new RectF(); private static Path bezier20Path = new Path(); private static RectF rectangle5Rect = new RectF(); private static Path rectangle5Path = new Path(); + private static RectF bezier21Rect = new RectF(); + private static Path bezier21Path = new Path(); + private static RectF bezier22Rect = new RectF(); + private static Path bezier22Path = new Path(); + private static RectF rectangle6Rect = new RectF(); + private static Path rectangle6Path = new Path(); + private static RectF bezier23Rect = new RectF(); + private static Path bezier23Path = new Path(); + private static RectF bezier24Rect = new RectF(); + private static Path bezier24Path = new Path(); + private static RectF bezier25Rect = new RectF(); + private static Path bezier25Path = new Path(); + private static RectF bezier26Rect = new RectF(); + private static Path bezier26Path = new Path(); + private static RectF bezier27Rect = new RectF(); + private static Path bezier27Path = new Path(); + private static RectF bezier28Rect = new RectF(); + private static Path bezier28Path = new Path(); + private static RectF bezier29Rect = new RectF(); + private static Path bezier29Path = new Path(); + private static RectF bezier30Rect = new RectF(); + private static Path bezier30Path = new Path(); + private static RectF bezier31Rect = new RectF(); + private static Path bezier31Path = new Path(); + private static RectF bezier32Rect = new RectF(); + private static Path bezier32Path = new Path(); + private static RectF bezier33Rect = new RectF(); + private static Path bezier33Path = new Path(); + private static RectF bezier34Rect = new RectF(); + private static Path bezier34Path = new Path(); + private static RectF bezier35Rect = new RectF(); + private static Path bezier35Path = new Path(); + private static RectF rectangle7Rect = new RectF(); + private static Path rectangle7Path = new Path(); + private static RectF rectangle8Rect = new RectF(); + private static Path rectangle8Path = new Path(); + private static RectF rectangle9Rect = new RectF(); + private static Path rectangle9Path = new Path(); + private static RectF bezier36Rect = new RectF(); + private static Path bezier36Path = new Path(); + private static RectF bezier37Rect = new RectF(); + private static Path bezier37Path = new Path(); + private static RectF bezier38Rect = new RectF(); + private static Path bezier38Path = new Path(); + private static RectF bezier39Rect = new RectF(); + private static Path bezier39Path = new Path(); + private static RectF group5 = new RectF(); + private static Path clip2Path = new Path(); + private static RectF bezier40Rect = new RectF(); + private static Path bezier40Path = new Path(); + private static RectF rectangle10Rect = new RectF(); + private static Path rectangle10Path = new Path(); } - public static void drawWarrior(Canvas canvas) { - HabiticaIcons.drawWarrior(canvas, new RectF(0f, 0f, 25f, 25f), ResizingBehavior.AspectFit); + public static void drawWarrior(Canvas canvas, boolean darkBackground) { + HabiticaIcons.drawWarrior(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit, darkBackground); } - public static void drawWarrior(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + public static void drawWarrior(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, boolean darkBackground) { // General Declarations Stack currentTransformation = new Stack(); currentTransformation.push(new Matrix()); @@ -1470,561 +1522,1120 @@ public class HabiticaIcons { int fillColor21 = Color.argb(255, 255, 182, 184); int fillColor23 = Color.argb(255, 229, 65, 77); int fillColor22 = Color.argb(255, 242, 123, 134); + int fillColor41 = Color.argb(255, 255, 149, 152); + int fillColor43 = Color.argb(255, 200, 43, 43); + int fillColor42 = Color.argb(255, 255, 149, 152); int fillColor = Color.argb(255, 240, 97, 102); - int fillColor20 = Color.argb(255, 200, 43, 43); + int fillColor20 = Color.argb(255, 255, 181, 183); + + // Local Variables + boolean lightBackground = !darkBackground; // Resize to Target Frame canvas.save(); RectF resizedFrame = CacheForWarrior.resizedFrame; HabiticaIcons.resizingBehaviorApply(resizing, CacheForWarrior.originalFrame, targetFrame, resizedFrame); canvas.translate(resizedFrame.left, resizedFrame.top); - canvas.scale(resizedFrame.width() / 25f, resizedFrame.height() / 25f); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); - // Bezier - RectF bezierRect = CacheForWarrior.bezierRect; - bezierRect.set(4.65f, 11.19f, 13.89f, 20.43f); - Path bezierPath = CacheForWarrior.bezierPath; - bezierPath.reset(); - bezierPath.moveTo(9.58f, 15.5f); - bezierPath.lineTo(12.88f, 17.02f); - bezierPath.cubicTo(13.15f, 17.15f, 13.33f, 17.4f, 13.4f, 17.7f); - bezierPath.cubicTo(13.51f, 18.19f, 13.86f, 19.34f, 13.89f, 19.95f); - bezierPath.cubicTo(13.9f, 20.29f, 13.55f, 20.53f, 13.24f, 20.39f); - bezierPath.lineTo(7.73f, 17.75f); - bezierPath.cubicTo(7.56f, 17.66f, 7.42f, 17.52f, 7.33f, 17.35f); - bezierPath.lineTo(4.69f, 11.84f); - bezierPath.cubicTo(4.55f, 11.53f, 4.79f, 11.18f, 5.13f, 11.19f); - bezierPath.cubicTo(5.74f, 11.22f, 6.86f, 11.55f, 7.38f, 11.68f); - bezierPath.cubicTo(7.67f, 11.76f, 7.93f, 11.93f, 8.06f, 12.2f); - bezierPath.lineTo(9.58f, 15.5f); - bezierPath.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezierPath.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(bezierPath, paint); - - // Bezier 2 - RectF bezier2Rect = CacheForWarrior.bezier2Rect; - bezier2Rect.set(0.18f, 0.9f, 24.18f, 24.91f); - Path bezier2Path = CacheForWarrior.bezier2Path; - bezier2Path.reset(); - bezier2Path.moveTo(1.6f, 23.48f); - bezier2Path.lineTo(3.02f, 24.91f); - bezier2Path.lineTo(6.71f, 24.62f); - bezier2Path.lineTo(6.9f, 22.19f); - bezier2Path.lineTo(9.02f, 20.07f); - bezier2Path.lineTo(12.88f, 21.91f); - bezier2Path.lineTo(15.76f, 21.13f); - bezier2Path.lineTo(14.55f, 15.93f); - bezier2Path.lineTo(22.63f, 8.39f); - bezier2Path.lineTo(24.18f, 0.91f); - bezier2Path.lineTo(24.17f, 0.91f); - bezier2Path.lineTo(24.18f, 0.91f); - bezier2Path.lineTo(24.18f, 0.9f); - bezier2Path.lineTo(16.7f, 2.45f); - bezier2Path.lineTo(9.16f, 10.53f); - bezier2Path.lineTo(3.95f, 9.32f); - bezier2Path.lineTo(3.18f, 12.2f); - bezier2Path.lineTo(5.01f, 16.06f); - bezier2Path.lineTo(2.89f, 18.18f); - bezier2Path.lineTo(0.47f, 18.37f); - bezier2Path.lineTo(0.18f, 22.06f); - bezier2Path.lineTo(1.6f, 23.48f); - bezier2Path.lineTo(1.6f, 23.48f); - bezier2Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier2Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor20); - canvas.drawPath(bezier2Path, paint); - - // Rectangle - canvas.save(); - canvas.translate(6f, 19.05f); - currentTransformation.peek().postTranslate(6f, 19.05f); - canvas.rotate(45f); - currentTransformation.peek().postRotate(45f); - RectF rectangleRect = CacheForWarrior.rectangleRect; - rectangleRect.set(-1.3f, -3.23f, 1.3f, 3.23f); - Path rectanglePath = CacheForWarrior.rectanglePath; - rectanglePath.reset(); - rectanglePath.moveTo(rectangleRect.left, rectangleRect.top); - rectanglePath.lineTo(rectangleRect.right, rectangleRect.top); - rectanglePath.lineTo(rectangleRect.right, rectangleRect.bottom); - rectanglePath.lineTo(rectangleRect.left, rectangleRect.bottom); - rectanglePath.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(rectanglePath, paint); - canvas.restore(); - - // Bezier 3 - RectF bezier3Rect = CacheForWarrior.bezier3Rect; - bezier3Rect.set(1.76f, 19.66f, 5.42f, 23.32f); - Path bezier3Path = CacheForWarrior.bezier3Path; - bezier3Path.reset(); - bezier3Path.moveTo(1.76f, 21.47f); - bezier3Path.lineTo(1.89f, 19.79f); - bezier3Path.lineTo(3.58f, 19.66f); - bezier3Path.lineTo(5.42f, 21.5f); - bezier3Path.lineTo(5.29f, 23.19f); - bezier3Path.lineTo(3.61f, 23.32f); - bezier3Path.lineTo(1.76f, 21.47f); - bezier3Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier3Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(bezier3Path, paint); - - // Bezier 4 - RectF bezier4Rect = CacheForWarrior.bezier4Rect; - bezier4Rect.set(17.67f, 3.02f, 22.05f, 7.25f); - Path bezier4Path = CacheForWarrior.bezier4Path; - bezier4Path.reset(); - bezier4Path.moveTo(17.67f, 3.92f); - bezier4Path.lineTo(17.83f, 7.25f); - bezier4Path.lineTo(22.05f, 3.03f); - bezier4Path.cubicTo(21.98f, 2.95f, 18.79f, 3.32f, 17.67f, 3.92f); - bezier4Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier4Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier4Path, paint); - - // Bezier 5 - RectF bezier5Rect = CacheForWarrior.bezier5Rect; - bezier5Rect.set(8.68f, 3.92f, 17.83f, 14.12f); - Path bezier5Path = CacheForWarrior.bezier5Path; - bezier5Path.reset(); - bezier5Path.moveTo(17.6f, 3.96f); - bezier5Path.lineTo(8.68f, 13.32f); - bezier5Path.lineTo(10.96f, 14.12f); - bezier5Path.lineTo(17.83f, 7.25f); - bezier5Path.lineTo(17.67f, 3.92f); - bezier5Path.cubicTo(17.65f, 3.93f, 17.6f, 3.96f, 17.6f, 3.96f); - bezier5Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier5Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier5Path, paint); - - // Bezier 6 - RectF bezier6Rect = CacheForWarrior.bezier6Rect; - bezier6Rect.set(8.6f, 13.32f, 10.96f, 15.51f); - Path bezier6Path = CacheForWarrior.bezier6Path; - bezier6Path.reset(); - bezier6Path.moveTo(8.68f, 13.32f); - bezier6Path.cubicTo(8.65f, 13.34f, 8.62f, 13.37f, 8.6f, 13.4f); - bezier6Path.lineTo(9.57f, 15.51f); - bezier6Path.lineTo(10.96f, 14.12f); - bezier6Path.lineTo(8.68f, 13.32f); - bezier6Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier6Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier6Path, paint); - - // Bezier 7 - RectF bezier7Rect = CacheForWarrior.bezier7Rect; - bezier7Rect.set(17.83f, 3.03f, 22.06f, 7.41f); - Path bezier7Path = CacheForWarrior.bezier7Path; - bezier7Path.reset(); - bezier7Path.moveTo(21.16f, 7.41f); - bezier7Path.lineTo(17.83f, 7.25f); - bezier7Path.lineTo(22.05f, 3.03f); - bezier7Path.cubicTo(22.13f, 3.11f, 21.76f, 6.29f, 21.16f, 7.41f); - bezier7Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier7Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier7Path, paint); - - // Bezier 8 - RectF bezier8Rect = CacheForWarrior.bezier8Rect; - bezier8Rect.set(10.96f, 7.25f, 21.16f, 16.4f); - Path bezier8Path = CacheForWarrior.bezier8Path; - bezier8Path.reset(); - bezier8Path.moveTo(21.12f, 7.48f); - bezier8Path.lineTo(11.76f, 16.4f); - bezier8Path.lineTo(10.96f, 14.12f); - bezier8Path.lineTo(17.83f, 7.25f); - bezier8Path.lineTo(21.16f, 7.41f); - bezier8Path.cubicTo(21.14f, 7.43f, 21.12f, 7.48f, 21.12f, 7.48f); - bezier8Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier8Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(bezier8Path, paint); - - // Bezier 9 - RectF bezier9Rect = CacheForWarrior.bezier9Rect; - bezier9Rect.set(9.57f, 14.12f, 11.76f, 16.48f); - Path bezier9Path = CacheForWarrior.bezier9Path; - bezier9Path.reset(); - bezier9Path.moveTo(11.76f, 16.4f); - bezier9Path.cubicTo(11.73f, 16.43f, 11.7f, 16.46f, 11.68f, 16.48f); - bezier9Path.lineTo(9.57f, 15.51f); - bezier9Path.lineTo(10.96f, 14.12f); - bezier9Path.lineTo(11.76f, 16.4f); - bezier9Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier9Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(bezier9Path, paint); - - // Bezier 10 - RectF bezier10Rect = CacheForWarrior.bezier10Rect; - bezier10Rect.set(1.89f, 19.66f, 3.58f, 21.09f); - Path bezier10Path = CacheForWarrior.bezier10Path; - bezier10Path.reset(); - bezier10Path.moveTo(3.58f, 19.66f); - bezier10Path.lineTo(3.19f, 21.09f); - bezier10Path.lineTo(1.89f, 19.79f); - bezier10Path.lineTo(3.58f, 19.66f); - bezier10Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier10Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier10Path, paint); - - // Bezier 11 - RectF bezier11Rect = CacheForWarrior.bezier11Rect; - bezier11Rect.set(3.99f, 21.5f, 5.42f, 23.19f); - Path bezier11Path = CacheForWarrior.bezier11Path; - bezier11Path.reset(); - bezier11Path.moveTo(5.42f, 21.5f); - bezier11Path.lineTo(3.99f, 21.89f); - bezier11Path.lineTo(5.29f, 23.19f); - bezier11Path.lineTo(5.42f, 21.5f); - bezier11Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier11Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier11Path, paint); - - // Bezier 12 - RectF bezier12Rect = CacheForWarrior.bezier12Rect; - bezier12Rect.set(3.19f, 19.66f, 5.42f, 21.89f); - Path bezier12Path = CacheForWarrior.bezier12Path; - bezier12Path.reset(); - bezier12Path.moveTo(3.58f, 19.66f); - bezier12Path.lineTo(5.42f, 21.5f); - bezier12Path.lineTo(3.99f, 21.89f); - bezier12Path.lineTo(3.19f, 21.09f); - bezier12Path.lineTo(3.58f, 19.66f); - bezier12Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier12Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier12Path, paint); - - // Bezier 13 - RectF bezier13Rect = CacheForWarrior.bezier13Rect; - bezier13Rect.set(1.76f, 19.79f, 3.19f, 21.48f); - Path bezier13Path = CacheForWarrior.bezier13Path; - bezier13Path.reset(); - bezier13Path.moveTo(1.76f, 21.48f); - bezier13Path.lineTo(3.19f, 21.09f); - bezier13Path.lineTo(1.89f, 19.79f); - bezier13Path.lineTo(1.76f, 21.48f); - bezier13Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier13Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier13Path, paint); - - // Bezier 14 - RectF bezier14Rect = CacheForWarrior.bezier14Rect; - bezier14Rect.set(3.6f, 21.89f, 5.29f, 23.32f); - Path bezier14Path = CacheForWarrior.bezier14Path; - bezier14Path.reset(); - bezier14Path.moveTo(3.6f, 23.32f); - bezier14Path.lineTo(3.99f, 21.89f); - bezier14Path.lineTo(5.29f, 23.19f); - bezier14Path.lineTo(3.6f, 23.32f); - bezier14Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier14Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier14Path, paint); - - // Bezier 15 - RectF bezier15Rect = CacheForWarrior.bezier15Rect; - bezier15Rect.set(1.76f, 21.09f, 3.99f, 23.32f); - Path bezier15Path = CacheForWarrior.bezier15Path; - bezier15Path.reset(); - bezier15Path.moveTo(1.76f, 21.48f); - bezier15Path.lineTo(3.61f, 23.32f); - bezier15Path.lineTo(3.99f, 21.89f); - bezier15Path.lineTo(3.19f, 21.09f); - bezier15Path.lineTo(1.76f, 21.48f); - bezier15Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier15Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier15Path, paint); - - // Rectangle 2 - canvas.save(); - canvas.translate(7.3f, 17.8f); - currentTransformation.peek().postTranslate(7.3f, 17.8f); - canvas.rotate(45f); - currentTransformation.peek().postRotate(45f); - RectF rectangle2Rect = CacheForWarrior.rectangle2Rect; - rectangle2Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); - Path rectangle2Path = CacheForWarrior.rectangle2Path; - rectangle2Path.reset(); - rectangle2Path.moveTo(rectangle2Rect.left, rectangle2Rect.top); - rectangle2Path.lineTo(rectangle2Rect.right, rectangle2Rect.top); - rectangle2Path.lineTo(rectangle2Rect.right, rectangle2Rect.bottom); - rectangle2Path.lineTo(rectangle2Rect.left, rectangle2Rect.bottom); - rectangle2Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(rectangle2Path, paint); - canvas.restore(); - - // Rectangle 3 - canvas.save(); - canvas.translate(6.15f, 18.9f); - currentTransformation.peek().postTranslate(6.15f, 18.9f); - canvas.rotate(45f); - currentTransformation.peek().postRotate(45f); - RectF rectangle3Rect = CacheForWarrior.rectangle3Rect; - rectangle3Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); - Path rectangle3Path = CacheForWarrior.rectangle3Path; - rectangle3Path.reset(); - rectangle3Path.moveTo(rectangle3Rect.left, rectangle3Rect.top); - rectangle3Path.lineTo(rectangle3Rect.right, rectangle3Rect.top); - rectangle3Path.lineTo(rectangle3Rect.right, rectangle3Rect.bottom); - rectangle3Path.lineTo(rectangle3Rect.left, rectangle3Rect.bottom); - rectangle3Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(rectangle3Path, paint); - canvas.restore(); - - // Rectangle 4 - canvas.save(); - canvas.translate(5.05f, 20f); - currentTransformation.peek().postTranslate(5.05f, 20f); - canvas.rotate(45f); - currentTransformation.peek().postRotate(45f); - RectF rectangle4Rect = CacheForWarrior.rectangle4Rect; - rectangle4Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); - Path rectangle4Path = CacheForWarrior.rectangle4Path; - rectangle4Path.reset(); - rectangle4Path.moveTo(rectangle4Rect.left, rectangle4Rect.top); - rectangle4Path.lineTo(rectangle4Rect.right, rectangle4Rect.top); - rectangle4Path.lineTo(rectangle4Rect.right, rectangle4Rect.bottom); - rectangle4Path.lineTo(rectangle4Rect.left, rectangle4Rect.bottom); - rectangle4Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(rectangle4Path, paint); - canvas.restore(); - - // Bezier 16 - RectF bezier16Rect = CacheForWarrior.bezier16Rect; - bezier16Rect.set(4.75f, 11.19f, 9.58f, 16.49f); - Path bezier16Path = CacheForWarrior.bezier16Path; - bezier16Path.reset(); - bezier16Path.moveTo(9.58f, 15.5f); - bezier16Path.lineTo(8.06f, 12.2f); - bezier16Path.cubicTo(8f, 12.08f, 7.92f, 11.98f, 7.82f, 11.9f); - bezier16Path.cubicTo(7.7f, 11.8f, 7.55f, 11.72f, 7.38f, 11.68f); - bezier16Path.cubicTo(6.87f, 11.55f, 5.74f, 11.22f, 5.13f, 11.2f); - bezier16Path.cubicTo(4.97f, 11.19f, 4.84f, 11.26f, 4.75f, 11.37f); - bezier16Path.lineTo(6.97f, 13.26f); - bezier16Path.lineTo(8.6f, 16.49f); - bezier16Path.lineTo(9.58f, 15.5f); - bezier16Path.lineTo(9.58f, 15.5f); - bezier16Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier16Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier16Path, paint); - - // Bezier 17 - RectF bezier17Rect = CacheForWarrior.bezier17Rect; - bezier17Rect.set(4.65f, 11.37f, 8.6f, 17.59f); - Path bezier17Path = CacheForWarrior.bezier17Path; - bezier17Path.reset(); - bezier17Path.moveTo(6.97f, 13.26f); - bezier17Path.lineTo(4.75f, 11.37f); - bezier17Path.cubicTo(4.65f, 11.5f, 4.61f, 11.67f, 4.69f, 11.84f); - bezier17Path.lineTo(7.33f, 17.36f); - bezier17Path.cubicTo(7.37f, 17.44f, 7.43f, 17.52f, 7.5f, 17.59f); - bezier17Path.lineTo(8.6f, 16.49f); - bezier17Path.lineTo(6.97f, 13.26f); - bezier17Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier17Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor); - canvas.drawPath(bezier17Path, paint); - - // Bezier 18 - RectF bezier18Rect = CacheForWarrior.bezier18Rect; - bezier18Rect.set(8.6f, 15.5f, 13.89f, 20.33f); - Path bezier18Path = CacheForWarrior.bezier18Path; - bezier18Path.reset(); - bezier18Path.moveTo(13.89f, 19.95f); - bezier18Path.cubicTo(13.86f, 19.34f, 13.54f, 18.22f, 13.4f, 17.7f); - bezier18Path.cubicTo(13.36f, 17.54f, 13.29f, 17.39f, 13.18f, 17.26f); - bezier18Path.cubicTo(13.1f, 17.16f, 13.01f, 17.08f, 12.88f, 17.02f); - bezier18Path.lineTo(9.59f, 15.5f); - bezier18Path.lineTo(9.58f, 15.5f); - bezier18Path.lineTo(8.6f, 16.49f); - bezier18Path.lineTo(11.82f, 18.12f); - bezier18Path.lineTo(13.72f, 20.33f); - bezier18Path.cubicTo(13.83f, 20.25f, 13.9f, 20.11f, 13.89f, 19.95f); - bezier18Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier18Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor22); - canvas.drawPath(bezier18Path, paint); - - // Bezier 19 - RectF bezier19Rect = CacheForWarrior.bezier19Rect; - bezier19Rect.set(7.5f, 16.49f, 13.72f, 20.43f); - Path bezier19Path = CacheForWarrior.bezier19Path; - bezier19Path.reset(); - bezier19Path.moveTo(11.82f, 18.12f); - bezier19Path.lineTo(13.72f, 20.33f); - bezier19Path.cubicTo(13.59f, 20.43f, 13.41f, 20.47f, 13.25f, 20.39f); - bezier19Path.lineTo(7.73f, 17.75f); - bezier19Path.cubicTo(7.65f, 17.71f, 7.57f, 17.65f, 7.5f, 17.58f); - bezier19Path.lineTo(8.6f, 16.49f); - bezier19Path.lineTo(11.82f, 18.12f); - bezier19Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - bezier19Path.setFillType(Path.FillType.EVEN_ODD); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor23); - canvas.drawPath(bezier19Path, paint); - - // Group - { - RectF group = CacheForWarrior.group; - group.set(12.81f, 5.27f, 16.35f, 12.27f); + // Group 2 + if (darkBackground) { + // Bezier + RectF bezierRect = CacheForWarrior.bezierRect; + bezierRect.set(7.65f, 15.19f, 16.89f, 24.43f); + Path bezierPath = CacheForWarrior.bezierPath; + bezierPath.reset(); + bezierPath.moveTo(12.58f, 19.5f); + bezierPath.lineTo(15.88f, 21.02f); + bezierPath.cubicTo(16.15f, 21.15f, 16.33f, 21.4f, 16.4f, 21.7f); + bezierPath.cubicTo(16.51f, 22.19f, 16.86f, 23.34f, 16.89f, 23.95f); + bezierPath.cubicTo(16.9f, 24.29f, 16.55f, 24.53f, 16.24f, 24.39f); + bezierPath.lineTo(10.73f, 21.75f); + bezierPath.cubicTo(10.56f, 21.66f, 10.42f, 21.52f, 10.33f, 21.35f); + bezierPath.lineTo(7.69f, 15.84f); + bezierPath.cubicTo(7.55f, 15.53f, 7.79f, 15.18f, 8.13f, 15.19f); + bezierPath.cubicTo(8.74f, 15.22f, 9.86f, 15.55f, 10.38f, 15.68f); + bezierPath.cubicTo(10.67f, 15.76f, 10.93f, 15.93f, 11.06f, 16.2f); + bezierPath.lineTo(12.58f, 19.5f); + bezierPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezierPath.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezierPath, paint); + + // Bezier 2 + RectF bezier2Rect = CacheForWarrior.bezier2Rect; + bezier2Rect.set(3.18f, 4.9f, 27.18f, 28.91f); + Path bezier2Path = CacheForWarrior.bezier2Path; + bezier2Path.reset(); + bezier2Path.moveTo(4.6f, 27.48f); + bezier2Path.lineTo(6.02f, 28.91f); + bezier2Path.lineTo(9.71f, 28.62f); + bezier2Path.lineTo(9.9f, 26.19f); + bezier2Path.lineTo(12.02f, 24.07f); + bezier2Path.lineTo(15.88f, 25.91f); + bezier2Path.lineTo(18.76f, 25.13f); + bezier2Path.lineTo(17.55f, 19.93f); + bezier2Path.lineTo(25.63f, 12.39f); + bezier2Path.lineTo(27.18f, 4.91f); + bezier2Path.lineTo(27.17f, 4.91f); + bezier2Path.lineTo(27.18f, 4.91f); + bezier2Path.lineTo(27.18f, 4.9f); + bezier2Path.lineTo(19.7f, 6.45f); + bezier2Path.lineTo(12.16f, 14.53f); + bezier2Path.lineTo(6.95f, 13.32f); + bezier2Path.lineTo(6.18f, 16.2f); + bezier2Path.lineTo(8.01f, 20.06f); + bezier2Path.lineTo(5.89f, 22.18f); + bezier2Path.lineTo(3.47f, 22.37f); + bezier2Path.lineTo(3.18f, 26.06f); + bezier2Path.lineTo(4.6f, 27.48f); + bezier2Path.lineTo(4.6f, 27.48f); + bezier2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier2Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor20); + canvas.drawPath(bezier2Path, paint); + + // Rectangle canvas.save(); - - // Clip - Path clipPath = CacheForWarrior.clipPath; - clipPath.reset(); - clipPath.moveTo(16.35f, 5.27f); - clipPath.lineTo(12.81f, 8.98f); - clipPath.lineTo(12.81f, 12.27f); - clipPath.lineTo(16.35f, 8.73f); - clipPath.lineTo(16.35f, 5.27f); - clipPath.lineTo(16.35f, 5.27f); - clipPath.close(); - canvas.clipPath(clipPath); - - // Bezier 20 - RectF bezier20Rect = CacheForWarrior.bezier20Rect; - bezier20Rect.set(15.35f, 5f, 15.86f, 12.65f); - Path bezier20Path = CacheForWarrior.bezier20Path; - bezier20Path.reset(); - bezier20Path.moveTo(15.86f, 12.61f); - bezier20Path.lineTo(15.35f, 12.65f); - bezier20Path.cubicTo(15.35f, 12.65f, 15.35f, 7.56f, 15.35f, 5f); - bezier20Path.lineTo(15.86f, 5f); - bezier20Path.cubicTo(15.86f, 7.56f, 15.86f, 12.65f, 15.86f, 12.65f); - bezier20Path.lineTo(15.86f, 12.61f); - bezier20Path.close(); + canvas.translate(9f, 23.05f); + currentTransformation.peek().postTranslate(9f, 23.05f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangleRect = CacheForWarrior.rectangleRect; + rectangleRect.set(-1.3f, -3.23f, 1.3f, 3.23f); + Path rectanglePath = CacheForWarrior.rectanglePath; + rectanglePath.reset(); + rectanglePath.moveTo(rectangleRect.left, rectangleRect.top); + rectanglePath.lineTo(rectangleRect.right, rectangleRect.top); + rectanglePath.lineTo(rectangleRect.right, rectangleRect.bottom); + rectanglePath.lineTo(rectangleRect.left, rectangleRect.bottom); + rectanglePath.close(); paint.reset(); paint.setFlags(Paint.ANTI_ALIAS_FLAG); paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(bezier20Path, paint); - - // Rectangle 5 - RectF rectangle5Rect = CacheForWarrior.rectangle5Rect; - rectangle5Rect.set(12.8f, 5.88f, 14.3f, 13.03f); - Path rectangle5Path = CacheForWarrior.rectangle5Path; - rectangle5Path.reset(); - rectangle5Path.moveTo(rectangle5Rect.left, rectangle5Rect.top); - rectangle5Path.lineTo(rectangle5Rect.right, rectangle5Rect.top); - rectangle5Path.lineTo(rectangle5Rect.right, rectangle5Rect.bottom); - rectangle5Path.lineTo(rectangle5Rect.left, rectangle5Rect.bottom); - rectangle5Path.close(); - - paint.reset(); - paint.setFlags(Paint.ANTI_ALIAS_FLAG); - paint.setStyle(Paint.Style.FILL); - paint.setColor(fillColor21); - canvas.drawPath(rectangle5Path, paint); - + paint.setColor(fillColor); + canvas.drawPath(rectanglePath, paint); canvas.restore(); + + // Bezier 3 + RectF bezier3Rect = CacheForWarrior.bezier3Rect; + bezier3Rect.set(4.76f, 23.66f, 8.42f, 27.32f); + Path bezier3Path = CacheForWarrior.bezier3Path; + bezier3Path.reset(); + bezier3Path.moveTo(4.76f, 25.47f); + bezier3Path.lineTo(4.89f, 23.79f); + bezier3Path.lineTo(6.58f, 23.66f); + bezier3Path.lineTo(8.42f, 25.5f); + bezier3Path.lineTo(8.29f, 27.19f); + bezier3Path.lineTo(6.61f, 27.32f); + bezier3Path.lineTo(4.76f, 25.47f); + bezier3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier3Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier3Path, paint); + + // Bezier 4 + RectF bezier4Rect = CacheForWarrior.bezier4Rect; + bezier4Rect.set(20.67f, 7.02f, 25.05f, 11.25f); + Path bezier4Path = CacheForWarrior.bezier4Path; + bezier4Path.reset(); + bezier4Path.moveTo(20.67f, 7.92f); + bezier4Path.lineTo(20.83f, 11.25f); + bezier4Path.lineTo(25.05f, 7.03f); + bezier4Path.cubicTo(24.98f, 6.95f, 21.79f, 7.32f, 20.67f, 7.92f); + bezier4Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier4Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor41); + canvas.drawPath(bezier4Path, paint); + + // Bezier 5 + RectF bezier5Rect = CacheForWarrior.bezier5Rect; + bezier5Rect.set(11.68f, 7.92f, 20.83f, 18.12f); + Path bezier5Path = CacheForWarrior.bezier5Path; + bezier5Path.reset(); + bezier5Path.moveTo(20.6f, 7.96f); + bezier5Path.lineTo(11.68f, 17.32f); + bezier5Path.lineTo(13.96f, 18.12f); + bezier5Path.lineTo(20.83f, 11.25f); + bezier5Path.lineTo(20.67f, 7.92f); + bezier5Path.cubicTo(20.65f, 7.93f, 20.6f, 7.96f, 20.6f, 7.96f); + bezier5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier5Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier5Path, paint); + + // Bezier 6 + RectF bezier6Rect = CacheForWarrior.bezier6Rect; + bezier6Rect.set(11.6f, 17.32f, 13.96f, 19.51f); + Path bezier6Path = CacheForWarrior.bezier6Path; + bezier6Path.reset(); + bezier6Path.moveTo(11.68f, 17.32f); + bezier6Path.cubicTo(11.65f, 17.34f, 11.62f, 17.37f, 11.6f, 17.4f); + bezier6Path.lineTo(12.57f, 19.51f); + bezier6Path.lineTo(13.96f, 18.12f); + bezier6Path.lineTo(11.68f, 17.32f); + bezier6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier6Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier6Path, paint); + + // Bezier 7 + RectF bezier7Rect = CacheForWarrior.bezier7Rect; + bezier7Rect.set(20.83f, 7.03f, 25.06f, 11.41f); + Path bezier7Path = CacheForWarrior.bezier7Path; + bezier7Path.reset(); + bezier7Path.moveTo(24.16f, 11.41f); + bezier7Path.lineTo(20.83f, 11.25f); + bezier7Path.lineTo(25.05f, 7.03f); + bezier7Path.cubicTo(25.13f, 7.1f, 24.76f, 10.29f, 24.16f, 11.41f); + bezier7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier7Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier7Path, paint); + + // Bezier 8 + RectF bezier8Rect = CacheForWarrior.bezier8Rect; + bezier8Rect.set(13.96f, 11.25f, 24.16f, 20.4f); + Path bezier8Path = CacheForWarrior.bezier8Path; + bezier8Path.reset(); + bezier8Path.moveTo(24.12f, 11.48f); + bezier8Path.lineTo(14.76f, 20.4f); + bezier8Path.lineTo(13.96f, 18.12f); + bezier8Path.lineTo(20.83f, 11.25f); + bezier8Path.lineTo(24.16f, 11.41f); + bezier8Path.cubicTo(24.14f, 11.43f, 24.12f, 11.48f, 24.12f, 11.48f); + bezier8Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier8Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier8Path, paint); + + // Bezier 9 + RectF bezier9Rect = CacheForWarrior.bezier9Rect; + bezier9Rect.set(12.57f, 18.12f, 14.76f, 20.48f); + Path bezier9Path = CacheForWarrior.bezier9Path; + bezier9Path.reset(); + bezier9Path.moveTo(14.76f, 20.4f); + bezier9Path.cubicTo(14.73f, 20.43f, 14.7f, 20.46f, 14.68f, 20.48f); + bezier9Path.lineTo(12.57f, 19.51f); + bezier9Path.lineTo(13.96f, 18.12f); + bezier9Path.lineTo(14.76f, 20.4f); + bezier9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier9Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier9Path, paint); + + // Bezier 10 + RectF bezier10Rect = CacheForWarrior.bezier10Rect; + bezier10Rect.set(4.89f, 23.66f, 6.58f, 25.09f); + Path bezier10Path = CacheForWarrior.bezier10Path; + bezier10Path.reset(); + bezier10Path.moveTo(6.58f, 23.66f); + bezier10Path.lineTo(6.19f, 25.09f); + bezier10Path.lineTo(4.89f, 23.79f); + bezier10Path.lineTo(6.58f, 23.66f); + bezier10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier10Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier10Path, paint); + + // Bezier 11 + RectF bezier11Rect = CacheForWarrior.bezier11Rect; + bezier11Rect.set(6.99f, 25.5f, 8.42f, 27.19f); + Path bezier11Path = CacheForWarrior.bezier11Path; + bezier11Path.reset(); + bezier11Path.moveTo(8.42f, 25.5f); + bezier11Path.lineTo(6.99f, 25.89f); + bezier11Path.lineTo(8.29f, 27.19f); + bezier11Path.lineTo(8.42f, 25.5f); + bezier11Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier11Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier11Path, paint); + + // Bezier 12 + RectF bezier12Rect = CacheForWarrior.bezier12Rect; + bezier12Rect.set(6.19f, 23.66f, 8.42f, 25.89f); + Path bezier12Path = CacheForWarrior.bezier12Path; + bezier12Path.reset(); + bezier12Path.moveTo(6.58f, 23.66f); + bezier12Path.lineTo(8.42f, 25.5f); + bezier12Path.lineTo(6.99f, 25.89f); + bezier12Path.lineTo(6.19f, 25.09f); + bezier12Path.lineTo(6.58f, 23.66f); + bezier12Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier12Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier12Path, paint); + + // Bezier 13 + RectF bezier13Rect = CacheForWarrior.bezier13Rect; + bezier13Rect.set(4.76f, 23.79f, 6.19f, 25.48f); + Path bezier13Path = CacheForWarrior.bezier13Path; + bezier13Path.reset(); + bezier13Path.moveTo(4.76f, 25.48f); + bezier13Path.lineTo(6.19f, 25.09f); + bezier13Path.lineTo(4.89f, 23.79f); + bezier13Path.lineTo(4.76f, 25.48f); + bezier13Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier13Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier13Path, paint); + + // Bezier 14 + RectF bezier14Rect = CacheForWarrior.bezier14Rect; + bezier14Rect.set(6.6f, 25.89f, 8.29f, 27.32f); + Path bezier14Path = CacheForWarrior.bezier14Path; + bezier14Path.reset(); + bezier14Path.moveTo(6.6f, 27.32f); + bezier14Path.lineTo(6.99f, 25.89f); + bezier14Path.lineTo(8.29f, 27.19f); + bezier14Path.lineTo(6.6f, 27.32f); + bezier14Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier14Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier14Path, paint); + + // Bezier 15 + RectF bezier15Rect = CacheForWarrior.bezier15Rect; + bezier15Rect.set(4.76f, 25.09f, 6.99f, 27.32f); + Path bezier15Path = CacheForWarrior.bezier15Path; + bezier15Path.reset(); + bezier15Path.moveTo(4.76f, 25.48f); + bezier15Path.lineTo(6.61f, 27.32f); + bezier15Path.lineTo(6.99f, 25.89f); + bezier15Path.lineTo(6.19f, 25.09f); + bezier15Path.lineTo(4.76f, 25.48f); + bezier15Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier15Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier15Path, paint); + + // Rectangle 2 + canvas.save(); + canvas.translate(10.3f, 21.8f); + currentTransformation.peek().postTranslate(10.3f, 21.8f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle2Rect = CacheForWarrior.rectangle2Rect; + rectangle2Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle2Path = CacheForWarrior.rectangle2Path; + rectangle2Path.reset(); + rectangle2Path.moveTo(rectangle2Rect.left, rectangle2Rect.top); + rectangle2Path.lineTo(rectangle2Rect.right, rectangle2Rect.top); + rectangle2Path.lineTo(rectangle2Rect.right, rectangle2Rect.bottom); + rectangle2Path.lineTo(rectangle2Rect.left, rectangle2Rect.bottom); + rectangle2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(rectangle2Path, paint); + canvas.restore(); + + // Rectangle 3 + canvas.save(); + canvas.translate(9.15f, 22.9f); + currentTransformation.peek().postTranslate(9.15f, 22.9f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle3Rect = CacheForWarrior.rectangle3Rect; + rectangle3Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle3Path = CacheForWarrior.rectangle3Path; + rectangle3Path.reset(); + rectangle3Path.moveTo(rectangle3Rect.left, rectangle3Rect.top); + rectangle3Path.lineTo(rectangle3Rect.right, rectangle3Rect.top); + rectangle3Path.lineTo(rectangle3Rect.right, rectangle3Rect.bottom); + rectangle3Path.lineTo(rectangle3Rect.left, rectangle3Rect.bottom); + rectangle3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(rectangle3Path, paint); + canvas.restore(); + + // Rectangle 4 + canvas.save(); + canvas.translate(8.05f, 24f); + currentTransformation.peek().postTranslate(8.05f, 24f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle4Rect = CacheForWarrior.rectangle4Rect; + rectangle4Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle4Path = CacheForWarrior.rectangle4Path; + rectangle4Path.reset(); + rectangle4Path.moveTo(rectangle4Rect.left, rectangle4Rect.top); + rectangle4Path.lineTo(rectangle4Rect.right, rectangle4Rect.top); + rectangle4Path.lineTo(rectangle4Rect.right, rectangle4Rect.bottom); + rectangle4Path.lineTo(rectangle4Rect.left, rectangle4Rect.bottom); + rectangle4Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(rectangle4Path, paint); + canvas.restore(); + + // Bezier 16 + RectF bezier16Rect = CacheForWarrior.bezier16Rect; + bezier16Rect.set(7.75f, 15.19f, 12.58f, 20.49f); + Path bezier16Path = CacheForWarrior.bezier16Path; + bezier16Path.reset(); + bezier16Path.moveTo(12.58f, 19.5f); + bezier16Path.lineTo(11.06f, 16.2f); + bezier16Path.cubicTo(11f, 16.08f, 10.92f, 15.98f, 10.82f, 15.9f); + bezier16Path.cubicTo(10.7f, 15.8f, 10.55f, 15.72f, 10.38f, 15.68f); + bezier16Path.cubicTo(9.87f, 15.55f, 8.74f, 15.22f, 8.13f, 15.2f); + bezier16Path.cubicTo(7.97f, 15.19f, 7.84f, 15.26f, 7.75f, 15.37f); + bezier16Path.lineTo(9.97f, 17.26f); + bezier16Path.lineTo(11.6f, 20.49f); + bezier16Path.lineTo(12.58f, 19.5f); + bezier16Path.lineTo(12.58f, 19.5f); + bezier16Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier16Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier16Path, paint); + + // Bezier 17 + RectF bezier17Rect = CacheForWarrior.bezier17Rect; + bezier17Rect.set(7.65f, 15.37f, 11.6f, 21.59f); + Path bezier17Path = CacheForWarrior.bezier17Path; + bezier17Path.reset(); + bezier17Path.moveTo(9.97f, 17.26f); + bezier17Path.lineTo(7.75f, 15.37f); + bezier17Path.cubicTo(7.65f, 15.5f, 7.61f, 15.67f, 7.69f, 15.84f); + bezier17Path.lineTo(10.33f, 21.36f); + bezier17Path.cubicTo(10.37f, 21.44f, 10.43f, 21.52f, 10.5f, 21.59f); + bezier17Path.lineTo(11.6f, 20.49f); + bezier17Path.lineTo(9.97f, 17.26f); + bezier17Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier17Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier17Path, paint); + + // Bezier 18 + RectF bezier18Rect = CacheForWarrior.bezier18Rect; + bezier18Rect.set(11.6f, 19.5f, 16.89f, 24.33f); + Path bezier18Path = CacheForWarrior.bezier18Path; + bezier18Path.reset(); + bezier18Path.moveTo(16.89f, 23.95f); + bezier18Path.cubicTo(16.86f, 23.34f, 16.54f, 22.22f, 16.4f, 21.7f); + bezier18Path.cubicTo(16.36f, 21.54f, 16.29f, 21.39f, 16.18f, 21.26f); + bezier18Path.cubicTo(16.1f, 21.16f, 16.01f, 21.08f, 15.88f, 21.02f); + bezier18Path.lineTo(12.59f, 19.5f); + bezier18Path.lineTo(12.58f, 19.5f); + bezier18Path.lineTo(11.6f, 20.49f); + bezier18Path.lineTo(14.82f, 22.12f); + bezier18Path.lineTo(16.72f, 24.33f); + bezier18Path.cubicTo(16.83f, 24.25f, 16.9f, 24.11f, 16.89f, 23.95f); + bezier18Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier18Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier18Path, paint); + + // Bezier 19 + RectF bezier19Rect = CacheForWarrior.bezier19Rect; + bezier19Rect.set(10.5f, 20.49f, 16.72f, 24.43f); + Path bezier19Path = CacheForWarrior.bezier19Path; + bezier19Path.reset(); + bezier19Path.moveTo(14.82f, 22.12f); + bezier19Path.lineTo(16.72f, 24.33f); + bezier19Path.cubicTo(16.59f, 24.43f, 16.41f, 24.47f, 16.25f, 24.39f); + bezier19Path.lineTo(10.73f, 21.75f); + bezier19Path.cubicTo(10.65f, 21.71f, 10.57f, 21.65f, 10.5f, 21.58f); + bezier19Path.lineTo(11.6f, 20.49f); + bezier19Path.lineTo(14.82f, 22.12f); + bezier19Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier19Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier19Path, paint); + + // Group 3 + { + RectF group3 = CacheForWarrior.group3; + group3.set(15.81f, 9.27f, 19.35f, 16.27f); + canvas.save(); + + // Clip + Path clipPath = CacheForWarrior.clipPath; + clipPath.reset(); + clipPath.moveTo(19.35f, 9.27f); + clipPath.lineTo(15.81f, 12.98f); + clipPath.lineTo(15.81f, 16.27f); + clipPath.lineTo(19.35f, 12.73f); + clipPath.lineTo(19.35f, 9.27f); + clipPath.lineTo(19.35f, 9.27f); + clipPath.close(); + canvas.clipPath(clipPath); + + // Bezier 20 + RectF bezier20Rect = CacheForWarrior.bezier20Rect; + bezier20Rect.set(18.35f, 9f, 18.86f, 16.65f); + Path bezier20Path = CacheForWarrior.bezier20Path; + bezier20Path.reset(); + bezier20Path.moveTo(18.86f, 16.61f); + bezier20Path.lineTo(18.35f, 16.65f); + bezier20Path.cubicTo(18.35f, 16.65f, 18.35f, 11.56f, 18.35f, 9f); + bezier20Path.lineTo(18.86f, 9f); + bezier20Path.cubicTo(18.86f, 11.56f, 18.86f, 16.65f, 18.86f, 16.65f); + bezier20Path.lineTo(18.86f, 16.61f); + bezier20Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(bezier20Path, paint); + + // Rectangle 5 + RectF rectangle5Rect = CacheForWarrior.rectangle5Rect; + rectangle5Rect.set(15.8f, 9.88f, 17.3f, 17.02f); + Path rectangle5Path = CacheForWarrior.rectangle5Path; + rectangle5Path.reset(); + rectangle5Path.moveTo(rectangle5Rect.left, rectangle5Rect.top); + rectangle5Path.lineTo(rectangle5Rect.right, rectangle5Rect.top); + rectangle5Path.lineTo(rectangle5Rect.right, rectangle5Rect.bottom); + rectangle5Path.lineTo(rectangle5Rect.left, rectangle5Rect.bottom); + rectangle5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor42); + canvas.drawPath(rectangle5Path, paint); + + canvas.restore(); + } + } + + // Group 4 + if (lightBackground) { + // Bezier 21 + RectF bezier21Rect = CacheForWarrior.bezier21Rect; + bezier21Rect.set(7.65f, 15.19f, 16.89f, 24.43f); + Path bezier21Path = CacheForWarrior.bezier21Path; + bezier21Path.reset(); + bezier21Path.moveTo(12.58f, 19.5f); + bezier21Path.lineTo(15.88f, 21.02f); + bezier21Path.cubicTo(16.15f, 21.15f, 16.33f, 21.4f, 16.4f, 21.7f); + bezier21Path.cubicTo(16.51f, 22.19f, 16.86f, 23.34f, 16.89f, 23.95f); + bezier21Path.cubicTo(16.9f, 24.29f, 16.55f, 24.53f, 16.24f, 24.39f); + bezier21Path.lineTo(10.73f, 21.75f); + bezier21Path.cubicTo(10.56f, 21.66f, 10.42f, 21.52f, 10.33f, 21.35f); + bezier21Path.lineTo(7.69f, 15.84f); + bezier21Path.cubicTo(7.55f, 15.53f, 7.79f, 15.18f, 8.13f, 15.19f); + bezier21Path.cubicTo(8.74f, 15.22f, 9.86f, 15.55f, 10.38f, 15.68f); + bezier21Path.cubicTo(10.67f, 15.76f, 10.93f, 15.93f, 11.06f, 16.2f); + bezier21Path.lineTo(12.58f, 19.5f); + bezier21Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier21Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier21Path, paint); + + // Bezier 22 + RectF bezier22Rect = CacheForWarrior.bezier22Rect; + bezier22Rect.set(3.18f, 4.9f, 27.18f, 28.91f); + Path bezier22Path = CacheForWarrior.bezier22Path; + bezier22Path.reset(); + bezier22Path.moveTo(4.6f, 27.48f); + bezier22Path.lineTo(6.02f, 28.91f); + bezier22Path.lineTo(9.71f, 28.62f); + bezier22Path.lineTo(9.9f, 26.19f); + bezier22Path.lineTo(12.02f, 24.07f); + bezier22Path.lineTo(15.88f, 25.91f); + bezier22Path.lineTo(18.76f, 25.13f); + bezier22Path.lineTo(17.55f, 19.93f); + bezier22Path.lineTo(25.63f, 12.39f); + bezier22Path.lineTo(27.18f, 4.91f); + bezier22Path.lineTo(27.17f, 4.91f); + bezier22Path.lineTo(27.18f, 4.91f); + bezier22Path.lineTo(27.18f, 4.9f); + bezier22Path.lineTo(19.7f, 6.45f); + bezier22Path.lineTo(12.16f, 14.53f); + bezier22Path.lineTo(6.95f, 13.32f); + bezier22Path.lineTo(6.18f, 16.2f); + bezier22Path.lineTo(8.01f, 20.06f); + bezier22Path.lineTo(5.89f, 22.18f); + bezier22Path.lineTo(3.47f, 22.37f); + bezier22Path.lineTo(3.18f, 26.06f); + bezier22Path.lineTo(4.6f, 27.48f); + bezier22Path.lineTo(4.6f, 27.48f); + bezier22Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier22Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor43); + canvas.drawPath(bezier22Path, paint); + + // Rectangle 6 + canvas.save(); + canvas.translate(9f, 23.05f); + currentTransformation.peek().postTranslate(9f, 23.05f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle6Rect = CacheForWarrior.rectangle6Rect; + rectangle6Rect.set(-1.3f, -3.23f, 1.3f, 3.23f); + Path rectangle6Path = CacheForWarrior.rectangle6Path; + rectangle6Path.reset(); + rectangle6Path.moveTo(rectangle6Rect.left, rectangle6Rect.top); + rectangle6Path.lineTo(rectangle6Rect.right, rectangle6Rect.top); + rectangle6Path.lineTo(rectangle6Rect.right, rectangle6Rect.bottom); + rectangle6Path.lineTo(rectangle6Rect.left, rectangle6Rect.bottom); + rectangle6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(rectangle6Path, paint); + canvas.restore(); + + // Bezier 23 + RectF bezier23Rect = CacheForWarrior.bezier23Rect; + bezier23Rect.set(4.76f, 23.66f, 8.42f, 27.32f); + Path bezier23Path = CacheForWarrior.bezier23Path; + bezier23Path.reset(); + bezier23Path.moveTo(4.76f, 25.47f); + bezier23Path.lineTo(4.89f, 23.79f); + bezier23Path.lineTo(6.58f, 23.66f); + bezier23Path.lineTo(8.42f, 25.5f); + bezier23Path.lineTo(8.29f, 27.19f); + bezier23Path.lineTo(6.61f, 27.32f); + bezier23Path.lineTo(4.76f, 25.47f); + bezier23Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier23Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier23Path, paint); + + // Bezier 24 + RectF bezier24Rect = CacheForWarrior.bezier24Rect; + bezier24Rect.set(20.67f, 7.02f, 25.05f, 11.25f); + Path bezier24Path = CacheForWarrior.bezier24Path; + bezier24Path.reset(); + bezier24Path.moveTo(20.67f, 7.92f); + bezier24Path.lineTo(20.83f, 11.25f); + bezier24Path.lineTo(25.05f, 7.03f); + bezier24Path.cubicTo(24.98f, 6.95f, 21.79f, 7.32f, 20.67f, 7.92f); + bezier24Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier24Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier24Path, paint); + + // Bezier 25 + RectF bezier25Rect = CacheForWarrior.bezier25Rect; + bezier25Rect.set(11.68f, 7.92f, 20.83f, 18.12f); + Path bezier25Path = CacheForWarrior.bezier25Path; + bezier25Path.reset(); + bezier25Path.moveTo(20.6f, 7.96f); + bezier25Path.lineTo(11.68f, 17.32f); + bezier25Path.lineTo(13.96f, 18.12f); + bezier25Path.lineTo(20.83f, 11.25f); + bezier25Path.lineTo(20.67f, 7.92f); + bezier25Path.cubicTo(20.65f, 7.93f, 20.6f, 7.96f, 20.6f, 7.96f); + bezier25Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier25Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier25Path, paint); + + // Bezier 26 + RectF bezier26Rect = CacheForWarrior.bezier26Rect; + bezier26Rect.set(11.6f, 17.32f, 13.96f, 19.51f); + Path bezier26Path = CacheForWarrior.bezier26Path; + bezier26Path.reset(); + bezier26Path.moveTo(11.68f, 17.32f); + bezier26Path.cubicTo(11.65f, 17.34f, 11.62f, 17.37f, 11.6f, 17.4f); + bezier26Path.lineTo(12.57f, 19.51f); + bezier26Path.lineTo(13.96f, 18.12f); + bezier26Path.lineTo(11.68f, 17.32f); + bezier26Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier26Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier26Path, paint); + + // Bezier 27 + RectF bezier27Rect = CacheForWarrior.bezier27Rect; + bezier27Rect.set(20.83f, 7.03f, 25.06f, 11.41f); + Path bezier27Path = CacheForWarrior.bezier27Path; + bezier27Path.reset(); + bezier27Path.moveTo(24.16f, 11.41f); + bezier27Path.lineTo(20.83f, 11.25f); + bezier27Path.lineTo(25.05f, 7.03f); + bezier27Path.cubicTo(25.13f, 7.1f, 24.76f, 10.29f, 24.16f, 11.41f); + bezier27Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier27Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier27Path, paint); + + // Bezier 28 + RectF bezier28Rect = CacheForWarrior.bezier28Rect; + bezier28Rect.set(13.96f, 11.25f, 24.16f, 20.4f); + Path bezier28Path = CacheForWarrior.bezier28Path; + bezier28Path.reset(); + bezier28Path.moveTo(24.12f, 11.48f); + bezier28Path.lineTo(14.76f, 20.4f); + bezier28Path.lineTo(13.96f, 18.12f); + bezier28Path.lineTo(20.83f, 11.25f); + bezier28Path.lineTo(24.16f, 11.41f); + bezier28Path.cubicTo(24.14f, 11.43f, 24.12f, 11.48f, 24.12f, 11.48f); + bezier28Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier28Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier28Path, paint); + + // Bezier 29 + RectF bezier29Rect = CacheForWarrior.bezier29Rect; + bezier29Rect.set(12.57f, 18.12f, 14.76f, 20.48f); + Path bezier29Path = CacheForWarrior.bezier29Path; + bezier29Path.reset(); + bezier29Path.moveTo(14.76f, 20.4f); + bezier29Path.cubicTo(14.73f, 20.43f, 14.7f, 20.46f, 14.68f, 20.48f); + bezier29Path.lineTo(12.57f, 19.51f); + bezier29Path.lineTo(13.96f, 18.12f); + bezier29Path.lineTo(14.76f, 20.4f); + bezier29Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier29Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier29Path, paint); + + // Bezier 30 + RectF bezier30Rect = CacheForWarrior.bezier30Rect; + bezier30Rect.set(4.89f, 23.66f, 6.58f, 25.09f); + Path bezier30Path = CacheForWarrior.bezier30Path; + bezier30Path.reset(); + bezier30Path.moveTo(6.58f, 23.66f); + bezier30Path.lineTo(6.19f, 25.09f); + bezier30Path.lineTo(4.89f, 23.79f); + bezier30Path.lineTo(6.58f, 23.66f); + bezier30Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier30Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier30Path, paint); + + // Bezier 31 + RectF bezier31Rect = CacheForWarrior.bezier31Rect; + bezier31Rect.set(6.99f, 25.5f, 8.42f, 27.19f); + Path bezier31Path = CacheForWarrior.bezier31Path; + bezier31Path.reset(); + bezier31Path.moveTo(8.42f, 25.5f); + bezier31Path.lineTo(6.99f, 25.89f); + bezier31Path.lineTo(8.29f, 27.19f); + bezier31Path.lineTo(8.42f, 25.5f); + bezier31Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier31Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier31Path, paint); + + // Bezier 32 + RectF bezier32Rect = CacheForWarrior.bezier32Rect; + bezier32Rect.set(6.19f, 23.66f, 8.42f, 25.89f); + Path bezier32Path = CacheForWarrior.bezier32Path; + bezier32Path.reset(); + bezier32Path.moveTo(6.58f, 23.66f); + bezier32Path.lineTo(8.42f, 25.5f); + bezier32Path.lineTo(6.99f, 25.89f); + bezier32Path.lineTo(6.19f, 25.09f); + bezier32Path.lineTo(6.58f, 23.66f); + bezier32Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier32Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier32Path, paint); + + // Bezier 33 + RectF bezier33Rect = CacheForWarrior.bezier33Rect; + bezier33Rect.set(4.76f, 23.79f, 6.19f, 25.48f); + Path bezier33Path = CacheForWarrior.bezier33Path; + bezier33Path.reset(); + bezier33Path.moveTo(4.76f, 25.48f); + bezier33Path.lineTo(6.19f, 25.09f); + bezier33Path.lineTo(4.89f, 23.79f); + bezier33Path.lineTo(4.76f, 25.48f); + bezier33Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier33Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier33Path, paint); + + // Bezier 34 + RectF bezier34Rect = CacheForWarrior.bezier34Rect; + bezier34Rect.set(6.6f, 25.89f, 8.29f, 27.32f); + Path bezier34Path = CacheForWarrior.bezier34Path; + bezier34Path.reset(); + bezier34Path.moveTo(6.6f, 27.32f); + bezier34Path.lineTo(6.99f, 25.89f); + bezier34Path.lineTo(8.29f, 27.19f); + bezier34Path.lineTo(6.6f, 27.32f); + bezier34Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier34Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier34Path, paint); + + // Bezier 35 + RectF bezier35Rect = CacheForWarrior.bezier35Rect; + bezier35Rect.set(4.76f, 25.09f, 6.99f, 27.32f); + Path bezier35Path = CacheForWarrior.bezier35Path; + bezier35Path.reset(); + bezier35Path.moveTo(4.76f, 25.48f); + bezier35Path.lineTo(6.61f, 27.32f); + bezier35Path.lineTo(6.99f, 25.89f); + bezier35Path.lineTo(6.19f, 25.09f); + bezier35Path.lineTo(4.76f, 25.48f); + bezier35Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier35Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier35Path, paint); + + // Rectangle 7 + canvas.save(); + canvas.translate(10.3f, 21.8f); + currentTransformation.peek().postTranslate(10.3f, 21.8f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle7Rect = CacheForWarrior.rectangle7Rect; + rectangle7Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle7Path = CacheForWarrior.rectangle7Path; + rectangle7Path.reset(); + rectangle7Path.moveTo(rectangle7Rect.left, rectangle7Rect.top); + rectangle7Path.lineTo(rectangle7Rect.right, rectangle7Rect.top); + rectangle7Path.lineTo(rectangle7Rect.right, rectangle7Rect.bottom); + rectangle7Path.lineTo(rectangle7Rect.left, rectangle7Rect.bottom); + rectangle7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(rectangle7Path, paint); + canvas.restore(); + + // Rectangle 8 + canvas.save(); + canvas.translate(9.15f, 22.9f); + currentTransformation.peek().postTranslate(9.15f, 22.9f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle8Rect = CacheForWarrior.rectangle8Rect; + rectangle8Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle8Path = CacheForWarrior.rectangle8Path; + rectangle8Path.reset(); + rectangle8Path.moveTo(rectangle8Rect.left, rectangle8Rect.top); + rectangle8Path.lineTo(rectangle8Rect.right, rectangle8Rect.top); + rectangle8Path.lineTo(rectangle8Rect.right, rectangle8Rect.bottom); + rectangle8Path.lineTo(rectangle8Rect.left, rectangle8Rect.bottom); + rectangle8Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(rectangle8Path, paint); + canvas.restore(); + + // Rectangle 9 + canvas.save(); + canvas.translate(8.05f, 24f); + currentTransformation.peek().postTranslate(8.05f, 24f); + canvas.rotate(45f); + currentTransformation.peek().postRotate(45f); + RectF rectangle9Rect = CacheForWarrior.rectangle9Rect; + rectangle9Rect.set(-1.3f, -0.8f, 1.3f, 0.8f); + Path rectangle9Path = CacheForWarrior.rectangle9Path; + rectangle9Path.reset(); + rectangle9Path.moveTo(rectangle9Rect.left, rectangle9Rect.top); + rectangle9Path.lineTo(rectangle9Rect.right, rectangle9Rect.top); + rectangle9Path.lineTo(rectangle9Rect.right, rectangle9Rect.bottom); + rectangle9Path.lineTo(rectangle9Rect.left, rectangle9Rect.bottom); + rectangle9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(rectangle9Path, paint); + canvas.restore(); + + // Bezier 36 + RectF bezier36Rect = CacheForWarrior.bezier36Rect; + bezier36Rect.set(7.75f, 15.19f, 12.58f, 20.49f); + Path bezier36Path = CacheForWarrior.bezier36Path; + bezier36Path.reset(); + bezier36Path.moveTo(12.58f, 19.5f); + bezier36Path.lineTo(11.06f, 16.2f); + bezier36Path.cubicTo(11f, 16.08f, 10.92f, 15.98f, 10.82f, 15.9f); + bezier36Path.cubicTo(10.7f, 15.8f, 10.55f, 15.72f, 10.38f, 15.68f); + bezier36Path.cubicTo(9.87f, 15.55f, 8.74f, 15.22f, 8.13f, 15.2f); + bezier36Path.cubicTo(7.97f, 15.19f, 7.84f, 15.26f, 7.75f, 15.37f); + bezier36Path.lineTo(9.97f, 17.26f); + bezier36Path.lineTo(11.6f, 20.49f); + bezier36Path.lineTo(12.58f, 19.5f); + bezier36Path.lineTo(12.58f, 19.5f); + bezier36Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier36Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier36Path, paint); + + // Bezier 37 + RectF bezier37Rect = CacheForWarrior.bezier37Rect; + bezier37Rect.set(7.65f, 15.37f, 11.6f, 21.59f); + Path bezier37Path = CacheForWarrior.bezier37Path; + bezier37Path.reset(); + bezier37Path.moveTo(9.97f, 17.26f); + bezier37Path.lineTo(7.75f, 15.37f); + bezier37Path.cubicTo(7.65f, 15.5f, 7.61f, 15.67f, 7.69f, 15.84f); + bezier37Path.lineTo(10.33f, 21.36f); + bezier37Path.cubicTo(10.37f, 21.44f, 10.43f, 21.52f, 10.5f, 21.59f); + bezier37Path.lineTo(11.6f, 20.49f); + bezier37Path.lineTo(9.97f, 17.26f); + bezier37Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier37Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor); + canvas.drawPath(bezier37Path, paint); + + // Bezier 38 + RectF bezier38Rect = CacheForWarrior.bezier38Rect; + bezier38Rect.set(11.6f, 19.5f, 16.89f, 24.33f); + Path bezier38Path = CacheForWarrior.bezier38Path; + bezier38Path.reset(); + bezier38Path.moveTo(16.89f, 23.95f); + bezier38Path.cubicTo(16.86f, 23.34f, 16.54f, 22.22f, 16.4f, 21.7f); + bezier38Path.cubicTo(16.36f, 21.54f, 16.29f, 21.39f, 16.18f, 21.26f); + bezier38Path.cubicTo(16.1f, 21.16f, 16.01f, 21.08f, 15.88f, 21.02f); + bezier38Path.lineTo(12.59f, 19.5f); + bezier38Path.lineTo(12.58f, 19.5f); + bezier38Path.lineTo(11.6f, 20.49f); + bezier38Path.lineTo(14.82f, 22.12f); + bezier38Path.lineTo(16.72f, 24.33f); + bezier38Path.cubicTo(16.83f, 24.25f, 16.9f, 24.11f, 16.89f, 23.95f); + bezier38Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier38Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor22); + canvas.drawPath(bezier38Path, paint); + + // Bezier 39 + RectF bezier39Rect = CacheForWarrior.bezier39Rect; + bezier39Rect.set(10.5f, 20.49f, 16.72f, 24.43f); + Path bezier39Path = CacheForWarrior.bezier39Path; + bezier39Path.reset(); + bezier39Path.moveTo(14.82f, 22.12f); + bezier39Path.lineTo(16.72f, 24.33f); + bezier39Path.cubicTo(16.59f, 24.43f, 16.41f, 24.47f, 16.25f, 24.39f); + bezier39Path.lineTo(10.73f, 21.75f); + bezier39Path.cubicTo(10.65f, 21.71f, 10.57f, 21.65f, 10.5f, 21.58f); + bezier39Path.lineTo(11.6f, 20.49f); + bezier39Path.lineTo(14.82f, 22.12f); + bezier39Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier39Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor23); + canvas.drawPath(bezier39Path, paint); + + // Group 5 + { + RectF group5 = CacheForWarrior.group5; + group5.set(15.81f, 9.27f, 19.35f, 16.27f); + canvas.save(); + + // Clip 2 + Path clip2Path = CacheForWarrior.clip2Path; + clip2Path.reset(); + clip2Path.moveTo(19.35f, 9.27f); + clip2Path.lineTo(15.81f, 12.98f); + clip2Path.lineTo(15.81f, 16.27f); + clip2Path.lineTo(19.35f, 12.73f); + clip2Path.lineTo(19.35f, 9.27f); + clip2Path.lineTo(19.35f, 9.27f); + clip2Path.close(); + canvas.clipPath(clip2Path); + + // Bezier 40 + RectF bezier40Rect = CacheForWarrior.bezier40Rect; + bezier40Rect.set(18.35f, 9f, 18.86f, 16.65f); + Path bezier40Path = CacheForWarrior.bezier40Path; + bezier40Path.reset(); + bezier40Path.moveTo(18.86f, 16.61f); + bezier40Path.lineTo(18.35f, 16.65f); + bezier40Path.cubicTo(18.35f, 16.65f, 18.35f, 11.56f, 18.35f, 9f); + bezier40Path.lineTo(18.86f, 9f); + bezier40Path.cubicTo(18.86f, 11.56f, 18.86f, 16.65f, 18.86f, 16.65f); + bezier40Path.lineTo(18.86f, 16.61f); + bezier40Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(bezier40Path, paint); + + // Rectangle 10 + RectF rectangle10Rect = CacheForWarrior.rectangle10Rect; + rectangle10Rect.set(15.8f, 9.88f, 17.3f, 17.02f); + Path rectangle10Path = CacheForWarrior.rectangle10Path; + rectangle10Path.reset(); + rectangle10Path.moveTo(rectangle10Rect.left, rectangle10Rect.top); + rectangle10Path.lineTo(rectangle10Rect.right, rectangle10Rect.top); + rectangle10Path.lineTo(rectangle10Rect.right, rectangle10Rect.bottom); + rectangle10Path.lineTo(rectangle10Rect.left, rectangle10Rect.bottom); + rectangle10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor21); + canvas.drawPath(rectangle10Path, paint); + + canvas.restore(); + } } canvas.restore(); @@ -2082,10 +2693,10 @@ public class HabiticaIcons { public static void drawDifficultyStars(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, float difficulty) { // Local Variables - float _3StarDifficulty = difficulty >= 3f ? 1f : (difficulty >= 2.5f ? 0.5f : 0f); - float _4StarDifficulty = difficulty >= 4f ? 1f : (difficulty >= 3.5f ? 0.5f : 0f); - float _1StarDifficulty = difficulty >= 1f ? 1f : (difficulty >= 0.5f ? 0.5f : 0f); float _2StarDifficulty = difficulty >= 2f ? 1f : (difficulty >= 1.5f ? 0.5f : 0f); + float _1StarDifficulty = difficulty >= 1f ? 1f : (difficulty >= 0.5f ? 0.5f : 0f); + float _4StarDifficulty = difficulty >= 4f ? 1f : (difficulty >= 3.5f ? 0.5f : 0f); + float _3StarDifficulty = difficulty >= 3f ? 1f : (difficulty >= 2.5f ? 0.5f : 0f); // Resize to Target Frame canvas.save(); @@ -2272,8 +2883,8 @@ public class HabiticaIcons { Paint paint = CacheForStarSmall.paint; // Local Colors - int fillColor27 = Color.argb(255, 229, 220, 255); int fillColor26 = Color.argb(102, 229, 220, 255); + int fillColor27 = Color.argb(255, 229, 220, 255); // Resize to Target Frame canvas.save(); @@ -2415,11 +3026,11 @@ public class HabiticaIcons { Paint paint = CacheForStarLarge.paint; // Local Colors - int fillColor31 = Color.argb(191, 229, 220, 255); int fillColor28 = Color.argb(64, 229, 220, 255); int fillColor30 = Color.argb(166, 229, 220, 255); int fillColor29 = Color.argb(128, 229, 220, 255); int fillColor27 = Color.argb(255, 229, 220, 255); + int fillColor31 = Color.argb(191, 229, 220, 255); // Resize to Target Frame canvas.save(); @@ -2820,9 +3431,9 @@ public class HabiticaIcons { // Local Colors int fillColor27 = Color.argb(255, 229, 220, 255); - int fillColor34 = Color.argb(38, 229, 220, 255); int fillColor33 = Color.argb(77, 229, 220, 255); int fillColor32 = Color.argb(153, 229, 220, 255); + int fillColor34 = Color.argb(38, 229, 220, 255); // Resize to Target Frame canvas.save(); @@ -3149,8 +3760,8 @@ public class HabiticaIcons { Paint paint = CacheForAddRemovePin.paint; // Local Colors - int fillColor2 = Color.argb(255, 255, 97, 101); int fillColor36 = Color.argb(255, 97, 51, 180); + int fillColor2 = Color.argb(255, 255, 97, 101); // Local Variables int pinColor = addPin ? fillColor36 : fillColor2; @@ -3351,14 +3962,14 @@ public class HabiticaIcons { Paint paint = CacheForItemIndicator.paint; // Local Colors - int strokeColor2 = Color.argb(255, 189, 168, 255); - int shadowTint = Color.argb(255, 26, 24, 29); - int indicatorLocked = Color.argb(255, 237, 236, 238); int strokeColor = Color.argb(255, 97, 51, 180); + int indicatorLocked = Color.argb(255, 237, 236, 238); int fillColor39 = Color.argb(255, 189, 168, 255); - int fillColor37 = Color.argb(255, 255, 255, 255); - int fillColor40 = Color.argb(255, 165, 161, 172); int fillColor38 = Color.argb(255, 255, 148, 76); + int fillColor37 = Color.argb(255, 255, 255, 255); + int strokeColor2 = Color.argb(255, 189, 168, 255); + int fillColor40 = Color.argb(255, 165, 161, 172); + int shadowTint = Color.argb(255, 26, 24, 29); // Local Shadows PaintCodeShadow shadow = CacheForItemIndicator.shadow.get(PaintCodeColor.colorByChangingAlpha(shadowTint, (int) (Color.alpha(shadowTint) * 0.12f * 255f)), 84f, 1f, 1f); @@ -3647,6 +4258,2270 @@ public class HabiticaIcons { canvas.restore(); } + private static class CacheForWarriorLightBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawWarriorLightBg(Canvas canvas) { + HabiticaIcons.drawWarriorLightBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawWarriorLightBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForWarriorLightBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForWarriorLightBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForWarriorLightBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForWarriorLightBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawWarrior(canvas, symbolTargetRect, ResizingBehavior.Stretch, false); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForWarriorDarkBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawWarriorDarkBg(Canvas canvas) { + HabiticaIcons.drawWarriorDarkBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawWarriorDarkBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForWarriorDarkBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForWarriorDarkBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForWarriorDarkBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForWarriorDarkBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawWarrior(canvas, symbolTargetRect, ResizingBehavior.Stretch, true); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForRogue { + private static Paint paint = new Paint(); + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF bezierRect = new RectF(); + private static Path bezierPath = new Path(); + private static RectF bezier2Rect = new RectF(); + private static Path bezier2Path = new Path(); + private static RectF bezier3Rect = new RectF(); + private static Path bezier3Path = new Path(); + private static RectF bezier4Rect = new RectF(); + private static Path bezier4Path = new Path(); + private static RectF bezier5Rect = new RectF(); + private static Path bezier5Path = new Path(); + private static RectF bezier6Rect = new RectF(); + private static Path bezier6Path = new Path(); + private static RectF bezier7Rect = new RectF(); + private static Path bezier7Path = new Path(); + private static RectF bezier8Rect = new RectF(); + private static Path bezier8Path = new Path(); + private static RectF bezier9Rect = new RectF(); + private static Path bezier9Path = new Path(); + private static RectF bezier10Rect = new RectF(); + private static Path bezier10Path = new Path(); + private static RectF bezier11Rect = new RectF(); + private static Path bezier11Path = new Path(); + private static RectF starRect = new RectF(); + private static Path starPath = new Path(); + private static RectF star2Rect = new RectF(); + private static Path star2Path = new Path(); + private static RectF bezier12Rect = new RectF(); + private static Path bezier12Path = new Path(); + private static RectF bezier13Rect = new RectF(); + private static Path bezier13Path = new Path(); + private static RectF bezier14Rect = new RectF(); + private static Path bezier14Path = new Path(); + private static RectF bezier15Rect = new RectF(); + private static Path bezier15Path = new Path(); + private static RectF bezier16Rect = new RectF(); + private static Path bezier16Path = new Path(); + private static RectF bezier17Rect = new RectF(); + private static Path bezier17Path = new Path(); + private static RectF bezier18Rect = new RectF(); + private static Path bezier18Path = new Path(); + private static RectF bezier19Rect = new RectF(); + private static Path bezier19Path = new Path(); + private static RectF bezier20Rect = new RectF(); + private static Path bezier20Path = new Path(); + private static RectF bezier21Rect = new RectF(); + private static Path bezier21Path = new Path(); + private static RectF bezier22Rect = new RectF(); + private static Path bezier22Path = new Path(); + private static RectF bezier23Rect = new RectF(); + private static Path bezier23Path = new Path(); + private static RectF star3Rect = new RectF(); + private static Path star3Path = new Path(); + private static RectF bezier24Rect = new RectF(); + private static Path bezier24Path = new Path(); + private static RectF bezier25Rect = new RectF(); + private static Path bezier25Path = new Path(); + private static RectF bezier26Rect = new RectF(); + private static Path bezier26Path = new Path(); + private static RectF bezier27Rect = new RectF(); + private static Path bezier27Path = new Path(); + } + + public static void drawRogue(Canvas canvas, boolean darkBackground) { + HabiticaIcons.drawRogue(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit, darkBackground); + } + + public static void drawRogue(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, boolean darkBackground) { + // General Declarations + Stack currentTransformation = new Stack(); + currentTransformation.push(new Matrix()); + Paint paint = CacheForRogue.paint; + + // Local Colors + int fillColor19 = Color.argb(255, 79, 42, 147); + int fillColor45 = Color.argb(255, 155, 129, 226); + int fillColor48 = Color.argb(255, 137, 102, 199); + int fillColor47 = Color.argb(255, 198, 182, 228); + int fillColor46 = Color.argb(255, 122, 84, 192); + int fillColor36 = Color.argb(255, 97, 51, 180); + int fillColor44 = Color.argb(255, 204, 190, 237); + + // Local Variables + boolean lightBackground = !darkBackground; + + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForRogue.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForRogue.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Group 2 + if (darkBackground) { + // Bezier + RectF bezierRect = CacheForRogue.bezierRect; + bezierRect.set(5f, 6f, 26.6f, 27.3f); + Path bezierPath = CacheForRogue.bezierPath; + bezierPath.reset(); + bezierPath.moveTo(24.35f, 22.01f); + bezierPath.lineTo(20.83f, 18.48f); + bezierPath.cubicTo(20.78f, 18.3f, 20.74f, 18.12f, 20.69f, 17.94f); + bezierPath.lineTo(25.48f, 9.27f); + bezierPath.lineTo(26.2f, 6.1f); + bezierPath.lineTo(22.99f, 6.85f); + bezierPath.lineTo(15.9f, 10.76f); + bezierPath.lineTo(8.56f, 6.72f); + bezierPath.lineTo(5.4f, 6f); + bezierPath.lineTo(6.15f, 9.21f); + bezierPath.lineTo(10.94f, 17.9f); + bezierPath.cubicTo(10.89f, 18.13f, 10.83f, 18.36f, 10.77f, 18.59f); + bezierPath.lineTo(7.25f, 22.11f); + bezierPath.lineTo(5f, 21.7f); + bezierPath.lineTo(5.88f, 26.43f); + bezierPath.lineTo(10.61f, 27.3f); + bezierPath.lineTo(10.19f, 25.06f); + bezierPath.lineTo(13.72f, 21.53f); + bezierPath.cubicTo(14.5f, 21.34f, 15.3f, 21.14f, 16.01f, 20.97f); + bezierPath.cubicTo(16.61f, 21.11f, 17.25f, 21.27f, 17.89f, 21.43f); + bezierPath.lineTo(21.41f, 24.95f); + bezierPath.lineTo(20.99f, 27.2f); + bezierPath.lineTo(25.72f, 26.32f); + bezierPath.lineTo(26.6f, 21.59f); + bezierPath.lineTo(24.35f, 22.01f); + bezierPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezierPath.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor44); + canvas.drawPath(bezierPath, paint); + + // Bezier 2 + RectF bezier2Rect = CacheForRogue.bezier2Rect; + bezier2Rect.set(7.21f, 7.84f, 16.8f, 18.7f); + Path bezier2Path = CacheForRogue.bezier2Path; + bezier2Path.reset(); + bezier2Path.moveTo(12.83f, 18.3f); + bezier2Path.cubicTo(12.93f, 18.49f, 13.04f, 18.62f, 13.14f, 18.7f); + bezier2Path.lineTo(16.8f, 17.4f); + bezier2Path.lineTo(7.24f, 7.84f); + bezier2Path.cubicTo(7.16f, 7.93f, 7.27f, 8.19f, 7.43f, 8.5f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier2Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor45); + canvas.drawPath(bezier2Path, paint); + + // Bezier 3 + RectF bezier3Rect = CacheForRogue.bezier3Rect; + bezier3Rect.set(13.14f, 17.4f, 19.07f, 20.1f); + Path bezier3Path = CacheForRogue.bezier3Path; + bezier3Path.reset(); + bezier3Path.moveTo(13.14f, 18.71f); + bezier3Path.cubicTo(13.33f, 18.86f, 13.51f, 18.89f, 13.71f, 18.92f); + bezier3Path.cubicTo(14f, 18.96f, 18.63f, 20.1f, 18.63f, 20.1f); + bezier3Path.lineTo(19.07f, 19.67f); + bezier3Path.lineTo(16.8f, 17.4f); + bezier3Path.lineTo(13.14f, 18.71f); + bezier3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier3Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier3Path, paint); + + // Bezier 4 + RectF bezier4Rect = CacheForRogue.bezier4Rect; + bezier4Rect.set(7.24f, 7.81f, 18.11f, 17.4f); + Path bezier4Path = CacheForRogue.bezier4Path; + bezier4Path.reset(); + bezier4Path.moveTo(17.7f, 13.43f); + bezier4Path.cubicTo(17.89f, 13.53f, 18.02f, 13.63f, 18.11f, 13.74f); + bezier4Path.lineTo(16.8f, 17.4f); + bezier4Path.lineTo(7.24f, 7.84f); + bezier4Path.cubicTo(7.33f, 7.76f, 7.58f, 7.86f, 7.89f, 8.01f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier4Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier4Path, paint); + + // Bezier 5 + RectF bezier5Rect = CacheForRogue.bezier5Rect; + bezier5Rect.set(16.8f, 13.74f, 19.5f, 19.67f); + Path bezier5Path = CacheForRogue.bezier5Path; + bezier5Path.reset(); + bezier5Path.moveTo(18.11f, 13.74f); + bezier5Path.cubicTo(18.27f, 13.93f, 18.29f, 14.11f, 18.32f, 14.31f); + bezier5Path.cubicTo(18.36f, 14.6f, 19.5f, 19.23f, 19.5f, 19.23f); + bezier5Path.lineTo(19.07f, 19.67f); + bezier5Path.lineTo(16.8f, 17.4f); + bezier5Path.lineTo(18.11f, 13.74f); + bezier5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier5Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier5Path, paint); + + // Bezier 6 + RectF bezier6Rect = CacheForRogue.bezier6Rect; + bezier6Rect.set(20.38f, 20.33f, 21.32f, 22.57f); + Path bezier6Path = CacheForRogue.bezier6Path; + bezier6Path.reset(); + bezier6Path.moveTo(21.1f, 22.57f); + bezier6Path.lineTo(20.38f, 21.86f); + bezier6Path.lineTo(20.61f, 20.33f); + bezier6Path.lineTo(21.32f, 21.05f); + bezier6Path.lineTo(21.1f, 22.57f); + bezier6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier6Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier6Path, paint); + + // Bezier 7 + RectF bezier7Rect = CacheForRogue.bezier7Rect; + bezier7Rect.set(21.82f, 21.77f, 22.76f, 24f); + Path bezier7Path = CacheForRogue.bezier7Path; + bezier7Path.reset(); + bezier7Path.moveTo(22.53f, 24f); + bezier7Path.lineTo(21.82f, 23.29f); + bezier7Path.lineTo(22.04f, 21.77f); + bezier7Path.lineTo(22.76f, 22.48f); + bezier7Path.lineTo(22.53f, 24f); + bezier7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier7Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier7Path, paint); + + // Bezier 8 + RectF bezier8Rect = CacheForRogue.bezier8Rect; + bezier8Rect.set(18.63f, 19.23f, 19.89f, 21.14f); + Path bezier8Path = CacheForRogue.bezier8Path; + bezier8Path.reset(); + bezier8Path.moveTo(19.5f, 19.23f); + bezier8Path.lineTo(19.89f, 19.62f); + bezier8Path.lineTo(19.67f, 21.14f); + bezier8Path.lineTo(18.63f, 20.1f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier8Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier8Path, paint); + + // Bezier 9 + RectF bezier9Rect = CacheForRogue.bezier9Rect; + bezier9Rect.set(19.67f, 19.62f, 20.61f, 21.86f); + Path bezier9Path = CacheForRogue.bezier9Path; + bezier9Path.reset(); + bezier9Path.moveTo(20.38f, 21.86f); + bezier9Path.lineTo(19.67f, 21.14f); + bezier9Path.lineTo(19.89f, 19.62f); + bezier9Path.lineTo(20.61f, 20.33f); + bezier9Path.lineTo(20.38f, 21.86f); + bezier9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier9Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier9Path, paint); + + // Bezier 10 + RectF bezier10Rect = CacheForRogue.bezier10Rect; + bezier10Rect.set(21.1f, 21.05f, 22.04f, 23.29f); + Path bezier10Path = CacheForRogue.bezier10Path; + bezier10Path.reset(); + bezier10Path.moveTo(21.82f, 23.29f); + bezier10Path.lineTo(21.1f, 22.57f); + bezier10Path.lineTo(21.32f, 21.05f); + bezier10Path.lineTo(22.04f, 21.77f); + bezier10Path.lineTo(21.82f, 23.29f); + bezier10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier10Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier10Path, paint); + + // Bezier 11 + RectF bezier11Rect = CacheForRogue.bezier11Rect; + bezier11Rect.set(22.53f, 22.48f, 24.12f, 24.72f); + Path bezier11Path = CacheForRogue.bezier11Path; + bezier11Path.reset(); + bezier11Path.moveTo(23.25f, 24.72f); + bezier11Path.lineTo(22.53f, 24f); + bezier11Path.lineTo(22.76f, 22.48f); + bezier11Path.lineTo(24.12f, 23.85f); + bezier11Path.lineTo(23.25f, 24.72f); + bezier11Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier11Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier11Path, paint); + + // Star + canvas.save(); + canvas.translate(19.05f, 19.65f); + currentTransformation.peek().postTranslate(19.05f, 19.65f); + canvas.rotate(-135f); + currentTransformation.peek().postRotate(-135f); + RectF starRect = CacheForRogue.starRect; + starRect.set(-0.6f, -0.6f, 0.6f, 0.6f); + Path starPath = CacheForRogue.starPath; + starPath.reset(); + starPath.moveTo(0f, -0.6f); + starPath.lineTo(0.5f, 0f); + starPath.lineTo(0f, 0.6f); + starPath.lineTo(-0.5f, 0f); + starPath.lineTo(0f, -0.6f); + starPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor45); + canvas.drawPath(starPath, paint); + canvas.restore(); + + // Star 2 + canvas.save(); + canvas.translate(23.8f, 24.4f); + currentTransformation.peek().postTranslate(23.8f, 24.4f); + canvas.rotate(-135f); + currentTransformation.peek().postRotate(-135f); + RectF star2Rect = CacheForRogue.star2Rect; + star2Rect.set(-1.4f, -1.4f, 1.4f, 1.4f); + Path star2Path = CacheForRogue.star2Path; + star2Path.reset(); + star2Path.moveTo(0f, -1.4f); + star2Path.lineTo(0.95f, 0f); + star2Path.lineTo(0f, 1.4f); + star2Path.lineTo(-0.95f, 0f); + star2Path.lineTo(0f, -1.4f); + star2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor45); + canvas.drawPath(star2Path, paint); + canvas.restore(); + } + + // Group 3 + if (lightBackground) { + // Bezier 12 + RectF bezier12Rect = CacheForRogue.bezier12Rect; + bezier12Rect.set(4.86f, 6.36f, 26.06f, 27.55f); + Path bezier12Path = CacheForRogue.bezier12Path; + bezier12Path.reset(); + bezier12Path.moveTo(7.11f, 22.37f); + bezier12Path.lineTo(10.64f, 18.84f); + bezier12Path.cubicTo(11.14f, 16.79f, 11.66f, 14.65f, 11.7f, 14.42f); + bezier12Path.cubicTo(11.73f, 14.18f, 11.81f, 13.65f, 12.24f, 13.15f); + bezier12Path.cubicTo(12.46f, 12.89f, 12.73f, 12.68f, 13.06f, 12.5f); + bezier12Path.lineTo(22.86f, 7.1f); + bezier12Path.lineTo(26.06f, 6.36f); + bezier12Path.lineTo(25.35f, 9.52f); + bezier12Path.lineTo(19.92f, 19.36f); + bezier12Path.cubicTo(19.74f, 19.68f, 19.55f, 19.93f, 19.32f, 20.14f); + bezier12Path.lineTo(19.28f, 20.17f); + bezier12Path.cubicTo(18.77f, 20.6f, 18.26f, 20.68f, 17.98f, 20.72f); + bezier12Path.cubicTo(17.77f, 20.76f, 15.58f, 21.29f, 13.58f, 21.78f); + bezier12Path.lineTo(10.05f, 25.31f); + bezier12Path.lineTo(10.47f, 27.55f); + bezier12Path.lineTo(5.74f, 26.68f); + bezier12Path.lineTo(4.86f, 21.95f); + bezier12Path.lineTo(7.11f, 22.37f); + bezier12Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier12Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier12Path, paint); + + // Bezier 13 + RectF bezier13Rect = CacheForRogue.bezier13Rect; + bezier13Rect.set(5.27f, 6.25f, 26.46f, 27.45f); + Path bezier13Path = CacheForRogue.bezier13Path; + bezier13Path.reset(); + bezier13Path.moveTo(21.27f, 25.2f); + bezier13Path.lineTo(17.75f, 21.68f); + bezier13Path.cubicTo(15.7f, 21.18f, 13.55f, 20.66f, 13.33f, 20.61f); + bezier13Path.cubicTo(13.09f, 20.58f, 12.56f, 20.5f, 12.06f, 20.07f); + bezier13Path.cubicTo(11.8f, 19.86f, 11.59f, 19.59f, 11.41f, 19.25f); + bezier13Path.lineTo(6.01f, 9.46f); + bezier13Path.lineTo(5.27f, 6.25f); + bezier13Path.lineTo(8.43f, 6.97f); + bezier13Path.lineTo(18.27f, 12.4f); + bezier13Path.cubicTo(18.58f, 12.57f, 18.84f, 12.77f, 19.04f, 13f); + bezier13Path.lineTo(19.08f, 13.04f); + bezier13Path.cubicTo(19.51f, 13.55f, 19.59f, 14.06f, 19.63f, 14.33f); + bezier13Path.cubicTo(19.67f, 14.55f, 20.2f, 16.74f, 20.69f, 18.74f); + bezier13Path.lineTo(24.22f, 22.26f); + bezier13Path.lineTo(26.46f, 21.85f); + bezier13Path.lineTo(25.59f, 26.58f); + bezier13Path.lineTo(20.86f, 27.45f); + bezier13Path.lineTo(21.27f, 25.2f); + bezier13Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier13Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor19); + canvas.drawPath(bezier13Path, paint); + + // Bezier 14 + RectF bezier14Rect = CacheForRogue.bezier14Rect; + bezier14Rect.set(7.08f, 8.09f, 16.66f, 18.96f); + Path bezier14Path = CacheForRogue.bezier14Path; + bezier14Path.reset(); + bezier14Path.moveTo(12.69f, 18.55f); + bezier14Path.cubicTo(12.8f, 18.74f, 12.9f, 18.87f, 13f, 18.96f); + bezier14Path.lineTo(16.66f, 17.65f); + bezier14Path.lineTo(7.11f, 8.09f); + bezier14Path.cubicTo(7.03f, 8.18f, 7.13f, 8.44f, 7.29f, 8.75f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier14Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier14Path, paint); + + // Bezier 15 + RectF bezier15Rect = CacheForRogue.bezier15Rect; + bezier15Rect.set(13f, 17.65f, 18.93f, 20.36f); + Path bezier15Path = CacheForRogue.bezier15Path; + bezier15Path.reset(); + bezier15Path.moveTo(13f, 18.96f); + bezier15Path.cubicTo(13.19f, 19.12f, 13.38f, 19.14f, 13.57f, 19.17f); + bezier15Path.cubicTo(13.87f, 19.22f, 18.49f, 20.36f, 18.49f, 20.36f); + bezier15Path.lineTo(18.93f, 19.92f); + bezier15Path.lineTo(16.66f, 17.65f); + bezier15Path.lineTo(13f, 18.96f); + bezier15Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier15Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor48); + canvas.drawPath(bezier15Path, paint); + + // Bezier 16 + RectF bezier16Rect = CacheForRogue.bezier16Rect; + bezier16Rect.set(7.11f, 8.07f, 17.97f, 17.65f); + Path bezier16Path = CacheForRogue.bezier16Path; + bezier16Path.reset(); + bezier16Path.moveTo(17.56f, 13.68f); + bezier16Path.cubicTo(17.75f, 13.79f, 17.88f, 13.89f, 17.97f, 13.99f); + bezier16Path.lineTo(16.67f, 17.65f); + bezier16Path.lineTo(7.11f, 8.09f); + bezier16Path.cubicTo(7.19f, 8.02f, 7.45f, 8.11f, 7.75f, 8.27f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier16Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor46); + canvas.drawPath(bezier16Path, paint); + + // Bezier 17 + RectF bezier17Rect = CacheForRogue.bezier17Rect; + bezier17Rect.set(16.67f, 13.99f, 19.37f, 19.92f); + Path bezier17Path = CacheForRogue.bezier17Path; + bezier17Path.reset(); + bezier17Path.moveTo(17.97f, 13.99f); + bezier17Path.cubicTo(18.13f, 14.18f, 18.16f, 14.37f, 18.18f, 14.56f); + bezier17Path.cubicTo(18.23f, 14.86f, 19.37f, 19.48f, 19.37f, 19.48f); + bezier17Path.lineTo(18.93f, 19.92f); + bezier17Path.lineTo(16.67f, 17.65f); + bezier17Path.lineTo(17.97f, 13.99f); + bezier17Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier17Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier17Path, paint); + + // Bezier 18 + RectF bezier18Rect = CacheForRogue.bezier18Rect; + bezier18Rect.set(20.25f, 20.59f, 21.19f, 22.82f); + Path bezier18Path = CacheForRogue.bezier18Path; + bezier18Path.reset(); + bezier18Path.moveTo(20.96f, 22.82f); + bezier18Path.lineTo(20.25f, 22.11f); + bezier18Path.lineTo(20.47f, 20.59f); + bezier18Path.lineTo(21.19f, 21.3f); + bezier18Path.lineTo(20.96f, 22.82f); + bezier18Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier18Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor48); + canvas.drawPath(bezier18Path, paint); + + // Bezier 19 + RectF bezier19Rect = CacheForRogue.bezier19Rect; + bezier19Rect.set(21.68f, 22.02f, 22.62f, 24.26f); + Path bezier19Path = CacheForRogue.bezier19Path; + bezier19Path.reset(); + bezier19Path.moveTo(22.4f, 24.26f); + bezier19Path.lineTo(21.68f, 23.54f); + bezier19Path.lineTo(21.9f, 22.02f); + bezier19Path.lineTo(22.62f, 22.73f); + bezier19Path.lineTo(22.4f, 24.26f); + bezier19Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier19Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor48); + canvas.drawPath(bezier19Path, paint); + + // Bezier 20 + RectF bezier20Rect = CacheForRogue.bezier20Rect; + bezier20Rect.set(18.49f, 19.48f, 19.76f, 21.39f); + Path bezier20Path = CacheForRogue.bezier20Path; + bezier20Path.reset(); + bezier20Path.moveTo(19.37f, 19.48f); + bezier20Path.lineTo(19.76f, 19.87f); + bezier20Path.lineTo(19.53f, 21.39f); + bezier20Path.lineTo(18.49f, 20.36f); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier20Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor48); + canvas.drawPath(bezier20Path, paint); + + // Bezier 21 + RectF bezier21Rect = CacheForRogue.bezier21Rect; + bezier21Rect.set(19.53f, 19.87f, 20.47f, 22.11f); + Path bezier21Path = CacheForRogue.bezier21Path; + bezier21Path.reset(); + bezier21Path.moveTo(20.25f, 22.11f); + bezier21Path.lineTo(19.53f, 21.39f); + bezier21Path.lineTo(19.76f, 19.87f); + bezier21Path.lineTo(20.47f, 20.59f); + bezier21Path.lineTo(20.25f, 22.11f); + bezier21Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier21Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier21Path, paint); + + // Bezier 22 + RectF bezier22Rect = CacheForRogue.bezier22Rect; + bezier22Rect.set(20.96f, 21.3f, 21.9f, 23.54f); + Path bezier22Path = CacheForRogue.bezier22Path; + bezier22Path.reset(); + bezier22Path.moveTo(21.68f, 23.54f); + bezier22Path.lineTo(20.96f, 22.82f); + bezier22Path.lineTo(21.19f, 21.3f); + bezier22Path.lineTo(21.9f, 22.02f); + bezier22Path.lineTo(21.68f, 23.54f); + bezier22Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier22Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier22Path, paint); + + // Bezier 23 + RectF bezier23Rect = CacheForRogue.bezier23Rect; + bezier23Rect.set(22.4f, 22.73f, 23.98f, 24.97f); + Path bezier23Path = CacheForRogue.bezier23Path; + bezier23Path.reset(); + bezier23Path.moveTo(23.11f, 24.97f); + bezier23Path.lineTo(22.4f, 24.26f); + bezier23Path.lineTo(22.62f, 22.73f); + bezier23Path.lineTo(23.98f, 24.1f); + bezier23Path.lineTo(23.11f, 24.97f); + bezier23Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier23Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor36); + canvas.drawPath(bezier23Path, paint); + + // Star 3 + canvas.save(); + canvas.translate(18.95f, 19.9f); + currentTransformation.peek().postTranslate(18.95f, 19.9f); + canvas.rotate(-135f); + currentTransformation.peek().postRotate(-135f); + RectF star3Rect = CacheForRogue.star3Rect; + star3Rect.set(-0.6f, -0.6f, 0.6f, 0.6f); + Path star3Path = CacheForRogue.star3Path; + star3Path.reset(); + star3Path.moveTo(0f, -0.6f); + star3Path.lineTo(0.5f, 0f); + star3Path.lineTo(0f, 0.6f); + star3Path.lineTo(-0.5f, 0f); + star3Path.lineTo(0f, -0.6f); + star3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(star3Path, paint); + canvas.restore(); + + // Bezier 24 + RectF bezier24Rect = CacheForRogue.bezier24Rect; + bezier24Rect.set(22.69f, 23.98f, 23.66f, 25.62f); + Path bezier24Path = CacheForRogue.bezier24Path; + bezier24Path.reset(); + bezier24Path.moveTo(22.99f, 23.98f); + bezier24Path.lineTo(22.69f, 25.62f); + bezier24Path.lineTo(22.69f, 25.62f); + bezier24Path.lineTo(23.66f, 24.65f); + bezier24Path.lineTo(22.99f, 23.98f); + bezier24Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier24Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier24Path, paint); + + // Bezier 25 + RectF bezier25Rect = CacheForRogue.bezier25Rect; + bezier25Rect.set(22.99f, 23.67f, 24.64f, 24.65f); + Path bezier25Path = CacheForRogue.bezier25Path; + bezier25Path.reset(); + bezier25Path.moveTo(24.64f, 23.67f); + bezier25Path.lineTo(22.99f, 23.98f); + bezier25Path.lineTo(23.66f, 24.65f); + bezier25Path.lineTo(24.64f, 23.67f); + bezier25Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier25Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier25Path, paint); + + // Bezier 26 + RectF bezier26Rect = CacheForRogue.bezier26Rect; + bezier26Rect.set(22.69f, 24.65f, 24.33f, 25.62f); + Path bezier26Path = CacheForRogue.bezier26Path; + bezier26Path.reset(); + bezier26Path.moveTo(23.66f, 24.65f); + bezier26Path.lineTo(22.69f, 25.62f); + bezier26Path.lineTo(24.33f, 25.32f); + bezier26Path.lineTo(23.66f, 24.65f); + bezier26Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier26Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier26Path, paint); + + // Bezier 27 + RectF bezier27Rect = CacheForRogue.bezier27Rect; + bezier27Rect.set(23.66f, 23.67f, 24.64f, 25.32f); + Path bezier27Path = CacheForRogue.bezier27Path; + bezier27Path.reset(); + bezier27Path.moveTo(24.33f, 25.32f); + bezier27Path.lineTo(24.64f, 23.67f); + bezier27Path.lineTo(24.64f, 23.67f); + bezier27Path.lineTo(23.66f, 24.65f); + bezier27Path.lineTo(24.33f, 25.32f); + bezier27Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier27Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor47); + canvas.drawPath(bezier27Path, paint); + } + + canvas.restore(); + } + + private static class CacheForRogueLightBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawRogueLightBg(Canvas canvas) { + HabiticaIcons.drawRogueLightBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawRogueLightBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForRogueLightBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForRogueLightBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForRogueLightBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForRogueLightBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawRogue(canvas, symbolTargetRect, ResizingBehavior.Stretch, false); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForRogueDarkBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawRogueDarkBg(Canvas canvas) { + HabiticaIcons.drawRogueDarkBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawRogueDarkBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForRogueDarkBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForRogueDarkBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForRogueDarkBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForRogueDarkBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawRogue(canvas, symbolTargetRect, ResizingBehavior.Stretch, true); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForHealer { + private static Paint paint = new Paint(); + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF bezierRect = new RectF(); + private static Path bezierPath = new Path(); + private static RectF bezier2Rect = new RectF(); + private static Path bezier2Path = new Path(); + private static RectF bezier3Rect = new RectF(); + private static Path bezier3Path = new Path(); + private static RectF bezier4Rect = new RectF(); + private static Path bezier4Path = new Path(); + private static RectF bezier5Rect = new RectF(); + private static Path bezier5Path = new Path(); + private static RectF bezier6Rect = new RectF(); + private static Path bezier6Path = new Path(); + private static RectF bezier7Rect = new RectF(); + private static Path bezier7Path = new Path(); + private static RectF bezier8Rect = new RectF(); + private static Path bezier8Path = new Path(); + private static RectF bezier9Rect = new RectF(); + private static Path bezier9Path = new Path(); + private static RectF bezier10Rect = new RectF(); + private static Path bezier10Path = new Path(); + private static RectF bezier11Rect = new RectF(); + private static Path bezier11Path = new Path(); + private static RectF bezier12Rect = new RectF(); + private static Path bezier12Path = new Path(); + private static RectF bezier13Rect = new RectF(); + private static Path bezier13Path = new Path(); + private static RectF bezier14Rect = new RectF(); + private static Path bezier14Path = new Path(); + private static RectF bezier15Rect = new RectF(); + private static Path bezier15Path = new Path(); + private static RectF bezier16Rect = new RectF(); + private static Path bezier16Path = new Path(); + private static RectF bezier17Rect = new RectF(); + private static Path bezier17Path = new Path(); + private static RectF bezier18Rect = new RectF(); + private static Path bezier18Path = new Path(); + private static RectF bezier19Rect = new RectF(); + private static Path bezier19Path = new Path(); + private static RectF bezier20Rect = new RectF(); + private static Path bezier20Path = new Path(); + private static RectF bezier21Rect = new RectF(); + private static Path bezier21Path = new Path(); + private static RectF bezier22Rect = new RectF(); + private static Path bezier22Path = new Path(); + private static RectF bezier23Rect = new RectF(); + private static Path bezier23Path = new Path(); + private static RectF bezier24Rect = new RectF(); + private static Path bezier24Path = new Path(); + private static RectF bezier25Rect = new RectF(); + private static Path bezier25Path = new Path(); + private static RectF bezier26Rect = new RectF(); + private static Path bezier26Path = new Path(); + private static RectF bezier27Rect = new RectF(); + private static Path bezier27Path = new Path(); + private static RectF bezier28Rect = new RectF(); + private static Path bezier28Path = new Path(); + private static RectF bezier29Rect = new RectF(); + private static Path bezier29Path = new Path(); + private static RectF bezier30Rect = new RectF(); + private static Path bezier30Path = new Path(); + private static RectF bezier31Rect = new RectF(); + private static Path bezier31Path = new Path(); + private static RectF bezier32Rect = new RectF(); + private static Path bezier32Path = new Path(); + } + + public static void drawHealer(Canvas canvas, boolean darkBackground) { + HabiticaIcons.drawHealer(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit, darkBackground); + } + + public static void drawHealer(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, boolean darkBackground) { + // General Declarations + Paint paint = CacheForHealer.paint; + + // Local Colors + int fillColor55 = Color.argb(255, 253, 198, 126); + int fillColor57 = Color.argb(255, 255, 221, 181); + int fillColor52 = Color.argb(255, 253, 198, 126); + int fillColor51 = Color.argb(255, 229, 144, 37); + int fillColor59 = Color.argb(255, 255, 228, 201); + int fillColor49 = Color.argb(255, 255, 215, 168); + int fillColor10 = Color.argb(255, 255, 166, 35); + int fillColor58 = Color.argb(255, 229, 144, 37); + int fillColor56 = Color.argb(255, 255, 166, 35); + int fillColor53 = Color.argb(255, 206, 129, 41); + int fillColor54 = Color.argb(255, 207, 130, 41); + int fillColor50 = Color.argb(255, 226, 158, 69); + + // Local Variables + boolean lightBackground = !darkBackground; + + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForHealer.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForHealer.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Group 2 + if (darkBackground) { + // Bezier + RectF bezierRect = CacheForHealer.bezierRect; + bezierRect.set(4.98f, 4.79f, 25.53f, 28.79f); + Path bezierPath = CacheForHealer.bezierPath; + bezierPath.reset(); + bezierPath.moveTo(13.91f, 28.2f); + bezierPath.lineTo(13.81f, 28.15f); + bezierPath.cubicTo(11.14f, 26.81f, 8.32f, 25.14f, 6.58f, 21.85f); + bezierPath.cubicTo(4.62f, 18.12f, 5f, 12.18f, 5.04f, 11.51f); + bezierPath.cubicTo(5.08f, 10.99f, 5.24f, 9.71f, 5.24f, 9.71f); + bezierPath.cubicTo(5.24f, 9.71f, 6.25f, 9.26f, 6.75f, 9.03f); + bezierPath.lineTo(13.97f, 5.37f); + bezierPath.cubicTo(14.37f, 5.18f, 15.26f, 4.79f, 15.26f, 4.79f); + bezierPath.cubicTo(15.26f, 4.79f, 16.14f, 5.18f, 16.54f, 5.37f); + bezierPath.lineTo(23.76f, 9.02f); + bezierPath.cubicTo(24.26f, 9.26f, 25.35f, 9.71f, 25.35f, 9.71f); + bezierPath.cubicTo(25.35f, 9.71f, 25.43f, 10.99f, 25.47f, 11.51f); + bezierPath.cubicTo(25.52f, 12.18f, 25.89f, 18.12f, 23.93f, 21.85f); + bezierPath.cubicTo(22.19f, 25.14f, 19.37f, 26.81f, 16.7f, 28.15f); + bezierPath.lineTo(16.6f, 28.2f); + bezierPath.cubicTo(16.19f, 28.41f, 15.26f, 28.79f, 15.26f, 28.79f); + bezierPath.cubicTo(15.26f, 28.79f, 14.32f, 28.41f, 13.91f, 28.2f); + bezierPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezierPath.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor49); + canvas.drawPath(bezierPath, paint); + + // Bezier 2 + RectF bezier2Rect = CacheForHealer.bezier2Rect; + bezier2Rect.set(7.21f, 7.04f, 15.26f, 12.42f); + Path bezier2Path = CacheForHealer.bezier2Path; + bezier2Path.reset(); + bezier2Path.moveTo(9.05f, 12.41f); + bezier2Path.lineTo(14.81f, 9.44f); + bezier2Path.cubicTo(14.95f, 9.38f, 15.1f, 9.34f, 15.26f, 9.34f); + bezier2Path.lineTo(15.26f, 7.04f); + bezier2Path.cubicTo(15.1f, 7.04f, 14.95f, 7.07f, 14.81f, 7.14f); + bezier2Path.lineTo(7.59f, 10.79f); + bezier2Path.cubicTo(7.43f, 10.86f, 7.31f, 10.97f, 7.21f, 11.1f); + bezier2Path.lineTo(9.05f, 12.42f); + bezier2Path.lineTo(9.05f, 12.41f); + bezier2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier2Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor50); + canvas.drawPath(bezier2Path, paint); + + // Bezier 3 + RectF bezier3Rect = CacheForHealer.bezier3Rect; + bezier3Rect.set(6.94f, 7.03f, 15.26f, 26.56f); + Path bezier3Path = CacheForHealer.bezier3Path; + bezier3Path.reset(); + bezier3Path.moveTo(14.81f, 7.13f); + bezier3Path.lineTo(7.59f, 10.78f); + bezier3Path.cubicTo(7.25f, 10.94f, 7.02f, 11.27f, 6.99f, 11.65f); + bezier3Path.cubicTo(6.97f, 11.89f, 6.57f, 17.63f, 8.31f, 20.93f); + bezier3Path.cubicTo(9.76f, 23.67f, 12.14f, 25.12f, 14.69f, 26.4f); + bezier3Path.lineTo(14.79f, 26.45f); + bezier3Path.cubicTo(14.93f, 26.52f, 15.09f, 26.56f, 15.26f, 26.56f); + bezier3Path.lineTo(15.26f, 26.56f); + bezier3Path.lineTo(15.26f, 7.03f); + bezier3Path.cubicTo(15.1f, 7.03f, 14.95f, 7.06f, 14.81f, 7.13f); + bezier3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier3Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor10); + canvas.drawPath(bezier3Path, paint); + + // Bezier 4 + RectF bezier4Rect = CacheForHealer.bezier4Rect; + bezier4Rect.set(15.26f, 7.03f, 23.57f, 26.56f); + Path bezier4Path = CacheForHealer.bezier4Path; + bezier4Path.reset(); + bezier4Path.moveTo(15.82f, 26.4f); + bezier4Path.cubicTo(18.37f, 25.12f, 20.75f, 23.67f, 22.2f, 20.93f); + bezier4Path.cubicTo(23.94f, 17.63f, 23.54f, 11.89f, 23.52f, 11.65f); + bezier4Path.cubicTo(23.49f, 11.27f, 23.26f, 10.94f, 22.92f, 10.78f); + bezier4Path.lineTo(15.7f, 7.13f); + bezier4Path.cubicTo(15.56f, 7.06f, 15.41f, 7.03f, 15.26f, 7.03f); + bezier4Path.lineTo(15.26f, 26.56f); + bezier4Path.cubicTo(15.42f, 26.56f, 15.58f, 26.52f, 15.73f, 26.45f); + bezier4Path.lineTo(15.82f, 26.4f); + bezier4Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier4Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor51); + canvas.drawPath(bezier4Path, paint); + + // Bezier 5 + RectF bezier5Rect = CacheForHealer.bezier5Rect; + bezier5Rect.set(7.21f, 7.03f, 15.26f, 12.41f); + Path bezier5Path = CacheForHealer.bezier5Path; + bezier5Path.reset(); + bezier5Path.moveTo(9.05f, 12.4f); + bezier5Path.lineTo(14.81f, 9.44f); + bezier5Path.cubicTo(14.95f, 9.37f, 15.1f, 9.34f, 15.26f, 9.34f); + bezier5Path.lineTo(15.26f, 7.03f); + bezier5Path.cubicTo(15.1f, 7.03f, 14.95f, 7.06f, 14.81f, 7.13f); + bezier5Path.lineTo(7.59f, 10.78f); + bezier5Path.cubicTo(7.43f, 10.85f, 7.31f, 10.96f, 7.21f, 11.1f); + bezier5Path.lineTo(9.05f, 12.41f); + bezier5Path.lineTo(9.05f, 12.4f); + bezier5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier5Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier5Path, paint); + + // Bezier 6 + RectF bezier6Rect = CacheForHealer.bezier6Rect; + bezier6Rect.set(15.26f, 7.03f, 23.3f, 12.41f); + Path bezier6Path = CacheForHealer.bezier6Path; + bezier6Path.reset(); + bezier6Path.moveTo(22.92f, 10.78f); + bezier6Path.lineTo(15.7f, 7.13f); + bezier6Path.cubicTo(15.56f, 7.06f, 15.41f, 7.03f, 15.26f, 7.03f); + bezier6Path.lineTo(15.26f, 9.34f); + bezier6Path.cubicTo(15.41f, 9.34f, 15.56f, 9.37f, 15.7f, 9.44f); + bezier6Path.lineTo(21.47f, 12.41f); + bezier6Path.lineTo(21.47f, 12.41f); + bezier6Path.lineTo(23.3f, 11.1f); + bezier6Path.cubicTo(23.2f, 10.96f, 23.08f, 10.85f, 22.92f, 10.78f); + bezier6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier6Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor10); + canvas.drawPath(bezier6Path, paint); + + // Bezier 7 + RectF bezier7Rect = CacheForHealer.bezier7Rect; + bezier7Rect.set(6.94f, 11.1f, 15.26f, 26.56f); + Path bezier7Path = CacheForHealer.bezier7Path; + bezier7Path.reset(); + bezier7Path.moveTo(15.05f, 24.24f); + bezier7Path.cubicTo(12.86f, 23.13f, 11.2f, 21.93f, 10.16f, 19.95f); + bezier7Path.cubicTo(8.99f, 17.74f, 9f, 13.89f, 9.05f, 12.41f); + bezier7Path.lineTo(7.21f, 11.1f); + bezier7Path.cubicTo(7.09f, 11.25f, 7.01f, 11.44f, 6.99f, 11.65f); + bezier7Path.cubicTo(6.98f, 11.76f, 6.9f, 12.95f, 6.96f, 14.53f); + bezier7Path.cubicTo(7.04f, 16.51f, 7.34f, 19.09f, 8.31f, 20.93f); + bezier7Path.cubicTo(9.76f, 23.67f, 12.14f, 25.12f, 14.69f, 26.4f); + bezier7Path.lineTo(14.79f, 26.45f); + bezier7Path.cubicTo(14.93f, 26.52f, 15.09f, 26.56f, 15.26f, 26.56f); + bezier7Path.lineTo(15.26f, 26.56f); + bezier7Path.lineTo(15.26f, 24.3f); + bezier7Path.cubicTo(15.2f, 24.3f, 15.15f, 24.28f, 15.05f, 24.24f); + bezier7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier7Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor51); + canvas.drawPath(bezier7Path, paint); + + // Bezier 8 + RectF bezier8Rect = CacheForHealer.bezier8Rect; + bezier8Rect.set(15.26f, 11.09f, 23.57f, 26.56f); + Path bezier8Path = CacheForHealer.bezier8Path; + bezier8Path.reset(); + bezier8Path.moveTo(20.35f, 19.95f); + bezier8Path.cubicTo(19.31f, 21.93f, 17.64f, 23.13f, 15.45f, 24.24f); + bezier8Path.cubicTo(15.35f, 24.28f, 15.31f, 24.3f, 15.26f, 24.3f); + bezier8Path.lineTo(15.26f, 26.56f); + bezier8Path.cubicTo(15.42f, 26.56f, 15.58f, 26.52f, 15.72f, 26.45f); + bezier8Path.lineTo(15.82f, 26.4f); + bezier8Path.cubicTo(18.37f, 25.12f, 20.75f, 23.67f, 22.2f, 20.93f); + bezier8Path.cubicTo(23.17f, 19.09f, 23.47f, 16.51f, 23.55f, 14.53f); + bezier8Path.cubicTo(23.61f, 12.95f, 23.53f, 11.76f, 23.52f, 11.65f); + bezier8Path.cubicTo(23.5f, 11.44f, 23.42f, 11.25f, 23.3f, 11.09f); + bezier8Path.lineTo(21.47f, 12.41f); + bezier8Path.cubicTo(21.53f, 14.25f, 21.43f, 17.91f, 20.35f, 19.95f); + bezier8Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier8Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier8Path, paint); + + // Bezier 9 + RectF bezier9Rect = CacheForHealer.bezier9Rect; + bezier9Rect.set(10.81f, 15.31f, 15.26f, 16.79f); + Path bezier9Path = CacheForHealer.bezier9Path; + bezier9Path.reset(); + bezier9Path.moveTo(10.81f, 16.79f); + bezier9Path.lineTo(13.77f, 15.31f); + bezier9Path.lineTo(15.26f, 16.79f); + bezier9Path.lineTo(10.81f, 16.79f); + bezier9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier9Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier9Path, paint); + + // Bezier 10 + RectF bezier10Rect = CacheForHealer.bezier10Rect; + bezier10Rect.set(13.77f, 16.79f, 15.26f, 21.24f); + Path bezier10Path = CacheForHealer.bezier10Path; + bezier10Path.reset(); + bezier10Path.moveTo(15.26f, 21.24f); + bezier10Path.lineTo(13.77f, 18.28f); + bezier10Path.lineTo(15.26f, 16.79f); + bezier10Path.lineTo(15.26f, 21.24f); + bezier10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier10Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier10Path, paint); + + // Bezier 11 + RectF bezier11Rect = CacheForHealer.bezier11Rect; + bezier11Rect.set(15.26f, 16.79f, 19.7f, 18.28f); + Path bezier11Path = CacheForHealer.bezier11Path; + bezier11Path.reset(); + bezier11Path.moveTo(19.7f, 16.79f); + bezier11Path.lineTo(16.74f, 18.28f); + bezier11Path.lineTo(15.26f, 16.79f); + bezier11Path.lineTo(19.7f, 16.79f); + bezier11Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier11Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier11Path, paint); + + // Bezier 12 + RectF bezier12Rect = CacheForHealer.bezier12Rect; + bezier12Rect.set(15.26f, 12.35f, 16.74f, 16.79f); + Path bezier12Path = CacheForHealer.bezier12Path; + bezier12Path.reset(); + bezier12Path.moveTo(15.26f, 12.35f); + bezier12Path.lineTo(16.74f, 15.31f); + bezier12Path.lineTo(15.26f, 16.79f); + bezier12Path.lineTo(15.26f, 12.35f); + bezier12Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier12Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier12Path, paint); + + // Bezier 13 + RectF bezier13Rect = CacheForHealer.bezier13Rect; + bezier13Rect.set(15.26f, 15.31f, 19.7f, 16.79f); + Path bezier13Path = CacheForHealer.bezier13Path; + bezier13Path.reset(); + bezier13Path.moveTo(19.7f, 16.79f); + bezier13Path.lineTo(16.74f, 15.31f); + bezier13Path.lineTo(15.26f, 16.79f); + bezier13Path.lineTo(19.7f, 16.79f); + bezier13Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier13Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier13Path, paint); + + // Bezier 14 + RectF bezier14Rect = CacheForHealer.bezier14Rect; + bezier14Rect.set(15.26f, 16.79f, 16.74f, 21.24f); + Path bezier14Path = CacheForHealer.bezier14Path; + bezier14Path.reset(); + bezier14Path.moveTo(15.26f, 21.24f); + bezier14Path.lineTo(16.74f, 18.28f); + bezier14Path.lineTo(15.26f, 16.79f); + bezier14Path.lineTo(15.26f, 21.24f); + bezier14Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier14Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor53); + canvas.drawPath(bezier14Path, paint); + + // Bezier 15 + RectF bezier15Rect = CacheForHealer.bezier15Rect; + bezier15Rect.set(10.81f, 16.79f, 15.26f, 18.28f); + Path bezier15Path = CacheForHealer.bezier15Path; + bezier15Path.reset(); + bezier15Path.moveTo(10.81f, 16.79f); + bezier15Path.lineTo(13.77f, 18.28f); + bezier15Path.lineTo(15.26f, 16.79f); + bezier15Path.lineTo(10.81f, 16.79f); + bezier15Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier15Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier15Path, paint); + + // Bezier 16 + RectF bezier16Rect = CacheForHealer.bezier16Rect; + bezier16Rect.set(13.77f, 12.35f, 15.26f, 16.79f); + Path bezier16Path = CacheForHealer.bezier16Path; + bezier16Path.reset(); + bezier16Path.moveTo(15.26f, 12.35f); + bezier16Path.lineTo(13.77f, 15.31f); + bezier16Path.lineTo(15.26f, 16.79f); + bezier16Path.lineTo(15.26f, 12.35f); + bezier16Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier16Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor52); + canvas.drawPath(bezier16Path, paint); + } + + // Group 3 + if (lightBackground) { + // Bezier 17 + RectF bezier17Rect = CacheForHealer.bezier17Rect; + bezier17Rect.set(4.98f, 4.79f, 25.53f, 28.79f); + Path bezier17Path = CacheForHealer.bezier17Path; + bezier17Path.reset(); + bezier17Path.moveTo(15.26f, 28.79f); + bezier17Path.cubicTo(15.26f, 28.79f, 14.32f, 28.41f, 13.91f, 28.2f); + bezier17Path.lineTo(13.81f, 28.15f); + bezier17Path.cubicTo(11.14f, 26.81f, 8.32f, 25.14f, 6.58f, 21.85f); + bezier17Path.cubicTo(4.62f, 18.12f, 5f, 12.18f, 5.04f, 11.51f); + bezier17Path.cubicTo(5.08f, 10.99f, 5.24f, 9.71f, 5.24f, 9.71f); + bezier17Path.cubicTo(5.24f, 9.71f, 6.25f, 9.26f, 6.75f, 9.03f); + bezier17Path.lineTo(13.97f, 5.37f); + bezier17Path.cubicTo(14.37f, 5.18f, 15.26f, 4.79f, 15.26f, 4.79f); + bezier17Path.cubicTo(15.26f, 4.79f, 16.14f, 5.18f, 16.54f, 5.37f); + bezier17Path.lineTo(23.76f, 9.02f); + bezier17Path.cubicTo(24.26f, 9.26f, 25.35f, 9.71f, 25.35f, 9.71f); + bezier17Path.cubicTo(25.35f, 9.71f, 25.43f, 10.99f, 25.47f, 11.51f); + bezier17Path.cubicTo(25.52f, 12.18f, 25.89f, 18.12f, 23.93f, 21.85f); + bezier17Path.cubicTo(22.19f, 25.14f, 19.37f, 26.81f, 16.7f, 28.15f); + bezier17Path.lineTo(16.6f, 28.2f); + bezier17Path.cubicTo(16.19f, 28.41f, 15.26f, 28.79f, 15.26f, 28.79f); + bezier17Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier17Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor54); + canvas.drawPath(bezier17Path, paint); + + // Bezier 18 + RectF bezier18Rect = CacheForHealer.bezier18Rect; + bezier18Rect.set(7.21f, 7.04f, 15.26f, 12.42f); + Path bezier18Path = CacheForHealer.bezier18Path; + bezier18Path.reset(); + bezier18Path.moveTo(9.05f, 12.41f); + bezier18Path.lineTo(14.81f, 9.44f); + bezier18Path.cubicTo(14.95f, 9.38f, 15.1f, 9.34f, 15.26f, 9.34f); + bezier18Path.lineTo(15.26f, 7.04f); + bezier18Path.cubicTo(15.1f, 7.04f, 14.95f, 7.07f, 14.81f, 7.14f); + bezier18Path.lineTo(7.59f, 10.79f); + bezier18Path.cubicTo(7.43f, 10.86f, 7.31f, 10.97f, 7.21f, 11.1f); + bezier18Path.lineTo(9.05f, 12.42f); + bezier18Path.lineTo(9.05f, 12.41f); + bezier18Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier18Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor50); + canvas.drawPath(bezier18Path, paint); + + // Bezier 19 + RectF bezier19Rect = CacheForHealer.bezier19Rect; + bezier19Rect.set(6.94f, 7.03f, 15.26f, 26.56f); + Path bezier19Path = CacheForHealer.bezier19Path; + bezier19Path.reset(); + bezier19Path.moveTo(14.81f, 7.13f); + bezier19Path.lineTo(7.59f, 10.78f); + bezier19Path.cubicTo(7.25f, 10.94f, 7.02f, 11.27f, 6.99f, 11.65f); + bezier19Path.cubicTo(6.97f, 11.89f, 6.57f, 17.63f, 8.31f, 20.93f); + bezier19Path.cubicTo(9.76f, 23.67f, 12.14f, 25.12f, 14.69f, 26.4f); + bezier19Path.lineTo(14.79f, 26.45f); + bezier19Path.cubicTo(14.93f, 26.52f, 15.09f, 26.56f, 15.26f, 26.56f); + bezier19Path.lineTo(15.26f, 26.56f); + bezier19Path.lineTo(15.26f, 7.03f); + bezier19Path.cubicTo(15.1f, 7.03f, 14.95f, 7.06f, 14.81f, 7.13f); + bezier19Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier19Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor55); + canvas.drawPath(bezier19Path, paint); + + // Bezier 20 + RectF bezier20Rect = CacheForHealer.bezier20Rect; + bezier20Rect.set(15.26f, 7.03f, 23.57f, 26.56f); + Path bezier20Path = CacheForHealer.bezier20Path; + bezier20Path.reset(); + bezier20Path.moveTo(15.73f, 26.45f); + bezier20Path.lineTo(15.82f, 26.4f); + bezier20Path.cubicTo(18.37f, 25.12f, 20.75f, 23.67f, 22.2f, 20.93f); + bezier20Path.cubicTo(23.94f, 17.63f, 23.54f, 11.89f, 23.52f, 11.65f); + bezier20Path.cubicTo(23.49f, 11.27f, 23.26f, 10.94f, 22.92f, 10.78f); + bezier20Path.lineTo(15.7f, 7.13f); + bezier20Path.cubicTo(15.56f, 7.06f, 15.41f, 7.03f, 15.26f, 7.03f); + bezier20Path.lineTo(15.26f, 26.56f); + bezier20Path.cubicTo(15.42f, 26.56f, 15.58f, 26.52f, 15.73f, 26.45f); + bezier20Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier20Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor56); + canvas.drawPath(bezier20Path, paint); + + // Bezier 21 + RectF bezier21Rect = CacheForHealer.bezier21Rect; + bezier21Rect.set(7.21f, 7.03f, 15.26f, 12.41f); + Path bezier21Path = CacheForHealer.bezier21Path; + bezier21Path.reset(); + bezier21Path.moveTo(9.05f, 12.4f); + bezier21Path.lineTo(14.81f, 9.44f); + bezier21Path.cubicTo(14.95f, 9.37f, 15.1f, 9.34f, 15.26f, 9.34f); + bezier21Path.lineTo(15.26f, 7.03f); + bezier21Path.cubicTo(15.1f, 7.03f, 14.95f, 7.06f, 14.81f, 7.13f); + bezier21Path.lineTo(7.59f, 10.78f); + bezier21Path.cubicTo(7.43f, 10.85f, 7.31f, 10.96f, 7.21f, 11.1f); + bezier21Path.lineTo(9.05f, 12.41f); + bezier21Path.lineTo(9.05f, 12.4f); + bezier21Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier21Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor57); + canvas.drawPath(bezier21Path, paint); + + // Bezier 22 + RectF bezier22Rect = CacheForHealer.bezier22Rect; + bezier22Rect.set(15.26f, 7.03f, 23.3f, 12.41f); + Path bezier22Path = CacheForHealer.bezier22Path; + bezier22Path.reset(); + bezier22Path.moveTo(22.92f, 10.78f); + bezier22Path.lineTo(15.7f, 7.13f); + bezier22Path.cubicTo(15.56f, 7.06f, 15.41f, 7.03f, 15.26f, 7.03f); + bezier22Path.lineTo(15.26f, 9.34f); + bezier22Path.cubicTo(15.41f, 9.34f, 15.56f, 9.37f, 15.7f, 9.44f); + bezier22Path.lineTo(21.47f, 12.41f); + bezier22Path.lineTo(21.47f, 12.41f); + bezier22Path.lineTo(23.3f, 11.1f); + bezier22Path.cubicTo(23.2f, 10.96f, 23.08f, 10.85f, 22.92f, 10.78f); + bezier22Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier22Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor55); + canvas.drawPath(bezier22Path, paint); + + // Bezier 23 + RectF bezier23Rect = CacheForHealer.bezier23Rect; + bezier23Rect.set(6.94f, 11.1f, 15.26f, 26.56f); + Path bezier23Path = CacheForHealer.bezier23Path; + bezier23Path.reset(); + bezier23Path.moveTo(15.05f, 24.24f); + bezier23Path.cubicTo(12.86f, 23.13f, 11.2f, 21.93f, 10.16f, 19.95f); + bezier23Path.cubicTo(8.99f, 17.74f, 9f, 13.89f, 9.05f, 12.41f); + bezier23Path.lineTo(7.21f, 11.1f); + bezier23Path.cubicTo(7.09f, 11.25f, 7.01f, 11.44f, 6.99f, 11.65f); + bezier23Path.cubicTo(6.98f, 11.76f, 6.9f, 12.95f, 6.96f, 14.53f); + bezier23Path.cubicTo(7.04f, 16.51f, 7.34f, 19.09f, 8.31f, 20.93f); + bezier23Path.cubicTo(9.76f, 23.67f, 12.14f, 25.12f, 14.69f, 26.4f); + bezier23Path.lineTo(14.79f, 26.45f); + bezier23Path.cubicTo(14.93f, 26.52f, 15.09f, 26.56f, 15.26f, 26.56f); + bezier23Path.lineTo(15.26f, 26.56f); + bezier23Path.lineTo(15.26f, 24.3f); + bezier23Path.cubicTo(15.2f, 24.3f, 15.15f, 24.28f, 15.05f, 24.24f); + bezier23Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier23Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor56); + canvas.drawPath(bezier23Path, paint); + + // Bezier 24 + RectF bezier24Rect = CacheForHealer.bezier24Rect; + bezier24Rect.set(15.26f, 11.09f, 23.57f, 26.56f); + Path bezier24Path = CacheForHealer.bezier24Path; + bezier24Path.reset(); + bezier24Path.moveTo(20.35f, 19.95f); + bezier24Path.cubicTo(19.31f, 21.93f, 17.64f, 23.13f, 15.45f, 24.24f); + bezier24Path.cubicTo(15.35f, 24.28f, 15.31f, 24.3f, 15.26f, 24.3f); + bezier24Path.lineTo(15.26f, 26.56f); + bezier24Path.cubicTo(15.42f, 26.56f, 15.58f, 26.52f, 15.72f, 26.45f); + bezier24Path.lineTo(15.82f, 26.4f); + bezier24Path.cubicTo(18.37f, 25.12f, 20.75f, 23.67f, 22.2f, 20.93f); + bezier24Path.cubicTo(23.17f, 19.09f, 23.47f, 16.51f, 23.55f, 14.53f); + bezier24Path.cubicTo(23.61f, 12.95f, 23.53f, 11.76f, 23.52f, 11.65f); + bezier24Path.cubicTo(23.5f, 11.44f, 23.42f, 11.25f, 23.3f, 11.09f); + bezier24Path.lineTo(21.47f, 12.41f); + bezier24Path.cubicTo(21.53f, 14.25f, 21.43f, 17.91f, 20.35f, 19.95f); + bezier24Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier24Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier24Path, paint); + + // Bezier 25 + RectF bezier25Rect = CacheForHealer.bezier25Rect; + bezier25Rect.set(10.81f, 15.31f, 15.26f, 16.79f); + Path bezier25Path = CacheForHealer.bezier25Path; + bezier25Path.reset(); + bezier25Path.moveTo(10.81f, 16.79f); + bezier25Path.lineTo(13.77f, 15.31f); + bezier25Path.lineTo(15.26f, 16.79f); + bezier25Path.lineTo(10.81f, 16.79f); + bezier25Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier25Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor59); + canvas.drawPath(bezier25Path, paint); + + // Bezier 26 + RectF bezier26Rect = CacheForHealer.bezier26Rect; + bezier26Rect.set(13.77f, 16.79f, 15.26f, 21.24f); + Path bezier26Path = CacheForHealer.bezier26Path; + bezier26Path.reset(); + bezier26Path.moveTo(15.26f, 21.24f); + bezier26Path.lineTo(13.77f, 18.28f); + bezier26Path.lineTo(15.26f, 16.79f); + bezier26Path.lineTo(15.26f, 21.24f); + bezier26Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier26Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor59); + canvas.drawPath(bezier26Path, paint); + + // Bezier 27 + RectF bezier27Rect = CacheForHealer.bezier27Rect; + bezier27Rect.set(15.26f, 16.79f, 19.7f, 18.28f); + Path bezier27Path = CacheForHealer.bezier27Path; + bezier27Path.reset(); + bezier27Path.moveTo(19.7f, 16.79f); + bezier27Path.lineTo(16.74f, 18.28f); + bezier27Path.lineTo(15.26f, 16.79f); + bezier27Path.lineTo(19.7f, 16.79f); + bezier27Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier27Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier27Path, paint); + + // Bezier 28 + RectF bezier28Rect = CacheForHealer.bezier28Rect; + bezier28Rect.set(15.26f, 12.35f, 16.74f, 16.79f); + Path bezier28Path = CacheForHealer.bezier28Path; + bezier28Path.reset(); + bezier28Path.moveTo(15.26f, 12.35f); + bezier28Path.lineTo(16.74f, 15.31f); + bezier28Path.lineTo(15.26f, 16.79f); + bezier28Path.lineTo(15.26f, 12.35f); + bezier28Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier28Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier28Path, paint); + + // Bezier 29 + RectF bezier29Rect = CacheForHealer.bezier29Rect; + bezier29Rect.set(15.26f, 15.31f, 19.7f, 16.79f); + Path bezier29Path = CacheForHealer.bezier29Path; + bezier29Path.reset(); + bezier29Path.moveTo(19.7f, 16.79f); + bezier29Path.lineTo(16.74f, 15.31f); + bezier29Path.lineTo(15.26f, 16.79f); + bezier29Path.lineTo(19.7f, 16.79f); + bezier29Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier29Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier29Path, paint); + + // Bezier 30 + RectF bezier30Rect = CacheForHealer.bezier30Rect; + bezier30Rect.set(15.26f, 16.79f, 16.74f, 21.24f); + Path bezier30Path = CacheForHealer.bezier30Path; + bezier30Path.reset(); + bezier30Path.moveTo(15.26f, 21.24f); + bezier30Path.lineTo(16.74f, 18.28f); + bezier30Path.lineTo(15.26f, 16.79f); + bezier30Path.lineTo(15.26f, 21.24f); + bezier30Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier30Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor58); + canvas.drawPath(bezier30Path, paint); + + // Bezier 31 + RectF bezier31Rect = CacheForHealer.bezier31Rect; + bezier31Rect.set(10.81f, 16.79f, 15.26f, 18.28f); + Path bezier31Path = CacheForHealer.bezier31Path; + bezier31Path.reset(); + bezier31Path.moveTo(10.81f, 16.79f); + bezier31Path.lineTo(13.77f, 18.28f); + bezier31Path.lineTo(15.26f, 16.79f); + bezier31Path.lineTo(10.81f, 16.79f); + bezier31Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier31Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor59); + canvas.drawPath(bezier31Path, paint); + + // Bezier 32 + RectF bezier32Rect = CacheForHealer.bezier32Rect; + bezier32Rect.set(13.77f, 12.35f, 15.26f, 16.79f); + Path bezier32Path = CacheForHealer.bezier32Path; + bezier32Path.reset(); + bezier32Path.moveTo(15.26f, 12.35f); + bezier32Path.lineTo(13.77f, 15.31f); + bezier32Path.lineTo(15.26f, 16.79f); + bezier32Path.lineTo(15.26f, 12.35f); + bezier32Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier32Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor59); + canvas.drawPath(bezier32Path, paint); + } + + canvas.restore(); + } + + private static class CacheForHealerLightBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawHealerLightBg(Canvas canvas) { + HabiticaIcons.drawHealerLightBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawHealerLightBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForHealerLightBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForHealerLightBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForHealerLightBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForHealerLightBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawHealer(canvas, symbolTargetRect, ResizingBehavior.Stretch, false); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForHealerDarkBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawHealerDarkBg(Canvas canvas) { + HabiticaIcons.drawHealerDarkBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawHealerDarkBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForHealerDarkBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForHealerDarkBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForHealerDarkBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForHealerDarkBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawHealer(canvas, symbolTargetRect, ResizingBehavior.Stretch, true); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForMage { + private static Paint paint = new Paint(); + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF bezierRect = new RectF(); + private static Path bezierPath = new Path(); + private static RectF bezier2Rect = new RectF(); + private static Path bezier2Path = new Path(); + private static RectF bezier3Rect = new RectF(); + private static Path bezier3Path = new Path(); + private static RectF bezier4Rect = new RectF(); + private static Path bezier4Path = new Path(); + private static RectF bezier5Rect = new RectF(); + private static Path bezier5Path = new Path(); + private static RectF bezier6Rect = new RectF(); + private static Path bezier6Path = new Path(); + private static RectF bezier7Rect = new RectF(); + private static Path bezier7Path = new Path(); + private static RectF bezier8Rect = new RectF(); + private static Path bezier8Path = new Path(); + private static RectF bezier9Rect = new RectF(); + private static Path bezier9Path = new Path(); + private static RectF bezier10Rect = new RectF(); + private static Path bezier10Path = new Path(); + private static RectF bezier11Rect = new RectF(); + private static Path bezier11Path = new Path(); + private static RectF bezier12Rect = new RectF(); + private static Path bezier12Path = new Path(); + private static RectF bezier13Rect = new RectF(); + private static Path bezier13Path = new Path(); + private static RectF bezier14Rect = new RectF(); + private static Path bezier14Path = new Path(); + private static RectF bezier15Rect = new RectF(); + private static Path bezier15Path = new Path(); + private static RectF bezier16Rect = new RectF(); + private static Path bezier16Path = new Path(); + private static RectF bezier17Rect = new RectF(); + private static Path bezier17Path = new Path(); + private static RectF bezier18Rect = new RectF(); + private static Path bezier18Path = new Path(); + } + + public static void drawMage(Canvas canvas, boolean darkBackground) { + HabiticaIcons.drawMage(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit, darkBackground); + } + + public static void drawMage(Canvas canvas, RectF targetFrame, ResizingBehavior resizing, boolean darkBackground) { + // General Declarations + Paint paint = CacheForMage.paint; + + // Local Colors + int fillColor65 = Color.argb(255, 107, 196, 233); + int fillColor67 = Color.argb(255, 83, 180, 229); + int fillColor66 = Color.argb(255, 107, 196, 233); + int fillColor70 = Color.argb(255, 132, 207, 242); + int fillColor61 = Color.argb(255, 39, 138, 191); + int fillColor69 = Color.argb(255, 169, 219, 245); + int fillColor62 = Color.argb(255, 83, 180, 229); + int fillColor60 = Color.argb(255, 182, 225, 247); + int fillColor64 = Color.argb(255, 77, 178, 214); + int fillColor63 = Color.argb(255, 42, 160, 207); + int fillColor68 = Color.argb(255, 31, 110, 162); + + // Local Variables + boolean lightBackground = !darkBackground; + + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForMage.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForMage.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Group 2 + if (darkBackground) { + // Bezier + RectF bezierRect = CacheForMage.bezierRect; + bezierRect.set(3.74f, 5.08f, 27.74f, 28.73f); + Path bezierPath = CacheForMage.bezierPath; + bezierPath.reset(); + bezierPath.moveTo(15.74f, 5.08f); + bezierPath.cubicTo(13.82f, 7.01f, 11.93f, 12.69f, 10.93f, 15.97f); + bezierPath.cubicTo(10.49f, 15.42f, 9.99f, 14.89f, 9.29f, 14.24f); + bezierPath.cubicTo(6.78f, 16.07f, 5.45f, 18.01f, 3.74f, 20.39f); + bezierPath.cubicTo(8.38f, 24.52f, 9.59f, 25.21f, 15.72f, 28.73f); + bezierPath.lineTo(15.74f, 28.72f); + bezierPath.lineTo(15.74f, 28.72f); + bezierPath.lineTo(15.76f, 28.73f); + bezierPath.cubicTo(21.89f, 25.21f, 23.1f, 24.52f, 27.74f, 20.39f); + bezierPath.cubicTo(26.03f, 18.01f, 24.7f, 16.07f, 22.2f, 14.24f); + bezierPath.cubicTo(21.49f, 14.89f, 20.99f, 15.42f, 20.55f, 15.97f); + bezierPath.cubicTo(19.55f, 12.69f, 17.66f, 7.01f, 15.74f, 5.08f); + bezierPath.lineTo(15.74f, 5.08f); + bezierPath.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezierPath.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor60); + canvas.drawPath(bezierPath, paint); + + // Bezier 2 + RectF bezier2Rect = CacheForMage.bezier2Rect; + bezier2Rect.set(15.74f, 18.72f, 25.66f, 26.81f); + Path bezier2Path = CacheForMage.bezier2Path; + bezier2Path.reset(); + bezier2Path.moveTo(15.74f, 21.2f); + bezier2Path.lineTo(17.6f, 20.54f); + bezier2Path.cubicTo(20.76f, 20.23f, 21.98f, 19.36f, 22.51f, 18.72f); + bezier2Path.lineTo(25.66f, 20.13f); + bezier2Path.cubicTo(25.66f, 20.13f, 25.66f, 20.14f, 25.66f, 20.14f); + bezier2Path.cubicTo(25.66f, 20.19f, 25.64f, 20.24f, 25.6f, 20.29f); + bezier2Path.cubicTo(25.56f, 20.34f, 25.5f, 20.4f, 25.44f, 20.46f); + bezier2Path.cubicTo(23.66f, 22.19f, 15.94f, 26.7f, 15.74f, 26.81f); + bezier2Path.lineTo(15.74f, 26.81f); + bezier2Path.lineTo(15.74f, 21.2f); + bezier2Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier2Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor61); + canvas.drawPath(bezier2Path, paint); + + // Bezier 3 + RectF bezier3Rect = CacheForMage.bezier3Rect; + bezier3Rect.set(20.73f, 16.3f, 25.66f, 20.13f); + Path bezier3Path = CacheForMage.bezier3Path; + bezier3Path.reset(); + bezier3Path.moveTo(21.96f, 16.48f); + bezier3Path.cubicTo(22.08f, 16.38f, 22.11f, 16.3f, 22.31f, 16.3f); + bezier3Path.cubicTo(22.93f, 16.34f, 25f, 19f, 25.47f, 19.67f); + bezier3Path.cubicTo(25.57f, 19.81f, 25.66f, 19.99f, 25.66f, 20.13f); + bezier3Path.lineTo(22.51f, 18.72f); + bezier3Path.cubicTo(22.63f, 18.53f, 22.6f, 18.24f, 22.32f, 18.07f); + bezier3Path.cubicTo(21.89f, 17.81f, 21f, 18.56f, 20.78f, 18.22f); + bezier3Path.cubicTo(20.47f, 17.73f, 21.84f, 16.58f, 21.96f, 16.48f); + bezier3Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier3Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor62); + canvas.drawPath(bezier3Path, paint); + + // Bezier 4 + RectF bezier4Rect = CacheForMage.bezier4Rect; + bezier4Rect.set(11f, 8.04f, 15.74f, 23.26f); + Path bezier4Path = CacheForMage.bezier4Path; + bezier4Path.reset(); + bezier4Path.moveTo(15.29f, 8.38f); + bezier4Path.cubicTo(12.48f, 16.41f, 11f, 20.78f, 11f, 20.78f); + bezier4Path.lineTo(15.74f, 23.26f); + bezier4Path.lineTo(15.74f, 8.04f); + bezier4Path.cubicTo(15.55f, 8.04f, 15.37f, 8.15f, 15.29f, 8.38f); + bezier4Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier4Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor63); + canvas.drawPath(bezier4Path, paint); + + // Bezier 5 + RectF bezier5Rect = CacheForMage.bezier5Rect; + bezier5Rect.set(15.74f, 8.04f, 20.48f, 23.26f); + Path bezier5Path = CacheForMage.bezier5Path; + bezier5Path.reset(); + bezier5Path.moveTo(16.19f, 8.38f); + bezier5Path.cubicTo(16.11f, 8.15f, 15.93f, 8.04f, 15.74f, 8.04f); + bezier5Path.lineTo(15.74f, 23.26f); + bezier5Path.lineTo(20.48f, 20.78f); + bezier5Path.cubicTo(20.48f, 20.78f, 19f, 16.41f, 16.19f, 8.38f); + bezier5Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier5Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor61); + canvas.drawPath(bezier5Path, paint); + + // Bezier 6 + RectF bezier6Rect = CacheForMage.bezier6Rect; + bezier6Rect.set(5.82f, 18.72f, 15.74f, 26.81f); + Path bezier6Path = CacheForMage.bezier6Path; + bezier6Path.reset(); + bezier6Path.moveTo(15.74f, 21.2f); + bezier6Path.lineTo(13.89f, 20.54f); + bezier6Path.cubicTo(10.72f, 20.23f, 9.54f, 19.32f, 8.98f, 18.72f); + bezier6Path.lineTo(5.82f, 20.13f); + bezier6Path.cubicTo(5.82f, 20.13f, 5.82f, 20.14f, 5.82f, 20.14f); + bezier6Path.cubicTo(5.83f, 20.19f, 5.84f, 20.24f, 5.88f, 20.29f); + bezier6Path.cubicTo(5.92f, 20.34f, 5.98f, 20.4f, 6.04f, 20.46f); + bezier6Path.cubicTo(7.82f, 22.19f, 15.54f, 26.7f, 15.74f, 26.81f); + bezier6Path.lineTo(15.74f, 26.81f); + bezier6Path.lineTo(15.74f, 21.2f); + bezier6Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier6Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor64); + canvas.drawPath(bezier6Path, paint); + + // Bezier 7 + RectF bezier7Rect = CacheForMage.bezier7Rect; + bezier7Rect.set(5.82f, 16.3f, 10.75f, 20.13f); + Path bezier7Path = CacheForMage.bezier7Path; + bezier7Path.reset(); + bezier7Path.moveTo(9.52f, 16.48f); + bezier7Path.cubicTo(9.4f, 16.38f, 9.37f, 16.3f, 9.17f, 16.3f); + bezier7Path.cubicTo(8.55f, 16.34f, 6.48f, 19f, 6.01f, 19.67f); + bezier7Path.cubicTo(5.91f, 19.81f, 5.82f, 19.99f, 5.82f, 20.13f); + bezier7Path.lineTo(8.98f, 18.72f); + bezier7Path.cubicTo(8.85f, 18.53f, 8.88f, 18.24f, 9.16f, 18.07f); + bezier7Path.cubicTo(9.59f, 17.81f, 10.48f, 18.56f, 10.7f, 18.22f); + bezier7Path.cubicTo(11.01f, 17.73f, 9.64f, 16.58f, 9.52f, 16.48f); + bezier7Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier7Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor65); + canvas.drawPath(bezier7Path, paint); + + // Bezier 8 + RectF bezier8Rect = CacheForMage.bezier8Rect; + bezier8Rect.set(11.22f, 17.9f, 15.74f, 22.71f); + Path bezier8Path = CacheForMage.bezier8Path; + bezier8Path.reset(); + bezier8Path.moveTo(15.74f, 22.71f); + bezier8Path.lineTo(15.74f, 20.05f); + bezier8Path.lineTo(11.99f, 17.9f); + bezier8Path.lineTo(11.22f, 20.01f); + bezier8Path.lineTo(15.74f, 22.71f); + bezier8Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier8Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor66); + canvas.drawPath(bezier8Path, paint); + + // Bezier 9 + RectF bezier9Rect = CacheForMage.bezier9Rect; + bezier9Rect.set(15.74f, 17.9f, 20.27f, 22.71f); + Path bezier9Path = CacheForMage.bezier9Path; + bezier9Path.reset(); + bezier9Path.moveTo(15.74f, 22.71f); + bezier9Path.lineTo(15.74f, 20.05f); + bezier9Path.lineTo(19.5f, 17.9f); + bezier9Path.lineTo(20.27f, 20.01f); + bezier9Path.lineTo(15.74f, 22.71f); + bezier9Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier9Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor67); + canvas.drawPath(bezier9Path, paint); + } + + // Group 3 + if (lightBackground) { + // Bezier 10 + RectF bezier10Rect = CacheForMage.bezier10Rect; + bezier10Rect.set(3.74f, 5.08f, 27.74f, 28.73f); + Path bezier10Path = CacheForMage.bezier10Path; + bezier10Path.reset(); + bezier10Path.moveTo(15.74f, 5.08f); + bezier10Path.cubicTo(13.82f, 7.01f, 11.93f, 12.69f, 10.93f, 15.97f); + bezier10Path.cubicTo(10.49f, 15.42f, 9.99f, 14.89f, 9.29f, 14.24f); + bezier10Path.cubicTo(6.78f, 16.07f, 5.45f, 18.01f, 3.74f, 20.39f); + bezier10Path.cubicTo(8.38f, 24.52f, 9.59f, 25.21f, 15.72f, 28.73f); + bezier10Path.lineTo(15.74f, 28.72f); + bezier10Path.lineTo(15.74f, 28.72f); + bezier10Path.lineTo(15.76f, 28.73f); + bezier10Path.cubicTo(21.89f, 25.21f, 23.1f, 24.52f, 27.74f, 20.39f); + bezier10Path.cubicTo(26.03f, 18.01f, 24.7f, 16.07f, 22.2f, 14.24f); + bezier10Path.cubicTo(21.49f, 14.89f, 20.99f, 15.42f, 20.55f, 15.97f); + bezier10Path.cubicTo(19.55f, 12.69f, 17.66f, 7.01f, 15.74f, 5.08f); + bezier10Path.lineTo(15.74f, 5.08f); + bezier10Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier10Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor68); + canvas.drawPath(bezier10Path, paint); + + // Bezier 11 + RectF bezier11Rect = CacheForMage.bezier11Rect; + bezier11Rect.set(15.74f, 18.72f, 25.66f, 26.81f); + Path bezier11Path = CacheForMage.bezier11Path; + bezier11Path.reset(); + bezier11Path.moveTo(15.74f, 21.2f); + bezier11Path.lineTo(17.6f, 20.54f); + bezier11Path.cubicTo(20.76f, 20.23f, 21.98f, 19.36f, 22.51f, 18.72f); + bezier11Path.lineTo(25.66f, 20.13f); + bezier11Path.cubicTo(25.66f, 20.13f, 25.66f, 20.14f, 25.66f, 20.14f); + bezier11Path.cubicTo(25.66f, 20.19f, 25.64f, 20.24f, 25.6f, 20.29f); + bezier11Path.cubicTo(25.56f, 20.34f, 25.5f, 20.4f, 25.44f, 20.46f); + bezier11Path.cubicTo(23.66f, 22.19f, 15.94f, 26.7f, 15.74f, 26.81f); + bezier11Path.lineTo(15.74f, 26.81f); + bezier11Path.lineTo(15.74f, 21.2f); + bezier11Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier11Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor61); + canvas.drawPath(bezier11Path, paint); + + // Bezier 12 + RectF bezier12Rect = CacheForMage.bezier12Rect; + bezier12Rect.set(20.73f, 16.3f, 25.66f, 20.13f); + Path bezier12Path = CacheForMage.bezier12Path; + bezier12Path.reset(); + bezier12Path.moveTo(21.96f, 16.48f); + bezier12Path.cubicTo(22.08f, 16.38f, 22.11f, 16.3f, 22.31f, 16.3f); + bezier12Path.cubicTo(22.93f, 16.34f, 25f, 19f, 25.47f, 19.67f); + bezier12Path.cubicTo(25.57f, 19.81f, 25.66f, 19.99f, 25.66f, 20.13f); + bezier12Path.lineTo(22.51f, 18.72f); + bezier12Path.cubicTo(22.63f, 18.53f, 22.6f, 18.24f, 22.32f, 18.07f); + bezier12Path.cubicTo(21.89f, 17.81f, 21f, 18.56f, 20.78f, 18.22f); + bezier12Path.cubicTo(20.47f, 17.73f, 21.84f, 16.58f, 21.96f, 16.48f); + bezier12Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier12Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor62); + canvas.drawPath(bezier12Path, paint); + + // Bezier 13 + RectF bezier13Rect = CacheForMage.bezier13Rect; + bezier13Rect.set(11f, 8.04f, 15.74f, 23.26f); + Path bezier13Path = CacheForMage.bezier13Path; + bezier13Path.reset(); + bezier13Path.moveTo(15.29f, 8.38f); + bezier13Path.cubicTo(12.48f, 16.41f, 11f, 20.78f, 11f, 20.78f); + bezier13Path.lineTo(15.74f, 23.26f); + bezier13Path.lineTo(15.74f, 8.04f); + bezier13Path.cubicTo(15.55f, 8.04f, 15.37f, 8.15f, 15.29f, 8.38f); + bezier13Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier13Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor63); + canvas.drawPath(bezier13Path, paint); + + // Bezier 14 + RectF bezier14Rect = CacheForMage.bezier14Rect; + bezier14Rect.set(15.74f, 8.04f, 20.48f, 23.26f); + Path bezier14Path = CacheForMage.bezier14Path; + bezier14Path.reset(); + bezier14Path.moveTo(16.19f, 8.38f); + bezier14Path.cubicTo(16.11f, 8.15f, 15.93f, 8.04f, 15.74f, 8.04f); + bezier14Path.lineTo(15.74f, 23.26f); + bezier14Path.lineTo(20.48f, 20.78f); + bezier14Path.cubicTo(20.48f, 20.78f, 19f, 16.41f, 16.19f, 8.38f); + bezier14Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier14Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor61); + canvas.drawPath(bezier14Path, paint); + + // Bezier 15 + RectF bezier15Rect = CacheForMage.bezier15Rect; + bezier15Rect.set(5.82f, 18.72f, 15.74f, 26.81f); + Path bezier15Path = CacheForMage.bezier15Path; + bezier15Path.reset(); + bezier15Path.moveTo(15.74f, 21.2f); + bezier15Path.lineTo(13.89f, 20.54f); + bezier15Path.cubicTo(10.72f, 20.23f, 9.54f, 19.32f, 8.98f, 18.72f); + bezier15Path.lineTo(5.82f, 20.13f); + bezier15Path.cubicTo(5.82f, 20.13f, 5.82f, 20.14f, 5.82f, 20.14f); + bezier15Path.cubicTo(5.83f, 20.19f, 5.84f, 20.24f, 5.88f, 20.29f); + bezier15Path.cubicTo(5.92f, 20.34f, 5.98f, 20.4f, 6.04f, 20.46f); + bezier15Path.cubicTo(7.82f, 22.19f, 15.54f, 26.7f, 15.74f, 26.81f); + bezier15Path.lineTo(15.74f, 26.81f); + bezier15Path.lineTo(15.74f, 21.2f); + bezier15Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier15Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor64); + canvas.drawPath(bezier15Path, paint); + + // Bezier 16 + RectF bezier16Rect = CacheForMage.bezier16Rect; + bezier16Rect.set(5.82f, 16.3f, 10.75f, 20.13f); + Path bezier16Path = CacheForMage.bezier16Path; + bezier16Path.reset(); + bezier16Path.moveTo(9.52f, 16.48f); + bezier16Path.cubicTo(9.4f, 16.38f, 9.37f, 16.3f, 9.17f, 16.3f); + bezier16Path.cubicTo(8.55f, 16.34f, 6.48f, 19f, 6.01f, 19.67f); + bezier16Path.cubicTo(5.91f, 19.81f, 5.82f, 19.99f, 5.82f, 20.13f); + bezier16Path.lineTo(8.98f, 18.72f); + bezier16Path.cubicTo(8.85f, 18.53f, 8.88f, 18.24f, 9.16f, 18.07f); + bezier16Path.cubicTo(9.59f, 17.81f, 10.48f, 18.56f, 10.7f, 18.22f); + bezier16Path.cubicTo(11.01f, 17.73f, 9.64f, 16.58f, 9.52f, 16.48f); + bezier16Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier16Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor65); + canvas.drawPath(bezier16Path, paint); + + // Bezier 17 + RectF bezier17Rect = CacheForMage.bezier17Rect; + bezier17Rect.set(11.22f, 17.9f, 15.74f, 22.71f); + Path bezier17Path = CacheForMage.bezier17Path; + bezier17Path.reset(); + bezier17Path.moveTo(15.74f, 22.71f); + bezier17Path.lineTo(15.74f, 20.05f); + bezier17Path.lineTo(11.99f, 17.9f); + bezier17Path.lineTo(11.22f, 20.01f); + bezier17Path.lineTo(15.74f, 22.71f); + bezier17Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier17Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor69); + canvas.drawPath(bezier17Path, paint); + + // Bezier 18 + RectF bezier18Rect = CacheForMage.bezier18Rect; + bezier18Rect.set(15.74f, 17.9f, 20.27f, 22.71f); + Path bezier18Path = CacheForMage.bezier18Path; + bezier18Path.reset(); + bezier18Path.moveTo(15.74f, 22.71f); + bezier18Path.lineTo(15.74f, 20.05f); + bezier18Path.lineTo(19.5f, 17.9f); + bezier18Path.lineTo(20.27f, 20.01f); + bezier18Path.lineTo(15.74f, 22.71f); + bezier18Path.close(); + + paint.reset(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG); + bezier18Path.setFillType(Path.FillType.EVEN_ODD); + paint.setStyle(Paint.Style.FILL); + paint.setColor(fillColor70); + canvas.drawPath(bezier18Path, paint); + } + + canvas.restore(); + } + + private static class CacheForMageDarkBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawMageDarkBg(Canvas canvas) { + HabiticaIcons.drawMageDarkBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawMageDarkBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForMageDarkBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForMageDarkBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForMageDarkBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForMageDarkBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawMage(canvas, symbolTargetRect, ResizingBehavior.Stretch, true); + canvas.restore(); + + canvas.restore(); + } + + private static class CacheForMageLightBg { + private static RectF originalFrame = new RectF(0f, 0f, 32f, 32f); + private static RectF resizedFrame = new RectF(); + private static RectF symbolRect = new RectF(); + private static RectF symbolTargetRect = new RectF(); + } + + public static void drawMageLightBg(Canvas canvas) { + HabiticaIcons.drawMageLightBg(canvas, new RectF(0f, 0f, 32f, 32f), ResizingBehavior.AspectFit); + } + + public static void drawMageLightBg(Canvas canvas, RectF targetFrame, ResizingBehavior resizing) { + // Resize to Target Frame + canvas.save(); + RectF resizedFrame = CacheForMageLightBg.resizedFrame; + HabiticaIcons.resizingBehaviorApply(resizing, CacheForMageLightBg.originalFrame, targetFrame, resizedFrame); + canvas.translate(resizedFrame.left, resizedFrame.top); + canvas.scale(resizedFrame.width() / 32f, resizedFrame.height() / 32f); + + // Symbol + RectF symbolRect = CacheForMageLightBg.symbolRect; + symbolRect.set(0f, 0f, 32f, 32f); + canvas.save(); + canvas.clipRect(symbolRect); + canvas.translate(symbolRect.left, symbolRect.top); + RectF symbolTargetRect = CacheForMageLightBg.symbolTargetRect; + symbolTargetRect.set(0f, 0f, symbolRect.width(), symbolRect.height()); + HabiticaIcons.drawMage(canvas, symbolTargetRect, ResizingBehavior.Stretch, false); + canvas.restore(); + + canvas.restore(); + } + // Canvas Images // Tab @@ -3759,14 +6634,10 @@ public class HabiticaIcons { return imageOfHeartLightBg; } - private static Bitmap imageOfWarrior = null; - public static Bitmap imageOfWarrior() { - if (imageOfWarrior != null) - return imageOfWarrior; - - imageOfWarrior = Bitmap.createBitmap(25, 25, Bitmap.Config.ARGB_8888); + public static Bitmap imageOfWarrior(boolean darkBackground) { + Bitmap imageOfWarrior = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(imageOfWarrior); - HabiticaIcons.drawWarrior(canvas); + HabiticaIcons.drawWarrior(canvas, darkBackground); return imageOfWarrior; } @@ -3911,6 +6782,102 @@ public class HabiticaIcons { return imageOfGem_36; } + private static Bitmap imageOfWarriorLightBg = null; + public static Bitmap imageOfWarriorLightBg() { + if (imageOfWarriorLightBg != null) + return imageOfWarriorLightBg; + + imageOfWarriorLightBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfWarriorLightBg); + HabiticaIcons.drawWarriorLightBg(canvas); + + return imageOfWarriorLightBg; + } + + private static Bitmap imageOfWarriorDarkBg = null; + public static Bitmap imageOfWarriorDarkBg() { + if (imageOfWarriorDarkBg != null) + return imageOfWarriorDarkBg; + + imageOfWarriorDarkBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfWarriorDarkBg); + HabiticaIcons.drawWarriorDarkBg(canvas); + + return imageOfWarriorDarkBg; + } + + private static Bitmap imageOfRogueLightBg = null; + public static Bitmap imageOfRogueLightBg() { + if (imageOfRogueLightBg != null) + return imageOfRogueLightBg; + + imageOfRogueLightBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfRogueLightBg); + HabiticaIcons.drawRogueLightBg(canvas); + + return imageOfRogueLightBg; + } + + private static Bitmap imageOfRogueDarkBg = null; + public static Bitmap imageOfRogueDarkBg() { + if (imageOfRogueDarkBg != null) + return imageOfRogueDarkBg; + + imageOfRogueDarkBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfRogueDarkBg); + HabiticaIcons.drawRogueDarkBg(canvas); + + return imageOfRogueDarkBg; + } + + private static Bitmap imageOfHealerLightBg = null; + public static Bitmap imageOfHealerLightBg() { + if (imageOfHealerLightBg != null) + return imageOfHealerLightBg; + + imageOfHealerLightBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfHealerLightBg); + HabiticaIcons.drawHealerLightBg(canvas); + + return imageOfHealerLightBg; + } + + private static Bitmap imageOfHealerDarkBg = null; + public static Bitmap imageOfHealerDarkBg() { + if (imageOfHealerDarkBg != null) + return imageOfHealerDarkBg; + + imageOfHealerDarkBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfHealerDarkBg); + HabiticaIcons.drawHealerDarkBg(canvas); + + return imageOfHealerDarkBg; + } + + private static Bitmap imageOfMageDarkBg = null; + public static Bitmap imageOfMageDarkBg() { + if (imageOfMageDarkBg != null) + return imageOfMageDarkBg; + + imageOfMageDarkBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfMageDarkBg); + HabiticaIcons.drawMageDarkBg(canvas); + + return imageOfMageDarkBg; + } + + private static Bitmap imageOfMageLightBg = null; + public static Bitmap imageOfMageLightBg() { + if (imageOfMageLightBg != null) + return imageOfMageLightBg; + + imageOfMageLightBg = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfMageLightBg); + HabiticaIcons.drawMageLightBg(canvas); + + return imageOfMageLightBg; + } + // Resizing Behavior public static void resizingBehaviorApply(ResizingBehavior behavior, RectF rect, RectF target, RectF result) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java index 014dc2384..85d9e1739 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java @@ -146,20 +146,6 @@ public class HabiticaIconsHelper { return imageOfHeartLightBg; } - private static Bitmap imageOfWarrior = null; - public static Bitmap imageOfWarrior() { - if (imageOfWarrior != null) - return imageOfWarrior; - - int size = scaleSize(25); - imageOfWarrior = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(imageOfWarrior); - canvas.scale(displayDensity, displayDensity); - HabiticaIcons.drawWarrior(canvas); - - return imageOfWarrior; - } - private static Bitmap imageOfHeartLarge = null; public static Bitmap imageOfHeartLarge() { if (imageOfHeartLarge != null) @@ -322,4 +308,116 @@ public class HabiticaIconsHelper { return imageOfGem_36; } + + private static Bitmap imageOfWarriorLightBg = null; + public static Bitmap imageOfWarriorLightBg() { + if (imageOfWarriorLightBg != null) + return imageOfWarriorLightBg; + + int size = scaleSize(32); + imageOfWarriorLightBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfWarriorLightBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawWarriorLightBg(canvas); + + return imageOfWarriorLightBg; + } + + private static Bitmap imageOfWarriorDarkBg = null; + public static Bitmap imageOfWarriorDarkBg() { + if (imageOfWarriorDarkBg != null) + return imageOfWarriorDarkBg; + + int size = scaleSize(32); + imageOfWarriorDarkBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfWarriorDarkBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawWarriorDarkBg(canvas); + + return imageOfWarriorDarkBg; + } + + private static Bitmap imageOfRogueLightBg = null; + public static Bitmap imageOfRogueLightBg() { + if (imageOfRogueLightBg != null) + return imageOfRogueLightBg; + + int size = scaleSize(32); + imageOfRogueLightBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfRogueLightBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawRogueLightBg(canvas); + + return imageOfRogueLightBg; + } + + private static Bitmap imageOfRogueDarkBg = null; + public static Bitmap imageOfRogueDarkBg() { + if (imageOfRogueDarkBg != null) + return imageOfRogueDarkBg; + + int size = scaleSize(32); + imageOfRogueDarkBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfRogueDarkBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawRogueDarkBg(canvas); + + return imageOfRogueDarkBg; + } + + private static Bitmap imageOfHealerLightBg = null; + public static Bitmap imageOfHealerLightBg() { + if (imageOfHealerLightBg != null) + return imageOfHealerLightBg; + + int size = scaleSize(32); + imageOfHealerLightBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfHealerLightBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawHealerLightBg(canvas); + + return imageOfHealerLightBg; + } + + private static Bitmap imageOfHealerDarkBg = null; + public static Bitmap imageOfHealerDarkBg() { + if (imageOfHealerDarkBg != null) + return imageOfHealerDarkBg; + + int size = scaleSize(32); + imageOfHealerDarkBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfHealerDarkBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawHealerDarkBg(canvas); + + return imageOfHealerDarkBg; + } + + private static Bitmap imageOfMageDarkBg = null; + public static Bitmap imageOfMageDarkBg() { + if (imageOfMageDarkBg != null) + return imageOfMageDarkBg; + + int size = scaleSize(32); + imageOfMageDarkBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfMageDarkBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawMageDarkBg(canvas); + + return imageOfMageDarkBg; + } + + private static Bitmap imageOfMageLightBg = null; + public static Bitmap imageOfMageLightBg() { + if (imageOfMageLightBg != null) + return imageOfMageLightBg; + + int size = scaleSize(32); + imageOfMageLightBg = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(imageOfMageLightBg); + canvas.scale(displayDensity, displayDensity); + HabiticaIcons.drawMageLightBg(canvas); + + return imageOfMageLightBg; + } } diff --git a/build.gradle b/build.gradle index 36b2772de..a6e98594e 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { classpath 'com.google.gms:google-services:3.0.0' classpath 'me.tatarka:gradle-retrolambda:3.3.1' classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' - classpath "io.realm:realm-gradle-plugin:3.5.0" + classpath "io.realm:realm-gradle-plugin:3.7.0" } // Exclude the version that the android plugin depends on.