// Lua: u8g.setFontPosBottom( self ) static int lu8g_setFontPosBottom( lua_State *L ) { lu8g_userdata_t *lud; if ((lud = get_lud( L )) == NULL) return 0; u8g_SetFontPosBottom( LU8G ); return 0; }
/* update local information */ static void m2_u8g_update(void) { m2_u8g_dev_variables.m2_u8g_height_minus_one = u8g_GetHeight(m2_u8g_dev_variables.m2_u8g); m2_u8g_dev_variables.m2_u8g_height_minus_one--; /* force lower left edge of a text as reference */ u8g_SetFontPosBottom(m2_u8g_dev_variables.m2_u8g); m2_u8g_dev_variables.m2_u8g_fg_text_color = u8g_GetDefaultForegroundColor(m2_u8g_dev_variables.m2_u8g); m2_u8g_dev_variables.m2_u8g_bg_text_color = u8g_GetDefaultBackgroundColor(m2_u8g_dev_variables.m2_u8g); m2_u8g_dev_variables.m2_u8g_current_text_color = m2_u8g_dev_variables.m2_u8g_fg_text_color; m2_u8g_dev_variables.m2_u8g_draw_color = u8g_GetDefaultForegroundColor(m2_u8g_dev_variables.m2_u8g); }
int main(void) { u8g_t u8g; u8g_Init(&u8g, &u8g_dev_sdl_1bit_h); u8g_FirstPage(&u8g); do { u8g_SetColorIndex(&u8g, 1); u8g_DrawPixel(&u8g,0,0); u8g_DrawPixel(&u8g,0,1); u8g_SetFont(&u8g, u8g_font_unifont); //u8g_SetFont(&u8g, u8g_font_10x20); //u8g_SetFont(&u8g, u8g_font_gdb17); u8g_SetFontRefHeightText(&u8g); //u8g_SetRefHeightAll(&u8g); //u8g_SetFontPosBaseline(&u8g); //u8g_SetFontPosCenter(&u8g); u8g_SetFontPosTop(&u8g); glyph(&u8g, 5,25, 'g'); u8g_SetFontPosCenter(&u8g); glyph(&u8g, 5+25,25, 'g'); u8g_SetFontPosBaseline(&u8g); glyph(&u8g, 5+2*25,25, 'g'); u8g_SetFontPosBottom(&u8g); glyph(&u8g, 5+3*25,25, 'g'); }while( u8g_NextPage(&u8g) ); while( u8g_sdl_get_key() < 0 ) ; return 0; }
uint8_t m2_gh_u8g_base(m2_gfx_arg_p arg) { /* Do a safety check here: Abort if m2_SetU8g has not been called */ if ( m2_u8g_dev_variables.m2_u8g == NULL ) return 0; /* Proceed with normal message processing */ switch(arg->msg) { case M2_GFX_MSG_INIT: break; case M2_GFX_MSG_START: /* check for proper setup */ break; case M2_GFX_MSG_END: break; case M2_GFX_MSG_DRAW_HLINE: u8g_DrawHLine(m2_u8g_dev_variables.m2_u8g, arg->x, m2_u8g_dev_variables.m2_u8g_height_minus_one - arg->y, arg->w); break; case M2_GFX_MSG_DRAW_VLINE: u8g_DrawVLine(m2_u8g_dev_variables.m2_u8g, arg->x, m2_u8g_dev_variables.m2_u8g_height_minus_one - arg->y, arg->h); break; case M2_GFX_MSG_DRAW_BOX: m2_u8g_draw_box(arg->x, arg->y, arg->w, arg->h); break; case M2_GFX_MSG_DRAW_TEXT: { u8g_uint_t x = arg->x; u8g_uint_t y; u8g_SetColorIndex(m2_u8g_dev_variables.m2_u8g, m2_u8g_dev_variables.m2_u8g_current_text_color); u8g_SetFont(m2_u8g_dev_variables.m2_u8g, m2_u8g_get_font(arg->font)); u8g_SetFontPosBottom(m2_u8g_dev_variables.m2_u8g); if ( (arg->font & 8) != 0 ) { if ( arg->w != 0 ) { x = arg->w; x -= u8g_GetStrWidth(m2_u8g_dev_variables.m2_u8g, arg->s); x >>= 1; x += arg->x; } } y = m2_u8g_dev_variables.m2_u8g_height_minus_one; y -= arg->y; y++; /* 13 Jan 2013: Issue 95, problem 2 */ x -= u8g_GetStrX(m2_u8g_dev_variables.m2_u8g, arg->s); //x += m2_gh_u8g_additional_text_border_x_size; u8g_DrawStr(m2_u8g_dev_variables.m2_u8g, x, y, arg->s); // printf("DRAW_TEXT: x=%d y=%d s=%s\n", x, y, arg->s); } break; case M2_GFX_MSG_DRAW_TEXT_P: { u8g_uint_t x = arg->x; u8g_uint_t y; u8g_SetColorIndex(m2_u8g_dev_variables.m2_u8g, m2_u8g_dev_variables.m2_u8g_current_text_color); u8g_SetFont(m2_u8g_dev_variables.m2_u8g, m2_u8g_get_font(arg->font)); u8g_SetFontPosBottom(m2_u8g_dev_variables.m2_u8g); if ( (arg->font & 8) != 0 ) { if ( arg->w != 0 ) { x = arg->w; x -= u8g_GetStrWidthP(m2_u8g_dev_variables.m2_u8g, (const u8g_pgm_uint8_t *)arg->s); x >>= 1; x += arg->x; } } y = m2_u8g_dev_variables.m2_u8g_height_minus_one; y -= arg->y; x -= u8g_GetStrXP(m2_u8g_dev_variables.m2_u8g, (const u8g_pgm_uint8_t *)arg->s); //x += m2_gh_u8g_additional_text_border_x_size; y++; /* 13 Jan 2013: Issue 95, problem 2 */ u8g_DrawStrP(m2_u8g_dev_variables.m2_u8g, x, y, (const u8g_pgm_uint8_t *)arg->s); }
ICACHE_FLASH_ATTR static void draw_normal(DrawingState *state) { uint8_t buf[50]; u8g_SetColorIndex(&(state->u8g), 1); drawingRefreshIcons(state); uint8_t iconWidth = 40; //current measured temperature u8g_SetFont(&(state->u8g), u8g_font_helvB18); u8g_SetFontPosTop(&(state->u8g)); os_sprintf(buf, "%d", state->currentTemp / 100); uint8_t currentTempWidth = u8g_GetStrWidth(&(state->u8g), buf); uint8_t cWidth = u8g_GetStrWidth(&(state->u8g), "C"); uint8_t strHeight = u8g_GetFontAscent(&(state->u8g)); u8g_SetFont(&(state->u8g), u8g_font_helvR08); u8g_SetFontPosBaseline(&(state->u8g)); os_sprintf(buf, "%02d", abs(state->currentTemp % 100)); uint8_t webTempWidth = u8g_GetStrWidth(&(state->u8g), buf); u8g_DrawStr(&(state->u8g), iconWidth + (128 - iconWidth) / 2 - (currentTempWidth + cWidth + webTempWidth) / 2 + currentTempWidth, 16 + strHeight, buf); u8g_SetFont(&(state->u8g), u8g_font_helvB18); u8g_SetFontPosTop(&(state->u8g)); os_sprintf(buf, "%d", state->currentTemp / 100); u8g_DrawStr(&(state->u8g), iconWidth + (128 - iconWidth) / 2 - (currentTempWidth + cWidth + webTempWidth) / 2, 16, buf); u8g_DrawStr(&(state->u8g), iconWidth + (128 - iconWidth) / 2 - (currentTempWidth + cWidth + webTempWidth) / 2 + currentTempWidth + webTempWidth, 16, "C"); //web text if (state->weather.code != 255) { u8g_SetFont(&(state->u8g), u8g_font_6x10); u8g_SetFontPosBottom(&(state->u8g)); os_sprintf(buf, "%s", state->weather.text); currentTempWidth = u8g_GetStrWidth(&(state->u8g), buf); strHeight = u8g_GetFontBBXHeight(&(state->u8g)); u8g_DrawStr(&(state->u8g), iconWidth + (128 - iconWidth) / 2 - currentTempWidth / 2, 64, buf); } //web temperature u8g_SetFont(&(state->u8g), u8g_font_6x10); u8g_SetFontPosBottom(&(state->u8g)); os_sprintf(buf, "%dC", state->weather.temp); uint8_t outsideTempWidth = u8g_GetStrWidth(&(state->u8g), buf); u8g_DrawStr(&(state->u8g), iconWidth + (128 - iconWidth) / 2 - outsideTempWidth / 2, 64 - strHeight, buf); u8g_SetFont(&(state->u8g), u8g_font_6x10); u8g_SetFontPosCenter(&(state->u8g)); if (state->temperatureMode == MANUAL) { os_sprintf(buf, "Manual: %d.%02dC", state->manualTemp / 100, abs(state->manualTemp % 100)); } else if (state->temperatureMode == AUTOMATIC) { if (state->automaticTempCurrentState == NULL) { os_sprintf(buf, "Auto"); } else { os_sprintf(buf, "A:%d.%02dC, %d:%02d", state->automaticTempCurrentState->temp / 100, abs(state->automaticTempCurrentState->temp % 100), state->automaticTempCurrentState->time / 60, state->automaticTempCurrentState->time % 60); } } u8g_DrawStr(&(state->u8g), 0, 8, buf); }