[mapguide-commits] r7912 - in branches/2.5/MgDev: Server/src/PostBuild Server/src/Services/Mapping Server/src/UnitTesting UnitTest/TestData/MappingService
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Nov 21 19:24:32 PST 2013
Author: jng
Date: 2013-11-21 19:24:32 -0800 (Thu, 21 Nov 2013)
New Revision: 7912
Added:
branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiCTS.ldf
branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiCTSWithTheme.ldf
branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTS.ldf
branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTSSingleCTS.ldf
branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTSWithTheme.ldf
branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_SingleFTSMultiCTS.ldf
Modified:
branches/2.5/MgDev/Server/src/PostBuild/PostBuild.mak
branches/2.5/MgDev/Server/src/Services/Mapping/LegendPlotUtil.cpp
branches/2.5/MgDev/Server/src/UnitTesting/TestRenderingService.cpp
branches/2.5/MgDev/Server/src/UnitTesting/TestRenderingService.h
Log:
#2379: Improve the GETMAPLEGENDIMAGE operation:
- Respect the ShowInLegend property of FeatureTypeStyle
- Properly handle rendering of multi-FTS/multi-CTS layers with special care to give Composite Styles precedence should they coexist with AreaTypeStyle/PointTypeStyle/LineTypeStyle elements in the same vector scale range.
- Add extra test data and rendering unit tests to cover these particular cases.
Reviewed by Walt Welton-Lair
Modified: branches/2.5/MgDev/Server/src/PostBuild/PostBuild.mak
===================================================================
--- branches/2.5/MgDev/Server/src/PostBuild/PostBuild.mak 2013-11-17 12:38:39 UTC (rev 7911)
+++ branches/2.5/MgDev/Server/src/PostBuild/PostBuild.mak 2013-11-22 03:24:32 UTC (rev 7912)
@@ -187,6 +187,12 @@
..\..\bin\UnitTestFiles\UT_Rail.sdf \
..\..\bin\UnitTestFiles\UT_Rail.fs \
..\..\bin\UnitTestFiles\UT_Rail.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf \
+ ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf \
..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf \
..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource \
..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf \
@@ -446,6 +452,12 @@
..\..\bin\UnitTestFiles\UT_Rail.sdf \
..\..\bin\UnitTestFiles\UT_Rail.fs \
..\..\bin\UnitTestFiles\UT_Rail.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf \
+ ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf \
..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf \
..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource \
..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf \
@@ -705,6 +717,12 @@
..\..\bin\UnitTestFiles\UT_Rail.sdf \
..\..\bin\UnitTestFiles\UT_Rail.fs \
..\..\bin\UnitTestFiles\UT_Rail.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf \
+ ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf \
..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf \
..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource \
..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf \
@@ -964,6 +982,12 @@
..\..\bin\UnitTestFiles\UT_Rail.sdf \
..\..\bin\UnitTestFiles\UT_Rail.fs \
..\..\bin\UnitTestFiles\UT_Rail.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf \
+ ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf \
+ ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf \
..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf \
..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource \
..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf \
@@ -1096,6 +1120,12 @@
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.sdf del /F ..\..\bin\UnitTestFiles\UT_Rail.sdf
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.fs del /F ..\..\bin\UnitTestFiles\UT_Rail.fs
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.ldf del /F ..\..\bin\UnitTestFiles\UT_Rail.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf
if EXIST ..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf del /F ..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf
if EXIST ..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource del /F ..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource
if EXIST ..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf del /F ..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf
@@ -1223,6 +1253,12 @@
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.sdf del /F ..\..\bin\UnitTestFiles\UT_Rail.sdf
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.fs del /F ..\..\bin\UnitTestFiles\UT_Rail.fs
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.ldf del /F ..\..\bin\UnitTestFiles\UT_Rail.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf
if EXIST ..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf del /F ..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf
if EXIST ..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource del /F ..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource
if EXIST ..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf del /F ..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf
@@ -1350,6 +1386,12 @@
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.sdf del /F ..\..\bin\UnitTestFiles\UT_Rail.sdf
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.fs del /F ..\..\bin\UnitTestFiles\UT_Rail.fs
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.ldf del /F ..\..\bin\UnitTestFiles\UT_Rail.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf
if EXIST ..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf del /F ..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf
if EXIST ..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource del /F ..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource
if EXIST ..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf del /F ..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf
@@ -1475,6 +1517,12 @@
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.sdf del /F ..\..\bin\UnitTestFiles\UT_Rail.sdf
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.fs del /F ..\..\bin\UnitTestFiles\UT_Rail.fs
if EXIST ..\..\bin\UnitTestFiles\UT_Rail.ldf del /F ..\..\bin\UnitTestFiles\UT_Rail.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiCTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf del /F ..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf
+ if EXIST ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf del /F ..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf
if EXIST ..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf del /F ..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf
if EXIST ..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource del /F ..\..\bin\UnitTestFiles\Sheboygan_Parcels.FeatureSource
if EXIST ..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf del /F ..\..\bin\UnitTestFiles\Sheboygan_Parcels.sdf
@@ -1574,6 +1622,12 @@
"..\..\..\UnitTest\TestData\MappingService\UT_Rail.sdf" :
"..\..\..\UnitTest\TestData\MappingService\UT_Rail.fs" :
"..\..\..\UnitTest\TestData\MappingService\UT_Rail.ldf" :
+"..\..\..\UnitTestFiles\UT_MultiCTS.ldf" :
+"..\..\..\UnitTestFiles\UT_MultiCTSWithTheme.ldf" :
+"..\..\..\UnitTestFiles\UT_MultiFTS.ldf" :
+"..\..\..\UnitTestFiles\UT_MultiFTSSingleCTS.ldf" :
+"..\..\..\UnitTestFiles\UT_MultiFTSWithTheme.ldf" :
+"..\..\..\UnitTestFiles\UT_SingleFTSMultiCTS.ldf" :
"..\..\..\UnitTest\TestData\MappingService\UT_RotatedPointStyles.ldf" :
"..\..\..\UnitTest\TestData\TileService\UT_BaseMap.mdf" :
"..\..\..\UnitTest\TestData\TileService\UT_Parcels.fs" :
@@ -1773,6 +1827,30 @@
if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
if EXIST "..\..\..\UnitTest\TestData\MappingService\UT_Rail.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MappingService\UT_Rail.ldf" ..\..\bin\UnitTestFiles\
+..\..\bin\UnitTestFiles\UT_MultiCTS.ldf : "..\..\..\UnitTest\TestData\MappingService\UT_MultiCTS.ldf"
+ if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
+ if EXIST "..\..\..\UnitTest\TestData\MappingService\UT_MultiCTS.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MappingService\UT_MultiCTS.ldf" ..\..\bin\UnitTestFiles\
+
+..\..\bin\UnitTestFiles\UT_MultiCTSWithTheme.ldf : "..\..\..\UnitTest\TestData\MappingService\UT_MultiCTSWithTheme.ldf"
+ if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
+ if EXIST "..\..\..\UnitTest\TestData\MappingService\UT_MultiCTSWithTheme.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MappingService\UT_MultiCTSWithTheme.ldf" ..\..\bin\UnitTestFiles\
+
+..\..\bin\UnitTestFiles\UT_MultiFTS.ldf : "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTS.ldf"
+ if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
+ if EXIST "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTS.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTS.ldf" ..\..\bin\UnitTestFiles\
+
+..\..\bin\UnitTestFiles\UT_MultiFTSSingleCTS.ldf : "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTSSingleCTS.ldf"
+ if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
+ if EXIST "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTSSingleCTS.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTSSingleCTS.ldf" ..\..\bin\UnitTestFiles\
+
+..\..\bin\UnitTestFiles\UT_MultiFTSWithTheme.ldf : "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTSWithTheme.ldf"
+ if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
+ if EXIST "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTSWithTheme.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MappingService\UT_MultiFTSWithTheme.ldf" ..\..\bin\UnitTestFiles\
+
+..\..\bin\UnitTestFiles\UT_SingleFTSMultiCTS.ldf : "..\..\..\UnitTest\TestData\MappingService\UT_SingleFTSMultiCTS.ldf"
+ if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
+ if EXIST "..\..\..\UnitTest\TestData\MappingService\UT_SingleFTSMultiCTS.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MappingService\UT_SingleFTSMultiCTS.ldf" ..\..\bin\UnitTestFiles\
+
..\..\bin\UnitTestFiles\UT_RotatedPointStyles.ldf : "..\..\..\UnitTest\TestData\MappingService\UT_RotatedPointStyles.ldf"
if NOT EXIST ..\..\bin\UnitTestFiles\nul mkdir ..\..\bin\UnitTestFiles
if EXIST "..\..\..\UnitTest\TestData\MappingService\UT_RotatedPointStyles.ldf" xcopy /r /d /y "..\..\..\UnitTest\TestData\MappingService\UT_RotatedPointStyles.ldf" ..\..\bin\UnitTestFiles\
Modified: branches/2.5/MgDev/Server/src/Services/Mapping/LegendPlotUtil.cpp
===================================================================
--- branches/2.5/MgDev/Server/src/Services/Mapping/LegendPlotUtil.cpp 2013-11-17 12:38:39 UTC (rev 7911)
+++ branches/2.5/MgDev/Server/src/Services/Mapping/LegendPlotUtil.cpp 2013-11-22 03:24:32 UTC (rev 7912)
@@ -274,24 +274,70 @@
if (ftscol->GetCount() == 0)
continue;
- // if there are multiple feature type styles, using the first one
- MdfModel::FeatureTypeStyle* fts = ftscol->GetAt(0);
- MdfModel::RuleCollection* rules = fts->GetRules();
- int nRuleCount = rules->GetCount();
+ //Peek ahead to determine what we're dealing with
+ bool bThemed = false;
+ int nCompositeStyleCount = 0;
+ MdfModel::FeatureTypeStyle* singleFTS = NULL;
+ MdfModel::FeatureTypeStyle* singleCTS = NULL;
+ int nTotalFTSRules = 0;
+ int nTotalCTSRules = 0;
+ //Compile type/rule count to determine if this is a themed layer
+ for (int j = 0; j < ftscol->GetCount(); j++)
+ {
+ MdfModel::FeatureTypeStyle* fts = ftscol->GetAt(j);
+ if (!fts->IsShowInLegend())
+ continue;
+ MdfModel::RuleCollection* rules = fts->GetRules();
+ MdfModel::CompositeTypeStyle* cts = dynamic_cast<MdfModel::CompositeTypeStyle*>(fts);
+ //Composite Styles take precedence (it's what the stylizer does. So we're doing the same thing here).
+ //If a Composite Style exists, we're using it.
+ if (NULL != cts)
+ {
+ //For a single type scale range, this will only be set once. Otherwise it could
+ //be set many times over (for each style type we encounter), but this is okay
+ //because we won't be using this pointer anyway for multi-type layers
+ singleCTS = fts;
+ nTotalCTSRules += rules->GetCount();
+ nCompositeStyleCount++;
+ }
+ else
+ {
+ //For a single type scale range, this will only be set once. Otherwise it could
+ //be set many times over (for each style type we encounter), but this is okay
+ //because we won't be using this pointer anyway for multi-type layers
+ singleFTS = fts;
+ nTotalFTSRules += rules->GetCount();
+ }
+ }
+ //It's a themed layer if we found more than one rule of that type
+ bThemed = (nTotalFTSRules > 1);
+ //Found a composite style, re-evaluate against composite rule count
+ if (nCompositeStyleCount > 0)
+ bThemed = (nTotalCTSRules > 1);
+
//add the layer icon, if any
x = startX;
RS_Bounds b2(x, y, x + dIconWidth, y + dIconHeight);
- if (nRuleCount > 1)
+ if (bThemed)
{
//in case of themed layer, use standard theme icon
DrawPNG(&dr, (unsigned char*)THEMED_LAYER_ICON, sizeof(THEMED_LAYER_ICON), bitmapPixelWidth, bitmapPixelHeight, b2);
}
else
{
+ assert(NULL != singleFTS || NULL != singleCTS); //Should've been set by peek-ahead from above
+
+ MdfModel::FeatureTypeStyle* theFTS = NULL;
+ //Composite TS takes precedence
+ if (NULL != singleCTS)
+ theFTS = singleCTS;
+ else if (NULL != singleFTS)
+ theFTS = singleFTS;
+
//otherwise pick the icon from the only rule
- Ptr<MgByteReader> layerIcon = MgMappingUtil::DrawFTS(m_svcResource, fts, bitmapPixelWidth, bitmapPixelHeight, 0);
+ Ptr<MgByteReader> layerIcon = MgMappingUtil::DrawFTS(m_svcResource, theFTS, bitmapPixelWidth, bitmapPixelHeight, 0);
if (layerIcon.p)
{
@@ -309,38 +355,56 @@
RS_LabelInfo info(x, y + verticalTextAdjust, textDef);
dr.ProcessLabelGroup(&info, 1, mapLayer->GetLegendLabel(), RS_OverpostType_All, false, NULL, 0.0);
- if (nRuleCount > 1)
+ //layer is themed : draw the theme icons under the layer title
+ if (bThemed)
{
//theme icons draw slightly indented
x = startX + initialMarginX;
- //layer is themed : draw the theme icons under the layer title
- for (int i = 0; i < nRuleCount; i++)
+ for (int j = 0; j < ftscol->GetCount(); j++)
{
- MdfModel::Rule* rule = rules->GetAt(i);
+ MdfModel::FeatureTypeStyle* fts = ftscol->GetAt(j);
+ //Skip items not marked for display
+ if (!fts->IsShowInLegend())
+ continue;
- //move y cursor down one line
- y -= verticalDelta;
+ MdfModel::CompositeTypeStyle* cts = dynamic_cast<MdfModel::CompositeTypeStyle*>(fts);
+ //If we found one or more composite styles, then they take precedence. So skip all non-composite ones
+ if (nCompositeStyleCount > 0 && NULL == cts)
+ continue;
- if (y < bottomLimit)
- break;
+ MdfModel::RuleCollection* rules = fts->GetRules();
- //draw the icon for the current theming rule
- Ptr<MgByteReader> rdr = MgMappingUtil::DrawFTS(m_svcResource, fts, bitmapPixelWidth, bitmapPixelHeight, i);
-
- if (rdr != NULL)
+ for (int k = 0; k < rules->GetCount(); k++)
{
- MgByteSink sink(rdr);
- Ptr<MgByte> bytes = sink.ToBuffer();
+ MdfModel::Rule* rule = rules->GetAt(k);
- RS_Bounds b2(x, y, x + dIconWidth, y + dIconHeight);
- DrawPNG(&dr, bytes->Bytes(), bytes->GetLength(), bitmapPixelWidth, bitmapPixelHeight, b2);
+ //move y cursor down one line
+ y -= verticalDelta;
+
+ if (y < bottomLimit)
+ break;
+
+ //draw the icon for the current theming rule
+ Ptr<MgByteReader> rdr = MgMappingUtil::DrawFTS(m_svcResource, fts, bitmapPixelWidth, bitmapPixelHeight, k);
+
+ if (rdr != NULL)
+ {
+ MgByteSink sink(rdr);
+ Ptr<MgByte> bytes = sink.ToBuffer();
+
+ RS_Bounds b2(x, y, x + dIconWidth, y + dIconHeight);
+ DrawPNG(&dr, bytes->Bytes(), bytes->GetLength(), bitmapPixelWidth, bitmapPixelHeight, b2);
+ }
+
+ //draw the label after the icon, but also allow
+ //some blank space for better clarity
+ RS_LabelInfo info(x + dIconWidth + initialMarginX, y + verticalTextAdjust, textDef);
+ dr.ProcessLabelGroup(&info, 1, rule->GetLegendLabel(), RS_OverpostType_All, false, NULL, 0.0);
}
- //draw the label after the icon, but also allow
- //some blank space for better clarity
- RS_LabelInfo info(x + dIconWidth + initialMarginX, y + verticalTextAdjust, textDef);
- dr.ProcessLabelGroup(&info, 1, rule->GetLegendLabel(), RS_OverpostType_All, false, NULL, 0.0);
+ if (y < bottomLimit)
+ break;
}
}
}
Modified: branches/2.5/MgDev/Server/src/UnitTesting/TestRenderingService.cpp
===================================================================
--- branches/2.5/MgDev/Server/src/UnitTesting/TestRenderingService.cpp 2013-11-17 12:38:39 UTC (rev 7911)
+++ branches/2.5/MgDev/Server/src/UnitTesting/TestRenderingService.cpp 2013-11-22 03:24:32 UTC (rev 7912)
@@ -365,6 +365,38 @@
Ptr<MgByteReader> dataReader7 = dataSource7->GetReader();
m_svcResource->SetResourceData(fsres6, L"UT_VotingDistricts.sdf", L"File", dataReader7);
+ // ---------------------------------------------------------
+ // Data for exercising legend rendering
+ // ---------------------------------------------------------
+ Ptr<MgResourceIdentifier> ldfres14 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTS.LayerDefinition");
+ Ptr<MgByteSource> ldfsrc14 = new MgByteSource(L"../UnitTestFiles/UT_MultiFTS.ldf", false);
+ Ptr<MgByteReader> ldfrdr14 = ldfsrc14->GetReader();
+ m_svcResource->SetResource(ldfres14, ldfrdr14, NULL);
+
+ Ptr<MgResourceIdentifier> ldfres15 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiCTS.LayerDefinition");
+ Ptr<MgByteSource> ldfsrc15 = new MgByteSource(L"../UnitTestFiles/UT_MultiCTS.ldf", false);
+ Ptr<MgByteReader> ldfrdr15 = ldfsrc15->GetReader();
+ m_svcResource->SetResource(ldfres15, ldfrdr15, NULL);
+
+ Ptr<MgResourceIdentifier> ldfres16 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTSWithTheme.LayerDefinition");
+ Ptr<MgByteSource> ldfsrc16 = new MgByteSource(L"../UnitTestFiles/UT_MultiFTSWithTheme.ldf", false);
+ Ptr<MgByteReader> ldfrdr16 = ldfsrc16->GetReader();
+ m_svcResource->SetResource(ldfres16, ldfrdr16, NULL);
+
+ Ptr<MgResourceIdentifier> ldfres17 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiCTSWithTheme.LayerDefinition");
+ Ptr<MgByteSource> ldfsrc17 = new MgByteSource(L"../UnitTestFiles/UT_MultiCTSWithTheme.ldf", false);
+ Ptr<MgByteReader> ldfrdr17 = ldfsrc17->GetReader();
+ m_svcResource->SetResource(ldfres17, ldfrdr17, NULL);
+
+ Ptr<MgResourceIdentifier> ldfres18 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTSSingleCTS.LayerDefinition");
+ Ptr<MgByteSource> ldfsrc18 = new MgByteSource(L"../UnitTestFiles/UT_MultiFTSSingleCTS.ldf", false);
+ Ptr<MgByteReader> ldfrdr18 = ldfsrc18->GetReader();
+ m_svcResource->SetResource(ldfres18, ldfrdr18, NULL);
+
+ Ptr<MgResourceIdentifier> ldfres19 = new MgResourceIdentifier(L"Library://UnitTests/Layers/SingleFTSMultiCTS.LayerDefinition");
+ Ptr<MgByteSource> ldfsrc19 = new MgByteSource(L"../UnitTestFiles/UT_SingleFTSMultiCTS.ldf", false);
+ Ptr<MgByteReader> ldfrdr19 = ldfsrc19->GetReader();
+ m_svcResource->SetResource(ldfres19, ldfrdr19, NULL);
}
catch (MgException* e)
{
@@ -490,6 +522,19 @@
Ptr<MgResourceIdentifier> fsres7 = new MgResourceIdentifier(L"Library://UnitTests/Data/VotingDistricts.FeatureSource");
m_svcResource->DeleteResource(fsres7);
+ Ptr<MgResourceIdentifier> ldfres14 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTS.LayerDefinition");
+ m_svcResource->DeleteResource(ldfres14);
+ Ptr<MgResourceIdentifier> ldfres15 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiCTS.LayerDefinition");
+ m_svcResource->DeleteResource(ldfres15);
+ Ptr<MgResourceIdentifier> ldfres16 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTSWithTheme.LayerDefinition");
+ m_svcResource->DeleteResource(ldfres16);
+ Ptr<MgResourceIdentifier> ldfres17 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiCTSWithTheme.LayerDefinition");
+ m_svcResource->DeleteResource(ldfres17);
+ Ptr<MgResourceIdentifier> ldfres18 = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTSSingleCTS.LayerDefinition");
+ m_svcResource->DeleteResource(ldfres18);
+ Ptr<MgResourceIdentifier> ldfres19 = new MgResourceIdentifier(L"Library://UnitTests/Layers/SingleFTSMultiCTS.LayerDefinition");
+ m_svcResource->DeleteResource(ldfres19);
+
#ifdef _DEBUG
MgFdoConnectionManager* pFdoConnectionManager = MgFdoConnectionManager::GetInstance();
if(pFdoConnectionManager)
@@ -726,17 +771,17 @@
//Re-draw at 75k. Layer group should not be there because it has no visible layers
map->SetViewScale(75000.0);
- Ptr<MgByteReader> rdr3 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
- rdr3->ToFile(GetPath(L"../UnitTestFiles/RenderLegend75kWithEmptyLayerGroup", imageFormat, extension));
+ Ptr<MgByteReader> rdr3 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ rdr3->ToFile(GetPath(L"../UnitTestFiles/RenderLegend75kWithEmptyLayerGroup", imageFormat, extension));
//Re-draw at 14000. Layer group should still not be there because it has no visible layers
map->SetViewScale(14000.0);
- Ptr<MgByteReader> rdr4 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ Ptr<MgByteReader> rdr4 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
rdr4->ToFile(GetPath(L"../UnitTestFiles/RenderLegend14kWithEmptyLayerGroup", imageFormat, extension));
//Re-draw at 12000. Layer group should now be there because its child layer (Parcels) should be visible
map->SetViewScale(12000.0);
- Ptr<MgByteReader> rdr5 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ Ptr<MgByteReader> rdr5 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
rdr5->ToFile(GetPath(L"../UnitTestFiles/RenderLegend12kWithLayerGroup", imageFormat, extension));
}
catch (MgException* e)
@@ -751,7 +796,211 @@
}
}
+void TestRenderingService::TestCase_RenderLegendMultiFTS(CREFSTRING imageFormat, CREFSTRING extension)
+{
+ try
+ {
+ // make a runtime map
+ Ptr<MgMap> map = CreateTestMap();
+ // Insert our test layer
+ Ptr<MgResourceIdentifier> layerDef = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTS.LayerDefinition");
+ Ptr<MgLayer> layer = new MgLayer(layerDef, m_svcResource);
+ layer->SetLegendLabel(layerDef->GetName());
+ Ptr<MgLayerCollection> layers = map->GetLayers();
+ layers->Insert(0, layer);
+ map->Save();
+
+ // call the API using scales of 75000 and 12000
+ Ptr<MgColor> bgc = new MgColor(255, 255, 255, 255);
+
+ map->SetViewScale(75000.0);
+ Ptr<MgByteReader> rdr1 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ rdr1->ToFile(GetPath(L"../UnitTestFiles/RenderLegendMultiFTS", imageFormat, extension));
+ }
+ 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_RenderLegendMultiCTS(CREFSTRING imageFormat, CREFSTRING extension)
+{
+ try
+ {
+ // make a runtime map
+ Ptr<MgMap> map = CreateTestMap();
+
+ // Insert our test layer
+ Ptr<MgResourceIdentifier> layerDef = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiCTS.LayerDefinition");
+ Ptr<MgLayer> layer = new MgLayer(layerDef, m_svcResource);
+ layer->SetLegendLabel(layerDef->GetName());
+ Ptr<MgLayerCollection> layers = map->GetLayers();
+ layers->Insert(0, layer);
+ map->Save();
+
+ // call the API using scales of 75000 and 12000
+ Ptr<MgColor> bgc = new MgColor(255, 255, 255, 255);
+
+ map->SetViewScale(75000.0);
+ Ptr<MgByteReader> rdr1 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ rdr1->ToFile(GetPath(L"../UnitTestFiles/RenderLegendMultiCTS", imageFormat, extension));
+ }
+ 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_RenderLegendMultiFTSWithTheme(CREFSTRING imageFormat, CREFSTRING extension)
+{
+ try
+ {
+ // make a runtime map
+ Ptr<MgMap> map = CreateTestMap();
+
+ // Insert our test layer
+ Ptr<MgResourceIdentifier> layerDef = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTSWithTheme.LayerDefinition");
+ Ptr<MgLayer> layer = new MgLayer(layerDef, m_svcResource);
+ layer->SetLegendLabel(layerDef->GetName());
+ Ptr<MgLayerCollection> layers = map->GetLayers();
+ layers->Insert(0, layer);
+ map->Save();
+
+ // call the API using scales of 75000 and 12000
+ Ptr<MgColor> bgc = new MgColor(255, 255, 255, 255);
+
+ map->SetViewScale(75000.0);
+ Ptr<MgByteReader> rdr1 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ rdr1->ToFile(GetPath(L"../UnitTestFiles/RenderLegendMultiFTSWithTheme", imageFormat, extension));
+ }
+ 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_RenderLegendMultiCTSWithTheme(CREFSTRING imageFormat, CREFSTRING extension)
+{
+ try
+ {
+ // make a runtime map
+ Ptr<MgMap> map = CreateTestMap();
+
+ // Insert our test layer
+ Ptr<MgResourceIdentifier> layerDef = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiCTSWithTheme.LayerDefinition");
+ Ptr<MgLayer> layer = new MgLayer(layerDef, m_svcResource);
+ layer->SetLegendLabel(layerDef->GetName());
+ Ptr<MgLayerCollection> layers = map->GetLayers();
+ layers->Insert(0, layer);
+ map->Save();
+
+ // call the API using scales of 75000 and 12000
+ Ptr<MgColor> bgc = new MgColor(255, 255, 255, 255);
+
+ map->SetViewScale(75000.0);
+ Ptr<MgByteReader> rdr1 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ rdr1->ToFile(GetPath(L"../UnitTestFiles/RenderLegendMultiCTSWithTheme", imageFormat, extension));
+ }
+ 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_RenderLegendMultiFTSSingleCTS(CREFSTRING imageFormat, CREFSTRING extension)
+{
+ try
+ {
+ // make a runtime map
+ Ptr<MgMap> map = CreateTestMap();
+
+ // Insert our test layer
+ Ptr<MgResourceIdentifier> layerDef = new MgResourceIdentifier(L"Library://UnitTests/Layers/MultiFTSSingleCTS.LayerDefinition");
+ Ptr<MgLayer> layer = new MgLayer(layerDef, m_svcResource);
+ layer->SetLegendLabel(layerDef->GetName());
+ Ptr<MgLayerCollection> layers = map->GetLayers();
+ layers->Insert(0, layer);
+ map->Save();
+
+ // call the API using scales of 75000 and 12000
+ Ptr<MgColor> bgc = new MgColor(255, 255, 255, 255);
+
+ map->SetViewScale(75000.0);
+ Ptr<MgByteReader> rdr1 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ rdr1->ToFile(GetPath(L"../UnitTestFiles/RenderLegendMultiFTSSingleCTS", imageFormat, extension));
+ }
+ 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_RenderLegendSingleFTSMultiCTS(CREFSTRING imageFormat, CREFSTRING extension)
+{
+ try
+ {
+ // make a runtime map
+ Ptr<MgMap> map = CreateTestMap();
+
+ // Insert our test layer
+ Ptr<MgResourceIdentifier> layerDef = new MgResourceIdentifier(L"Library://UnitTests/Layers/SingleFTSMultiCTS.LayerDefinition");
+ Ptr<MgLayer> layer = new MgLayer(layerDef, m_svcResource);
+ layer->SetLegendLabel(layerDef->GetName());
+ Ptr<MgLayerCollection> layers = map->GetLayers();
+ layers->Insert(0, layer);
+ map->Save();
+
+ // call the API using scales of 75000 and 12000
+ Ptr<MgColor> bgc = new MgColor(255, 255, 255, 255);
+
+ map->SetViewScale(75000.0);
+ Ptr<MgByteReader> rdr1 = m_svcRendering->RenderMapLegend(map, 200, 400, bgc, imageFormat);
+ rdr1->ToFile(GetPath(L"../UnitTestFiles/RenderLegendSingleFTSMultiCTS", imageFormat, extension));
+ }
+ 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_QueryFeatures()
{
try
Modified: branches/2.5/MgDev/Server/src/UnitTesting/TestRenderingService.h
===================================================================
--- branches/2.5/MgDev/Server/src/UnitTesting/TestRenderingService.h 2013-11-17 12:38:39 UTC (rev 7911)
+++ branches/2.5/MgDev/Server/src/UnitTesting/TestRenderingService.h 2013-11-22 03:24:32 UTC (rev 7912)
@@ -40,6 +40,12 @@
CPPUNIT_TEST(TestCase_RenderMapPNG);
CPPUNIT_TEST(TestCase_RenderMapWithWatermarkPNG);
CPPUNIT_TEST(TestCase_RenderLegendPNG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSPNG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiCTSPNG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSWithThemePNG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiCTSWithThemePNG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSSingleCTSPNG);
+ CPPUNIT_TEST(TestCase_RenderLegendSingleFTSMultiCTSPNG);
CPPUNIT_TEST(TestCase_SymbologyPointsPNG8);
CPPUNIT_TEST(TestCase_SymbologyPointsParamPNG8);
@@ -56,6 +62,12 @@
CPPUNIT_TEST(TestCase_RenderMapPNG8);
CPPUNIT_TEST(TestCase_RenderMapWithWatermarkPNG8);
CPPUNIT_TEST(TestCase_RenderLegendPNG8);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSPNG8);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiCTSPNG8);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSWithThemePNG8);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiCTSWithThemePNG8);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSSingleCTSPNG8);
+ CPPUNIT_TEST(TestCase_RenderLegendSingleFTSMultiCTSPNG8);
CPPUNIT_TEST(TestCase_SymbologyPointsGIF);
CPPUNIT_TEST(TestCase_SymbologyPointsParamGIF);
@@ -72,6 +84,12 @@
CPPUNIT_TEST(TestCase_RenderMapGIF);
CPPUNIT_TEST(TestCase_RenderMapWithWatermarkGIF);
CPPUNIT_TEST(TestCase_RenderLegendGIF);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSGIF);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiCTSGIF);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSWithThemeGIF);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiCTSWithThemeGIF);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSSingleCTSGIF);
+ CPPUNIT_TEST(TestCase_RenderLegendSingleFTSMultiCTSGIF);
CPPUNIT_TEST(TestCase_SymbologyPointsJPG);
CPPUNIT_TEST(TestCase_SymbologyPointsParamJPG);
@@ -88,6 +106,12 @@
CPPUNIT_TEST(TestCase_RenderMapJPG);
CPPUNIT_TEST(TestCase_RenderMapWithWatermarkJPG);
CPPUNIT_TEST(TestCase_RenderLegendJPG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSJPG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiCTSJPG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSWithThemeJPG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiCTSWithThemeJPG);
+ CPPUNIT_TEST(TestCase_RenderLegendMultiFTSSingleCTSJPG);
+ CPPUNIT_TEST(TestCase_RenderLegendSingleFTSMultiCTSJPG);
CPPUNIT_TEST(TestCase_QueryFeatures);
@@ -113,6 +137,12 @@
void TestCase_RenderMap(CREFSTRING imageFormat, CREFSTRING extension);
void TestCase_RenderMapWithWatermark(CREFSTRING imageFormat, CREFSTRING extension);
void TestCase_RenderLegend(CREFSTRING imageFormat, CREFSTRING extension);
+ void TestCase_RenderLegendMultiFTS(CREFSTRING imageFormat, CREFSTRING extension);
+ void TestCase_RenderLegendMultiCTS(CREFSTRING imageFormat, CREFSTRING extension);
+ void TestCase_RenderLegendMultiFTSWithTheme(CREFSTRING imageFormat, CREFSTRING extension);
+ void TestCase_RenderLegendMultiCTSWithTheme(CREFSTRING imageFormat, CREFSTRING extension);
+ void TestCase_RenderLegendMultiFTSSingleCTS(CREFSTRING imageFormat, CREFSTRING extension);
+ void TestCase_RenderLegendSingleFTSMultiCTS(CREFSTRING imageFormat, CREFSTRING extension);
void TestCase_SymbologyPoints(CREFSTRING imageFormat, CREFSTRING extension);
void TestCase_SymbologyPointsParam(CREFSTRING imageFormat, CREFSTRING extension);
@@ -138,6 +168,12 @@
void TestCase_Annotation1PNG() { TestCase_Annotation1(L"PNG", L"png"); }
void TestCase_Annotation2PNG() { TestCase_Annotation2(L"PNG", L"png"); }
void TestCase_Annotation3PNG() { TestCase_Annotation3(L"PNG", L"png"); }
+ void TestCase_RenderLegendMultiFTSPNG() { TestCase_RenderLegendMultiFTS(L"PNG", L"png"); }
+ void TestCase_RenderLegendMultiCTSPNG() { TestCase_RenderLegendMultiCTS(L"PNG", L"png"); }
+ void TestCase_RenderLegendMultiFTSWithThemePNG() { TestCase_RenderLegendMultiFTSWithTheme(L"PNG", L"png"); }
+ void TestCase_RenderLegendMultiCTSWithThemePNG() { TestCase_RenderLegendMultiCTSWithTheme(L"PNG", L"png"); }
+ void TestCase_RenderLegendMultiFTSSingleCTSPNG() { TestCase_RenderLegendMultiFTSSingleCTS(L"PNG", L"png"); }
+ void TestCase_RenderLegendSingleFTSMultiCTSPNG() { TestCase_RenderLegendSingleFTSMultiCTS(L"PNG", L"png"); }
//PNG8 output tests
void TestCase_RenderDynamicOverlayPNG8() { TestCase_RenderDynamicOverlay(L"PNG8", L"png"); }
@@ -153,6 +189,12 @@
void TestCase_Annotation1PNG8() { TestCase_Annotation1(L"PNG8", L"png"); }
void TestCase_Annotation2PNG8() { TestCase_Annotation2(L"PNG8", L"png"); }
void TestCase_Annotation3PNG8() { TestCase_Annotation3(L"PNG8", L"png"); }
+ void TestCase_RenderLegendMultiFTSPNG8() { TestCase_RenderLegendMultiFTS(L"PNG8", L"png"); }
+ void TestCase_RenderLegendMultiCTSPNG8() { TestCase_RenderLegendMultiCTS(L"PNG8", L"png"); }
+ void TestCase_RenderLegendMultiFTSWithThemePNG8() { TestCase_RenderLegendMultiFTSWithTheme(L"PNG8", L"png"); }
+ void TestCase_RenderLegendMultiCTSWithThemePNG8() { TestCase_RenderLegendMultiCTSWithTheme(L"PNG8", L"png"); }
+ void TestCase_RenderLegendMultiFTSSingleCTSPNG8() { TestCase_RenderLegendMultiFTSSingleCTS(L"PNG8", L"png"); }
+ void TestCase_RenderLegendSingleFTSMultiCTSPNG8() { TestCase_RenderLegendSingleFTSMultiCTS(L"PNG8", L"png"); }
//GIF output tests
void TestCase_RenderDynamicOverlayGIF() { TestCase_RenderDynamicOverlay(L"GIF", L"gif"); }
@@ -168,6 +210,12 @@
void TestCase_Annotation1GIF() { TestCase_Annotation1(L"GIF", L"gif"); }
void TestCase_Annotation2GIF() { TestCase_Annotation2(L"GIF", L"gif"); }
void TestCase_Annotation3GIF() { TestCase_Annotation3(L"GIF", L"gif"); }
+ void TestCase_RenderLegendMultiFTSGIF() { TestCase_RenderLegendMultiFTS(L"GIF", L"gif"); }
+ void TestCase_RenderLegendMultiCTSGIF() { TestCase_RenderLegendMultiCTS(L"GIF", L"gif"); }
+ void TestCase_RenderLegendMultiFTSWithThemeGIF() { TestCase_RenderLegendMultiFTSWithTheme(L"GIF", L"gif"); }
+ void TestCase_RenderLegendMultiCTSWithThemeGIF() { TestCase_RenderLegendMultiCTSWithTheme(L"GIF", L"gif"); }
+ void TestCase_RenderLegendMultiFTSSingleCTSGIF() { TestCase_RenderLegendMultiFTSSingleCTS(L"GIF", L"gif"); }
+ void TestCase_RenderLegendSingleFTSMultiCTSGIF() { TestCase_RenderLegendSingleFTSMultiCTS(L"GIF", L"gif"); }
//JPG output tests
void TestCase_RenderDynamicOverlayJPG() { TestCase_RenderDynamicOverlay(L"JPG", L"jpg"); }
@@ -183,6 +231,12 @@
void TestCase_Annotation1JPG() { TestCase_Annotation1(L"JPG", L"jpg"); }
void TestCase_Annotation2JPG() { TestCase_Annotation2(L"JPG", L"jpg"); }
void TestCase_Annotation3JPG() { TestCase_Annotation3(L"JPG", L"jpg"); }
+ void TestCase_RenderLegendMultiFTSJPG() { TestCase_RenderLegendMultiFTS(L"JPG", L"jpg"); }
+ void TestCase_RenderLegendMultiCTSJPG() { TestCase_RenderLegendMultiCTS(L"JPG", L"jpg"); }
+ void TestCase_RenderLegendMultiFTSWithThemeJPG() { TestCase_RenderLegendMultiFTSWithTheme(L"JPG", L"jpg"); }
+ void TestCase_RenderLegendMultiCTSWithThemeJPG() { TestCase_RenderLegendMultiCTSWithTheme(L"JPG", L"jpg"); }
+ void TestCase_RenderLegendMultiFTSSingleCTSJPG() { TestCase_RenderLegendMultiFTSSingleCTS(L"JPG", L"jpg"); }
+ void TestCase_RenderLegendSingleFTSMultiCTSJPG() { TestCase_RenderLegendSingleFTSMultiCTS(L"JPG", L"jpg"); }
//void TestCase_RendererPerformance();
Added: branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiCTS.ldf
===================================================================
--- branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiCTS.ldf (rev 0)
+++ branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiCTS.ldf 2013-11-22 03:24:32 UTC (rev 7912)
@@ -0,0 +1,231 @@
+<?xml version="1.0"?>
+<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.4.0" xsi:noNamespaceSchemaLocation="LayerDefinition-2.4.0.xsd">
+ <VectorLayerDefinition>
+ <ResourceId>Library://UnitTests/Data/Rail.FeatureSource</ResourceId>
+ <Watermarks/>
+ <FeatureName>SHP_Schema:Rail</FeatureName>
+ <FeatureNameType>FeatureClass</FeatureNameType>
+ <Geometry>SHPGEOM</Geometry>
+ <VectorScaleRange>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Square</Name>
+ <Description>Default Point Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M -1.0,-1.0 L 1.0,-1.0 L 1.0,1.0 L -1.0,1.0 L -1.0,-1.0</Geometry>
+ <FillColor>%FILLCOLOR%</FillColor>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ </Path>
+ </Graphics>
+ <PointUsage>
+ <Angle>%ROTATION%</Angle>
+ </PointUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>FILLCOLOR</Identifier>
+ <DefaultValue>0xffffffff</DefaultValue>
+ <DisplayName>&Fill Color</DisplayName>
+ <Description>Fill Color</Description>
+ <DataType>FillColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>ROTATION</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>&Rotation</DisplayName>
+ <Description>Rotation</Description>
+ <DataType>Angle</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+ <ParameterValue>0xffffffff</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>ROTATION</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <AddToExclusionRegion>true</AddToExclusionRegion>
+ <UsageContext>Point</UsageContext>
+ <GeometryContext>Point</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Line</Name>
+ <Description>Default Line Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 L 1.0,0.0</Geometry>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ <LineWeightScalable>false</LineWeightScalable>
+ </Path>
+ </Graphics>
+ <LineUsage>
+ <Repeat>1.0</Repeat>
+ </LineUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <UsageContext>Line</UsageContext>
+ <GeometryContext>LineString</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Fill</Name>
+ <Description>Default Area Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 h 100.0 v 100.0 h -100.0 z</Geometry>
+ <FillColor>%FILLCOLOR%</FillColor>
+ </Path>
+ </Graphics>
+ <AreaUsage>
+ <RepeatX>100.0</RepeatX>
+ <RepeatY>100.0</RepeatY>
+ </AreaUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>FILLCOLOR</Identifier>
+ <DefaultValue>0xffbfbfbf</DefaultValue>
+ <DisplayName>&Fill Color</DisplayName>
+ <Description>Fill Color</Description>
+ <DataType>FillColor</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Fill</SymbolName>
+ <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+ <ParameterValue>0xffbfbfbf</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <GeometryContext>Polygon</GeometryContext>
+ </SymbolInstance>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Line</Name>
+ <Description>Default Line Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 L 1.0,0.0</Geometry>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ <LineWeightScalable>false</LineWeightScalable>
+ </Path>
+ </Graphics>
+ <LineUsage>
+ <Repeat>1.0</Repeat>
+ </LineUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <GeometryContext>Polygon</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ </VectorScaleRange>
+ </VectorLayerDefinition>
+</LayerDefinition>
Added: branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiCTSWithTheme.ldf
===================================================================
--- branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiCTSWithTheme.ldf (rev 0)
+++ branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiCTSWithTheme.ldf 2013-11-22 03:24:32 UTC (rev 7912)
@@ -0,0 +1,441 @@
+<?xml version="1.0"?>
+<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.4.0" xsi:noNamespaceSchemaLocation="LayerDefinition-2.4.0.xsd">
+ <VectorLayerDefinition>
+ <ResourceId>Library://UnitTests/Data/Rail.FeatureSource</ResourceId>
+ <Watermarks />
+ <FeatureName>SHP_Schema:Rail</FeatureName>
+ <FeatureNameType>FeatureClass</FeatureNameType>
+ <Geometry>SHPGEOM</Geometry>
+ <VectorScaleRange>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Square</Name>
+ <Description>Default Point Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M -1.0,-1.0 L 1.0,-1.0 L 1.0,1.0 L -1.0,1.0 L -1.0,-1.0</Geometry>
+ <FillColor>%FILLCOLOR%</FillColor>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ </Path>
+ </Graphics>
+ <PointUsage>
+ <Angle>%ROTATION%</Angle>
+ </PointUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>FILLCOLOR</Identifier>
+ <DefaultValue>0xffffffff</DefaultValue>
+ <DisplayName>&Fill Color</DisplayName>
+ <Description>Fill Color</Description>
+ <DataType>FillColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>ROTATION</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>&Rotation</DisplayName>
+ <Description>Rotation</Description>
+ <DataType>Angle</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+ <ParameterValue>0xffffffff</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>ROTATION</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <AddToExclusionRegion>true</AddToExclusionRegion>
+ <UsageContext>Point</UsageContext>
+ <GeometryContext>Point</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel>Single Track</LegendLabel>
+ <Filter>Mod(Autogenerated_SDF_ID, 2) = 0</Filter>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Line</Name>
+ <Description>Default Line Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 L 1.0,0.0</Geometry>
+ <ScaleX>%StyleEditorGenerated_ScaleX_0%</ScaleX>
+ <ScaleY>%StyleEditorGenerated_ScaleY_0%</ScaleY>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ <LineWeightScalable>false</LineWeightScalable>
+ <LineCap>%StyleEditorGenerated_LineCap_0%</LineCap>
+ <LineJoin>%StyleEditorGenerated_LineJoin_0%</LineJoin>
+ </Path>
+ </Graphics>
+ <LineUsage>
+ <Repeat>1.0</Repeat>
+ </LineUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>StyleEditorGenerated_ScaleX_0</Identifier>
+ <DefaultValue>1.0</DefaultValue>
+ <DisplayName>Path ScaleX</DisplayName>
+ <Description>Path ScaleX</Description>
+ <DataType>Real</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>StyleEditorGenerated_ScaleY_0</Identifier>
+ <DefaultValue>1.0</DefaultValue>
+ <DisplayName>Path ScaleY</DisplayName>
+ <Description>Path ScaleY</Description>
+ <DataType>Real</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>StyleEditorGenerated_LineCap_0</Identifier>
+ <DefaultValue>'Round'</DefaultValue>
+ <DisplayName>Line Cap</DisplayName>
+ <Description>The cap type to use at the ends of each segment in the path outline. This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+ <DataType>String</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>StyleEditorGenerated_LineJoin_0</Identifier>
+ <DefaultValue>'Round'</DefaultValue>
+ <DisplayName>Line Join</DisplayName>
+ <Description>The join type to use at each vertex in the path outline. This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+ <DataType>String</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xffff0000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>StyleEditorGenerated_ScaleX_0</ParameterIdentifier>
+ <ParameterValue>1.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>StyleEditorGenerated_ScaleY_0</ParameterIdentifier>
+ <ParameterValue>1.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>StyleEditorGenerated_LineCap_0</ParameterIdentifier>
+ <ParameterValue>'Round'</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>StyleEditorGenerated_LineJoin_0</ParameterIdentifier>
+ <ParameterValue>'Round'</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <UsageContext>Line</UsageContext>
+ <GeometryContext>LineString</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ <CompositeRule>
+ <LegendLabel>Dual Track</LegendLabel>
+ <Filter>Mod(Autogenerated_SDF_ID, 2) = 1</Filter>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Line</Name>
+ <Description>Default Line Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 L 1.0,0.0</Geometry>
+ <ScaleX>%StyleEditorGenerated_ScaleX_0%</ScaleX>
+ <ScaleY>%StyleEditorGenerated_ScaleY_0%</ScaleY>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ <LineWeightScalable>false</LineWeightScalable>
+ <LineCap>%StyleEditorGenerated_LineCap_0%</LineCap>
+ <LineJoin>%StyleEditorGenerated_LineJoin_0%</LineJoin>
+ </Path>
+ </Graphics>
+ <LineUsage>
+ <Repeat>1.0</Repeat>
+ </LineUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>StyleEditorGenerated_ScaleX_0</Identifier>
+ <DefaultValue>1.0</DefaultValue>
+ <DisplayName>Path ScaleX</DisplayName>
+ <Description>Path ScaleX</Description>
+ <DataType>Real</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>StyleEditorGenerated_ScaleY_0</Identifier>
+ <DefaultValue>1.0</DefaultValue>
+ <DisplayName>Path ScaleY</DisplayName>
+ <Description>Path ScaleY</Description>
+ <DataType>Real</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>StyleEditorGenerated_LineCap_0</Identifier>
+ <DefaultValue>'Round'</DefaultValue>
+ <DisplayName>Line Cap</DisplayName>
+ <Description>The cap type to use at the ends of each segment in the path outline. This must evaluate to one of: None, Round (default), Triangle, or Square.</Description>
+ <DataType>String</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>StyleEditorGenerated_LineJoin_0</Identifier>
+ <DefaultValue>'Round'</DefaultValue>
+ <DisplayName>Line Join</DisplayName>
+ <Description>The join type to use at each vertex in the path outline. This must evaluate to one of: None, Bevel, Round (default), or Miter.</Description>
+ <DataType>String</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff90ee90</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>StyleEditorGenerated_ScaleX_0</ParameterIdentifier>
+ <ParameterValue>1.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>StyleEditorGenerated_ScaleY_0</ParameterIdentifier>
+ <ParameterValue>1.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>StyleEditorGenerated_LineCap_0</ParameterIdentifier>
+ <ParameterValue>'Round'</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>StyleEditorGenerated_LineJoin_0</ParameterIdentifier>
+ <ParameterValue>'Round'</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <UsageContext>Line</UsageContext>
+ <GeometryContext>LineString</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ <CompositeRule>
+ <LegendLabel>Other</LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Line</Name>
+ <Description>Default Line Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 L 1.0,0.0</Geometry>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ <LineWeightScalable>false</LineWeightScalable>
+ </Path>
+ </Graphics>
+ <LineUsage>
+ <Repeat>1.0</Repeat>
+ </LineUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <UsageContext>Line</UsageContext>
+ <GeometryContext>LineString</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Fill</Name>
+ <Description>Default Area Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 h 100.0 v 100.0 h -100.0 z</Geometry>
+ <FillColor>%FILLCOLOR%</FillColor>
+ </Path>
+ </Graphics>
+ <AreaUsage>
+ <RepeatX>100.0</RepeatX>
+ <RepeatY>100.0</RepeatY>
+ </AreaUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>FILLCOLOR</Identifier>
+ <DefaultValue>0xffbfbfbf</DefaultValue>
+ <DisplayName>&Fill Color</DisplayName>
+ <Description>Fill Color</Description>
+ <DataType>FillColor</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Fill</SymbolName>
+ <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+ <ParameterValue>0xffbfbfbf</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <GeometryContext>Polygon</GeometryContext>
+ </SymbolInstance>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Line</Name>
+ <Description>Default Line Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 L 1.0,0.0</Geometry>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ <LineWeightScalable>false</LineWeightScalable>
+ </Path>
+ </Graphics>
+ <LineUsage>
+ <Repeat>1.0</Repeat>
+ </LineUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <GeometryContext>Polygon</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ </VectorScaleRange>
+ </VectorLayerDefinition>
+</LayerDefinition>
Added: branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTS.ldf
===================================================================
--- branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTS.ldf (rev 0)
+++ branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTS.ldf 2013-11-22 03:24:32 UTC (rev 7912)
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.2.0" xsi:noNamespaceSchemaLocation="LayerDefinition-1.2.0.xsd">
+ <VectorLayerDefinition>
+ <ResourceId>Library://UnitTests/Data/Rail.FeatureSource</ResourceId>
+ <FeatureName>SHP_Schema:Rail</FeatureName>
+ <FeatureNameType>FeatureClass</FeatureNameType>
+ <Geometry>SHPGEOM</Geometry>
+ <VectorScaleRange>
+ <PointTypeStyle>
+ <DisplayAsText>false</DisplayAsText>
+ <AllowOverpost>false</AllowOverpost>
+ <PointRule>
+ <LegendLabel />
+ <PointSymbolization2D>
+ <Mark>
+ <Unit>Points</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ <SizeX>10</SizeX>
+ <SizeY>10</SizeY>
+ <Rotation>0</Rotation>
+ <Shape>Square</Shape>
+ <Fill>
+ <FillPattern>Solid</FillPattern>
+ <ForegroundColor>ffffffff</ForegroundColor>
+ <BackgroundColor>ffffffff</BackgroundColor>
+ </Fill>
+ <Edge>
+ <LineStyle>Solid</LineStyle>
+ <Thickness>1</Thickness>
+ <Color>ff000000</Color>
+ <Unit>Points</Unit>
+ <SizeContext>MappingUnits</SizeContext>
+ </Edge>
+ </Mark>
+ </PointSymbolization2D>
+ </PointRule>
+ </PointTypeStyle>
+ <LineTypeStyle>
+ <LineRule>
+ <LegendLabel />
+ <LineSymbolization2D>
+ <LineStyle>Rail</LineStyle>
+ <Thickness>0.0</Thickness>
+ <Color>FFFF0000</Color>
+ <Unit>Centimeters</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ </LineSymbolization2D>
+ </LineRule>
+ </LineTypeStyle>
+ <AreaTypeStyle>
+ <AreaRule>
+ <LegendLabel />
+ <AreaSymbolization2D>
+ <Fill>
+ <FillPattern>Solid</FillPattern>
+ <ForegroundColor>ffffffff</ForegroundColor>
+ <BackgroundColor>ffffffff</BackgroundColor>
+ </Fill>
+ <Stroke>
+ <LineStyle>Solid</LineStyle>
+ <Thickness>1</Thickness>
+ <Color>ff000000</Color>
+ <Unit>Points</Unit>
+ <SizeContext>MappingUnits</SizeContext>
+ </Stroke>
+ </AreaSymbolization2D>
+ </AreaRule>
+ </AreaTypeStyle>
+ </VectorScaleRange>
+ </VectorLayerDefinition>
+</LayerDefinition>
Added: branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTSSingleCTS.ldf
===================================================================
--- branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTSSingleCTS.ldf (rev 0)
+++ branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTSSingleCTS.ldf 2013-11-22 03:24:32 UTC (rev 7912)
@@ -0,0 +1,150 @@
+<?xml version="1.0"?>
+<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.2.0" xsi:noNamespaceSchemaLocation="LayerDefinition-1.2.0.xsd">
+ <VectorLayerDefinition>
+ <ResourceId>Library://UnitTests/Data/Rail.FeatureSource</ResourceId>
+ <FeatureName>SHP_Schema:Rail</FeatureName>
+ <FeatureNameType>FeatureClass</FeatureNameType>
+ <Geometry>SHPGEOM</Geometry>
+ <VectorScaleRange>
+ <PointTypeStyle>
+ <DisplayAsText>false</DisplayAsText>
+ <AllowOverpost>false</AllowOverpost>
+ <PointRule>
+ <LegendLabel />
+ <PointSymbolization2D>
+ <Mark>
+ <Unit>Points</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ <SizeX>10</SizeX>
+ <SizeY>10</SizeY>
+ <Rotation>0</Rotation>
+ <Shape>Square</Shape>
+ <Fill>
+ <FillPattern>Solid</FillPattern>
+ <ForegroundColor>ffffffff</ForegroundColor>
+ <BackgroundColor>ffffffff</BackgroundColor>
+ </Fill>
+ <Edge>
+ <LineStyle>Solid</LineStyle>
+ <Thickness>1</Thickness>
+ <Color>ff000000</Color>
+ <Unit>Points</Unit>
+ <SizeContext>MappingUnits</SizeContext>
+ </Edge>
+ </Mark>
+ </PointSymbolization2D>
+ </PointRule>
+ </PointTypeStyle>
+ <LineTypeStyle>
+ <LineRule>
+ <LegendLabel />
+ <LineSymbolization2D>
+ <LineStyle>Rail</LineStyle>
+ <Thickness>0.0</Thickness>
+ <Color>FFFF0000</Color>
+ <Unit>Centimeters</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ </LineSymbolization2D>
+ </LineRule>
+ </LineTypeStyle>
+ <AreaTypeStyle>
+ <AreaRule>
+ <LegendLabel />
+ <AreaSymbolization2D>
+ <Fill>
+ <FillPattern>Solid</FillPattern>
+ <ForegroundColor>ffffffff</ForegroundColor>
+ <BackgroundColor>ffffffff</BackgroundColor>
+ </Fill>
+ <Stroke>
+ <LineStyle>Solid</LineStyle>
+ <Thickness>1</Thickness>
+ <Color>ff000000</Color>
+ <Unit>Points</Unit>
+ <SizeContext>MappingUnits</SizeContext>
+ </Stroke>
+ </AreaSymbolization2D>
+ </AreaRule>
+ </AreaTypeStyle>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Square</Name>
+ <Description>Default Point Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M -1.0,-1.0 L 1.0,-1.0 L 1.0,1.0 L -1.0,1.0 L -1.0,-1.0</Geometry>
+ <FillColor>%FILLCOLOR%</FillColor>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ </Path>
+ </Graphics>
+ <PointUsage>
+ <Angle>%ROTATION%</Angle>
+ </PointUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>FILLCOLOR</Identifier>
+ <DefaultValue>0xffffffff</DefaultValue>
+ <DisplayName>&Fill Color</DisplayName>
+ <Description>Fill Color</Description>
+ <DataType>FillColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>ROTATION</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>&Rotation</DisplayName>
+ <Description>Rotation</Description>
+ <DataType>Angle</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+ <ParameterValue>0xffffffff</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>ROTATION</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <AddToExclusionRegion>true</AddToExclusionRegion>
+ <UsageContext>Point</UsageContext>
+ <GeometryContext>Point</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ </VectorScaleRange>
+ </VectorLayerDefinition>
+</LayerDefinition>
Added: branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTSWithTheme.ldf
===================================================================
--- branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTSWithTheme.ldf (rev 0)
+++ branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_MultiFTSWithTheme.ldf 2013-11-22 03:24:32 UTC (rev 7912)
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.2.0" xsi:noNamespaceSchemaLocation="LayerDefinition-1.2.0.xsd">
+ <VectorLayerDefinition>
+ <ResourceId>Library://UnitTests/Data/Rail.FeatureSource</ResourceId>
+ <FeatureName>SHP_Schema:Rail</FeatureName>
+ <FeatureNameType>FeatureClass</FeatureNameType>
+ <Geometry>SHPGEOM</Geometry>
+ <VectorScaleRange>
+ <PointTypeStyle>
+ <DisplayAsText>false</DisplayAsText>
+ <AllowOverpost>false</AllowOverpost>
+ <PointRule>
+ <LegendLabel />
+ <PointSymbolization2D>
+ <Mark>
+ <Unit>Points</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ <SizeX>10</SizeX>
+ <SizeY>10</SizeY>
+ <Rotation>0</Rotation>
+ <Shape>Square</Shape>
+ <Fill>
+ <FillPattern>Solid</FillPattern>
+ <ForegroundColor>ffffffff</ForegroundColor>
+ <BackgroundColor>ffffffff</BackgroundColor>
+ </Fill>
+ <Edge>
+ <LineStyle>Solid</LineStyle>
+ <Thickness>1</Thickness>
+ <Color>ff000000</Color>
+ <Unit>Points</Unit>
+ <SizeContext>MappingUnits</SizeContext>
+ </Edge>
+ </Mark>
+ </PointSymbolization2D>
+ </PointRule>
+ </PointTypeStyle>
+ <LineTypeStyle>
+ <LineRule>
+ <LegendLabel>Single Track</LegendLabel>
+ <Filter>Mod(Autogenerated_SDF_ID, 2) = 0</Filter>
+ <LineSymbolization2D>
+ <LineStyle>Rail</LineStyle>
+ <Thickness>0.0</Thickness>
+ <Color>FFFF0000</Color>
+ <Unit>Centimeters</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ </LineSymbolization2D>
+ </LineRule>
+ <LineRule>
+ <LegendLabel>Dual Track</LegendLabel>
+ <Filter>Mod(Autogenerated_SDF_ID, 2) = 1</Filter>
+ <LineSymbolization2D>
+ <LineStyle>Rail</LineStyle>
+ <Thickness>0.0</Thickness>
+ <Color>FF008000</Color>
+ <Unit>Centimeters</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ </LineSymbolization2D>
+ </LineRule>
+ <LineRule>
+ <LegendLabel>Other</LegendLabel>
+ <LineSymbolization2D>
+ <LineStyle>Rail</LineStyle>
+ <Thickness>0.0</Thickness>
+ <Color>FF000000</Color>
+ <Unit>Centimeters</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ </LineSymbolization2D>
+ </LineRule>
+ </LineTypeStyle>
+ <AreaTypeStyle>
+ <AreaRule>
+ <LegendLabel />
+ <AreaSymbolization2D>
+ <Fill>
+ <FillPattern>Solid</FillPattern>
+ <ForegroundColor>ffffffff</ForegroundColor>
+ <BackgroundColor>ffffffff</BackgroundColor>
+ </Fill>
+ <Stroke>
+ <LineStyle>Solid</LineStyle>
+ <Thickness>1</Thickness>
+ <Color>ff000000</Color>
+ <Unit>Points</Unit>
+ <SizeContext>MappingUnits</SizeContext>
+ </Stroke>
+ </AreaSymbolization2D>
+ </AreaRule>
+ </AreaTypeStyle>
+ </VectorScaleRange>
+ </VectorLayerDefinition>
+</LayerDefinition>
Added: branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_SingleFTSMultiCTS.ldf
===================================================================
--- branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_SingleFTSMultiCTS.ldf (rev 0)
+++ branches/2.5/MgDev/UnitTest/TestData/MappingService/UT_SingleFTSMultiCTS.ldf 2013-11-22 03:24:32 UTC (rev 7912)
@@ -0,0 +1,243 @@
+<?xml version="1.0"?>
+<LayerDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.4.0" xsi:noNamespaceSchemaLocation="LayerDefinition-2.4.0.xsd">
+ <VectorLayerDefinition>
+ <ResourceId>Library://UnitTests/Data/Rail.FeatureSource</ResourceId>
+ <Watermarks/>
+ <FeatureName>SHP_Schema:Rail</FeatureName>
+ <FeatureNameType>FeatureClass</FeatureNameType>
+ <Geometry>SHPGEOM</Geometry>
+ <VectorScaleRange>
+ <LineTypeStyle>
+ <LineRule>
+ <LegendLabel />
+ <LineSymbolization2D>
+ <LineStyle>Rail</LineStyle>
+ <Thickness>0.0</Thickness>
+ <Color>FFFF0000</Color>
+ <Unit>Centimeters</Unit>
+ <SizeContext>DeviceUnits</SizeContext>
+ </LineSymbolization2D>
+ </LineRule>
+ </LineTypeStyle>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Square</Name>
+ <Description>Default Point Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M -1.0,-1.0 L 1.0,-1.0 L 1.0,1.0 L -1.0,1.0 L -1.0,-1.0</Geometry>
+ <FillColor>%FILLCOLOR%</FillColor>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ </Path>
+ </Graphics>
+ <PointUsage>
+ <Angle>%ROTATION%</Angle>
+ </PointUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>FILLCOLOR</Identifier>
+ <DefaultValue>0xffffffff</DefaultValue>
+ <DisplayName>&Fill Color</DisplayName>
+ <Description>Fill Color</Description>
+ <DataType>FillColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>ROTATION</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>&Rotation</DisplayName>
+ <Description>Rotation</Description>
+ <DataType>Angle</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+ <ParameterValue>0xffffffff</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Square</SymbolName>
+ <ParameterIdentifier>ROTATION</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <AddToExclusionRegion>true</AddToExclusionRegion>
+ <UsageContext>Point</UsageContext>
+ <GeometryContext>Point</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Line</Name>
+ <Description>Default Line Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 L 1.0,0.0</Geometry>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ <LineWeightScalable>false</LineWeightScalable>
+ </Path>
+ </Graphics>
+ <LineUsage>
+ <Repeat>1.0</Repeat>
+ </LineUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <UsageContext>Line</UsageContext>
+ <GeometryContext>LineString</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ <CompositeTypeStyle>
+ <CompositeRule>
+ <LegendLabel></LegendLabel>
+ <CompositeSymbolization>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Fill</Name>
+ <Description>Default Area Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 h 100.0 v 100.0 h -100.0 z</Geometry>
+ <FillColor>%FILLCOLOR%</FillColor>
+ </Path>
+ </Graphics>
+ <AreaUsage>
+ <RepeatX>100.0</RepeatX>
+ <RepeatY>100.0</RepeatY>
+ </AreaUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>FILLCOLOR</Identifier>
+ <DefaultValue>0xffbfbfbf</DefaultValue>
+ <DisplayName>&Fill Color</DisplayName>
+ <Description>Fill Color</Description>
+ <DataType>FillColor</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Fill</SymbolName>
+ <ParameterIdentifier>FILLCOLOR</ParameterIdentifier>
+ <ParameterValue>0xffbfbfbf</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <GeometryContext>Polygon</GeometryContext>
+ </SymbolInstance>
+ <SymbolInstance>
+ <SimpleSymbolDefinition>
+ <Name>Solid Line</Name>
+ <Description>Default Line Symbol</Description>
+ <Graphics>
+ <Path>
+ <Geometry>M 0.0,0.0 L 1.0,0.0</Geometry>
+ <LineColor>%LINECOLOR%</LineColor>
+ <LineWeight>%LINEWEIGHT%</LineWeight>
+ <LineWeightScalable>false</LineWeightScalable>
+ </Path>
+ </Graphics>
+ <LineUsage>
+ <Repeat>1.0</Repeat>
+ </LineUsage>
+ <ParameterDefinition>
+ <Parameter>
+ <Identifier>LINECOLOR</Identifier>
+ <DefaultValue>0xff000000</DefaultValue>
+ <DisplayName>Line &Color</DisplayName>
+ <Description>Line Color</Description>
+ <DataType>LineColor</DataType>
+ </Parameter>
+ <Parameter>
+ <Identifier>LINEWEIGHT</Identifier>
+ <DefaultValue>0.0</DefaultValue>
+ <DisplayName>Line &Thickness</DisplayName>
+ <Description>Line Thickness</Description>
+ <DataType>LineWeight</DataType>
+ </Parameter>
+ </ParameterDefinition>
+ </SimpleSymbolDefinition>
+ <ParameterOverrides>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINECOLOR</ParameterIdentifier>
+ <ParameterValue>0xff000000</ParameterValue>
+ </Override>
+ <Override>
+ <SymbolName>Solid Line</SymbolName>
+ <ParameterIdentifier>LINEWEIGHT</ParameterIdentifier>
+ <ParameterValue>0.0</ParameterValue>
+ </Override>
+ </ParameterOverrides>
+ <GeometryContext>Polygon</GeometryContext>
+ </SymbolInstance>
+ </CompositeSymbolization>
+ </CompositeRule>
+ </CompositeTypeStyle>
+ </VectorScaleRange>
+ </VectorLayerDefinition>
+</LayerDefinition>
More information about the mapguide-commits
mailing list