uint8_t m2_u8g_get_box_icon_size(uint8_t font) { int8_t x; u8g_SetFont(m2_u8g, m2_u8g_get_font(font)); x = u8g_GetFontAscent(m2_u8g)-u8g_GetFontDescent(m2_u8g); x*=5; x >>=3; if ( x < 6 ) x = 6; return x; }
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); }