From de3668db964bdd195a69e2abbbc471e5ee5a5993 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Fri, 1 Jan 2021 11:32:38 -0600 Subject: [PATCH] HistoryChart: Fix transparency --- .../isoron/uhabits/widgets/HistoryWidget.kt | 6 ++--- .../src/main/res/layout/canvas_test.xml | 3 ++- .../assets/test/views/BarChart/themeDark.png | Bin 0 -> 9935 bytes .../test/views/BarChart/themeWidget.png | Bin 0 -> 8903 bytes .../assets/test/views/CanvasTest.png | Bin 24849 -> 26912 bytes .../HistoryChart/{dark.png => themeDark.png} | Bin .../test/views/HistoryChart/themeWidget.png | Bin 0 -> 42638 bytes .../java/org/isoron/platform/gui/Canvas.kt | 17 +++++++++----- .../java/org/isoron/platform/gui/Color.kt | 17 ++++++++++++-- .../isoron/uhabits/core/ui/views/BarChart.kt | 21 +++--------------- .../uhabits/core/ui/views/HistoryChart.kt | 20 +++++++++++------ .../isoron/uhabits/core/ui/views/Themes.kt | 11 +++++++-- .../uhabits/core/ui/views/BarChartTest.kt | 12 ++++++++++ .../uhabits/core/ui/views/HistoryChartTest.kt | 10 +++++++-- 14 files changed, 77 insertions(+), 40 deletions(-) create mode 100644 android/uhabits-core/assets/test/views/BarChart/themeDark.png create mode 100644 android/uhabits-core/assets/test/views/BarChart/themeWidget.png rename android/uhabits-core/assets/test/views/HistoryChart/{dark.png => themeDark.png} (100%) create mode 100644 android/uhabits-core/assets/test/views/HistoryChart/themeWidget.png diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/HistoryWidget.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/HistoryWidget.kt index 5f69d9b53..353f382f8 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/HistoryWidget.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/HistoryWidget.kt @@ -26,8 +26,8 @@ import org.isoron.platform.gui.AndroidDataView import org.isoron.platform.time.JavaLocalDateFormatter import org.isoron.uhabits.core.models.Habit import org.isoron.uhabits.core.ui.screens.habits.show.views.HistoryCardPresenter -import org.isoron.uhabits.core.ui.views.DarkTheme import org.isoron.uhabits.core.ui.views.HistoryChart +import org.isoron.uhabits.core.ui.views.WidgetTheme import org.isoron.uhabits.core.utils.DateUtils import org.isoron.uhabits.widgets.views.GraphWidgetView import java.util.Locale @@ -51,7 +51,7 @@ class HistoryWidget( habit = habit, isSkipEnabled = prefs.isSkipEnabled, firstWeekday = prefs.firstWeekday, - theme = DarkTheme(), + theme = WidgetTheme(), ) (widgetView.dataView as AndroidDataView).apply { (this.view as HistoryChart).series = model.series @@ -65,7 +65,7 @@ class HistoryWidget( view = HistoryChart( today = DateUtils.getTodayWithOffset().toLocalDate(), paletteColor = habit.color, - theme = DarkTheme(), + theme = WidgetTheme(), dateFormatter = JavaLocalDateFormatter(Locale.getDefault()) ) } diff --git a/android/uhabits-android/src/main/res/layout/canvas_test.xml b/android/uhabits-android/src/main/res/layout/canvas_test.xml index 6faa0df2e..41c8c2909 100644 --- a/android/uhabits-android/src/main/res/layout/canvas_test.xml +++ b/android/uhabits-android/src/main/res/layout/canvas_test.xml @@ -20,7 +20,8 @@ + android:layout_height="match_parent" + android:background="#ffff00"> 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 G!2bedSxCwN literal 0 HcmV?d00001 diff --git a/android/uhabits-core/assets/test/views/CanvasTest.png b/android/uhabits-core/assets/test/views/CanvasTest.png index 75b3d8f2095e497c76b49afa0430113e497ff909..c8e831e6ebd97e588461c250f2350da868ba7d1e 100644 GIT binary patch literal 26912 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 UaBYNBag?0wowpSHc;Lc+0j2Vci2wiq literal 24849 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 N44$rjF6*2UngH#{jKcr` diff --git a/android/uhabits-core/assets/test/views/HistoryChart/dark.png b/android/uhabits-core/assets/test/views/HistoryChart/themeDark.png similarity index 100% rename from android/uhabits-core/assets/test/views/HistoryChart/dark.png rename to android/uhabits-core/assets/test/views/HistoryChart/themeDark.png diff --git a/android/uhabits-core/assets/test/views/HistoryChart/themeWidget.png b/android/uhabits-core/assets/test/views/HistoryChart/themeWidget.png new file mode 100644 index 0000000000000000000000000000000000000000..8c39deac3c337c4eecde9ad3901b8cb2600b7737 GIT binary patch literal 42638 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 n7v_Lc|98LoD{4(lnm;Gn4`8PV8}e_xxVQhVs= 1) relativeLuminosity else 1 / relativeLuminosity } + + fun withAlpha(newAlpha: Double) = Color(red, green, blue, newAlpha) + + companion object { + val TRANSPARENT = Color(0.0, 0.0, 0.0, 0.0) + val RED = Color(1.0, 0.0, 0.0, 1.0) + val GREEN = Color(0.0, 1.0, 0.0, 1.0) + val BLUE = Color(1.0, 0.0, 1.0, 1.0) + val YELLOW = Color(1.0, 1.0, 0.0, 1.0) + val MAGENTA = Color(1.0, 0.0, 1.0, 1.0) + val CYAN = Color(0.0, 1.0, 1.0, 1.0) + val WHITE = Color(1.0, 1.0, 1.0, 1.0) + val BLACK = Color(0.0, 0.0, 0.0, 1.0) + } } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/BarChart.kt b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/BarChart.kt index 533b3a69e..c272e937e 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/BarChart.kt +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/BarChart.kt @@ -49,7 +49,6 @@ class BarChart( var barMargin = 3.0 var barWidth = 12.0 var nGridlines = 6 - var backgroundColor = theme.cardBackgroundColor override val dataColumnWidth: Double get() = barWidth + barMargin * 2 @@ -67,8 +66,8 @@ class BarChart( var maxValue = series.map { it.max()!! }.max()!! maxValue = max(maxValue, 1.0) - canvas.setColor(backgroundColor) - canvas.fillRect(0.0, 0.0, width, height) + canvas.setColor(theme.cardBackgroundColor) + canvas.fill() fun barGroupOffset(c: Int) = marginLeft + paddingLeft + (c) * barGroupWidth @@ -97,13 +96,6 @@ class BarChart( canvas.fillCircle(x + barWidth - r, y + r, r) canvas.setFontSize(theme.smallTextSize) canvas.setTextAlign(TextAlign.CENTER) - canvas.setColor(backgroundColor) - canvas.fillRect( - x - barMargin, - y - theme.smallTextSize * 1.25, - barWidth + 2 * barMargin, - theme.smallTextSize * 1.0 - ) canvas.setColor(colors[s]) canvas.drawText( value.toShortString(), @@ -119,12 +111,7 @@ class BarChart( fun drawMajorGrid() { canvas.setStrokeWidth(1.0) if (nSeries > 1) { - canvas.setColor( - backgroundColor.blendWith( - theme.lowContrastTextColor, - 0.5 - ) - ) + canvas.setColor(theme.lowContrastTextColor.withAlpha(0.5)) for (c in 0 until nColumns - 1) { val x = barGroupOffset(c) canvas.drawLine(x, paddingTop, x, paddingTop + maxBarHeight) @@ -141,8 +128,6 @@ class BarChart( fun drawAxis() { val y = paddingTop + maxBarHeight - canvas.setColor(backgroundColor) - canvas.fillRect(0.0, y, width, height - y) canvas.setColor(theme.lowContrastTextColor) canvas.drawLine(0.0, y, width, y) canvas.setColor(theme.mediumContrastTextColor) diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/HistoryChart.kt b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/HistoryChart.kt index 193b7011c..4455bda28 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/HistoryChart.kt +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/HistoryChart.kt @@ -33,7 +33,7 @@ class HistoryChart( var today: LocalDate, var paletteColor: PaletteColor, var theme: Theme, - var dateFormatter: LocalDateFormatter + var dateFormatter: LocalDateFormatter, ) : DataView { enum class Square { @@ -61,8 +61,10 @@ class HistoryChart( override fun draw(canvas: Canvas) { val width = canvas.getWidth() val height = canvas.getHeight() + canvas.setColor(theme.cardBackgroundColor) - canvas.fillRect(0.0, 0.0, width, height) + canvas.fill() + squareSize = round((height - 2 * padding) / 8.0) canvas.setFontSize(height * 0.06) @@ -98,7 +100,7 @@ class HistoryChart( canvas: Canvas, column: Int, topDate: LocalDate, - topOffset: Int + topOffset: Int, ) { drawHeader(canvas, column, topDate) repeat(7) { row -> @@ -150,7 +152,7 @@ class HistoryChart( width: Double, height: Double, date: LocalDate, - offset: Int + offset: Int, ) { val value = if (offset >= series.size) Square.OFF else series[offset] @@ -187,9 +189,13 @@ class HistoryChart( } } - val c1 = squareColor.contrast(theme.cardBackgroundColor) - val c2 = squareColor.contrast(theme.mediumContrastTextColor) - val textColor = if (c1 > c2) theme.cardBackgroundColor else theme.mediumContrastTextColor + val textColor = if (theme.cardBackgroundColor == Color.TRANSPARENT) { + theme.highContrastTextColor + } else { + val c1 = squareColor.contrast(theme.cardBackgroundColor) + val c2 = squareColor.contrast(theme.mediumContrastTextColor) + if (c1 > c2) theme.cardBackgroundColor else theme.mediumContrastTextColor + } canvas.setColor(textColor) canvas.setTextAlign(TextAlign.CENTER) diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/Themes.kt b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/Themes.kt index 525977858..5d46b9fcd 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/Themes.kt +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/views/Themes.kt @@ -66,9 +66,9 @@ abstract class Theme { val regularTextSize = 17.0 } -class LightTheme : Theme() +open class LightTheme : Theme() -class DarkTheme : Theme() { +open class DarkTheme : Theme() { override val appBackgroundColor = Color(0x212121) override val cardBackgroundColor = Color(0x303030) override val headerBackgroundColor = Color(0x212121) @@ -108,3 +108,10 @@ class DarkTheme : Theme() { } } } + +class WidgetTheme : LightTheme() { + override val cardBackgroundColor = Color.TRANSPARENT + override val highContrastTextColor = Color.WHITE + override val mediumContrastTextColor = Color.WHITE.withAlpha(0.50) + override val lowContrastTextColor = Color.WHITE.withAlpha(0.10) +} \ No newline at end of file diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/views/BarChartTest.kt b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/views/BarChartTest.kt index 97ac8a601..1b414b32a 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/views/BarChartTest.kt +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/views/BarChartTest.kt @@ -46,6 +46,18 @@ class BarChartTest { assertRenders(300, 200, "$base/base.png", component) } + @Test + fun testDrawDarkTheme() = runBlocking { + component.theme = DarkTheme() + assertRenders(300, 200, "$base/themeDark.png", component) + } + + @Test + fun testDrawWidgetTheme() = runBlocking { + component.theme = WidgetTheme() + assertRenders(300, 200, "$base/themeWidget.png", component) + } + @Test fun testDrawWithOffset() = runBlocking { component.dataOffset = 5 diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/views/HistoryChartTest.kt b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/views/HistoryChartTest.kt index 277659709..e9d8a8e87 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/views/HistoryChartTest.kt +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/views/HistoryChartTest.kt @@ -31,6 +31,7 @@ import org.isoron.uhabits.core.ui.views.HistoryChart.Square.HATCHED import org.isoron.uhabits.core.ui.views.HistoryChart.Square.OFF import org.isoron.uhabits.core.ui.views.HistoryChart.Square.ON import org.isoron.uhabits.core.ui.views.LightTheme +import org.isoron.uhabits.core.ui.views.WidgetTheme import org.junit.Test import java.util.Locale @@ -70,7 +71,6 @@ class HistoryChartTest { } // TODO: Label overflow - // TODO: Transparent // TODO: onClick // TODO: HistoryEditorDialog // TODO: Remove excessive padding on widgets @@ -89,7 +89,13 @@ class HistoryChartTest { @Test fun testDrawDarkTheme() = runBlocking { view.theme = DarkTheme() - assertRenders(400, 200, "$base/dark.png", view) + assertRenders(400, 200, "$base/themeDark.png", view) + } + + @Test + fun testDrawWidgetTheme() = runBlocking { + view.theme = WidgetTheme() + assertRenders(400, 200, "$base/themeWidget.png", view) } @Test