[mapguide-commits] r7109 - in trunk/MgDev: Common/MapGuideCommon/Services Server/src/Services/Rendering Server/src/UnitTesting

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Oct 10 20:17:47 PDT 2012


Author: jng
Date: 2012-10-10 20:17:47 -0700 (Wed, 10 Oct 2012)
New Revision: 7109

Modified:
   trunk/MgDev/Common/MapGuideCommon/Services/RenderingOptions.h
   trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
   trunk/MgDev/Server/src/UnitTesting/TestRenderingService.cpp
   trunk/MgDev/Server/src/UnitTesting/TestRenderingService.h
Log:
#2141: Add support for base layers in the RenderDynamicOverlay API. This adds a new behavior mask value (RenderBaseLayers = 8), that will instruct RenderDynamicOverlay to include base layers if this value is logically OR'ed into the behavior property of MgRenderingOptions.

Reviewed by Walt Welton-Lair

Modified: trunk/MgDev/Common/MapGuideCommon/Services/RenderingOptions.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/Services/RenderingOptions.h	2012-10-10 16:13:11 UTC (rev 7108)
+++ trunk/MgDev/Common/MapGuideCommon/Services/RenderingOptions.h	2012-10-11 03:17:47 UTC (rev 7109)
@@ -40,15 +40,18 @@
     /// \n
     /// \c RenderSelection - Renders the selected feature(s).
     /// \n
-    /// \c RenderLayers - Renders the features on the map.
+    /// \c RenderLayers - Renders the dynamic layers on the map.
     /// \n
     /// \c KeepSelection - Renders the selected feature(s) even if they are outside the current scale.
+    /// \n
+    /// \c RenderBaseLayers - Renders the base layers on the map.
     ///
     enum
     {
         RenderSelection = 1,
         RenderLayers = 2,
-        KeepSelection = 4
+        KeepSelection = 4,
+        RenderBaseLayers = 8
     };
 
     /////////////////////////////////////////////////////////////////

Modified: trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp	2012-10-10 16:13:11 UTC (rev 7108)
+++ trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp	2012-10-11 03:17:47 UTC (rev 7109)
@@ -381,6 +381,9 @@
     // initialize the renderer
     auto_ptr<SE_Renderer> dr(CreateRenderer(width, height, bgColor, true));
 
+    bool bIncludeDynamicLayers = ((options->GetBehavior() & MgRenderingOptions::RenderLayers) == MgRenderingOptions::RenderLayers);
+    bool bIncludeBaseLayers = ((options->GetBehavior() & MgRenderingOptions::RenderBaseLayers) == MgRenderingOptions::RenderBaseLayers);
+
     // create a temporary collection containing all the dynamic layers
     Ptr<MgLayerCollection> layers = map->GetLayers();
     Ptr<MgReadOnlyLayerCollection> roLayers = new MgReadOnlyLayerCollection();
@@ -388,8 +391,10 @@
     {
         Ptr<MgLayerBase> layer = layers->GetItem(i);
         INT32 layerType = layer->GetLayerType();
-        if (layerType == MgLayerType::Dynamic)
+        if (bIncludeDynamicLayers && layerType == MgLayerType::Dynamic)
             roLayers->Add(layer);
+        else if (bIncludeBaseLayers && layerType == MgLayerType::BaseMap)
+            roLayers->Add(layer);
     }
 
     if(NULL != pPRMResult)

Modified: trunk/MgDev/Server/src/UnitTesting/TestRenderingService.cpp
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestRenderingService.cpp	2012-10-10 16:13:11 UTC (rev 7108)
+++ trunk/MgDev/Server/src/UnitTesting/TestRenderingService.cpp	2012-10-11 03:17:47 UTC (rev 7109)
@@ -325,6 +325,46 @@
         Ptr<MgByteReader> wdfrdr1 = wdfsrc1->GetReader();
         m_svcResource->SetResource(wdfres1, wdfrdr1, NULL);
 
