Fix multiple color changes of foreground or time midground
This commit is contained in:
+30
-10
@@ -36,6 +36,8 @@ static GBitmap *s_c_icon;
|
|||||||
static GBitmap *s_h_icon;
|
static GBitmap *s_h_icon;
|
||||||
static GBitmap *s_e_icon;
|
static GBitmap *s_e_icon;
|
||||||
static GBitmap *s_f_icon;
|
static GBitmap *s_f_icon;
|
||||||
|
static GColor s_applied_fg = GColorWhite;
|
||||||
|
static GColor s_applied_time_mg = GColorWhite;
|
||||||
|
|
||||||
// tracking statics
|
// tracking statics
|
||||||
static int s_batt_level;
|
static int s_batt_level;
|
||||||
@@ -102,6 +104,31 @@ static void fuel_mg_update_proc(Layer *layer, GContext *ctx) {
|
|||||||
temp_fuel_mg_update_proc_helper(layer, ctx, true);
|
temp_fuel_mg_update_proc_helper(layer, ctx, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void apply_fg_color(GColor new_color) {
|
||||||
|
if (new_color.argb == s_applied_fg.argb) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 10; ++i) {
|
||||||
|
replace_gbitmap_color(s_applied_fg, new_color, s_font_bitmaps[i], NULL);
|
||||||
|
}
|
||||||
|
replace_gbitmap_color(s_applied_fg, new_color, s_c_icon, NULL);
|
||||||
|
replace_gbitmap_color(s_applied_fg, new_color, s_h_icon, NULL);
|
||||||
|
replace_gbitmap_color(s_applied_fg, new_color, s_e_icon, NULL);
|
||||||
|
replace_gbitmap_color(s_applied_fg, new_color, s_f_icon, NULL);
|
||||||
|
|
||||||
|
s_applied_fg = new_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void apply_time_mg_color(GColor new_color) {
|
||||||
|
if (!s_time_mg_8 || new_color.argb == s_applied_time_mg.argb) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
replace_gbitmap_color(s_applied_time_mg, new_color, s_time_mg_8, NULL);
|
||||||
|
s_applied_time_mg = new_color;
|
||||||
|
}
|
||||||
|
|
||||||
static void main_window_load() {
|
static void main_window_load() {
|
||||||
Layer *window_layer = window_get_root_layer(s_main_window);
|
Layer *window_layer = window_get_root_layer(s_main_window);
|
||||||
|
|
||||||
@@ -116,7 +143,8 @@ static void main_window_load() {
|
|||||||
|
|
||||||
if (settings.ShowTimeMG) {
|
if (settings.ShowTimeMG) {
|
||||||
s_time_mg_8 = gbitmap_create_with_resource(RESOURCE_ID_8);
|
s_time_mg_8 = gbitmap_create_with_resource(RESOURCE_ID_8);
|
||||||
replace_gbitmap_color(GColorWhite, settings.ColorMGTime, s_time_mg_8, NULL);
|
s_applied_time_mg = GColorWhite;
|
||||||
|
apply_time_mg_color(settings.ColorMGTime);
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
s_time_mg_layers[i] = bitmap_layer_create(s_time_grects[i]);
|
s_time_mg_layers[i] = bitmap_layer_create(s_time_grects[i]);
|
||||||
bitmap_layer_set_bitmap(s_time_mg_layers[i], s_time_mg_8);
|
bitmap_layer_set_bitmap(s_time_mg_layers[i], s_time_mg_8);
|
||||||
@@ -138,15 +166,7 @@ static void main_window_load() {
|
|||||||
bitmap_layer_set_compositing_mode(s_e_layer, GCompOpSet);
|
bitmap_layer_set_compositing_mode(s_e_layer, GCompOpSet);
|
||||||
bitmap_layer_set_compositing_mode(s_f_layer, GCompOpSet);
|
bitmap_layer_set_compositing_mode(s_f_layer, GCompOpSet);
|
||||||
|
|
||||||
if (settings.ColorFG.argb != GColorWhite.argb) {
|
apply_fg_color(settings.ColorFG);
|
||||||
for (int i = 0; i < 10; ++i) {
|
|
||||||
replace_gbitmap_color(GColorWhite, settings.ColorFG, s_font_bitmaps[i], NULL);
|
|
||||||
}
|
|
||||||
replace_gbitmap_color(GColorWhite, settings.ColorFG, s_c_icon, NULL);
|
|
||||||
replace_gbitmap_color(GColorWhite, settings.ColorFG, s_h_icon, NULL);
|
|
||||||
replace_gbitmap_color(GColorWhite, settings.ColorFG, s_e_icon, NULL);
|
|
||||||
replace_gbitmap_color(GColorWhite, settings.ColorFG, s_f_icon, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
for (int i = 0; i < 4; ++i) {
|
||||||
layer_add_child(window_layer, bitmap_layer_get_layer(s_time_fg_layers[i]));
|
layer_add_child(window_layer, bitmap_layer_get_layer(s_time_fg_layers[i]));
|
||||||
|
|||||||
Reference in New Issue
Block a user