void roadmap_ticker_initialize(void){ RoadMapImage image; gInitialized = FALSE; if ( roadmap_screen_is_hd_screen() ) { gTickerTopBarOffset = -5; } roadmap_config_declare_enumeration ("user", &ShowTickerCfg, NULL, "yes", "no", NULL); image = (RoadMapImage) roadmap_res_get(RES_BITMAP, RES_SKIN, TICKER_MIDDLE_IMAGE); if ( image == NULL){ roadmap_log (ROADMAP_ERROR, "roadmap_ticker - cannot load %s image ", TICKER_MIDDLE_IMAGE); return; } gMiddleImageSize.width = roadmap_canvas_image_width( image ); gMiddleImageSize.height = roadmap_canvas_image_height( image ); OpenIconRct.miny = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset(); OpenIconRct.maxy = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + gMiddleImageSize.height; RoadMapTickerPen = roadmap_canvas_create_pen ("Ticker_pen"); roadmap_canvas_set_foreground (TICKER_FOREGROUND); show_close_icon(); roadmap_pointer_register_pressed (roadmap_ticker_key_pressed, POINTER_HIGH); roadmap_pointer_register_short_click(roadmap_ticker_short_click, POINTER_HIGH); gInitialized = TRUE; }
void ssd_dialog_allign_focus(void){ SsdSize size; int height; int min; SsdWidget title; title = ssd_widget_get (RoadMapDialogCurrent->container, "title_bar"); if (title) min = title->cached_size.height; else min = 0; #ifndef TOUCH_SCREEN if (!is_screen_wide()) min += roadmap_bar_top_height(); if( SSD_TAB_CONTROL & RoadMapDialogCurrent->container->flags) min += ssd_tabcontrol_get_height(); #endif #ifdef TOUCH_SCREEN height = roadmap_canvas_height(); #else height = roadmap_canvas_height() - roadmap_bar_bottom_height(); #endif if (RoadMapDialogCurrent->in_focus && RoadMapDialogCurrent->scroll_container){ if ((RoadMapDialogCurrent->in_focus->position.y == -1) || (RoadMapDialogCurrent->in_focus->position.x == -1 )){ RoadMapDialogCurrent->in_focus->position.y = 0; RoadMapDialogCurrent->scroll_container->offset_y +=20; } ssd_widget_get_size(RoadMapDialogCurrent->in_focus, &size, NULL); if (( RoadMapDialogCurrent->in_focus->position.y == 0) || ((size.height + RoadMapDialogCurrent->in_focus->position.y) > height)){ while (( RoadMapDialogCurrent->in_focus->position.y == 0) || ((size.height + RoadMapDialogCurrent->in_focus->position.y) > height)) { ssd_widget_set_offset(RoadMapDialogCurrent->scroll_container, 0, RoadMapDialogCurrent->scroll_container->offset_y-20); ssd_dialog_draw(); } while (RoadMapDialogCurrent->in_focus->position.y < min){ ssd_widget_set_offset(RoadMapDialogCurrent->scroll_container, 0, RoadMapDialogCurrent->scroll_container->offset_y+20); ssd_dialog_draw(); } } else{ while (RoadMapDialogCurrent->in_focus->position.y < min){ ssd_widget_set_offset(RoadMapDialogCurrent->scroll_container, 0, RoadMapDialogCurrent->scroll_container->offset_y+20); ssd_dialog_draw(); } } } }
void roadmap_display_image_sign(RoadMapSign *sign) { int screen_width; int screen_height; RoadMapGuiPoint position; RoadMapImage image; screen_width = roadmap_canvas_width(); screen_height = roadmap_canvas_height(); if (sign->where == SIGN_TOP){ position.x = 3; position.y = roadmap_bar_top_height() + 3; } if (sign->image != NULL){ image = (RoadMapImage) roadmap_res_get(RES_BITMAP, RES_SKIN, sign->image); roadmap_canvas_draw_image (image, &position, 0, IMAGE_NORMAL); } }
int roadmap_display_border(int style, int header, int pointer_type, RoadMapGuiPoint *bottom, RoadMapGuiPoint *top, const char* background, RoadMapPosition *position, int position_offset_y){ //static const char *fill_bg = "#f3f3f5";// "#e4f1f9"; RoadMapPen fill_pen; int screen_width, screen_height, sign_width, sign_height; RoadMapGuiPoint right_point, left_point, start_sides_point, point, new_point; int i, num_items; int count, start_pos_x, top_height; RoadMapGuiPoint sign_bottom, sign_top; RoadMapImage image; RoadMapGuiPoint points[3]; RoadMapGuiPoint fill_points[4]; screen_width = roadmap_canvas_width(); screen_height = roadmap_canvas_height(); if (top == NULL) { sign_top.x = 1; sign_top.y = roadmap_bar_top_height(); } else{ sign_top.x = top->x ; sign_top.y = top->y ; } if (bottom == NULL) { sign_bottom.x = screen_width-1; sign_bottom.y = screen_height - roadmap_bar_bottom_height(); } else{ sign_bottom.x = bottom->x ; sign_bottom.y = bottom->y ; } if ((pointer_type == POINTER_POSITION) || (pointer_type == POINTER_FIXED_POSITION)){ roadmap_math_coordinate (position, points); roadmap_math_rotate_project_coordinate ( points ); points[0].y += position_offset_y; } sign_width = sign_bottom.x - sign_top.x; sign_height = sign_bottom.y - sign_top.y; if (header != HEADER_NONE){ image = get_image(border_top, style, header, pointer_type, bottom, top, 0); roadmap_canvas_draw_image (image, &sign_top, 0, IMAGE_NORMAL); left_point.x = sign_top.x; right_point.x = left_point.x + sign_width - s_images[header+2].width ; start_sides_point.y = sign_top.y + s_images[header].height ; top_height = s_images[header].height+7; #ifndef __ROADMAP_BORDER_CACHE__ // Release after drawing roadmap_canvas_free_image( image ); #endif } else{ RoadMapImage image; left_point.x = sign_top.x; right_point.x = sign_bottom.x - s_images[border_white_right+style].width; start_sides_point.y = sign_top.y + s_images[border_white_top_right+style].height; left_point.y = sign_top.y ; image = get_image(border_top, style, header, pointer_type, bottom, top, 0); roadmap_canvas_draw_image (image, &left_point, 0, IMAGE_NORMAL); #ifndef __ROADMAP_BORDER_CACHE__ // Release after drawing roadmap_canvas_free_image( image ); #endif right_point.y = sign_top.y; if (style == STYLE_BLACK) top_height = s_images[border_white_top+style].height+7; else top_height = s_images[border_white_top+style].height; } num_items = ( sign_height - start_sides_point.y +sign_top.y - s_images[border_white_bottom+style].height ) / s_images[border_white_right+style].height; if (num_items < 0 ) return 0; image = get_image(border_sides, style, header, pointer_type, bottom, top, 1); for (i = 0; i < num_items; i++){ point.x = left_point.x; point.y = start_sides_point.y + i*s_images[border_white_right+style].height; roadmap_canvas_draw_image (image, &point, 0, IMAGE_NORMAL); } point.y += roadmap_canvas_image_height(image)-1; #ifndef __ROADMAP_BORDER_CACHE__ // Release after drawing roadmap_canvas_free_image( image ); #endif if (pointer_type == POINTER_NONE){ RoadMapImage image; left_point.y = point.y + s_images[border_white_left+style].height ; image = get_image(border_bottom, style, header, pointer_type, bottom, top, 0); roadmap_canvas_draw_image (image, &left_point, 0, IMAGE_NORMAL); #ifndef __ROADMAP_BORDER_CACHE__ // Release after drawing roadmap_canvas_free_image( image ); #endif } else{ left_point.y = point.y + s_images[border_white_left+style].height ; roadmap_canvas_draw_image (s_images[border_white_bottom_left+style].image, &left_point, 0, IMAGE_NORMAL); right_point.y = point.y + s_images[border_white_right+style].height; roadmap_canvas_draw_image (s_images[border_white_bottom_right+style].image, &right_point, 0, IMAGE_NORMAL); if (pointer_type == POINTER_MENU) num_items = 1; else if (pointer_type == POINTER_COMMENT){ num_items = ((right_point.x - left_point.x)/s_images[border_white_bottom+style].width)/4 -2; } else if (pointer_type == POINTER_FIXED_POSITION){ int pointer_draw_offset; pointer_draw_offset = points[0].x - 15 - left_point.x; if (pointer_draw_offset+sign_top.x > sign_bottom.x-52) pointer_draw_offset = sign_bottom.x-52-sign_top.x; if (pointer_draw_offset+sign_top.x < sign_top.x+30) pointer_draw_offset = 30; num_items = (pointer_draw_offset-21)/s_images[border_white_bottom+style].width; } else if (pointer_type == POINTER_POSITION) num_items = (right_point.x - left_point.x- 100)/s_images[border_white_bottom+style].width; else num_items = ((right_point.x - left_point.x)/s_images[border_white_bottom+style].width)/2 -2; for (i = 0; i<num_items; i++){ point.x = left_point.x + s_images[border_white_bottom_left+style].width + i * s_images[border_white_bottom+style].width ; point.y = left_point.y; roadmap_canvas_draw_image (s_images[border_white_bottom+style].image, &point, 0, IMAGE_NORMAL); } if ((pointer_type == POINTER_POSITION) || (pointer_type == POINTER_FIXED_POSITION)){ int visible = roadmap_math_point_is_visible (position); if (visible){ int count = 3; RoadMapPen pointer_pen; if (points[0].y > (point.y +10) ){ points[1].x = point.x; points[1].y = point.y+s_images[border_black_bottom_no_frame].height-3; points[2].x = point.x+42; points[2].y = point.y+s_images[border_black_bottom_no_frame].height-3; pointer_pen = roadmap_canvas_create_pen ("fill_pop_up_pen"); roadmap_canvas_set_foreground("#000000"); roadmap_canvas_set_opacity(181); count = 3; roadmap_canvas_draw_multiple_polygons (1, &count, points, 1, 0); for (i=0; i<40; i++){ point.x = point.x + s_images[border_black_bottom_no_frame].width ; point.y = point.y; roadmap_canvas_draw_image (s_images[border_black_bottom_no_frame].image, &point, 0, IMAGE_NORMAL); } } } start_pos_x = point.x+1; } else{ roadmap_canvas_draw_image (s_images[pointer_type].image, &point, 0, IMAGE_NORMAL); start_pos_x = point.x + s_images[pointer_type].width; } num_items = (right_point.x - start_pos_x )/s_images[border_white_bottom+style].width ; for (i = 0; i<num_items; i++){ new_point.x = start_pos_x + i * s_images[border_white_bottom+style].width ; new_point.y = point.y; roadmap_canvas_draw_image (s_images[border_white_bottom+style].image, &new_point, 0, IMAGE_NORMAL); } } //Fill the if ((style == STYLE_NORMAL) || (style == STYLE_BLACK)){ if ((pointer_type == POINTER_POSITION) || (pointer_type == POINTER_FIXED_POSITION)|| (pointer_type == POINTER_COMMENT)) point.y -= 1; fill_points[0].x =right_point.x ; fill_points[0].y =point.y +1; fill_points[1].x =right_point.x ; fill_points[1].y = top->y + top_height -7; fill_points[2].x = left_point.x + s_images[border_white_left+style].width ; fill_points[2].y = top->y + top_height - 7; fill_points[3].x =left_point.x + s_images[border_white_left+style].width ; fill_points[3].y = point.y +1; count = 4; } else{ fill_points[0].x =right_point.x+2 ; fill_points[0].y =point.y +2; fill_points[1].x =right_point.x +2; fill_points[1].y = top->y + top_height -2; fill_points[2].x = left_point.x + s_images[border_white_left+style].width -2; fill_points[2].y = top->y + top_height - 2; fill_points[3].x =left_point.x + s_images[border_white_left+style].width -2; fill_points[3].y = point.y +2; count = 4; } fill_pen = roadmap_canvas_create_pen ("fill_pop_up_pen"); roadmap_canvas_set_foreground(background); if (style == STYLE_BLACK) roadmap_canvas_set_opacity(181); roadmap_canvas_draw_multiple_polygons (1, &count, fill_points, 1,0 ); return sign_width; }
void roadmap_ticker_display() { char text[256]; char points[20]; char rank[20]; int text_width, ascent, descent; RoadMapGuiPoint position; RoadMapGuiPoint text_position; RoadMapImage image; int start,end, start_x; int iMyTotalPoints; int iMyRanking; int allign; int width; int text_offset_y = 25; int point_start_x = 190; int rank_start_x = 270; int new_pnts_start_x = 50; RoadMapImage x_image = NULL; const char * point_text = NULL; if ( roadmap_screen_is_hd_screen() ) { text_offset_y = 22; point_start_x = 200; rank_start_x = 280; new_pnts_start_x = 65; } width = roadmap_canvas_width(); if (!gInitialized) return ; if (!ticker_cfg_on() && !gTickerSupressHide){ gTickerOn = FALSE; return; } if (gTickerHide ){ gTickerOn = FALSE; return; } if (!roadmap_message_format (text, sizeof(text), "%X|%*")) { if (gTickerSupressHide){ roadmap_message_set('*', "%d", 0); roadmap_message_format (text, sizeof(text), "%*"); } else{ show_close_icon(); gTickerOn = FALSE; return; } } gTickerOn = TRUE; roadmap_canvas_get_text_extents (text, 14, &text_width, &ascent, &descent, NULL); roadmap_canvas_select_pen (RoadMapTickerPen); end = roadmap_canvas_width(); start = 1; start_x = 1; image = (RoadMapImage) roadmap_res_get(RES_BITMAP, RES_SKIN, TICKER_MIDDLE_IMAGE); if ( image ) { while (start < end){ position.x = start; position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset(); roadmap_canvas_draw_image ( image, &position, 0, IMAGE_NORMAL); start += roadmap_canvas_image_width( image ); } } position.x = 0; if (ssd_widget_rtl(NULL)){ allign = ROADMAP_CANVAS_RIGHT; text_position.x = roadmap_canvas_width() -4; } else{ allign = ROADMAP_CANVAS_LEFT; text_position.x = 4; } text_position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + 2; roadmap_canvas_draw_string_size (&text_position, allign |ROADMAP_CANVAS_TOP, 14,roadmap_lang_get("Your Points (updated daily)")); text_position.x = 4; text_position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + 2 +TICKER_TOP_BAR_TEXT_OFFSET; switch( gLastUpdateEvent ) { case default_event: point_text = roadmap_lang_get("New points"); break; case report_event: point_text = roadmap_lang_get("Road report"); break; case comment_event: point_text = roadmap_lang_get("Event comment"); break; case confirm_event: point_text= roadmap_lang_get("Prompt response"); break; case road_munching_event : point_text= roadmap_lang_get("Road munching"); break; case user_contribution_event : point_text= roadmap_lang_get("Traffic detection"); break; case bonus_points : point_text= roadmap_lang_get("Bonus points"); break; } roadmap_canvas_draw_string_size (&text_position, ROADMAP_CANVAS_LEFT|ROADMAP_CANVAS_TOP, 14,point_text); image = (RoadMapImage) roadmap_res_get(RES_BITMAP, RES_SKIN, TICKER_DIVIDER); if ( image ) { position.y = roadmap_bar_top_height() + TICKER_TOP_BAR_DIVIDER_OFFSET; position.x = width /3 +4 + 30; roadmap_canvas_draw_image ( image, &position, 0, IMAGE_NORMAL); position.y = roadmap_bar_top_height() + TICKER_TOP_BAR_DIVIDER_OFFSET; position.x = 2*width/3+4 +15; roadmap_canvas_draw_image ( image, &position, 0, IMAGE_NORMAL); } text_position.x = (width/3) + (width/3)/4 + 30; text_position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + 2 + TICKER_TOP_BAR_TEXT_OFFSET; roadmap_canvas_draw_string_size (&text_position, ROADMAP_CANVAS_LEFT|ROADMAP_CANVAS_TOP, 14,roadmap_lang_get("Total")); text_position.x = (width/3) + (width/3)/4+ 30; text_position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + text_offset_y +TICKER_TOP_BAR_TEXT_OFFSET; iMyTotalPoints = editor_points_get_total_points(); if (iMyTotalPoints != -1){ if (iMyTotalPoints < 10000){ sprintf(points,"%d", iMyTotalPoints); } else{ sprintf(points,"%dK", (int)iMyTotalPoints/1000); } } else{ strcpy(points,""); } roadmap_canvas_draw_string_size (&text_position, ROADMAP_CANVAS_LEFT|ROADMAP_CANVAS_TOP, 14,points); text_position.x = width - (width/3) + (width/3)/4+ 15; text_position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + 2 +TICKER_TOP_BAR_TEXT_OFFSET; iMyRanking = RealTime_GetMyRanking(); if (iMyRanking == -1) strcpy(rank,""); else sprintf(rank, "%d", iMyRanking); roadmap_canvas_draw_string_size (&text_position, ROADMAP_CANVAS_LEFT|ROADMAP_CANVAS_TOP, 14,roadmap_lang_get("Rank")); text_position.x = width - (width/3) + (width/3)/4+ 12; text_position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + text_offset_y +TICKER_TOP_BAR_TEXT_OFFSET; roadmap_canvas_draw_string_size (&text_position, ROADMAP_CANVAS_LEFT|ROADMAP_CANVAS_TOP, 14,rank); if (strcmp(text,"0")){ text_position.x = new_pnts_start_x - start_x + 30; text_position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + text_offset_y +TICKER_TOP_BAR_TEXT_OFFSET; roadmap_canvas_draw_string_size (&text_position, ROADMAP_CANVAS_LEFT|ROADMAP_CANVAS_TOP, 14,"+"); text_position.x = new_pnts_start_x - start_x + 40; text_position.y = roadmap_bar_top_height() + roadmap_ticker_top_bar_offset() + text_offset_y +TICKER_TOP_BAR_TEXT_OFFSET; roadmap_canvas_draw_string_size (&text_position, ROADMAP_CANVAS_LEFT|ROADMAP_CANVAS_TOP, 14,text); } #ifdef TOUCH_SCREEN x_image = (RoadMapImage) roadmap_res_get(RES_BITMAP, RES_SKIN, "x_close"); if ( x_image ) { position.x = roadmap_canvas_width() - roadmap_canvas_image_width(x_image) - 5; position.y = roadmap_bar_top_height() + gMiddleImageSize.height -roadmap_canvas_image_height(x_image) -5; roadmap_canvas_draw_image ( x_image, &position, 0, IMAGE_NORMAL); } #endif }
void roadmap_display_sign_pop_up(RoadMapSign *sign) { RoadMapGuiPoint text_position; RoadMapGuiPoint top, bottom; int text_height = 0; RoadMapGuiPoint icon_screen_point; int width, ascent, descent; int lines = 1; int screen_width; int sign_width; int i; int allign = ROADMAP_CANVAS_TOPLEFT; if (ssd_widget_rtl (NULL)) allign = ROADMAP_CANVAS_TOPRIGHT; roadmap_canvas_get_text_extents (sign->content, -1, &width, &ascent, &descent, NULL); text_height = ascent + descent + 5; screen_width = roadmap_canvas_width(); for (i = 0; sign->content[i] != '\0'; i++) if (sign->content[i]=='\n') lines++; if (lines < 2) lines = 2; sign->deadline = -1; top.x = 1; top.y = roadmap_bar_top_height()+1; bottom.x = screen_width; #ifdef TOUCH_SCREEN bottom.y = (lines) * 21 + top.y + 8; sign_width = roadmap_display_border(sign->style, sign->header_type, sign->pointer_type, &bottom, &top, "#d2dfef", &sign->position,0); #else bottom.y = (lines) * 21 + top.y; sign_width = roadmap_display_border(sign->style, sign->header_type, sign->pointer_type, &bottom, &top, "#e4f1f9", &sign->position,0); #endif if (sign->image != NULL){ RoadMapImage close; RoadMapImage image = (RoadMapImage) roadmap_res_get(RES_BITMAP, RES_SKIN, sign->image); if (image){ if (ssd_widget_rtl (NULL)) icon_screen_point.x = top.x + 12; else icon_screen_point.x = top.x + sign_width - 12 - roadmap_canvas_image_width(image); icon_screen_point.y = bottom.y - roadmap_canvas_image_height(image) -12; roadmap_canvas_draw_image (image, &icon_screen_point, 0, IMAGE_NORMAL); } close = (RoadMapImage) roadmap_res_get(RES_BITMAP, RES_SKIN, "rm_quit"); if (close){ icon_screen_point.y = top.y + 4; if (ssd_widget_rtl (NULL)) icon_screen_point.x = top.x + 2; else icon_screen_point.x = top.x + sign_width - 12 - roadmap_canvas_image_width(close); roadmap_canvas_draw_image (close, &icon_screen_point, 0, IMAGE_NORMAL); } } roadmap_canvas_select_pen (sign->foreground); if (ssd_widget_rtl (NULL)) text_position.x = sign_width - 10 ; else text_position.x = 10; #ifdef TOUCH_SCREEN text_position.y = roadmap_bar_top_height() + 5 ; #else text_position.y = roadmap_bar_top_height() + 9 ; #endif roadmap_display_string (sign->content, lines, text_height, &text_position, allign); }
static void roadmap_display_sign (RoadMapSign *sign) { RoadMapGuiPoint points[7]; RoadMapGuiPoint text_position; int width, height, ascent, descent; int screen_width; int sign_width, sign_height, text_height; int count; int i; int lines; RoadMapGuiPoint icon_screen_point; RoadMapImage image; roadmap_log_push ("roadmap_display_sign"); roadmap_canvas_get_text_extents (sign->content, 12, &width, &ascent, &descent, NULL); width += 8; /* Keep some room around the text. */ height = roadmap_canvas_height(); screen_width = roadmap_canvas_width(); /* Check if the text fits into one line, or if we need to use * more than one. */ if (width + 10 < screen_width) { sign_width = width; lines = 1; } else { sign_width = screen_width - 10; lines = 1 + ((width + 10) / screen_width); } for (i = 0; sign->content[i] != '\0'; i++) if (sign->content[i]=='\n') lines++; text_height = ascent + descent + 4; sign_height = lines * text_height ; // screen_width = roadmap_canvas_width(); if (sign->has_position) { int visible = roadmap_math_point_is_visible (&sign->position); if (sign->was_visible && (! visible)) { sign->deadline = 0; roadmap_log_pop (); return; } sign->was_visible = visible; roadmap_math_coordinate (&sign->position, points); roadmap_math_rotate_project_coordinate ( points ); if (sign->where == SIGN_TOP) { points[1].x = 5 + (screen_width - sign_width) / 2; points[2].x = points[1].x - 5; points[4].x = (screen_width + sign_width) / 2; points[6].x = points[1].x + 10; text_position.x = points[2].x + 4; } else if (points[0].x < screen_width / 2) { points[1].x = 10; points[2].x = 5; points[4].x = sign_width + 5; points[6].x = 20; text_position.x = 9; } else { points[1].x = screen_width - 10; points[2].x = screen_width - 5; points[4].x = screen_width - sign_width - 5; points[6].x = screen_width - 20; text_position.x = points[4].x + 4; } points[3].x = points[2].x; points[5].x = points[4].x; if (sign->where == SIGN_TOP || (points[0].y > height / 2)) { points[1].y = sign_height + roadmap_bar_top_height() +roadmap_ticker_height()+roadmap_message_ticker_height()+5; if (points[0].y < points[1].y){ points[0].x = points[1].x; points[0].y = points[1].y; } points[3].y = roadmap_bar_top_height() +roadmap_ticker_height()+roadmap_message_ticker_height()+5; text_position.y = roadmap_bar_top_height() + roadmap_ticker_height()+roadmap_message_ticker_height()+8; } else { points[1].y = height - sign_height - roadmap_bar_bottom_height() - 5; points[3].y = height - roadmap_bar_bottom_height() - 5; text_position.y = points[1].y + 3; } points[2].y = points[1].y; points[4].y = points[3].y; points[5].y = points[1].y; points[6].y = points[1].y; count = 7; roadmap_display_highlight (&sign->endpoint[0]); roadmap_display_highlight (&sign->endpoint[1]); } else { points[0].x = (screen_width - sign_width) / 2; points[1].x = (screen_width + sign_width) / 2; points[0].x = 2; points[1].x = 2+sign_width; points[2].x = points[1].x; points[3].x = points[0].x; switch (sign->where) { case SIGN_BOTTOM: points[0].y = height - sign_height - roadmap_bar_bottom_height(); break; case SIGN_TOP: points[0].y = roadmap_bar_top_height() +roadmap_ticker_height()+roadmap_message_ticker_height()+3; break; case SIGN_RIGHT: points[0].y = roadmap_bar_top_height() +roadmap_ticker_height()+roadmap_message_ticker_height()+3; points[0].x = 2; points[1].x = 2+sign_width; points[2].x = points[1].x; points[3].x = points[0].x; break; case SIGN_CENTER: points[0].y = (height - sign_height) / 2; break; } points[1].y = points[0].y; points[2].y = points[0].y + sign_height; points[3].y = points[2].y; text_position.x = points[0].x + 4; text_position.y = points[0].y + 1; count = 4; } roadmap_canvas_select_pen (sign->background); roadmap_canvas_set_opacity(181); roadmap_canvas_draw_multiple_polygons (1, &count, points, 1, 0); roadmap_canvas_select_pen (RoadMapMessageContour); roadmap_canvas_draw_multiple_polygons (1, &count, points, 0, 0); if (sign->image != NULL){ image = (RoadMapImage) roadmap_res_get(RES_BITMAP, RES_SKIN, sign->image); icon_screen_point.x = points[3].x + 2; icon_screen_point.y = points[3].y+sign_height/2 - roadmap_canvas_image_width(image)/2; roadmap_canvas_draw_image (image, &icon_screen_point, 0, IMAGE_NORMAL); } roadmap_canvas_select_pen (sign->foreground); roadmap_display_string (sign->content, lines, text_height, &text_position, ROADMAP_CANVAS_TOPLEFT); roadmap_log_pop (); }
static void roadmap_display_console_box (int type, int corner, const char *format) { char text[256]; int count; int width, ascent, descent; int warning_font_size = 13; int offset = 62; #ifdef ANDROID warning_font_size = 15; #endif RoadMapGuiPoint frame[4]; #ifdef _WIN32 offset = 33; #endif count = 4; if (! roadmap_message_format (text, sizeof(text), format)) { return; } #ifdef QTMOBILITY { roadmap_display_set_message(text); return; } #endif if ( type == ROADMAP_CONSOLE_WARNING ){ roadmap_canvas_get_text_extents (text, warning_font_size, &width, &ascent, &descent, NULL); while (width > (roadmap_canvas_width()-10)){ warning_font_size--; roadmap_canvas_get_text_extents (text, warning_font_size, &width, &ascent, &descent, NULL); } } else if (type == ROADMAP_CONSOLE_ACTIVITY ){ roadmap_canvas_get_text_extents (text, 12, &width, &ascent, &descent, NULL); } else { roadmap_canvas_get_text_extents (text, 16, &width, &ascent, &descent, NULL); } if (roadmap_screen_is_hd_screen()) offset = 94; if (type == ROADMAP_CONSOLE_ACTIVITY) { #ifdef TOUCH_SCREEN if (roadmap_horizontal_screen_orientation()) frame[2].x = roadmap_canvas_width() - offset; else #endif frame[2].x = roadmap_canvas_width() ; frame[0].x = frame[2].x - width - 4; } else if (corner & ROADMAP_CANVAS_RIGHT) { #ifdef TOUCH_SCREEN if (roadmap_horizontal_screen_orientation()) frame[2].x = roadmap_canvas_width() - 5-offset; else #endif frame[2].x = roadmap_canvas_width() - 1 ; frame[0].x = frame[2].x - width - 6; } else { frame[0].x = 5; frame[2].x = frame[0].x + width + 6; } frame[1].x = frame[0].x; frame[3].x = frame[2].x; if (corner & ROADMAP_CANVAS_BOTTOM) { frame[0].y = roadmap_canvas_height () - ascent - descent - 11 - 22; frame[1].y = roadmap_canvas_height () - 6 - 22; } else { if ( type == ROADMAP_CONSOLE_ACTIVITY || type == ROADMAP_CONSOLE_WARNING ) { frame[0].y = roadmap_bar_top_height() + roadmap_ticker_height()+ roadmap_message_ticker_height()+1; } else { frame[0].y = 40; } frame[1].y = ascent + descent + frame[0].y + 6; } frame[2].y = frame[1].y; frame[3].y = frame[0].y; count = 4; if (type == ROADMAP_CONSOLE_WARNING ) { roadmap_canvas_select_pen (RoadMapWarningBackground); roadmap_canvas_set_opacity(181); } else if (type == ROADMAP_CONSOLE_ACTIVITY) { roadmap_canvas_select_pen (RoadMapActivityBackground); } else { roadmap_canvas_select_pen (RoadMapConsoleBackground); } roadmap_canvas_draw_multiple_polygons (1, &count, frame, 1, 0); if (type == ROADMAP_CONSOLE_WARNING) { roadmap_canvas_select_pen (RoadMapWarningForeground); } else if (type == ROADMAP_CONSOLE_ACTIVITY) { roadmap_canvas_select_pen (RoadMapActivityForeground); } else { roadmap_canvas_select_pen (RoadMapConsoleForeground); } if (type != ROADMAP_CONSOLE_WARNING ) roadmap_canvas_draw_multiple_polygons (1, &count, frame, 0, 0); frame[0].x = frame[3].x - 3; frame[0].y = frame[3].y + 1; if (type == ROADMAP_CONSOLE_WARNING ) { roadmap_canvas_draw_string_size (frame, ROADMAP_CANVAS_RIGHT|ROADMAP_CANVAS_TOP, warning_font_size,text); } else if (type == ROADMAP_CONSOLE_ACTIVITY) roadmap_canvas_draw_string_size (frame, ROADMAP_CANVAS_RIGHT|ROADMAP_CANVAS_TOP, 12,text); else roadmap_canvas_draw_string (frame, ROADMAP_CANVAS_RIGHT|ROADMAP_CANVAS_TOP, text); }
static void draw_dialog (SsdDialog dialog) { if (!dialog) { return; } else { RoadMapGuiRect rect; rect.minx = 0; #ifndef TOUCH_SCREEN if (is_screen_wide()) rect.miny = 1; else rect.miny = roadmap_bar_top_height()+1; rect.maxx = roadmap_canvas_width() -1; #else rect.miny = 1; rect.maxx = roadmap_canvas_width() -1; #endif #ifdef TOUCH_SCREEN rect.maxy = roadmap_canvas_height() - 1; #else rect.maxy = roadmap_canvas_height() - 1 - roadmap_bar_bottom_height() ; #endif ssd_widget_reset_cache (dialog->container); ssd_widget_draw (dialog->container, &rect, 0); if ((dialog->container->flags & SSD_CONTAINER_TITLE) && (dialog->scroll_container != NULL) && (dialog->scroll_container->offset_y < 0)){ SsdWidget title; SsdSize size; title = ssd_widget_get (dialog->container, "title_bar"); ssd_widget_get_size(title, &size, NULL); #ifndef TOUCH_SCREEN if (!is_screen_wide()){ rect.miny = roadmap_bar_top_height(); } else{ rect.miny = 0; } #else rect.miny = 1; #endif rect.maxy = rect.miny + size.height-1 ; title->draw(title, &rect, 0); rect.miny +=1; ssd_widget_draw(title->children, &rect, 0); } #ifndef TOUCH_SCREEN roadmap_bar_draw_bottom_bar(TRUE); if ((dialog->container->flags & SSD_CONTAINER_TITLE) && (dialog->scroll_container != NULL) && (dialog->scroll_container->offset_y < 0)) if (!is_screen_wide()) roadmap_bar_draw_top_bar(TRUE); #endif ssd_dialog_sort_tab_order( dialog); ssd_dialog_sort_tab_order_by_gui_position(); } }