+        // ------------------------------------------------------
+        // base map source data
+        // ------------------------------------------------------
+        // publish the map definition
+        Ptr<MgResourceIdentifier> mapres13 = new MgResourceIdentifier(L"Library://UnitTests/Maps/BaseMap.MapDefinition");
+        Ptr<MgByteSource> mdfsrc13 = new MgByteSource(L"../UnitTestFiles/UT_BaseMap.mdf", false);
+        Ptr<MgByteReader> mdfrdr13 = mdfsrc13->GetReader();
+        m_svcResource->SetResource(mapres13, mdfrdr13, NULL);
+
+        // publish the layer definitions
+        Ptr<MgResourceIdentifier> ldfres12 = new MgResourceIdentifier(L"Library://UnitTests/Layers/RoadCenterLines.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc12 = new MgByteSource(L"../UnitTestFiles/UT_RoadCenterLines.ldf", false);
+        Ptr<MgByteReader> ldfrdr12 = ldfsrc12->GetReader();
+        m_svcResource->SetResource(ldfres12, ldfrdr12, NULL);
+
+        Ptr<MgResourceIdentifier> ldfres13 = new MgResourceIdentifier(L"Library://UnitTests/Layers/VotingDistricts.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc13 = new MgByteSource(L"../UnitTestFiles/UT_VotingDistricts.ldf", false);
+        Ptr<MgByteReader> ldfrdr13 = ldfsrc13->GetReader();
+        m_svcResource->SetResource(ldfres13, ldfrdr13, NULL);
+
+        // publish the feature sources
+        Ptr<MgResourceIdentifier> fsres6 = new MgResourceIdentifier(L"Library://UnitTests/Data/RoadCenterLines.FeatureSource");
+        Ptr<MgByteSource> fssrc6 = new MgByteSource(L"../UnitTestFiles/UT_RoadCenterLines.fs", false);
+        Ptr<MgByteReader> fsrdr6 = fssrc6->GetReader();
+        m_svcResource->SetResource(fsres6, fsrdr6, NULL);
+
+        Ptr<MgResourceIdentifier> fsres7 = new MgResourceIdentifier(L"Library://UnitTests/Data/VotingDistricts.FeatureSource");
+        Ptr<MgByteSource> fssrc7 = new MgByteSource(L"../UnitTestFiles/UT_VotingDistricts.fs", false);
+        Ptr<MgByteReader> fsrdr7 = fssrc7->GetReader();
+        m_svcResource->SetResource(fsres7, fsrdr7, NULL);
+
+        // publish the resource data
+        Ptr<MgByteSource> dataSource6 = new MgByteSource(L"../UnitTestFiles/UT_RoadCenterLines.sdf", false);
+        Ptr<MgByteReader> dataReader6 = dataSource6->GetReader();
+        m_svcResource->SetResourceData(fsres5, L"UT_RoadCenterLines.sdf", L"File", dataReader6);
+
+        Ptr<MgByteSource> dataSource7 = new MgByteSource(L"../UnitTestFiles/UT_VotingDistricts.sdf", false);
+        Ptr<MgByteReader> dataReader7 = dataSource7->GetReader();
+        m_svcResource->SetResourceData(fsres6, L"UT_VotingDistricts.sdf", L"File", dataReader7);
+
     }
     catch (MgException* e)
     {
@@ -439,7 +479,18 @@
         Ptr<MgResourceIdentifier> wdfres1 = new MgResourceIdentifier(L"Library://UnitTests/Watermarks/PoweredByMapGuide.WatermarkDefinition");
         m_svcResource->DeleteResource(wdfres1);
 
-       #ifdef _DEBUG
+        Ptr<MgResourceIdentifier> mapres13 = new MgResourceIdentifier(L"Library://UnitTests/Maps/BaseMap.MapDefinition");
+        m_svcResource->DeleteResource(mapres13);
+        Ptr<MgResourceIdentifier> ldfres12 = new MgResourceIdentifier(L"Library://UnitTests/Layers/RoadCenterLines.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres12);
+        Ptr<MgResourceIdentifier> ldfres13 = new MgResourceIdentifier(L"Library://UnitTests/Layers/VotingDistricts.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres13);
+        Ptr<MgResourceIdentifier> fsres6 = new MgResourceIdentifier(L"Library://UnitTests/Data/RoadCenterLines.FeatureSource");
+        m_svcResource->DeleteResource(fsres6);
+        Ptr<MgResourceIdentifier> fsres7 = new MgResourceIdentifier(L"Library://UnitTests/Data/VotingDistricts.FeatureSource");
+        m_svcResource->DeleteResource(fsres7);
+
+        #ifdef _DEBUG
         MgFdoConnectionManager* pFdoConnectionManager = MgFdoConnectionManager::GetInstance();
         if(pFdoConnectionManager)
         {
@@ -511,6 +562,50 @@
 }
 
 
+void TestRenderingService::TestCase_RenderDynamicOverlayTiledMap(CREFSTRING imageFormat, CREFSTRING extension)
+{
+    try
+    {
+        // make a runtime map
+        Ptr<MgMap> map = CreateTestTiledMap();
+
+//        clock_t t0 = clock();
+
+        Ptr<MgRenderingOptions> renderOpts = new MgRenderingOptions(imageFormat, MgRenderingOptions::RenderLayers | MgRenderingOptions::RenderBaseLayers, NULL);
+
+        map->SetViewScale(12000.0);
+//        for (int i=0; i<10; i++)
+//        {
+            //EXPECT: Tiled layers rendered with transparent background for applicable formats
+            Ptr<MgByteReader> rdr1 = m_svcRendering->RenderDynamicOverlay(map, NULL, renderOpts);
+            rdr1->ToFile(GetPath(L"../UnitTestFiles/RenderDynamicOverlayTiled_WithBase12k", imageFormat, extension));
+//        }
+
+        Ptr<MgRenderingOptions> renderOpts2 = new MgRenderingOptions(imageFormat, MgRenderingOptions::RenderLayers, NULL);
+
+//        for (int i=0; i<100; i++)
+//        {
+            //EXPECT: Nothing, with transparent background for applicable formats
+            Ptr<MgByteReader> rdr2 = m_svcRendering->RenderDynamicOverlay(map, NULL, renderOpts2);
+            rdr2->ToFile(GetPath(L"../UnitTestFiles/RenderDynamicOverlayTiled_NoBase12k", imageFormat, extension));
+//        }
+
+//        clock_t t1 = clock();
+//        printf ("delta clock %d\n", t1 - t0);
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+}
+
+
 void TestRenderingService::TestCase_RenderMap(CREFSTRING imageFormat, CREFSTRING extension)
 {
     try
@@ -704,7 +799,23 @@
     return map;
 }
 
+MgMap* TestRenderingService::CreateTestTiledMap()
+{
+    Ptr<MgResourceIdentifier> mdfres = new MgResourceIdentifier(L"Library://UnitTests/Maps/BaseMap.MapDefinition");
+    MgMap* map = new MgMap(m_siteConnection);
+    map->Create(mdfres, L"UnitTestSheboyganTiled");
 
+    Ptr<MgCoordinate> coordNewCenter = new MgCoordinateXY(-87.733253, 43.746199);
+    Ptr<MgPoint> ptNewCenter = new MgPoint(coordNewCenter);
+    map->SetViewCenter(ptNewCenter);
+    map->SetViewScale(75000.0);
+    map->SetDisplayDpi(96);
+    map->SetDisplayWidth(1024);
+    map->SetDisplayHeight(1024);
+
+    return map;
+}
+
 // creates a selection bounds in mapping space
 MgPolygon* TestRenderingService::CreateSelectionPolygon(MgMap* map, double width, double height)
 {

Modified: trunk/MgDev/Server/src/UnitTesting/TestRenderingService.h
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestRenderingService.h	2012-10-10 16:13:11 UTC (rev 7108)
+++ trunk/MgDev/Server/src/UnitTesting/TestRenderingService.h	2012-10-11 03:17:47 UTC (rev 7109)
@@ -36,6 +36,7 @@
     CPPUNIT_TEST(TestCase_Annotation3PNG);
 
     CPPUNIT_TEST(TestCase_RenderDynamicOverlayPNG);
+    CPPUNIT_TEST(TestCase_RenderDynamicOverlayTiledMapPNG);
     CPPUNIT_TEST(TestCase_RenderMapPNG);
     CPPUNIT_TEST(TestCase_RenderMapWithWatermarkPNG);
     CPPUNIT_TEST(TestCase_RenderLegendPNG);
@@ -51,6 +52,7 @@
     CPPUNIT_TEST(TestCase_Annotation3PNG8);
 
     CPPUNIT_TEST(TestCase_RenderDynamicOverlayPNG8);
+    CPPUNIT_TEST(TestCase_RenderDynamicOverlayTiledMapPNG8);
     CPPUNIT_TEST(TestCase_RenderMapPNG8);
     CPPUNIT_TEST(TestCase_RenderMapWithWatermarkPNG8);
     CPPUNIT_TEST(TestCase_RenderLegendPNG8);
@@ -66,6 +68,7 @@
     CPPUNIT_TEST(TestCase_Annotation3GIF);
 
     CPPUNIT_TEST(TestCase_RenderDynamicOverlayGIF);
+    CPPUNIT_TEST(TestCase_RenderDynamicOverlayTiledMapGIF);
     CPPUNIT_TEST(TestCase_RenderMapGIF);
     CPPUNIT_TEST(TestCase_RenderMapWithWatermarkGIF);
     CPPUNIT_TEST(TestCase_RenderLegendGIF);
@@ -81,6 +84,7 @@
     CPPUNIT_TEST(TestCase_Annotation3JPG);
 
     CPPUNIT_TEST(TestCase_RenderDynamicOverlayJPG);
+    CPPUNIT_TEST(TestCase_RenderDynamicOverlayTiledMapJPG);
     CPPUNIT_TEST(TestCase_RenderMapJPG);
     CPPUNIT_TEST(TestCase_RenderMapWithWatermarkJPG);
     CPPUNIT_TEST(TestCase_RenderLegendJPG);
@@ -105,6 +109,7 @@
 
 	//Parameterized versions that all format-specific tests call into
     void TestCase_RenderDynamicOverlay(CREFSTRING imageFormat, CREFSTRING extension);
+    void TestCase_RenderDynamicOverlayTiledMap(CREFSTRING imageFormat, CREFSTRING extension);
     void TestCase_RenderMap(CREFSTRING imageFormat, CREFSTRING extension);
     void TestCase_RenderMapWithWatermark(CREFSTRING imageFormat, CREFSTRING extension);
     void TestCase_RenderLegend(CREFSTRING imageFormat, CREFSTRING extension);
@@ -121,6 +126,7 @@
 
 	//PNG output tests
 	void TestCase_RenderDynamicOverlayPNG() { TestCase_RenderDynamicOverlay(L"PNG", L"png"); }
+    void TestCase_RenderDynamicOverlayTiledMapPNG() { TestCase_RenderDynamicOverlayTiledMap(L"PNG", L"png"); }
     void TestCase_RenderMapPNG() { TestCase_RenderMap(L"PNG", L"png"); }
     void TestCase_RenderMapWithWatermarkPNG() { TestCase_RenderMapWithWatermark(L"PNG", L"png"); }
     void TestCase_RenderLegendPNG() { TestCase_RenderLegend(L"PNG", L"png"); }
@@ -135,6 +141,7 @@
 
 	//PNG8 output tests
 	void TestCase_RenderDynamicOverlayPNG8() { TestCase_RenderDynamicOverlay(L"PNG8", L"png"); }
+    void TestCase_RenderDynamicOverlayTiledMapPNG8() { TestCase_RenderDynamicOverlayTiledMap(L"PNG8", L"png"); }
     void TestCase_RenderMapPNG8() { TestCase_RenderMap(L"PNG8", L"png"); }
     void TestCase_RenderMapWithWatermarkPNG8() { TestCase_RenderMapWithWatermark(L"PNG8", L"png"); }
     void TestCase_RenderLegendPNG8() { TestCase_RenderLegend(L"PNG8", L"png"); }
@@ -149,6 +156,7 @@
 
 	//GIF output tests
 	void TestCase_RenderDynamicOverlayGIF() { TestCase_RenderDynamicOverlay(L"GIF", L"gif"); }
+    void TestCase_RenderDynamicOverlayTiledMapGIF() { TestCase_RenderDynamicOverlayTiledMap(L"GIF", L"gif"); }
     void TestCase_RenderMapGIF() { TestCase_RenderMap(L"GIF", L"gif"); }
     void TestCase_RenderMapWithWatermarkGIF() { TestCase_RenderMapWithWatermark(L"GIF", L"gif"); }
     void TestCase_RenderLegendGIF() { TestCase_RenderLegend(L"GIF", L"gif"); }
@@ -163,6 +171,7 @@
 
 	//JPG output tests
 	void TestCase_RenderDynamicOverlayJPG() { TestCase_RenderDynamicOverlay(L"JPG", L"jpg"); }
+    void TestCase_RenderDynamicOverlayTiledMapJPG() { TestCase_RenderDynamicOverlayTiledMap(L"JPG", L"jpg"); }
     void TestCase_RenderMapJPG() { TestCase_RenderMap(L"JPG", L"jpg"); }
     void TestCase_RenderMapWithWatermarkJPG() { TestCase_RenderMapWithWatermark(L"JPG", L"jpg"); }
     void TestCase_RenderLegendJPG() { TestCase_RenderLegend(L"JPG", L"jpg"); }
@@ -179,6 +188,7 @@
 
 private:
     MgMap* CreateTestMap();
+    MgMap* CreateTestTiledMap();
     MgMap* CreateTestMapWithWatermark();
     MgPolygon* CreateSelectionPolygon(MgMap* map, double width, double height);
 	static STRING GetPath(CREFSTRING basePath, CREFSTRING imageFormat, CREFSTRING extension);



More information about the mapguide-commits mailing list