Skip to content

Commit

Permalink
add inside outline to battery icon
Browse files Browse the repository at this point in the history
  • Loading branch information
ctranstrum committed Mar 9, 2024
1 parent 18c3b86 commit 7ac2ec4
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions config/boards/shields/dongle_display/widgets/battery_status.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ struct battery_status_state {

struct battery_widget_object {
lv_obj_t *battery_image_canvas;
uint8_t battery_image_buffer[12 * 8];
uint8_t battery_image_buffer[14 * 8];
lv_obj_t *battery_label;
};

Expand All @@ -42,36 +42,38 @@ static void draw_battery(lv_obj_t *canvas, uint8_t level) {
lv_draw_rect_dsc_init(&rect_fill_dsc);
rect_fill_dsc.bg_color = lv_color_white();

lv_canvas_set_px(canvas, 11, 0, lv_color_white());
lv_canvas_set_px(canvas, 11, 1, lv_color_white());
lv_canvas_set_px(canvas, 11, 6, lv_color_white());
lv_canvas_set_px(canvas, 11, 7, lv_color_white());
// Shape of the positive terminal
lv_canvas_draw_rect(canvas, 13, 0, 1, 2, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 13, 6, 1, 2, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 12, 3, 1, 2, &rect_fill_dsc);

// Outline of the inner fuel
lv_canvas_draw_rect(canvas, 1, 1, 10, 1, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 1, 2, 1, 4, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 1, 6, 10, 1, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 11, 2, 1, 4, &rect_fill_dsc);

if (level <= 90) {
lv_canvas_set_px(canvas, 10, 3, lv_color_white());
lv_canvas_set_px(canvas, 10, 4, lv_color_white());
}

if (level > 90) {
// full
} else if (level > 80) {
lv_canvas_draw_rect(canvas, 9, 1, 1, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 10, 2, 1, 4, &rect_fill_dsc);
} else if (level > 70) {
lv_canvas_draw_rect(canvas, 8, 1, 2, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 9, 2, 2, 4, &rect_fill_dsc);
} else if (level > 60) {
lv_canvas_draw_rect(canvas, 7, 1, 3, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 8, 2, 3, 4, &rect_fill_dsc);
} else if (level > 50) {
lv_canvas_draw_rect(canvas, 6, 1, 4, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 7, 2, 4, 4, &rect_fill_dsc);
} else if (level > 40) {
lv_canvas_draw_rect(canvas, 5, 1, 5, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 6, 2, 5, 4, &rect_fill_dsc);
} else if (level > 30) {
lv_canvas_draw_rect(canvas, 4, 1, 6, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 5, 2, 6, 4, &rect_fill_dsc);
} else if (level > 20) {
lv_canvas_draw_rect(canvas, 3, 1, 7, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 4, 2, 7, 4, &rect_fill_dsc);
} else if (level > 10) {
lv_canvas_draw_rect(canvas, 2, 1, 8, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 3, 2, 8, 4, &rect_fill_dsc);
} else if (level > 0) {
lv_canvas_draw_rect(canvas, 1, 1, 9, 6, &rect_fill_dsc);
lv_canvas_draw_rect(canvas, 2, 2, 9, 4, &rect_fill_dsc);
} else {
lv_canvas_fill_bg(canvas, lv_color_white(), LV_OPA_COVER);
}
Expand Down Expand Up @@ -115,16 +117,16 @@ ZMK_SUBSCRIPTION(widget_battery_status, zmk_peripheral_battery_state_changed);
int zmk_widget_peripheral_battery_status_init(struct zmk_widget_peripheral_battery_status *widget, lv_obj_t *parent) {
widget->obj = lv_obj_create(parent);

lv_obj_set_size(widget->obj, 35, LV_SIZE_CONTENT);
lv_obj_set_size(widget->obj, 55, LV_SIZE_CONTENT);

for (int i = 0; i < ZMK_SPLIT_BLE_PERIPHERAL_COUNT; i++) {
battery_widget_objects[i].battery_image_canvas = lv_canvas_create(widget->obj);
battery_widget_objects[i].battery_label = lv_label_create(widget->obj);

lv_canvas_set_buffer(battery_widget_objects[i].battery_image_canvas, battery_widget_objects[i].battery_image_buffer, 12, 8, LV_IMG_CF_TRUE_COLOR);
lv_canvas_set_buffer(battery_widget_objects[i].battery_image_canvas, battery_widget_objects[i].battery_image_buffer, 14, 8, LV_IMG_CF_TRUE_COLOR);

lv_obj_align(battery_widget_objects[i].battery_image_canvas, LV_ALIGN_TOP_RIGHT, 0, i * 10);
lv_obj_align(battery_widget_objects[i].battery_label, LV_ALIGN_TOP_RIGHT, -13, i * 10);
lv_obj_align(battery_widget_objects[i].battery_image_canvas, LV_ALIGN_TOP_RIGHT, 0, i * 10 + 1);
lv_obj_align(battery_widget_objects[i].battery_label, LV_ALIGN_TOP_RIGHT, -16, i * 10 + 1);
}

sys_slist_append(&widgets, &widget->node);
Expand Down

0 comments on commit 7ac2ec4

Please sign in to comment.