[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