void handle_minute_tick(AppContextRef ctx, PebbleTickEvent *t) { (void)ctx; (void)t; update_hand_positions(&hour_hand_image_container, &minute_hand_image_container); timer_handle = app_timer_send_event(ctx, 100, 1); // Send a timer to start the blink animation }
void handle_second_tick(AppContextRef ctx, PebbleTickEvent *t) { (void)t; (void)ctx; update_hand_positions(); // TODO: Pass tick event PblTm ti; get_time(&ti); string_format_time(date_text, sizeof(date_text), "%d", &ti); text_layer_set_text(&date_layer, date_text); layer_mark_dirty(&second_display_layer); }
void handle_init(AppContextRef ctx) { (void)ctx; window_init(&window, "Dragon Clock"); window_stack_push(&window, true /* Animated */); resource_init_current_app(&APP_RESOURCES); // Set up layer for the hour hand rotbmp_init_container(RESOURCE_ID_DRAGON_HOUR_HAND, &hour_hand_image_container); rot_bitmap_set_src_ic(&hour_hand_image_container.layer, GPoint(2, 28)); layer_add_child(&window.layer, &hour_hand_image_container.layer.layer); // Set up layer for the minute hand rotbmp_init_container(RESOURCE_ID_DRAGON_MINUTE_HAND, &minute_hand_image_container); rot_bitmap_set_src_ic(&minute_hand_image_container.layer, GPoint(0, 45)); layer_add_child(&window.layer, &minute_hand_image_container.layer.layer); // Set up layer for dragon background image layer_init(&background_layer, window.layer.frame); // Using a "hack" to get a transparent png to render without slowing the watch down to a crawl. // Usually a transparent png needs a RotBmpPairContainer, but in this case we are taking both // the white part and the black part and rendering them in separate BmpContainers, then setting // the compositing of each, and finally putting images on the same layer, thus creating a // "transparent" bitmap. Thanks to Philip from Pebble for this "completely un-endorsed, // un-official, don't-actually-do-this-in-production-code" suggestion :) bmp_init_container(RESOURCE_ID_DRAGON_BACKGROUND_WHITE, &background_image_container_white); background_image_container_white.layer.compositing_mode = GCompOpOr; layer_add_child(&background_layer, &background_image_container_white.layer.layer); bmp_init_container(RESOURCE_ID_DRAGON_BACKGROUND_BLACK, &background_image_container_black); background_image_container_black.layer.compositing_mode = GCompOpClear; layer_add_child(&background_layer, &background_image_container_black.layer.layer); layer_add_child(&window.layer, &background_layer); // Set up layer that will hold the blink animation frame_animation_init(&blink_animation, &window.layer, GPoint(11, 111), RESOURCE_ID_DRAGON_BLINK_1_WHITE, 4, true, true); update_hand_positions(&hour_hand_image_container, &minute_hand_image_container); }
void handle_tick(AppContextRef ctx, PebbleTickEvent *t) { (void)t; PblTm currentTime; static char timeTextM[] = "00"; static char timeTextH[] = "00"; first_run = "false"; font_minutes_word.old_text = font_minutes_word.text; hours_word.old_text = hours_word.text; get_time(¤tTime); string_format_time(timeTextM, sizeof(timeTextM), "%M", ¤tTime); font_minutes_word.text = timeTextM; string_format_time(timeTextH, sizeof(timeTextH), "%H", ¤tTime); hours_word.text = timeTextH; update_word(&font_minutes_word); update_hand_positions(); }
void handle_init(AppContextRef ctx) { (void)ctx; init = false; window_init(&window, "Planets Window"); window_stack_push(&window, true /* Animated */); resource_init_current_app(&APP_RESOURCES); // Set up a layer for the static watch face background bmp_init_container(RESOURCE_ID_IMAGE_BACKGROUND, &background_image_container); layer_add_child(&window.layer, &background_image_container.layer.layer); // Set up a layer for the hour hand rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_HAND, &hour_hand_image_container); GSize hourSize = layer_get_frame(&hour_hand_image_container.layer.layer).size; hourOffset = GPoint(hourSize.w / 2, hourSize.h / 2); layer_add_child(&window.layer, &hour_hand_image_container.layer.layer); // Set up a layer for the minute hand rotbmp_init_container(RESOURCE_ID_IMAGE_MINUTE_HAND, &minute_hand_image_container); GSize minSize = layer_get_frame(&minute_hand_image_container.layer.layer).size; minOffset = GPoint(minSize.w / 2, minSize.h / 2); layer_add_child(&window.layer, &minute_hand_image_container.layer.layer); // Set up a layer for the second hand rotbmp_init_container(RESOURCE_ID_IMAGE_SECOND_HAND, &second_hand_image_container); GSize secSize = layer_get_frame(&second_hand_image_container.layer.layer).size; secOffset = GPoint(secSize.w / 2, secSize.h / 2); layer_add_child(&window.layer, &second_hand_image_container.layer.layer); update_hand_positions(); init = true; }
void handle_second_tick(AppContextRef ctx, PebbleTickEvent *t) { (void)t; update_hand_positions(); // TODO: Pass tick event }
void handle_init(AppContextRef ctx) { (void)ctx; window_init(&window, "Brains Watch"); window_stack_push(&window, true); resource_init_current_app(&APP_RESOURCES); // rotbmp_pair_init_container(RESOURCE_ID_IMAGE_PANDA_WHITE, RESOURCE_ID_IMAGE_PANDA_BLACK, &bitmap_container); // Set up a layer for the static watch face background bmp_init_container(RESOURCE_ID_IMAGE_BACKGROUND, &background_image_container); layer_add_child(&window.layer, &background_image_container.layer.layer); dice = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_VISITOR_16)); text_layer_init(&date_layer, GRect(53, 105, 40, 40)); text_layer_set_text_alignment(&date_layer, GTextAlignmentCenter); text_layer_set_text_color(&date_layer, GColorBlack); text_layer_set_background_color(&date_layer, GColorClear); text_layer_set_font(&date_layer, dice); layer_add_child(&window.layer, &date_layer.layer); PblTm ti; get_time(&ti); string_format_time(date_text, sizeof(date_text), "%d", &ti); text_layer_set_text(&date_layer, date_text); // Set up a layer for the hour hand rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_HAND, &hour_hand_image_container); // hour_hand_image_container.layer.compositing_mode = GCompOpClear; rot_bitmap_set_src_ic(&hour_hand_image_container.layer, GPoint(3, 42)); layer_add_child(&window.layer, &hour_hand_image_container.layer.layer); // Set up a layer for the minute hand rotbmp_init_container(RESOURCE_ID_IMAGE_MINUTE_HAND, &minute_hand_image_container); // minute_hand_image_container.layer.compositing_mode = GCompOpClear; rot_bitmap_set_src_ic(&minute_hand_image_container.layer, GPoint(3, 58)); layer_add_child(&window.layer, &minute_hand_image_container.layer.layer); update_hand_positions(); // Setup the black and white circle in the centre of the watch face // (We use a bitmap rather than just drawing it because it means not having // to stuff around with working out the circle center etc.) rotbmp_pair_init_container(RESOURCE_ID_IMAGE_CENTER_CIRCLE_WHITE, RESOURCE_ID_IMAGE_CENTER_CIRCLE_BLACK, ¢er_circle_image_container); // TODO: Do this properly with a GRect(). // (144 = screen width, 168 = screen height) center_circle_image_container.layer.layer.frame.origin.x = (144/2) - (center_circle_image_container.layer.layer.frame.size.w/2); center_circle_image_container.layer.layer.frame.origin.y = (168/2) - (center_circle_image_container.layer.layer.frame.size.h/2); layer_add_child(&window.layer, ¢er_circle_image_container.layer.layer); layer_init(&second_display_layer, window.layer.frame); second_display_layer.update_proc = &second_display_layer_update_callback; layer_add_child(&window.layer, &second_display_layer); }
void handle_init(AppContextRef ctx) { (void)ctx; window_init(&window, "Circling Hours"); window_stack_push(&window, true); window_set_background_color(&window, GColorBlack); resource_init_current_app(&APP_RESOURCES); first_run = "true"; hours_word.old_text = hours_word.text; bmp_init_container(RESOURCE_ID_IMAGE_HOUR_BG, &background_image_container); layer_add_child(&window.layer, &background_image_container.layer.layer); // font_minutes = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_ARIAL_BLACK_50)); // text_layer(&font_minutes_word, GRect(0, 40, 143, 100), font_minutes); /* add to resource_map.json: { "type":"font", "defName":"FONT_ARIAL_BLACK_50", "file":"fonts/Arial-Black.ttf" } */ // much less space needed because font is built in // font_minutes = fonts_get_system_font(FONT_KEY_GOTHAM_42_MEDIUM_NUMBERS); font_minutes = fonts_get_system_font(FONT_KEY_GOTHAM_42_BOLD); text_layer(&font_minutes_word, GRect(0, 58, 143, 50), font_minutes); text_layer_set_text_alignment(&font_minutes_word.layer, GTextAlignmentCenter); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_1, &hour_image_container_1); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_2, &hour_image_container_2); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_3, &hour_image_container_3); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_4, &hour_image_container_4); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_5, &hour_image_container_5); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_6, &hour_image_container_6); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_7, &hour_image_container_7); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_8, &hour_image_container_8); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_9, &hour_image_container_9); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_10, &hour_image_container_10); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_11, &hour_image_container_11); rotbmp_init_container(RESOURCE_ID_IMAGE_HOUR_12, &hour_image_container_12); //GCompOpAssign, GCompOpAssignInverted, GCompOpOr, GCompOpAnd, GCompOpClear GCompOp mode = GCompOpAssign; hour_image_container_1.layer.compositing_mode = mode; hour_image_container_2.layer.compositing_mode = mode; hour_image_container_3.layer.compositing_mode = mode; hour_image_container_4.layer.compositing_mode = mode; hour_image_container_5.layer.compositing_mode = mode; hour_image_container_6.layer.compositing_mode = mode; hour_image_container_7.layer.compositing_mode = mode; hour_image_container_8.layer.compositing_mode = mode; hour_image_container_9.layer.compositing_mode = mode; hour_image_container_10.layer.compositing_mode = mode; hour_image_container_11.layer.compositing_mode = mode; hour_image_container_12.layer.compositing_mode = mode; //GPoint pointxy = GPoint(-73, -75); GPoint pointxy = GPoint(14, 70); rot_bitmap_set_src_ic(&hour_image_container_1.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_2.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_3.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_4.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_5.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_6.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_7.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_8.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_9.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_10.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_11.layer, pointxy); rot_bitmap_set_src_ic(&hour_image_container_12.layer, pointxy); layer_add_child(&window.layer, &hour_image_container_1.layer.layer); layer_add_child(&window.layer, &hour_image_container_2.layer.layer); layer_add_child(&window.layer, &hour_image_container_3.layer.layer); layer_add_child(&window.layer, &hour_image_container_4.layer.layer); layer_add_child(&window.layer, &hour_image_container_5.layer.layer); layer_add_child(&window.layer, &hour_image_container_6.layer.layer); layer_add_child(&window.layer, &hour_image_container_7.layer.layer); layer_add_child(&window.layer, &hour_image_container_8.layer.layer); layer_add_child(&window.layer, &hour_image_container_9.layer.layer); layer_add_child(&window.layer, &hour_image_container_10.layer.layer); layer_add_child(&window.layer, &hour_image_container_11.layer.layer); layer_add_child(&window.layer, &hour_image_container_12.layer.layer); update_hand_positions(); }