Use outline icons when icon color is white

This commit is contained in:
Admar Schoonen 2023-05-29 10:46:45 +02:00
parent 624d75c033
commit 868c46f7d6
1 changed files with 79 additions and 19 deletions

View File

@ -567,6 +567,9 @@ class MyClockWidget(FloatLayout):
widget.saved_attrs = widget.height, widget.size_hint_y, widget.opacity, widget.disabled
widget.height, widget.size_hint_y, widget.opacity, widget.disabled = 0, None, 0, True
def is_widget_hidden(self, widget):
return hasattr(widget, 'saved_attrs')
def draw_numbers(self):
"""
Add number labels when added in widget hierarchy
@ -652,7 +655,7 @@ class MyClockWidget(FloatLayout):
def draw_paqi_expectation(self):
self.draw_precipitation_paqi_expectation(self.paqi, self.paqi_thresholds, 0.32)
def draw_icon_helper(self, color, img_source, label):
def paint_icon(self, color, img_source, label):
c = (int(256 * color[0]), int(256 * color[1]), int(256 * color[2]), int(256))
tmp = Image.new('RGBA', img_source.size, color = c)
img_modified = ImageChops.multiply(tmp, img_source)
@ -665,38 +668,89 @@ class MyClockWidget(FloatLayout):
icon = self.ids[label]
icon.texture = im.texture
def draw_icon_helper(self, x, x_thresholds, x_label, L, color_prev, img):
N = min(L, len(x))
colors = self.calculate_colors(x[:N], x_thresholds)
color = colors[x.index(max(x[:N]))]
if color_prev != color:
# Color has changed
if color == [1, 1, 1]:
img = Image.open("icons/" + x_label + "_outline.png")
else:
if color_prev == [1, 1, 1]:
img = Image.open("icons/" + x_label + ".png")
self.pollen_color_prev = color
self.paint_icon(color, img, "icon_" + x_label)
return color
def draw_icon_uvi(self):
if hasattr(self, 'image_uvi') == False:
self.image_uvi = Image.open("icons/uvi.png")
colors = self.calculate_colors(self.uvi[:1], self.uvi_thresholds)
color = colors[0]
if len(self.uvi) == 0:
if self.is_widget_hidden(self.ids["icon_uvi"]) == False:
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_uvi"], True])
return
if hasattr(self, 'uvi_color_prev') == False or self.uvi_color_prev != color:
self.uvi_color_prev = color
self.draw_icon_helper(color, self.image_uvi, "icon_uvi")
if self.is_widget_hidden(self.ids["icon_uvi"]):
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_uvi"], False])
if hasattr(self, 'uvi_color_prev') == False:
self.uvi_color_prev = []
if hasattr(self, 'uvi_color') == False:
self.uvi_color = []
color = self.draw_icon_helper(self.uvi, self.uvi_thresholds, "uvi", 1, self.uvi_color_prev, self.image_uvi)
self.uvi_color_prev = self.uvi_color
self.uvi_color = color
def draw_icon_pollen(self):
if hasattr(self, 'image_pollen') == False:
self.image_pollen = Image.open("icons/pollen.png")
colors = self.calculate_colors(self.pollen[:12], self.pollen_thresholds)
color = colors[self.pollen.index(max(self.pollen[:12]))]
if len(self.pollen) == 0:
if self.is_widget_hidden(self.ids["icon_pollen"]) == False:
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_pollen"], True])
return
if hasattr(self, 'pollen_color_prev') == False or self.pollen_color_prev != color:
self.pollen_color_prev = color
self.draw_icon_helper(color, self.image_pollen, "icon_pollen")
if self.is_widget_hidden(self.ids["icon_pollen"]):
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_pollen"], False])
if hasattr(self, 'pollen_color_prev') == False:
self.pollen_color_prev = []
if hasattr(self, 'pollen_color') == False:
self.pollen_color = []
color = self.draw_icon_helper(self.pollen, self.pollen_thresholds, "pollen", 12, self.pollen_color_prev, self.image_pollen)
self.pollen_color_prev = self.pollen_color
self.pollen_color = color
def draw_icon_aqi(self):
if hasattr(self, 'image_aqi') == False:
self.image_aqi = Image.open("icons/aqi.png")
colors = self.calculate_colors(self.aqi[:12], self.aqi_thresholds)
color = colors[self.aqi.index(max(self.aqi[:12]))]
if len(self.aqi) == 0:
if self.is_widget_hidden(self.ids["icon_aqi"]) == False:
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_aqi"], True])
return
if hasattr(self, 'aqi_color_prev') == False or self.aqi_color_prev != color:
self.aqi_color_prev = color
self.draw_icon_helper(color, self.image_aqi, "icon_aqi")
if self.is_widget_hidden(self.ids["icon_aqi"]):
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_aqi"], False])
if hasattr(self, 'aqi_color_prev') == False:
self.aqi_color_prev = []
if hasattr(self, 'aqi_color') == False:
self.aqi_color = []
color = self.draw_icon_helper(self.aqi, self.aqi_thresholds, "aqi", 12, self.aqi_color_prev, self.image_aqi)
self.aqi_color_prev = self.aqi_color
self.aqi_color = color
def draw_icons(self):
self.draw_icon_uvi()
@ -1010,10 +1064,16 @@ class MyClockWidget(FloatLayout):
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["face_plate"], False])
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["face"], False])
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["hands"], False])
if self.view == "clock":
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_uvi"], False])
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_pollen"], False])
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_aqi"], False])
if len(self.uvi) > 0:
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_uvi"], False])
if len(self.pollen) > 0:
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_pollen"], False])
if len(self.aqi) > 0:
self.draw_list_curr_frame.append(["self.hide_widget", self.ids["icon_aqi"], False])
if self.view == "set_alarm":
t = self.settings.alarm_time