Last active
December 29, 2015 16:39
-
-
Save matthewtole/7699091 to your computer and use it in GitHub Desktop.
Clock Layer - A layer class for display the time and date in Pebble apps.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*** | |
* Clock Layer | |
* Copyright © 2013 Matthew Tole | |
***/ | |
#include <pebble.h> | |
#include "clock-layer.h" | |
struct ClockLayer { | |
TextLayer* text_layer; | |
char* format; | |
}; | |
ClockLayer* clock_layer_create(GRect frame) { | |
ClockLayer* clock_layer = malloc(sizeof(ClockLayer)); | |
clock_layer->text_layer = text_layer_create(frame); | |
text_layer_set_text_alignment(clock_layer->text_layer, GTextAlignmentCenter); | |
text_layer_set_text_color(clock_layer->text_layer, GColorBlack); | |
text_layer_set_background_color(clock_layer->text_layer, GColorClear); | |
clock_layer->format = "%H:%M"; | |
return clock_layer; | |
} | |
void clock_layer_destroy(ClockLayer* clock_layer) { | |
if (clock_layer == NULL) { | |
return; | |
} | |
if (clock_layer->text_layer != NULL) { | |
text_layer_destroy(clock_layer->text_layer); | |
} | |
free(clock_layer); | |
} | |
void clock_layer_set_time_format(ClockLayer* clock_layer, char* format) { | |
free(clock_layer->format); | |
clock_layer->format = malloc(strlen(format)); | |
strncpy(clock_layer->format, format, strlen(format)); | |
} | |
TextLayer* clock_layer_get_text_layer(ClockLayer* clock_layer) { | |
return clock_layer->text_layer; | |
} | |
void clock_layer_update(ClockLayer* clock_layer) { | |
time_t tmp = time(NULL); | |
struct tm* now = localtime(&tmp); | |
clock_layer_set_time(clock_layer, now); | |
} | |
void clock_layer_set_time(ClockLayer* clock_layer, struct tm* current_time) { | |
static char time_str[32]; | |
strftime(time_str, sizeof(time_str), clock_layer->format, current_time); | |
text_layer_set_text(clock_layer->text_layer, time_str); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*** | |
* Clock Layer | |
* Copyright © 2013 Matthew Tole | |
***/ | |
#pragma once | |
#include <pebble.h> | |
struct ClockLayer; | |
typedef struct ClockLayer ClockLayer; | |
ClockLayer* clock_layer_create(GRect rect); | |
void clock_layer_destroy(ClockLayer* clock_layer); | |
void clock_layer_set_time_format(ClockLayer* clock_layer, char* format); | |
void clock_layer_set_text_color(ClockLayer* clock_layer, GColor color); | |
TextLayer* clock_layer_get_text_layer(ClockLayer* clock_layer); | |
void clock_layer_update(ClockLayer* clock_layer); | |
void clock_layer_set_time(ClockLayer* clock_layer, struct tm* time); | |
#define clock_layer_add_to_window(layer, window) layer_add_child(window_get_root_layer(window), clock_layer_get_layer(layer)) | |
#define clock_layer_set_text_color(layer, color) text_layer_set_text_color(clock_layer_get_text_layer(layer), color) | |
#define clock_layer_set_background_color(layer, color) text_layer_set_background_color(clock_layer_get_text_layer(layer), color) | |
#define clock_layer_set_font(layer, font) text_layer_set_font(clock_layer_get_text_layer(layer), font) | |
#define clock_layer_set_text_alignment(layer, alignment) text_layer_set_text_alignment(clock_layer_get_text_layer(layer), alignment) | |
#define clock_layer_get_layer(layer) text_layer_get_layer(clock_layer_get_text_layer(layer)) | |
#define clock_layer_set_system_font(layer, font) clock_layer_set_font(layer, fonts_get_system_font(font)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment