Beispiel #1
0
static void draw_time(struct tm* t, GContext* ctx) {
	int hour = get_hour(t);
	int mintueY = MINUTE_00_Y + t->tm_min * (MINUTE_59_Y - MINUTE_00_Y) / 60;
	if (hour == 1) {
		//view 1
		put_digit(hour, ctx, VIEW_1_FIRST_DIGIT_X, VIEW_1_SEG_WIDTH, mintueY);
	} else if (hour <= 9) {
		//view 2
		put_digit(hour, ctx, VIEW_2_FIRST_DIGIT_X, VIEW_2_SEG_WIDTH, mintueY);
	} else if (hour == 11) {
		//view 3
		put_digit(1, ctx, VIEW_3_FIRST_DIGIT_X, VIEW_3_SEG_WIDTH, mintueY);
		put_digit(1, ctx, VIEW_3_SECOND_DIGIT_X, VIEW_3_SEG_WIDTH, mintueY);
	} else if (hour <= 19) {
		//view 4
		put_digit(1, ctx, VIEW_4_FIRST_DIGIT_X, VIEW_4_SEG_WIDTH, mintueY);
		put_digit(hour % 10, ctx, VIEW_4_SECOND_DIGIT_X, VIEW_4_SEG_WIDTH,
				mintueY);
	} else if (hour == 21) {
		//view 5
		put_digit(2, ctx, VIEW_5_FIRST_DIGIT_X, VIEW_5_SEG_WIDTH, mintueY);
		put_digit(1, ctx, VIEW_5_SECOND_DIGIT_X, VIEW_5_SEG_WIDTH, mintueY);
	} else {
		//view 6
		put_digit(2, ctx, VIEW_6_FIRST_DIGIT_X, VIEW_6_SEG_WIDTH, mintueY);
		put_digit(hour % 10, ctx, VIEW_6_SECOND_DIGIT_X, VIEW_6_SEG_WIDTH,
				mintueY);
	}
}
Beispiel #2
0
void printTimer(uint8_t x, uint8_t y, t_timer tim){
    lcd_gotoxy(x,y);
    if (tim.H > 9){
        put_digit((tim.H / 10));
    }
    put_digit((tim.H % 10));
    lcd_putchar(':');
    put_digit((tim.M / 10));
    put_digit((tim.M % 10));
    lcd_putchar(':');
    put_digit((tim.S / 10));
    if (tim.H < 10){
        put_digit((tim.S % 10));
    }
}
Beispiel #3
0
/*
 * Print a given value <v> as a decimal integer.
 * NOTE: It's quite buggy with big(ger) numbers.
 */
static inline void putd(char **buf, size_t space_left, int v)
{
    int out[10 /* ceil(log10(2^32)) */] = {0};
    int i = 0;

    if (v == 0) {
        putch(buf, space_left, '0');
        return;
    }

    if (v < 0) {
        v = -v;
        putch(buf, space_left, '-');
    }

    for (; v > 0; v /= 10)
        out[i++] = v % 10;

    i--;

    while (i >= 0)
        put_digit(buf, space_left, out[i--]);
}