From 306b879838c9ff6d16528b24e8d18619ed4dcab7 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Tue, 28 Mar 2017 18:59:39 +0200 Subject: [PATCH] Fix LC_NUMERIC dependent number formatting Change-Id: I574f3770d8a0e8c14318eaa9bac1c480595f0d76 --- src/mapzen/tangram_view.cpp | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/mapzen/tangram_view.cpp b/src/mapzen/tangram_view.cpp index 52dcb76..1516c2d 100644 --- a/src/mapzen/tangram_view.cpp +++ b/src/mapzen/tangram_view.cpp @@ -614,7 +614,6 @@ mapzen_error_e TangramView::getBitmapMarkerImage(maps_view_object_h object, unsi mapzen_error_e TangramView::updateMarker(maps_view_object_h object, Tangram::MarkerID tvMarker) { - std::string styleString = ""; maps_coordinates_h mapsCoord = nullptr; double lat = 0.0, lng = 0.0; int markerWidth = 0, markerHeight = 0; @@ -622,7 +621,7 @@ mapzen_error_e TangramView::updateMarker(maps_view_object_h object, Tangram::Mar int error = MAPS_ERROR_NONE; unsigned char *imgData = nullptr; - const char* styleFormat = "{ style: 'sdk-point-overlay', color: white, size: [%fpx, %fpx], collide: false, anchor: %s, transition: { [show, hide]: { time: 0s } } }"; + const char* styleFormat = "{ style: 'sdk-point-overlay', color: white, size: [%dpx, %dpx], collide: false, anchor: %s, transition: { [show, hide]: { time: 0s } } }"; static std::string anchor; @@ -667,12 +666,11 @@ mapzen_error_e TangramView::updateMarker(maps_view_object_h object, Tangram::Mar float scaledWidth = scaleFactor * markerWidth; float scaledHeight = scaleFactor * markerHeight; - int sz = std::snprintf(nullptr, 0, styleFormat, scaledWidth, scaledHeight, anchor.c_str()); - styleString.resize(sz+1); - std::snprintf(&styleString[0], styleString.size(), styleFormat, scaledWidth, scaledHeight, anchor.c_str()); + char styleString[256]; + std::snprintf(styleString, sizeof(styleString), styleFormat, int(scaledWidth), int(scaledHeight), anchor.c_str()); - MAPS_LOGD("Marker Style String: %s", styleString.c_str()); - m_map->markerSetStyling(tvMarker, styleString.c_str()); + MAPS_LOGD("Marker Style String: %s", styleString); + m_map->markerSetStyling(tvMarker, styleString); error = maps_view_object_marker_get_coordinates(object, &mapsCoord); if (error != MAPS_ERROR_NONE) { break; } @@ -703,7 +701,6 @@ mapzen_error_e TangramView::updateMarker(maps_view_object_h object, Tangram::Mar mapzen_error_e TangramView::updatePolyline(maps_view_object_h object, Tangram::MarkerID tvMarker) { - std::string styleString = ""; int error = MAPS_ERROR_NONE; Tangram::Coordinates coords = {}; unsigned char r = 0, g = 0, b = 0, a = 0; @@ -718,13 +715,12 @@ mapzen_error_e TangramView::updatePolyline(maps_view_object_h object, Tangram::M error = maps_view_object_polyline_get_width(object, &width); if (error != MAPS_ERROR_NONE) { break; } - int sz = std::snprintf(nullptr, 0, styleFormat, r, g, b, a, width); - styleString.resize(sz+1); - std::snprintf(&styleString[0], styleString.size(), styleFormat, r, g, b, a, width); + char styleString[256]; + std::snprintf(styleString, sizeof(styleString), styleFormat, r, g, b, a, width); - MAPS_LOGD("Polyline Style String: %s", styleString.c_str()); + MAPS_LOGD("Polyline Style String: %s", styleString); - m_map->markerSetStyling(tvMarker, styleString.c_str()); + m_map->markerSetStyling(tvMarker, styleString); error = maps_view_object_polyline_foreach_point(object, emplaceCoord, &coords); if (error != MAPS_ERROR_NONE) { break; } @@ -737,7 +733,6 @@ mapzen_error_e TangramView::updatePolyline(maps_view_object_h object, Tangram::M mapzen_error_e TangramView::updatePolygon(maps_view_object_h object, Tangram::MarkerID tvMarker) { - std::string styleString = ""; int error = MAPS_ERROR_NONE; Tangram::Coordinates coords = {}; unsigned char r = 0, g = 0, b = 0, a = 0; @@ -747,13 +742,12 @@ mapzen_error_e TangramView::updatePolygon(maps_view_object_h object, Tangram::Ma error = maps_view_object_polygon_get_fill_color(object, &r, &g, &b, &a); if (error != MAPS_ERROR_NONE) { break; } - int sz = std::snprintf(nullptr, 0, styleFormat, r, g, b, a); - styleString.resize(sz+1); - std::snprintf(&styleString[0], styleString.size(), styleFormat, r, g, b, a); + char styleString[256]; + std::snprintf(styleString, sizeof(styleString), styleFormat, r, g, b, a); - MAPS_LOGD("Polygon Style String: %s", styleString.c_str()); + MAPS_LOGD("Polygon Style String: %s", styleString); - m_map->markerSetStyling(tvMarker, styleString.c_str()); + m_map->markerSetStyling(tvMarker, styleString); error = maps_view_object_polygon_foreach_point(object, emplaceCoord, &coords); if (error != MAPS_ERROR_NONE) { break; } -- 2.7.4