/* statusbar */ void recovery_statusbar_update(){ word bgcolor = libaroma_alpha( _recovery.status_bgcolor, 0,51+recovery_statusbar_side_opa ); byte isdark = libaroma_color_isdark(bgcolor); word text_color = isdark?0xffff:0; libaroma_canvas_fillcolor( _recovery.status_canvas, bgcolor ); if (recovery_statusbar_side_w){ if (recovery_statusbar_overlay_canvas){ libaroma_draw_rect( _recovery.status_canvas, 0, 0, recovery_statusbar_side_w, _recovery.status_canvas->h, 0, 0xff ); libaroma_draw_ex( _recovery.status_canvas, recovery_statusbar_overlay_canvas, 0, 0, recovery_statusbar_overlay_canvas->w-recovery_statusbar_side_w, 0, recovery_statusbar_side_w, recovery_statusbar_overlay_canvas->h, 0, 0xcc ); } else{ libaroma_draw_rect( _recovery.status_canvas, 0, 0, recovery_statusbar_side_w, _recovery.status_canvas->h, RGB(cccccc), 0xff ); } } libaroma_draw_text( _recovery.status_canvas, "AROMA Recovery", 0,0,text_color,_recovery.status_canvas->w, LIBAROMA_FONT(0,3)| LIBAROMA_TEXT_SINGLELINE| LIBAROMA_TEXT_CENTER, 140 ); libaroma_wm_updatesync(0,0,0,0,1); }
LIBAROMA_CONTROLP libaroma_control_label( LIBAROMA_WINDOWP win, word id, char * text, int x, int y, int w, int h ){ _LIBAROMA_CONTROL_LABELP me = (_LIBAROMA_CONTROL_LABELP) calloc(sizeof(_LIBAROMA_CONTROL_LABEL),1); if (!me){ ALOGW("libaroma_control_label alloc label memory failed"); return NULL; } me->text = strdup(text); me->textp = libaroma_text( me->text, libaroma_wm_get_color("control_text"), w - libaroma_dp(8), LIBAROMA_FONT(0,4)|LIBAROMA_TEXT_SINGLELINE, 100 ); LIBAROMA_CONTROLP ctl = libaroma_control_new( id, x, y, w, h, libaroma_dp(28),libaroma_dp(32), /* min size */ me, &_libaroma_control_label_handler, win ); if (!ctl){ if (me->text){ free(me->text); } if (me->textp){ libaroma_text_free(me->textp); } free(me); } return ctl; }
/* * Function : libaroma_text * Return Value: LIBAROMA_TEXT * Descriptions: create text */ LIBAROMA_TEXT libaroma_text( const char * text, word color, int maxwidth, dword txtflags, byte linespacing ) { byte font = _LIBAROMA_TEXT_GET_FONT(txtflags); byte rules = _LIBAROMA_TEXT_GET_RULE(txtflags); byte flags = _LIBAROMA_TEXT_GET_FLAG(txtflags); byte align = _LIBAROMA_TEXT_GET_ALIGN(txtflags); if (!font){ font=LIBAROMA_FONT(0,2); } if (!linespacing) { linespacing = 120; } _libaroma_pubtext_lock(1); _LIBAROMA_TEXTCHUNK_ALIGN_SET(flags, align); _LIBAROMA_TEXTCHUNKP chunk = _libaroma_text_parse( text, rules, flags, color, font, maxwidth, linespacing ); _LIBAROMA_TEXTP txt = (_LIBAROMA_TEXTP) calloc(sizeof(_LIBAROMA_TEXT),1); _LIBAROMA_TEXTLINESP lines = (_LIBAROMA_TEXTLINESP) malloc(sizeof(_LIBAROMA_TEXTLINES)); _LIBAROMA_TEXTLINESP last_lines = lines; last_lines->line = NULL; while (chunk->state & _LIBAROMA_TEXTCHUNK_STATE_OK) { _LIBAROMA_TEXTLINEP line = libaroma_textline(chunk); if (line != NULL) { if (last_lines->line != NULL) { last_lines->next = (_LIBAROMA_TEXTLINESP) malloc(sizeof(_LIBAROMA_TEXTLINES)); last_lines = last_lines->next; } last_lines->line = line; last_lines->next = NULL; txt->n++; txt->h += line->lineheight; if (rules & _LIBAROMA_TEXT_SINGLELINE) { break; } } } _libaroma_text_parse_free(chunk); if (lines->line != NULL) { txt->lines = (_LIBAROMA_TEXTLINEP *) malloc(sizeof(_LIBAROMA_TEXTLINEP) * txt->n); last_lines = lines; int i = 0; while (last_lines) { txt->lines[i] = last_lines->line; _LIBAROMA_TEXTLINESP prevline = last_lines; last_lines = last_lines->next; free(prevline); i++; } _libaroma_pubtext_lock(0); return (LIBAROMA_TEXT) txt; } free(txt); free(lines); _libaroma_pubtext_lock(0); return NULL; } /* End of libaroma_text */