Esempio n. 1
0
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;
}
Esempio n. 2
0
void roadmap_canvas3_ogl_updateScale(int zoom) {
	float angRad;
	//static float maxAngle= 67.3;
   static float maxAngle= 62;
	float ang= 24;
	//float angZoom= 384;
   float angZoom= 3000;

   if (!isInitialized || zoom== 0)
      return;
   if ( !is_canvas_ready() )
      return;

   if ( roadmap_screen_is_hd_screen() ) {
	   zoom /= 2;
   }

	while (angZoom > zoom) {
		angZoom/= 1.1;
		ang= ang* 1.026; // (5/4)^(ln(1.1)/ln(2))
	}
	if (ang > maxAngle)
		ang= maxAngle;
	angRad= ang*M_PI/180;
	if (angRad!= angle) {
		double distH;
		angle= angRad;
		distH= roadmap_canvas_ogl_rotateMe(0);
		roadmap_log(ROADMAP_DEBUG,"zoom= %d angle= %lf y dist= %lg\n",zoom,ang,distH);
	}
}
Esempio n. 3
0
static NOPH_Font_t roadmap_canvas_getFont(int size) {
	static NOPH_Font_t s_fontDefault;
	static int deviceVersion = 0;
	if(!deviceVersion)
	deviceVersion = NOPH_FreemapApp_getDeviceVersion();

	if(size<=0) // the default font is too small, so set it manually. 
	size = 12;

	if(roadmap_screen_is_hd_screen()) {
		size = size * 1.6;
		if ( deviceVersion == 8900)
		size +=2; // 8900 has a bigger resolution, so use a bigger font.
		if (deviceVersion == 9100)
		size -=2;
	}

	if(!s_fontDefault)
	s_fontDefault = NOPH_Font_getDefault();

	if (size>MAX_FONT_SIZE)
	size = MAX_FONT_SIZE;

	if(static_fonts[size] == 0)
	static_fonts[size] = NOPH_Font_derive(s_fontDefault, NOPH_Font_BOLD, size);
	return static_fonts[size];
}
Esempio n. 4
0
static SsdWidget space (int height) {
   SsdWidget space;
   if (roadmap_screen_is_hd_screen())
      height *= 2;
   space = ssd_container_new ("spacer", NULL, SSD_MAX_SIZE, height, SSD_WIDGET_SPACE | SSD_END_ROW);
   ssd_widget_set_color (space, NULL, NULL);
   return space;
}
Esempio n. 5
0
void roadmap_groups_dialog (RoadMapCallback callback) {
   int row_height = 60;
   SsdWidget groupDlg;
   SsdWidget list;
   int flags = 0;
   int i;
   int count;
   const char *active_name;
   static char *labels[MAX_GROUPS] ;
   static void *values[MAX_GROUPS] ;
   static void *icons[MAX_GROUPS];
   int num_following;

   if (roadmap_screen_is_hd_screen()){
      row_height = 80;
   }

#ifdef OPENGL
    flags |= SSD_ALIGN_CENTER|SSD_CONTAINER_BORDER|SSD_ROUNDED_CORNERS|SSD_ROUNDED_WHITE;
#endif
    groupDlg   = ssd_dialog_new ( "groupDlg", roadmap_lang_get ("Groups"), NULL, SSD_CONTAINER_TITLE);
    groupDlg->context = (void *)callback;
    list = ssd_list_new ("list", SSD_MAX_SIZE, SSD_MAX_SIZE, inputtype_none, flags, NULL);
    ssd_list_resize ( list, row_height );

    active_name = roadmap_groups_get_active_group_name();
    count = roadmap_groups_get_num_following();
    num_following = roadmap_groups_get_num_following();
    if (active_name[0] != 0){
       values[0] = (void *)roadmap_groups_get_active_group_name();
       icons[0]   = (void *) roadmap_groups_get_active_group_icon();
       labels[0] = (char *)active_name;
       num_following -= 1;
    }
    else{
       values[0] = "";
       icons[0]   = NULL;
       labels[0] = (char *)roadmap_lang_get("No group");
    }

    for (i = 0; i< num_following; i++){
       values[i+1] = (void *)roadmap_group_get_following_name(i);
       icons[i+1]   = (void *) roadmap_group_get_following_icon(i);
       labels[i+1] = (char *) roadmap_group_get_following_name(i);
    }

    if (active_name[0] != 0){
       values[count] = "";
       icons[count]   = NULL;
       labels[count] = (char *)roadmap_lang_get("No group");
    }

    ssd_list_populate (list, count+1, (const char **)labels, (const void **)values, (const char **)icons, NULL, groups_callback, NULL, FALSE);
    ssd_widget_add (groupDlg, list);
    ssd_dialog_activate ("groupDlg", NULL);
    ssd_dialog_draw ();

}
Esempio n. 6
0
static inline int is_click( const RoadMapGuiPoint *point ){

   const int threshold = roadmap_screen_is_hd_screen() ?
                        ((3 * CLICK_MOVEMENT_THR)/2) : CLICK_MOVEMENT_THR;

   if ( ( abs( first_pointer_point.x - point->x ) <= threshold ) &&
       ( abs( first_pointer_point.y - point->y ) <= threshold ) )
   {
      return 1;
   }
   return 0;
}
Esempio n. 7
0
static void roadmap_speedometer_after_refresh (void){
   RoadMapGuiPoint image_position;
   RoadMapGuiPoint text_position;
   RoadMapGuiPoint units_position;
   RoadMapGpsPosition pos;
   RoadMapPen speedometer_pen;
   char str[30];
   char unit_str[30];
   int font_size = 20;
   int font_size_units = 10;
   int speed_offset = 6;
   int units_offset = 6;
   int speed;

#ifdef IPHONE_NATIVE
	font_size = 18;
	font_size_units = 8;
#else
   if ( roadmap_lang_rtl() )
      font_size_units--;     // Longer text for units
#endif


   if (SpeedometerImage == NULL){
      return;
   }

   if (gHideSpeedometer){
         after_refresh_callback();
         return;
   }

   if (!roadmap_map_settings_isShowSpeedometer()){
      after_refresh_callback();
      return;
   }

   if (roadmap_screen_is_hd_screen()){
      speed_offset *= 1.5;
      units_offset *= 1.5;
   }
   roadmap_navigate_get_current (&pos, NULL, NULL);
   speed = pos.speed;
   if ((speed == -1) || !roadmap_gps_have_reception()){
      after_refresh_callback();
      return;
   }


   speedometer_pen = roadmap_canvas_create_pen ("speedometer_pen");
   if (roadmap_skin_state() == 1)
      roadmap_canvas_set_foreground(SPEEDOMETER_SPEED_COLOR_NIGHT);
   else
      roadmap_canvas_set_foreground(SPEEDOMETER_SPEED_COLOR_DAY);

   image_position.x = roadmap_canvas_width() - roadmap_canvas_image_width(SpeedometerImage);
   image_position.y = roadmap_canvas_height() - roadmap_canvas_image_height(SpeedometerImage) - roadmap_bar_bottom_height() - gOffset;
   roadmap_canvas_draw_image (SpeedometerImage, &image_position,  0, IMAGE_NORMAL);

   text_position.y = image_position.y + roadmap_canvas_image_height(SpeedometerImage) *.8;
   units_position.y = image_position.y + roadmap_canvas_image_height(SpeedometerImage)*.8;

   if (speed != -1){
      if (!roadmap_gps_is_show_raw()) {
         snprintf (str, sizeof(str), "%3d", roadmap_math_to_speed_unit(speed));
         snprintf (unit_str, sizeof(unit_str), "%s",  roadmap_lang_get(roadmap_math_speed_unit()));
      } else {
         snprintf (str, sizeof(str), "%3d", pos.accuracy);
         snprintf (unit_str, sizeof(unit_str), "%s",  "ac");
      }

      if (ssd_widget_rtl(NULL)){
         text_position.x = roadmap_canvas_width() -speed_offset;
         roadmap_canvas_draw_string_size(&text_position, ROADMAP_CANVAS_BOTTOMRIGHT, font_size, str);

         units_position.x = image_position.x + units_offset;
         roadmap_canvas_draw_string_size(&units_position, ROADMAP_CANVAS_BOTTOMLEFT, font_size_units, unit_str);
      }
      else{
         text_position.x = image_position.x + speed_offset;
         roadmap_canvas_draw_string_size(&text_position, ROADMAP_CANVAS_BOTTOMLEFT, font_size, str);

         units_position.x = roadmap_canvas_width() -units_offset;
         roadmap_canvas_draw_string_size(&units_position, ROADMAP_CANVAS_BOTTOMRIGHT, font_size_units, unit_str);
      }
   }

   after_refresh_callback();
}
Esempio n. 8
0
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

}
Esempio n. 9
0
SsdWidget navigate_res_ETA_widget(int iRouteDistance, int iRouteLenght, const char *via, BOOL showDistance, BOOL showAltBtn, SsdCallback callback){
   SsdWidget ETA_container, inner_container, button, text;
   char *icon[3];
   int inner_width;
   int font_size;
   int alt_route_button_w = 60;
   int width = SSD_MAX_SIZE;
   int factor = 10;
   int num_spaces = 7;
   if (roadmap_screen_is_hd_screen())
      alt_route_button_w = 90;
#ifdef IPHONE_NATIVE
   width = 280;
#else
   width = roadmap_canvas_width() - 40;
   if (roadmap_canvas_height() < roadmap_canvas_width())
      width = roadmap_canvas_height() - 40;
#endif

#ifndef TOUCH_SCREEN
   alt_route_button_w = 0;
#endif   
   ETA_container = ssd_container_new ("eta container", NULL, width, SSD_MIN_SIZE,
                  SSD_WIDGET_SPACE | SSD_ALIGN_CENTER | SSD_END_ROW  );
   ssd_widget_set_color(ETA_container, NULL, NULL);

   if (roadmap_canvas_width() > roadmap_canvas_height()){
      inner_width = roadmap_canvas_height() - alt_route_button_w - 40;
   }else{
      inner_width = roadmap_canvas_width() - alt_route_button_w - 40;
   }
   inner_container = ssd_container_new ("inner container", NULL, inner_width, SSD_MIN_SIZE,
                  SSD_WIDGET_SPACE | SSD_END_ROW  );
   ssd_widget_set_color(inner_container, NULL, NULL);
   
   // Add Alternatives buttons
#ifdef TOUCH_SCREEN   
   if (roadmap_alternative_feature_enabled() && RealTimeLoginState () && showAltBtn){
      icon[0] = "alternative_button";
      icon[1] = "alternative_button_s";
      icon[2] = NULL;
      button = ssd_button_new("Alt_button", "Alt",(const char**) &icon[0], 2, SSD_ALIGN_RIGHT|SSD_WS_TABSTOP, callback);
      ssd_widget_add(ETA_container, button);
   }
#endif   
 
#ifdef IPHONE_NATIVE
//   ssd_widget_add (inner_container, space (7));
#endif
   font_size = 30;
#ifdef RIMAPI
   font_size = 22;
#endif
   text = ssd_text_new ("ETA_W_Minutes_Text", "", font_size, 0);
   ssd_text_set_color(text,"#ffffff");
   ssd_widget_add (inner_container, text);
   ssd_dialog_add_hspace(inner_container, 3, 0);
   font_size = 24;
#ifdef RIMAPI
   ssd_widget_set_offset(text, 0, 4);
   font_size = 16;
#endif

   text = ssd_text_new ("ETA__W_Min_text", roadmap_lang_get ("min."), font_size, 0);
   ssd_text_set_color(text,"#ffffff");
#ifndef RIMAPI
   ssd_widget_set_offset(text, 0, 6);
#else
   ssd_widget_set_offset(text, 0, 13);
#endif
   ssd_widget_add (inner_container, text);

   if (showDistance){
#ifndef RIMAPI
      ssd_dialog_add_hspace(inner_container, 5, 0);
#else
      ssd_dialog_add_hspace(inner_container, 3, 0);
#endif
      text = ssd_text_new ("ETA_W_Distance_Text", "", 18, SSD_TEXT_NORMAL_FONT);
      ssd_text_set_color(text,"#ffffff");
      ssd_widget_add (inner_container, text);

//#ifndef IPHONE_NATIVE 
#ifdef RIMAPI
      ssd_dialog_add_hspace(inner_container, 1, 0);
      ssd_widget_set_offset(text, 0, 11);
#else
      ssd_dialog_add_hspace(inner_container, 3, 0);
      ssd_widget_set_offset(text, 0, 14);
#endif
//#endif      
      text = ssd_text_new ("ETA_W_Distance_Unit_Text", "", 16, SSD_END_ROW|SSD_TEXT_NORMAL_FONT);
      ssd_text_set_color(text,"#ffffff");
      ssd_widget_add (inner_container, text);
//#ifndef IPHONE_NATIVE 
#ifdef RIMAPI
      ssd_widget_set_offset(text, 0, 13);
#else
      ssd_widget_set_offset(text, 0, 15);
#endif
//#endif   
  }
   
#ifdef RIMAPI
   num_spaces = 2;
#endif
   ssd_widget_add (inner_container, space (num_spaces));
   

   text = ssd_text_new ("ETA_Text", "", 18, SSD_TEXT_NORMAL_FONT);
   ssd_text_set_color(text,"#ffffff");
   ssd_widget_add (inner_container, text);
   ssd_dialog_add_hspace(inner_container, 3, 0);
   
   text = ssd_text_new ("ETA_W_ETA_TIME_Text", "", 18, SSD_END_ROW|SSD_TEXT_NORMAL_FONT);
   ssd_text_set_color(text,"#ffffff");
   ssd_widget_add (inner_container, text);
   ssd_widget_add (inner_container, space (2));


   // VIA Text
#ifndef RIMAPI
   text = ssd_text_new ("ETA_W_VIA_Text", "", 16, SSD_END_ROW|SSD_TEXT_NORMAL_FONT);
#else
   text = ssd_text_new ("ETA_W_VIA_Text", "", 13, SSD_END_ROW|SSD_TEXT_NORMAL_FONT);
#endif
   ssd_text_set_color(text,"#ffffff");
   ssd_widget_add (inner_container, text);
   
   ssd_widget_add(ETA_container, inner_container);
   navigate_res_update_ETA_widget(ETA_container, iRouteDistance, iRouteLenght, via, showDistance);
   return ETA_container;
   
}
Esempio n. 10
0
static char* get_download_url (int type, const char *lang, const char* name) {
   char* url;
   const char* url_prefix;
   const char* url_ver;

   switch (type) {
      case RES_DOWNLOAD_IMAGE:
         url_prefix = get_images_url_prefix ();
         url_ver = get_images_url_ver();
         break;
      case RES_DOWNLOAD_COUNTRY_SPECIFIC_IMAGES:
         url_prefix = get_country_specific_images_url_prefix();
         url_ver = get_country_specific_images_url_ver();
         break;
      case RES_DOWNLOAD_SOUND:
         url_prefix = get_sound_url_prefix ();
         url_ver = get_sound_url_ver();
         break;
      case RES_DOWNLOAD_LANG:
         url_prefix = get_langs_url_prefix ();
         url_ver = get_langs_url_ver();
         break;
      default:
         url_prefix = get_config_url_prefix ();
         url_ver = get_config_url_ver();
         break;
   }

   if (!*url_prefix){
      roadmap_log (ROADMAP_ERROR,"Failed to download resource. URL prefix is empty  type=%d, lang=%s, name=%s" ,type, lang, name );
      return NULL;
   }
   // Size of prefix +  size of image id + '\0'
   url = malloc (strlen (url_prefix) + strlen(url_ver) + strlen (name) + +strlen (lang) + +strlen (
                  roadmap_geo_config_get_server_id ()) + 10);

   roadmap_check_allocated( url );

   strcpy (url, url_prefix);

   if (url_ver[0] != 0){
      strcat (url, url_ver);
      strcat (url, "/");
   }


   if (lang && (lang[0] != 0)) {
      strcat (url, lang);
      strcat (url, "/");
   }

   if (type == RES_DOWNLOAD_CONFIFG) {
      strcat (url, roadmap_geo_config_get_server_id ());
      strcat (url, "/");
   }

   if (roadmap_screen_is_hd_screen()){
     if (( type == RES_DOWNLOAD_IMAGE ) || ( type == RES_DOWNLOAD_COUNTRY_SPECIFIC_IMAGES )){
      	strcat (url, "HD");
	    strcat (url, "/");
      }
   }
   else
   {
#ifndef TOUCH_SCREEN
      if (( type == RES_DOWNLOAD_IMAGE ) || ( type == RES_DOWNLOAD_COUNTRY_SPECIFIC_IMAGES )){
          strcat (url, "no_touch");
        strcat (url, "/");
       }
#endif
   }

   strcat (url, name);

   return url;
}
Esempio n. 11
0
void roadmap_canvas_draw_formated_string_angle (const RoadMapGuiPoint *position,
                                                RoadMapGuiPoint *center,
                                                int angle, int size,
                                                int font_type,
                                                const char *text)
{

   font_manager_type *fman;
   font_manager_type *image_fman;
   font_engine_type  *feng;
   font_engine_type  *image_feng;

   if ((font_type & FONT_TYPE_NORMAL) && (!RoadMapCanvasNormalFontLoaded))
      font_type = FONT_TYPE_BOLD;


   if (font_type & FONT_TYPE_NORMAL){
      fman = &m_fman_nor;
      feng = &m_feng_nor;
      image_feng = &m_image_feng_nor;
      image_fman = &m_image_fman_nor;
   }
   else{
      fman = &m_fman;
      feng = &m_feng;
      image_feng = &m_image_feng;
      image_fman = &m_image_fman;
   }


   if ((font_type & FONT_TYPE_BOLD) && (RoadMapCanvasFontLoaded != 1)) return;


   dbg_time_start(DBG_TIME_TEXT_FULL);
   dbg_time_start(DBG_TIME_TEXT_CNV);

   wchar_t wstr[255];
   int length = roadmap_canvas_agg_to_wchar (text, wstr, 255);
   if (length <=0) return;

#ifdef USE_FRIBIDI
   wchar_t *bidi_text = bidi_string(wstr);
   const wchar_t* p = bidi_text;
#else
   const wchar_t* p = wstr;
#endif

   ren_solid.color(CurrentPen->color);
   dbg_time_end(DBG_TIME_TEXT_CNV);

   double x  = 0;
   double y  = 0;
   if (size < 0) size = 15;

   if ( roadmap_screen_is_hd_screen() )
   {
     size = (int)(size * CANVAS_HD_FONT_FACTOR);
   }
   else{
#ifdef _WIN32
      size = (int) (size * 0.9);
#endif
   }

   if (angle == 0) {

      /* Use faster drawing for text with no angle */
      x  = position->x;
      y  = position->y;

//      ren_solid.color(agg::rgba8(0, 0, 0));

      image_feng->height(size);
      image_feng->width(size);

      while(*p) {
         const agg::glyph_cache* glyph = image_fman->glyph(*p);

         if(glyph) {
            image_fman->init_embedded_adaptors(glyph, x, y);

            agg::render_scanlines(image_fman->gray8_adaptor(),
                  image_fman->gray8_scanline(),
                  ren_solid);

            // increment pen position
            x += glyph->advance_x;
            y += glyph->advance_y;
         }
         ++p;
      }
   }
   else{
      feng->height(size);
      feng->width(size);
   }

   while(*p) {
      dbg_time_start(DBG_TIME_TEXT_ONE_LETTER);
      dbg_time_start(DBG_TIME_TEXT_GET_GLYPH);
      const agg::glyph_cache* glyph = fman->glyph(*p);
      dbg_time_end(DBG_TIME_TEXT_GET_GLYPH);

      if(glyph) {
         fman->init_embedded_adaptors(glyph, x, y);

         //agg::conv_curve<font_manager_type::path_adaptor_type> stroke(fman->path_adaptor());

         agg::trans_affine mtx;
         if (abs(angle) > 0) {
            mtx *= agg::trans_affine_rotation(agg::deg2rad(angle));
         }
         mtx *= agg::trans_affine_translation(position->x, position->y);

         agg::conv_transform<font_manager_type::path_adaptor_type> tr(fman->path_adaptor(), mtx);

         agg::conv_curve<agg::conv_transform<font_manager_type::path_adaptor_type> > fill(tr);

         //agg::conv_stroke<
            //agg::conv_curve<agg::conv_transform<font_manager_type::path_adaptor_type> > >
         //stroke(fill);

         //agg::conv_contour<agg::conv_transform<font_manager_type::path_adaptor_type> >contour(tr);
         //contour.width(2);

         //agg::conv_stroke< agg::conv_contour<agg::conv_transform<font_manager_type::path_adaptor_type> > > stroke(contour);
         //agg::conv_stroke< agg::conv_transform<font_manager_type::path_adaptor_type> > stroke(tr);

         dbg_time_start(DBG_TIME_TEXT_ONE_RAS);

#ifdef WIN32_PROFILE
         ResumeCAPAll();
#endif
         ras.reset();
         ras.add_path(tr);
         agg::render_scanlines(ras, sl, ren_solid);
         //ras.add_path(fill);
         //ras.add_path(stroke);
         //ren_solid.color(agg::rgba8(255, 255, 255));
         //agg::render_scanlines(ras, sl, ren_solid);
         //ras.add_path(tr);
         //ren_solid.color(agg::rgba8(0, 0, 0));
         //agg::render_scanlines(ras, sl, ren_solid);

#ifdef WIN32_PROFILE
         SuspendCAPAll();
#endif

         dbg_time_end(DBG_TIME_TEXT_ONE_RAS);

         // increment pen position
         x += glyph->advance_x;
         y += glyph->advance_y;
         dbg_time_end(DBG_TIME_TEXT_ONE_LETTER);
      }
      ++p;
   }

#ifdef USE_FRIBIDI
   free(bidi_text);
#endif

   dbg_time_end(DBG_TIME_TEXT_FULL);
}
Esempio n. 12
0
void roadmap_canvas_get_formated_text_extents
        (const char *text, int size, int *width,
            int *ascent, int *descent, int *can_tilt, int font_type){

   *ascent = 0;
   *descent = 0;
   font_manager_type *fman;
   font_engine_type  *feng;
   font_engine_type  *image_feng;
   wchar_t wstr[255];
   if (can_tilt) *can_tilt = 1;

   if ((font_type & FONT_TYPE_NORMAL) && (!RoadMapCanvasNormalFontLoaded))
      font_type = FONT_TYPE_BOLD;

   int length = roadmap_canvas_agg_to_wchar (text, wstr, 255);

   if (length <=0) {
      *width = 0;
      return;
   }

   double x  = 0;
   double y  = 0;
   const wchar_t* p = wstr;


   if (font_type & FONT_TYPE_NORMAL){
      feng = &m_feng_nor;
      image_feng = &m_image_feng_nor;
   }
   else{
      feng = &m_feng;
      image_feng = &m_image_feng;
   }

   if (size == -1) {
      size = 15;
      if ( roadmap_screen_is_hd_screen() )
      {
            size = (int)(size * CANVAS_HD_FONT_FACTOR);
      }
      else{
   #ifdef _WIN32
         size = (int) (size * 0.9);
   #endif
      }
      feng->height(size);
      feng->width(size);

      /* Use the regular font */
      *descent = abs((int)feng->descender()) + 1;
      *ascent = (int)feng->ascender() + 1;
      if (font_type & FONT_TYPE_NORMAL)
         fman = &m_fman_nor;
      else
         fman = &m_fman;
   } else {
      if ( roadmap_screen_is_hd_screen() )
      {
         size = (int) (size * CANVAS_HD_FONT_FACTOR);
      }
      else{
#ifdef _WIN32
         size = (int) (size * 0.9);
#endif
      }
      image_feng->height(size);
      image_feng->width(size);

      *descent = abs((int)image_feng->descender()) + 1;
      *ascent = (int)image_feng->ascender() + 1;
      if (font_type & FONT_TYPE_NORMAL)
         fman = &m_image_fman_nor;
      else
         fman = &m_image_fman;
   }

   while(*p) {
      const agg::glyph_cache* glyph = fman->glyph(*p);

      if(glyph) {
         x += glyph->advance_x;
         y += glyph->advance_y;
         //if (-glyph->bounds.y1 > *descent) *descent=-glyph->bounds.y1 - 1;
      }
      ++p;
   }

   *width = (int)x;

}
Esempio n. 13
0
void roadmap_canvas_draw_image_formated_text (RoadMapImage image,
                                     const RoadMapGuiPoint *position,
                                     int size, const char *text, int font_type) {
   font_manager_type *image_fman;
   font_engine_type  *image_feng;

   if (RoadMapCanvasFontLoaded != 1) return;

   if ((font_type & FONT_TYPE_NORMAL) && (!RoadMapCanvasNormalFontLoaded))
      font_type = FONT_TYPE_BOLD;

   if (font_type & FONT_TYPE_NORMAL){
      image_fman = &m_image_fman_nor;
      image_feng = &m_image_feng_nor;
   }
   else{
      image_fman = &m_image_fman;
      image_feng = &m_image_feng;
   }

   wchar_t wstr[255];
   int length = roadmap_canvas_agg_to_wchar (text, wstr, 255);
   if (length <=0) return;

#ifdef USE_FRIBIDI
   wchar_t *bidi_text = bidi_string(wstr);
   const wchar_t* p = bidi_text;
#else
   const wchar_t* p = wstr;
#endif

   if ( !roadmap_canvas_check_cached( image ) )
   {
      return;
   }


   if ( roadmap_screen_is_hd_screen() )
   {
      size = (int) (size * CANVAS_HD_FONT_FACTOR);
   }
   else{
#ifdef _WIN32
      size = (int) (size * 0.9);
#endif
   }

   double x  = position->x;
   double y  = position->y + size - 7;

   if ( roadmap_screen_is_hd_screen() )
   {
      y -= 3;
   }

   agg::renderer_base<agg::pixfmt_rgba32> renb(image->pixfmt);
   agg::renderer_scanline_aa_solid< agg::renderer_base<agg::pixfmt_rgba32> > ren_solid (renb);

   //ren_solid.color(agg::rgba8(255, 255, 255));
   ren_solid.color(CurrentPen->color);

   image_feng->height(size);
   image_feng->width(size);

   while(*p) {
      const agg::glyph_cache* glyph = image_fman->glyph(*p);

      if(glyph) {
         image_fman->init_embedded_adaptors(glyph, x, y);

         agg::render_scanlines(image_fman->gray8_adaptor(),
               image_fman->gray8_scanline(),
               ren_solid);

         // increment pen position
         x += glyph->advance_x;
         y += glyph->advance_y;
      }
      ++p;
   }

#ifdef USE_FRIBIDI
   free(bidi_text);
#endif
}
Esempio n. 14
0
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);
}
Esempio n. 15
0
static int get_drag_movement_thr(void){
   if ( roadmap_screen_is_hd_screen() )
      return DRAG_MOVEMENT_THR * 2;
   return DRAG_MOVEMENT_THR;
}
Esempio n. 16
0
static void add_title (SsdWidget w, int flags) {
   SsdWidget title, text;
	int rt_soft_key_flag;
	int lf_soft_key_flag;
	int align_flag = SSD_ALIGN_CENTER;

#ifdef TOUCH_SCREEN
	const char *back_buttons[] = {"back_button", "back_button_s"};
#endif

	if (ssd_widget_rtl (NULL)) {
		rt_soft_key_flag = SSD_END_ROW;
		lf_soft_key_flag = SSD_ALIGN_RIGHT;
	}
	else{
		rt_soft_key_flag = SSD_ALIGN_RIGHT;
		lf_soft_key_flag = SSD_END_ROW;
	}


  if (!((w->flags & SSD_DIALOG_FLOAT) && !(w->flags & SSD_DIALOG_TRANSPARENT)))
  {
	int height = ADJ_SCALE( 34 );

#ifdef ANDROID
   align_flag = 0;
#endif //ANDROID

#ifndef TOUCH_SCREEN
      height = 28;
#endif
   title = ssd_container_new ("title_bar", NULL, SSD_MAX_SIZE, height, SSD_END_ROW);
   ssd_widget_set_click_offsets_ext( title, 0, 0, 0, 10 );
   ssd_widget_set_offset(title, 0, 0);
   title->draw = draw_title;
  }
  else{
   int height = 28;
      if ( roadmap_screen_is_hd_screen() )
      {
         height = height*1.8;
      }

      title = ssd_container_new ("title_bar", NULL, SSD_MAX_SIZE, height,
                              SSD_END_ROW);
  }

   ssd_widget_set_color (title, "#ffffff", "#ff0000000");

   text = ssd_text_new ("title_text", "" , 13, SSD_WIDGET_SPACE|SSD_ALIGN_VCENTER|align_flag);

   ssd_widget_set_color (text, "#ffffff", "#ff0000000");



   if ((w->flags & SSD_ROUNDED_CORNERS) && (!(w->flags & SSD_POINTER_MENU)))
   	ssd_widget_set_color (text, "#ffffff", "#ff0000000");

   if (w->flags & SSD_CONTAINER_TITLE){
   		if (w->flags & SSD_ROUNDED_BLACK)
   		   ssd_widget_set_color (text, "#ffffff", "#ffffff");
   		else if (!(w->flags & SSD_DIALOG_FLOAT))
   			ssd_widget_set_color (text, "#ffffff", "#ff0000000");
   		else
   		   if (flags & SSD_DIALOG_TRANSPARENT)
   		      ssd_widget_set_color (text, "#ffffff", "#ff0000000");
   		   else
   		      ssd_widget_set_color (text, "#000000", "#ff0000000");
   }
#if defined(TOUCH_SCREEN)
   if (!( ((flags & SSD_DIALOG_FLOAT)&& !(flags & SSD_DIALOG_TRANSPARENT)) || (flags & SSD_DIALOG_NO_BACK))){
      SsdWidget btn = NULL;
#ifndef ANDROID
      btn = ssd_button_new (SSD_DIALOG_BUTTON_BACK_NAME, "", back_buttons, 2,
                        SSD_ALIGN_VCENTER, button_callback );
#endif


	   if ( ssd_widget_rtl(NULL) )
	   {
         SsdWidget btn2 =             ssd_button_new ("right_title_button", "", back_buttons, 2,
                  SSD_ALIGN_VCENTER, NULL );
         ssd_widget_add( title, btn2 );
         ssd_widget_set_click_offsets_ext( btn2, -40, -20, 20, 10 );
         ssd_widget_hide(btn2);
#ifdef ANDROID
         ssd_dialog_add_hspace (title, 10, 0);
#endif //ANDROID
	      ssd_widget_add (title,text);
	      if ( btn != NULL )
	      {
	         ssd_widget_set_click_offsets_ext( btn, -20, -20, 70, 10 );
	         ssd_widget_set_flags( btn, SSD_ALIGN_VCENTER|SSD_ALIGN_RIGHT );
	         ssd_widget_add( title, btn );
	      }
	   }
	   else
	   {
         SsdWidget btn2 =             ssd_button_new ("right_title_button", "", back_buttons, 2,
                  SSD_ALIGN_VCENTER|SSD_ALIGN_RIGHT, NULL );
         ssd_widget_set_click_offsets_ext( btn2, -40, -20, 20, 10 );
         ssd_widget_hide(btn2);
         if ( btn != NULL )
         {
            ssd_widget_set_click_offsets_ext( btn, -20, -20, 70, 10 );
            ssd_widget_add( title, btn );
         }
#ifdef ANDROID
         ssd_dialog_add_hspace (title, 10, 0);
#endif //ANDROID
         ssd_widget_add (title,text);
         ssd_widget_add( title, btn2 );
	   }

	}
   else
   {
	   ssd_widget_add ( title, text );
   }
#else
   ssd_widget_add ( title, text );
#endif

   ssd_widget_add (w, title);
}
Esempio n. 17
0
static void roadmap_layer_reload_internal (void) {

    int i;
    int j;
    int k;
    RoadMapConfigDescriptor descriptor = ROADMAP_CONFIG_ITEM_EMPTY;
    static BOOL initialized = FALSE;
    const char *global_label_color, *global_label_bg_color;
    global_label_color = roadmap_config_get (&RoadMapConfigLabelsColor);
    global_label_bg_color = roadmap_config_get (&RoadMapConfigLabelsBgColor);
    use_new_pens = FALSE;
    for (i = 1; i <= RoadMapCategoryCount; ++i) {
		int max_pens;
        struct roadmap_canvas_category *category = RoadMapCategory + i;
        const char *name = RoadMapDefaultCategoryTable[i-1];
        const char *class_name;
        const char *color[ROADMAP_LAYER_PENS];
        const char *label_color;
		int bg_color;
        int  thickness;
        int  other_pens_length = strlen(name) + 64;
        char *other_pens = malloc(other_pens_length);
        RoadMapClass *p;

        descriptor.category = name;
        descriptor.age = 0;

        /* Retrieve the class of the category. */
        if (!initialized) {
           category->name = name;
           category->visible = 1;
           category->label_visible = 1;
           category->label_pen = NULL;

           descriptor.name = "Class";
           descriptor.reference = NULL;
           roadmap_config_declare ("schema", &descriptor, "", NULL);
           class_name = roadmap_config_get (&descriptor);
           for (p = RoadMapClasses; p->name != NULL; ++p) {
               if (strcasecmp (class_name, p->name) == 0) {
                   p->category[p->count++] = i;
                   category->class_index = (int) (p - RoadMapClasses);
                   break;
               }
           }
        }


        /* Retrieve the category thickness & declutter. */

        descriptor.name     = "Thickness";
        descriptor.reference = NULL;
        if (!initialized)
           roadmap_config_declare ("schema", &descriptor, "1", NULL);
        thickness = category->thickness = roadmap_config_get_integer (&descriptor);
#if !defined (ANDROID) && !defined(J2ME)
        if ( roadmap_screen_is_hd_screen() )
        {
         category->thickness = (int)(category->thickness * roadmap_screen_get_screen_scale() /100);
         thickness = (int)(thickness * roadmap_screen_get_screen_scale() /100);
        }
#endif
        if (!initialized) {
           descriptor.name     = "Declutter";
           descriptor.reference = NULL;
           roadmap_config_declare
                  ("schema", &descriptor, "2024800000", NULL);

           category->declutter = roadmap_config_get_integer (&descriptor);

           descriptor.name     = "LabelDeclutter";
                   descriptor.reference = NULL;
                   roadmap_config_declare
                          ("schema", &descriptor, "-1", NULL);

           category->label_declutter = roadmap_config_get_integer (&descriptor);
           if (category->label_declutter == -1)
              category->label_declutter = category->declutter;
        }

        /* Retrieve the first pen's color (mandatory). */

        descriptor.name = "Color";
        descriptor.reference = NULL;

        if (!initialized)
           roadmap_config_declare ("schema", &descriptor, "black", NULL);
        color[0] = roadmap_config_get (&descriptor);

        /* Retrieve label color (optional) */
        descriptor.name = "LabelColor";
        descriptor.reference = NULL;

        roadmap_config_declare ("schema", &descriptor, "", NULL);
        label_color = roadmap_config_get (&descriptor);


        /* Retrieve the category's other colors (optional). */
        if (!editor_screen_gray_scale())
           max_pens = 2;
        else
           max_pens = ROADMAP_LAYER_PENS;

        for (j = 1; j < max_pens; ++j) {
           int is_new = 0;

           snprintf (other_pens, other_pens_length, "Delta%d", j);

           descriptor.name = strdup(other_pens);
           descriptor.reference = NULL;

           if (!initialized)
              roadmap_config_declare ("schema", &descriptor, "0", &is_new);

           category->delta_thickness[j] =
              roadmap_config_get_integer (&descriptor);
#if !defined (ANDROID) && !defined(J2ME)
           if ( roadmap_screen_is_hd_screen() )
           {
            category->delta_thickness[j] = (int)(category->delta_thickness[j] * roadmap_screen_get_screen_scale() /100);
           }
#endif

           if ((j == 2) && !editor_screen_gray_scale()) break;
           if (!is_new) free ((void *)descriptor.name);

           if (category->delta_thickness[j] == 0) break;

           snprintf (other_pens, other_pens_length, "Color%d", j);

           descriptor.name = strdup(other_pens);
           descriptor.reference = NULL;

           if (!initialized)
              roadmap_config_declare ("schema", &descriptor, "", &is_new);
           color[j] = roadmap_config_get (&descriptor);
           if (!is_new) free ((void *)descriptor.name);

           if (*color[j] == 0) break;
        }
        category->pen_count = j;
        if (j > RoadMapMaxUsedPen) RoadMapMaxUsedPen = j;


        /* Create all necessary pens. */

        for (j=0; j<LAYER_PROJ_AREAS; j++) {
           snprintf (other_pens, other_pens_length, "%d%s", j, name);

           category->pen[j][0] = roadmap_canvas_create_pen(other_pens,use_new_pens);

           roadmap_canvas_set_thickness (category->thickness);

           if (color[0] != NULL && *(color[0]) > ' ') {
              roadmap_canvas_set_foreground (color[0]);
           }
        }

        for (k=0; k<LAYER_PROJ_AREAS; k++)
           for (j = 1; j < category->pen_count; ++j) {

              snprintf (other_pens, other_pens_length, "%d%s%d", k, name, j);
              category->pen[k][j] = roadmap_canvas_create_pen (other_pens, use_new_pens);

              if (category->delta_thickness[j] < 0) {
                 thickness = category->thickness + category->delta_thickness[j];
              } else {
                 thickness = category->delta_thickness[j];
              }

              roadmap_canvas_set_foreground (color[j]);
              if (thickness > 0) {
                 roadmap_canvas_set_thickness (thickness);
              }
           }

        snprintf (other_pens, other_pens_length, "%s_label_pen", name);
        category->label_pen = roadmap_canvas_create_pen (other_pens,use_new_pens);

        if (strlen(label_color) != 0) {
           roadmap_canvas_set_foreground (label_color);
        } else {
           roadmap_canvas_set_foreground (global_label_color);
        }
#ifdef OPENGL
        bg_color = (category->pen_count > 2 ? 1 : 0);
        if (color[bg_color] != NULL && *(color[bg_color]) > ' ') {
				roadmap_canvas_set_background (global_label_bg_color);
        }
#endif //OPENGL

        free (other_pens);
    }

    initialized = TRUE;
}
Esempio n. 18
0
void roadmap_canvas_agg_configure (unsigned char *buf, int width, int height, int stride) {

   roadmap_log( ROADMAP_ERROR, "roadmap_canvas_agg_configure, height =%d width=%d",height, width);
   agg_rbuf.attach(buf, width, height, stride);

   agg_renb.attach(agg_pixf);
   agg_renb.reset_clipping(true);
   ras.clip_box(0, 0, agg_renb.width() - 1, agg_renb.height() - 1);

   agg::glyph_rendering gren = agg::glyph_ren_outline;
   agg::glyph_rendering image_gren = agg::glyph_ren_agg_gray8;

   roadmap_config_declare
       ("preferences", &RoadMapConfigFont, "font.ttf", NULL);

   roadmap_config_declare
       ("preferences", &RoadMapConfigFontNormal, "font_normal.ttf", NULL);

   char *font_file = roadmap_path_join(roadmap_path_user(),
		   roadmap_config_get (&RoadMapConfigFont));

   if ((width) && (height))
      roadmap_screen_set_screen_type( width, height );

   if (!RoadMapCanvasFontLoaded) {

      if(m_feng.load_font(font_file, 0, gren) &&
            m_image_feng.load_font(font_file, 0, image_gren)) {

         m_feng.hinting(true);

         if ( roadmap_screen_is_hd_screen() )
         {
			 m_feng.height(22);
			 m_feng.width(22);
         }
         else
         {
#ifdef _WIN32
          m_feng.height(12);
          m_feng.width(12);
#else
          m_feng.height(15);
          m_feng.width(15);
#endif
         }

         m_feng.flip_y(true);

         m_image_feng.hinting(true);
         m_image_feng.flip_y(true);

         RoadMapCanvasFontLoaded = 1;
      } else {
         RoadMapCanvasFontLoaded = -1;
         char message[300];
         snprintf(message, sizeof(message), "Can't load font: %s\n", font_file);
         roadmap_messagebox("Error", message);
      }
   }
   RoadMapCanvasFontLoaded = 1;
   roadmap_path_free(font_file);

   font_file = roadmap_path_join(roadmap_path_user(),
         roadmap_config_get (&RoadMapConfigFontNormal));


   if(m_feng_nor.load_font(font_file, 0, gren) &&
            m_image_feng_nor.load_font(font_file, 0, image_gren)) {

         m_feng_nor.hinting(true);

         if ( roadmap_screen_is_hd_screen() )
         {
          m_feng_nor.height(22);
          m_feng_nor.width(22);
         }
         else
         {
#ifdef _WIN32
          m_feng_nor.height(12);
          m_feng_nor.width(12);
#else
          m_feng_nor.height(15);
          m_feng_nor.width(15);
#endif
         }

         m_feng_nor.flip_y(true);

         m_image_feng_nor.hinting(true);
         m_image_feng_nor.flip_y(true);
         RoadMapCanvasNormalFontLoaded = 1;
   }
}