summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan McIntosh <ian_mcintosh@linuxadvocate.org>2005-10-18 01:40:19 +0000
committerIan McIntosh <ian_mcintosh@linuxadvocate.org>2005-10-18 01:40:19 +0000
commit4c4e96550dc6ca440a006d6c968b769a5f64b89f (patch)
tree7b602874a40c324294b0935b077671b1f60db57d
parentfefffa833f47f6be754c35faac7adb9e3b689581 (diff)
Add Debug menu toggle for GDK/Cairo.
Remove dead code.
-rw-r--r--ChangeLog7
-rw-r--r--data/roadster.glade29
-rw-r--r--src/mainwindow.c6
-rw-r--r--src/map.c15
-rw-r--r--src/map.h5
-rw-r--r--src/map_draw_cairo.c65
-rw-r--r--src/map_draw_gdk.c87
-rw-r--r--src/map_draw_gdk.h2
-rw-r--r--src/map_math.c8
-rw-r--r--src/map_tilemanager.c4
10 files changed, 94 insertions, 134 deletions
diff --git a/ChangeLog b/ChangeLog
index ff6046d..fa1950f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-10-18 Ian McIntosh <ian_mcintosh@linuxadvocate.org>
+
+ * src/mainwindow.c:
+ * src/map.c:
+ * src/map_draw_cairo.c: Add Debug menu toggle for GDK/Cairo.
+ * src/map_draw_gdk.c: Remove dead code.
+
2005-10-17 Ian McIntosh <ian_mcintosh@linuxadvocate.org>
* configure.ac: Added -Wall compiler option (show all warnings).
diff --git a/data/roadster.glade b/data/roadster.glade
index 104c073..e4ec365 100644
--- a/data/roadster.glade
+++ b/data/roadster.glade
@@ -1474,7 +1474,7 @@ Notes:</property>
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image10326">
+ <widget class="GtkImage" id="image10356">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
@@ -1507,7 +1507,7 @@ Notes:</property>
<property name="use_underline">True</property>
<child internal-child="image">
- <widget class="GtkImage" id="image10327">
+ <widget class="GtkImage" id="image10357">
<property name="visible">True</property>
<property name="stock">gtk-save-as</property>
<property name="icon_size">1</property>
@@ -1534,7 +1534,7 @@ Notes:</property>
<accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10328">
+ <widget class="GtkImage" id="image10358">
<property name="visible">True</property>
<property name="stock">gtk-quit</property>
<property name="icon_size">1</property>
@@ -1705,7 +1705,7 @@ Notes:</property>
<accelerator key="Left" modifiers="GDK_MOD1_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10329">
+ <widget class="GtkImage" id="image10359">
<property name="visible">True</property>
<property name="stock">gtk-go-back</property>
<property name="icon_size">1</property>
@@ -1728,7 +1728,7 @@ Notes:</property>
<accelerator key="Right" modifiers="GDK_MOD1_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10330">
+ <widget class="GtkImage" id="image10360">
<property name="visible">True</property>
<property name="stock">gtk-media-forward</property>
<property name="icon_size">1</property>
@@ -1788,7 +1788,7 @@ Notes:</property>
<accelerator key="F9" modifiers="0" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10331">
+ <widget class="GtkImage" id="image10361">
<property name="visible">True</property>
<property name="stock">gtk-refresh</property>
<property name="icon_size">1</property>
@@ -1836,7 +1836,7 @@ Notes:</property>
<signal name="activate" handler="mainwindow_on_aboutmenuitem_activate" last_modification_time="Sat, 12 Mar 2005 06:48:18 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10332">
+ <widget class="GtkImage" id="image10362">
<property name="visible">True</property>
<property name="stock">gtk-about</property>
<property name="icon_size">1</property>
@@ -1888,7 +1888,7 @@ Notes:</property>
<signal name="activate" handler="mainwindow_on_import_maps_activate" last_modification_time="Fri, 04 Mar 2005 04:28:20 GMT"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10333">
+ <widget class="GtkImage" id="image10363">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
@@ -1908,12 +1908,13 @@ Notes:</property>
</child>
<child>
- <widget class="GtkCheckMenuItem" id="use_cairo_rendering1">
+ <widget class="GtkCheckMenuItem" id="use_aa_rendering1">
<property name="visible">True</property>
- <property name="label" translatable="yes">Use Cairo Rendering</property>
+ <property name="label" translatable="yes">Use Anti-Aliased Rendering</property>
<property name="use_underline">True</property>
<property name="active">False</property>
- <signal name="activate" handler="map_on_use_cairo_rendering_activate" last_modification_time="Tue, 18 Oct 2005 01:13:24 GMT"/>
+ <signal name="activate" handler="mainwindow_on_use_aa_rendering_activate" last_modification_time="Tue, 18 Oct 2005 05:54:13 GMT"/>
+ <accelerator key="F4" modifiers="0" signal="activate"/>
</widget>
</child>
@@ -1932,7 +1933,7 @@ Notes:</property>
<accelerator key="F5" modifiers="0" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10334">
+ <widget class="GtkImage" id="image10364">
<property name="visible">True</property>
<property name="stock">gtk-refresh</property>
<property name="icon_size">1</property>
@@ -1954,7 +1955,7 @@ Notes:</property>
<accelerator key="F6" modifiers="0" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10335">
+ <widget class="GtkImage" id="image10365">
<property name="visible">True</property>
<property name="stock">gtk-refresh</property>
<property name="icon_size">1</property>
@@ -1991,7 +1992,7 @@ Notes:</property>
<accelerator key="g" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
- <widget class="GtkImage" id="image10336">
+ <widget class="GtkImage" id="image10366">
<property name="visible">True</property>
<property name="stock">gtk-jump-to</property>
<property name="icon_size">1</property>
diff --git a/src/mainwindow.c b/src/mainwindow.c
index 9112fea..8f3aaa9 100644
--- a/src/mainwindow.c
+++ b/src/mainwindow.c
@@ -1880,6 +1880,12 @@ static void mainwindow_on_web_url_clicked(GtkWidget *_unused, gchar* pszURLPatte
}
}
+void mainwindow_on_use_aa_rendering_activate(GtkMenuItem *menuitem, gpointer user_data)
+{
+ map_set_antialiased(g_MainWindow.pMap, !map_get_antialiased(g_MainWindow.pMap));
+ mainwindow_draw_map(DRAWFLAG_ALL);
+}
+
#ifdef ROADSTER_DEAD_CODE
/*
static gboolean on_searchbox_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
diff --git a/src/map.c b/src/map.c
index a0c9885..4eb123a 100644
--- a/src/map.c
+++ b/src/map.c
@@ -227,8 +227,6 @@ void map_draw(map_t* pMap, GdkPixmap* pTargetPixmap, gint nDrawFlags)
scenemanager_clear(pMap->pSceneManager);
scenemanager_set_screen_dimensions(pMap->pSceneManager, pRenderMetrics->nWindowWidth, pRenderMetrics->nWindowHeight);
- gint nRenderMode = RENDERMODE_FAST; //RENDERMODE_PRETTY; //
-
#ifdef ENABLE_LABELS_WHILE_DRAGGING
nDrawFlags |= DRAWFLAG_LABELS; // always turn on labels
#endif
@@ -238,7 +236,7 @@ void map_draw(map_t* pMap, GdkPixmap* pTargetPixmap, gint nDrawFlags)
scenemanager_claim_polygon(pMap->pSceneManager, aPoints, 4);
#endif
- if(nRenderMode == RENDERMODE_FAST) {
+ if(pMap->bAntiAliased == FALSE) {
//
if(nDrawFlags & DRAWFLAG_GEOMETRY) {
map_draw_gdk(pMap, pTilesArray, pRenderMetrics, pTargetPixmap, DRAWFLAG_GEOMETRY);
@@ -248,7 +246,7 @@ void map_draw(map_t* pMap, GdkPixmap* pTargetPixmap, gint nDrawFlags)
// Call cairo for finishing the scene
map_draw_cairo(pMap, pTilesArray, pRenderMetrics, pTargetPixmap, nDrawFlags);
}
- else { // nRenderMode == RENDERMODE_PRETTY
+ else {
map_draw_cairo(pMap, pTilesArray, pRenderMetrics, pTargetPixmap, nDrawFlags);
}
@@ -605,6 +603,15 @@ void map_get_visible_maprect(const map_t* pMap, maprect_t* pReturnMapRect)
memcpy(pReturnMapRect, &(renderMetrics.rWorldBoundingBox), sizeof(maprect_t));
}
+gboolean map_get_antialiased(const map_t* pMap)
+{
+ return pMap->bAntiAliased;
+}
+
+void map_set_antialiased(map_t* pMap, gboolean bAntiAliased)
+{
+ pMap->bAntiAliased = bAntiAliased;
+}
#ifdef ROADSTER_DEAD_CODE
/*
diff --git a/src/map.h b/src/map.h
index 725ffa9..3997e6d 100644
--- a/src/map.h
+++ b/src/map.h
@@ -207,6 +207,8 @@ typedef struct {
GtkWidget* pTargetWidget;
scenemanager_t* pSceneManager;
+ gboolean bAntiAliased;
+
// data
GArray *pTracksArray;
// maplayer_data_t *apLayerData[ MAP_NUM_OBJECT_TYPES + 1 ];
@@ -334,4 +336,7 @@ void map_get_screenrect_centerpoint(const screenrect_t* pRect, screenpoint_t* pP
void map_get_visible_maprect(const map_t* pMap, maprect_t* pReturnMapRect);
gdouble map_get_altitude(const map_t* pMap, EDistanceUnits eUnit);
+gboolean map_get_antialiased(const map_t* pMap);
+void map_set_antialiased(map_t* pMap, gboolean bAntiAliased);
+
#endif
diff --git a/src/map_draw_cairo.c b/src/map_draw_cairo.c
index 6873132..cc6a5df 100644
--- a/src/map_draw_cairo.c
+++ b/src/map_draw_cairo.c
@@ -71,6 +71,8 @@ static void map_draw_cairo_layer_points(map_t* pMap, cairo_t* pCairo, rendermetr
//static void map_draw_cairo_locationset(map_t* pMap, cairo_t *pCairo, rendermetrics_t* pRenderMetrics, locationset_t* pLocationSet, GPtrArray* pLocationsArray);
//static void map_draw_cairo_locationselection(map_t* pMap, cairo_t *pCairo, rendermetrics_t* pRenderMetrics, GPtrArray* pLocationSelectionArray);
+static void map_draw_cairo_layer_fill(map_t* pMap, cairo_t* pCairo, rendermetrics_t* pRenderMetrics, maplayerstyle_t* pLayerStyle);
+
// Draw labels for a single line/polygon
static void map_draw_cairo_road_label(map_t* pMap, cairo_t *pCairo, maplayerstyle_t* pLayerStyle, rendermetrics_t* pRenderMetrics, GArray* pMapPointsArray, const gchar* pszLabel);
static void map_draw_cairo_polygon_label(map_t* pMap, cairo_t *pCairo, maplayerstyle_t* pLayerStyle, rendermetrics_t* pRenderMetrics, GArray* pMapPointsArray, maprect_t* pBoundingRect, const gchar* pszLabel);
@@ -96,6 +98,11 @@ void map_draw_text_underline(cairo_t* pCairo, gdouble fLabelWidth)
cairo_rel_move_to(pCairo, -(fLabelWidth+2), -UNDERLINE_RELIEF);
}
+void map_draw_cairo_set_rgb(cairo_t* pCairo, color_t* pColor)
+{
+ cairo_set_source_rgba(pCairo, pColor->fRed, pColor->fGreen, pColor->fBlue, 1.0);
+}
+
void map_draw_cairo_set_rgba(cairo_t* pCairo, color_t* pColor)
{
cairo_set_source_rgba(pCairo, pColor->fRed, pColor->fGreen, pColor->fBlue, pColor->fAlpha);
@@ -115,6 +122,8 @@ void map_draw_cairo(map_t* pMap, GPtrArray* pTiles, rendermetrics_t* pRenderMetr
cairo_surface_t *pSurface = cairo_xlib_surface_create (dpy, drawable, visual, width, height);
cairo_t* pCairo = cairo_create (pSurface);
+// cairo_set_antialias(pCairo, CAIRO_ANTIALIAS_GRAY); // CAIRO_ANTIALIAS_DEFAULT, CAIRO_ANTIALIAS_NONE, CAIRO_ANTIALIAS_GRAY, CAIRO_ANTIALIAS_SUBPIXEL
+
#ifdef ENABLE_DRAW_MAP_SCALE
# define MAP_SCALE_WIDTH (55) // these are just estimates
@@ -131,12 +140,7 @@ void map_draw_cairo(map_t* pMap, GPtrArray* pTiles, rendermetrics_t* pRenderMetr
// 2.1. Settings for all rendering
cairo_set_fill_rule(pCairo, CAIRO_FILL_RULE_WINDING);
- // 2.2. Draw Background
- if(nDrawFlags & DRAWFLAG_GEOMETRY) {
- map_draw_cairo_background(pMap, pCairo);
- }
-
- // 2.3. Render Layers
+ // 2.2. Render Layers
if(pMap->pLayersArray->len == 0) {
map_draw_cairo_message(pMap, pCairo, "The style XML file couldn't be loaded");
}
@@ -156,10 +160,6 @@ void map_draw_cairo(map_t* pMap, GPtrArray* pTiles, rendermetrics_t* pRenderMetr
pTile->apMapObjectArrays[pLayer->nDataSource], // data
pLayer->paStylesAtZoomLevels[nStyleZoomLevel-1]); // style
}
-
-// map_draw_cairo_layer_roads(pMap, pCairo, pRenderMetrics,
-// pMap->apLayerData[pLayer->nDataSource]->pRoadsArray,
-// pLayer->paStylesAtZoomLevels[nStyleZoomLevel-1]);
}
}
else if(pLayer->nDrawType == MAP_LAYER_RENDERTYPE_POLYGONS) {
@@ -171,9 +171,6 @@ void map_draw_cairo(map_t* pMap, GPtrArray* pTiles, rendermetrics_t* pRenderMetr
pTile->apMapObjectArrays[pLayer->nDataSource], // data
pLayer->paStylesAtZoomLevels[nStyleZoomLevel-1]); // style
}
-// map_draw_cairo_layer_polygons(pMap, pCairo, pRenderMetrics,
-// pMap->apLayerData[pLayer->nDataSource]->pRoadsArray,
-// pLayer->paStylesAtZoomLevels[nStyleZoomLevel-1]);
}
}
else if(pLayer->nDrawType == MAP_LAYER_RENDERTYPE_LINE_LABELS) {
@@ -198,6 +195,11 @@ void map_draw_cairo(map_t* pMap, GPtrArray* pTiles, rendermetrics_t* pRenderMetr
}
}
}
+ else if(pLayer->nDrawType == MAP_LAYER_RENDERTYPE_FILL) {
+ if(nDrawFlags & DRAWFLAG_GEOMETRY) {
+ map_draw_cairo_layer_fill(pMap, pCairo, pRenderMetrics, pLayer->paStylesAtZoomLevels[nStyleZoomLevel-1]); // style
+ }
+ }
}
}
@@ -220,6 +222,28 @@ void map_draw_cairo(map_t* pMap, GPtrArray* pTiles, rendermetrics_t* pRenderMetr
TIMER_END(maptimer, "END RENDER MAP (cairo)");
}
+// ==============================================
+// Begin map_draw_cairo_* functions
+// ==============================================
+
+// useful for filling the screen with a color. not much else.
+void map_draw_cairo_layer_fill(map_t* pMap, cairo_t* pCairo, rendermetrics_t* pRenderMetrics, maplayerstyle_t* pLayerStyle)
+{
+ if(pLayerStyle->pGlyphFill != NULL) {
+ }
+ else {
+ // Simple color fill
+ map_draw_cairo_set_rgb(pCairo, &(pLayerStyle->clrPrimary));
+ }
+
+ cairo_rectangle(pCairo, 0,0,pMap->MapDimensions.uWidth, pMap->MapDimensions.uHeight);
+ cairo_fill(pCairo);
+
+ if(pLayerStyle->pGlyphFill != NULL) {
+ // Restore fill style
+ }
+}
+
// When there are no layers defined, we call this to show an error message in-window
void map_draw_cairo_message(map_t* pMap, cairo_t *pCairo, gchar* pszMessage)
{
@@ -240,21 +264,6 @@ void map_draw_cairo_message(map_t* pMap, cairo_t *pCairo, gchar* pszMessage)
cairo_restore(pCairo);
}
-// ==============================================
-// Begin map_draw_cairo_* functions
-// ==============================================
-
-// Background
-static void map_draw_cairo_background(map_t* pMap, cairo_t *pCairo)
-{
- // XXX: Don't hardcode background color
- cairo_save(pCairo);
- cairo_set_source_rgb (pCairo, 239/255.0, 239/255.0, 230/255.0);
- cairo_rectangle(pCairo, 0, 0, pMap->MapDimensions.uWidth, pMap->MapDimensions.uHeight);
- cairo_fill(pCairo);
- cairo_restore(pCairo);
-}
-
//
// Draw a whole layer of line labels
//
diff --git a/src/map_draw_gdk.c b/src/map_draw_gdk.c
index 062188b..99768cf 100644
--- a/src/map_draw_gdk.c
+++ b/src/map_draw_gdk.c
@@ -49,8 +49,6 @@
static void map_draw_gdk_layer_polygons(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics, GPtrArray* pRoadsArray, maplayerstyle_t* pLayerStyle);
static void map_draw_gdk_layer_lines(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics, GPtrArray* pRoadsArray, maplayerstyle_t* pLayerStyle);
-static void map_draw_gdk_layer_fill(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics, maplayerstyle_t* pLayerStyle);
-
static void map_draw_gdk_locations(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics);
static void map_draw_gdk_locationset(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics, locationset_t* pLocationSet, GPtrArray* pLocationsArray);
@@ -155,7 +153,7 @@ void map_draw_gdk(map_t* pMap, GPtrArray* pTiles, rendermetrics_t* pRenderMetric
}
// useful for filling the screen with a color. not much else.
-static void map_draw_gdk_layer_fill(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics, maplayerstyle_t* pLayerStyle)
+void map_draw_gdk_layer_fill(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics, maplayerstyle_t* pLayerStyle)
{
GdkGC* pGC = pMap->pTargetWidget->style->fg_gc[GTK_WIDGET_STATE(pMap->pTargetWidget)];
@@ -336,8 +334,6 @@ static void map_draw_gdk_layer_lines(map_t* pMap, GdkPixmap* pPixmap, rendermetr
for(iString=0 ; iString<pRoadsArray->len ; iString++) {
pRoad = g_ptr_array_index(pRoadsArray, iString);
-
-
EOverlapType eOverlapType = map_rect_a_overlap_type_with_rect_b(&(pRoad->rWorldBoundingBox), &(pRenderMetrics->rWorldBoundingBox));
if(eOverlapType == OVERLAP_NONE) {
continue;
@@ -420,84 +416,3 @@ static void map_draw_gdk_locationset(map_t* pMap, GdkPixmap* pPixmap, rendermetr
}
}
}
-
-#ifdef ROADSTER_DEAD_CODE
-// GdkColor clr1;
-// clr1.red = 255/255.0 * 65535;
-// clr1.green = 80/255.0 * 65535;
-// clr1.blue = 80/255.0 * 65535;
-// GdkColor clr2;
-// clr2.red = 255/255.0 * 65535;
-// clr2.green = 255/255.0 * 65535;
-// clr2.blue = 255/255.0 * 65535;
-//
-// gdk_gc_set_rgb_fg_color(pGC, &clr1);
-// gdk_draw_rectangle(pPixmap, pGC, TRUE,
-// nX-3,nY-3,
-// 7, 7);
-// gdk_gc_set_rgb_fg_color(pGC, &clr2);
-// gdk_draw_rectangle(pPixmap, pGC, TRUE,
-// nX-2,nY-2,
-// 5, 5);
-// gdk_gc_set_rgb_fg_color(pGC, &clr1);
-// gdk_draw_rectangle(pPixmap, pGC, TRUE,
-// nX-1,nY-1,
-// 3, 3);
-
-// static void map_draw_gdk_tracks(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics)
-// {
-// gint i;
-// for(i=0 ; i<pMap->pTracksArray->len ; i++) {
-// gint hTrack = &g_array_index(pMap->pTracksArray, gint, i);
-//
-// GdkColor clr;
-// clr.red = (gint)(0.5 * 65535.0);
-// clr.green = (gint)(0.5 * 65535.0);
-// clr.blue = (gint)(1.0 * 65535.0);
-// gdk_gc_set_rgb_fg_color(pMap->pTargetWidget->style->fg_gc[GTK_WIDGET_STATE(pMap->pTargetWidget)], &clr);
-//
-// pointstring_t* pPointString = track_get_pointstring(hTrack);
-// if(pPointString == NULL) continue;
-//
-// if(pPointString->pPointsArray->len >= 2) {
-//
-// if(pPointString->pPointsArray->len > MAX_GDK_LINE_SEGMENTS) {
-// //g_warning("not drawing track with > %d segments\n", MAX_GDK_LINE_SEGMENTS);
-// continue;
-// }
-//
-// GdkPoint aPoints[MAX_GDK_LINE_SEGMENTS];
-//
-// gdouble fMaxLat = MIN_LATITUDE; // init to the worst possible value so first point will override
-// gdouble fMinLat = MAX_LATITUDE;
-// gdouble fMaxLon = MIN_LONGITUDE;
-// gdouble fMinLon = MAX_LONGITUDE;
-//
-// gint iPoint;
-// for(iPoint=0 ; iPoint<pPointString->pPointsArray->len ; iPoint++) {
-// mappoint_t* pPoint = g_ptr_array_index(pPointString->pPointsArray, iPoint);
-//
-// // find extents
-// fMaxLat = max(pPoint->fLatitude,fMaxLat);
-// fMinLat = min(pPoint->fLatitude,fMinLat);
-// fMaxLon = max(pPoint->fLongitude,fMaxLon);
-// fMinLon = min(pPoint->fLongitude,fMinLon);
-//
-// aPoints[iPoint].x = (gint)SCALE_X(pRenderMetrics, pPoint->fLongitude);
-// aPoints[iPoint].y = (gint)SCALE_Y(pRenderMetrics, pPoint->fLatitude);
-// }
-//
-// // rectangle overlap test
-// if(fMaxLat < pRenderMetrics->rWorldBoundingBox.A.fLatitude
-// || fMaxLon < pRenderMetrics->rWorldBoundingBox.A.fLongitude
-// || fMinLat > pRenderMetrics->rWorldBoundingBox.B.fLatitude
-// || fMinLon > pRenderMetrics->rWorldBoundingBox.B.fLongitude)
-// {
-// continue; // not visible
-// }
-//
-// gdk_draw_lines(pPixmap, pMap->pTargetWidget->style->fg_gc[GTK_WIDGET_STATE(pMap->pTargetWidget)], aPoints, pPointString->pPointsArray->len);
-// }
-// }
-// }
-#endif
diff --git a/src/map_draw_gdk.h b/src/map_draw_gdk.h
index 85240b4..65985fb 100644
--- a/src/map_draw_gdk.h
+++ b/src/map_draw_gdk.h
@@ -29,4 +29,6 @@
void map_draw_gdk(map_t* pMap, GPtrArray* pTiles, rendermetrics_t* pRenderMetrics, GdkPixmap* pPixmap, gint nDrawFlags);
void map_draw_gdk_xor_rect(map_t* pMap, GdkDrawable* pTargetDrawable, screenrect_t* pRect);
+void map_draw_gdk_layer_fill(map_t* pMap, GdkPixmap* pPixmap, rendermetrics_t* pRenderMetrics, maplayerstyle_t* pLayerStyle);
+
#endif
diff --git a/src/map_math.c b/src/map_math.c
index 4b9126c..72b3ff6 100644
--- a/src/map_math.c
+++ b/src/map_math.c
@@ -166,9 +166,15 @@ gdouble map_get_straight_line_distance_in_degrees(mappoint_t* p1, mappoint_t* p2
return sqrt((fDeltaX*fDeltaX) + (fDeltaY*fDeltaY));
}
+#define POINTS_EQUAL_ERROR (0.0002)
+
gboolean map_points_equal(mappoint_t* p1, mappoint_t* p2)
{
- return( p1->fLatitude == p2->fLatitude && p1->fLongitude == p2->fLongitude);
+ return(
+ ABS(p1->fLatitude - p2->fLatitude) < POINTS_EQUAL_ERROR &&
+ ABS(p1->fLongitude - p2->fLongitude) < POINTS_EQUAL_ERROR);
+
+ //return( p1->fLatitude == p2->fLatitude && p1->fLongitude == p2->fLongitude);
}
gboolean map_math_maprects_equal(maprect_t* pA, maprect_t* pB)
diff --git a/src/map_tilemanager.c b/src/map_tilemanager.c
index 7b4e97b..a3556dc 100644
--- a/src/map_tilemanager.c
+++ b/src/map_tilemanager.c
@@ -232,7 +232,9 @@ static void _map_tilemanager_tile_load_map_objects(maptile_t* pTile, maprect_t*
" LEFT JOIN RoadName ON (%s.RoadNameID=RoadName.ID)"
" WHERE"
" MBRIntersects(GeomFromText('Polygon((%s %s,%s %s,%s %s,%s %s,%s %s))'), Coordinates)"
- " ORDER BY TypeID, RoadNameID, X(StartPoint(Coordinates))", // XXX: add sorting by MBR x or y?
+
+ // this improves our lazy stitching success rate
+ " ORDER BY TypeID, RoadNameID, X(StartPoint(Coordinates))",
//pszRoadTableName, no ID column
pszRoadTableName, pszRoadTableName,