[mapguide-commits] r1313 - trunk/MgDev/Server/src/Services/Mapping

Walt Welton-Lair walt.welton-lair at autodesk.com
Wed Mar 21 07:22:42 EDT 2007


Log should have been:

  The server was crashing in MgStylizationUtil::StylizeLayers when
processing
  line layers which were missing spatial context information.  The
problem was
  that the TransformCache object was NULL (which is ok), but not all
places
  that using it were checking for NULL. 

-----Original Message-----
From: mapguide-commits-bounces at lists.osgeo.org
[mailto:mapguide-commits-bounces at lists.osgeo.org] On Behalf Of
svn_mapguide at osgeo.org
Sent: Wednesday, March 21, 2007 12:22 PM
To: mapguide-commits at lists.osgeo.org
Subject: [mapguide-commits] r1313 -
trunk/MgDev/Server/src/Services/Mapping

Author: waltweltonlair
Date: 2007-03-21 07:21:43 -0400 (Wed, 21 Mar 2007)
New Revision: 1313

Modified:
   trunk/MgDev/Server/src/Services/Mapping/StylizationUtil.cpp
Log:
Fix crash in StylizationUtil for line laye

Modified: trunk/MgDev/Server/src/Services/Mapping/StylizationUtil.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Mapping/StylizationUtil.cpp
2007-03-21 03:55:05 UTC (rev 1312)
+++ trunk/MgDev/Server/src/Services/Mapping/StylizationUtil.cpp
2007-03-21 11:21:43 UTC (rev 1313)
@@ -133,12 +133,12 @@
 
 
 RSMgFeatureReader*
MgStylizationUtil::ExecuteFeatureQuery(MgFeatureService* svcFeature,
-                                                        RS_Bounds&
extent,
-
MdfModel::VectorLayerDefinition* vl,
-                                                        const wchar_t*
overrideFilter,
-
MgCoordinateSystem* mapCs,
-
MgCoordinateSystem* layerCs,
-                                                        TransformCache*
cache)
+                                                          RS_Bounds&
extent,
+
MdfModel::VectorLayerDefinition* vl,
+                                                          const
wchar_t* overrideFilter,
+
MgCoordinateSystem* mapCs,
+
MgCoordinateSystem* layerCs,
+
TransformCache* cache)
 {
 #ifdef _DEBUG
     long dwStart = GetTickCount();
@@ -672,6 +672,8 @@
 
                     //get a transform from layer coord sys to map coord
sys
                     TransformCache* item =
GetLayerToMapTransform(transformCache, vl->GetFeatureName(), featResId,
dstCs, csFactory, svcFeature);
+                    MgCoordinateSystem* layerCs = item?
item->GetCoordSys() : NULL;
+                    MgCSTrans* xformer = item? item->GetTransform() :
NULL;
 
                     //extract hyperlink and tooltip info
                     if (!vl->GetToolTip().empty())
legendInfo.hastooltips() = true;
@@ -747,10 +749,10 @@
                         //we are not drawing the actual geometry
                         if (maxStrokes == 0)
                         {
-                            RSMgFeatureReader* rdr =
ExecuteFeatureQuery(svcFeature, extent, vl, overrideFilter.c_str(),
dstCs, item ? item->GetCoordSys() : NULL, item);
+                            RSMgFeatureReader* rdr =
ExecuteFeatureQuery(svcFeature, extent, vl, overrideFilter.c_str(),
dstCs, layerCs, item);
                             if (rdr)
                             {
-                                ds->StylizeVectorLayer(vl, dr, rdr,
item->GetTransform(), NULL, NULL);
+                                ds->StylizeVectorLayer(vl, dr, rdr,
xformer, NULL, NULL);
                             }
                             delete rdr;
                         }
@@ -781,10 +783,10 @@
                                     syms->Adopt(syms2->GetAt(min(i,
syms2->GetCount()-1)));
                                 }
 
-                                RSMgFeatureReader* rdr =
ExecuteFeatureQuery(svcFeature, extent, vl, overrideFilter.c_str(),
dstCs, item ? item->GetCoordSys() : NULL, item);
+                                RSMgFeatureReader* rdr =
ExecuteFeatureQuery(svcFeature, extent, vl, overrideFilter.c_str(),
dstCs, layerCs, item);
                                 if (rdr)
                                 {
-                                    ds->StylizeVectorLayer(vl, dr, rdr,
item->GetTransform(), NULL, NULL);
+                                    ds->StylizeVectorLayer(vl, dr, rdr,
xformer, NULL, NULL);
                                 }
                                 delete rdr;
 
@@ -825,12 +827,12 @@
                     }
                     else
                     {
-                        RSMgFeatureReader* rdr =
ExecuteFeatureQuery(svcFeature, extent, vl, overrideFilter.c_str(),
dstCs, item ? item->GetCoordSys() : NULL, item);
+                        RSMgFeatureReader* rdr =
ExecuteFeatureQuery(svcFeature, extent, vl, overrideFilter.c_str(),
dstCs, layerCs, item);
                         if (rdr)
                         {
                             //stylize into output format
                             dr->StartLayer(&legendInfo, &fcinfo);
-                            ds->StylizeVectorLayer(vl, dr, rdr, item ?
item->GetTransform() : NULL, NULL, NULL);
+                            ds->StylizeVectorLayer(vl, dr, rdr,
xformer, NULL, NULL);
                             dr->EndLayer();
                         }
                         delete rdr;
@@ -874,6 +876,8 @@
 
                     //get a transform from layer coord sys to map coord
sys
                     TransformCache* item =
GetLayerToMapTransform(transformCache, gl->GetFeatureName(), featResId,
dstCs, csFactory, svcFeature);
+                    MgCoordinateSystem* layerCs = item?
item->GetCoordSys() : NULL;
+                    MgCSTrans* xformer = item? item->GetTransform() :
NULL;
 
                     //grid layer does not yet have hyperlink or tooltip
                     //extract hyperlink and tooltip info
@@ -917,12 +921,12 @@
                     }
 
                     //perform the raster query
-                    RSMgFeatureReader* rdr =
ExecuteRasterQuery(svcFeature, extent, gl, overrideFilter.c_str(),
dstCs, item ? item->GetCoordSys() : NULL, width, height);
+                    RSMgFeatureReader* rdr =
ExecuteRasterQuery(svcFeature, extent, gl, overrideFilter.c_str(),
dstCs, layerCs, width, height);
                     if (rdr)
                     {
                         //stylize into a dwf
                         dr->StartLayer(&legendInfo, &fcinfo);
-                        ds->StylizeGridLayer(gl, dr, rdr,
item->GetTransform(), NULL, NULL);
+                        ds->StylizeGridLayer(gl, dr, rdr, xformer,
NULL, NULL);
                         dr->EndLayer();
                     }
                     delete rdr;

_______________________________________________
mapguide-commits mailing list
mapguide-commits at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-commits



More information about the mapguide-commits mailing list