[mapguide-commits] r9540 - in sandbox/jng/tiling_v3: Common/MapGuideCommon/Resources Common/MapGuideCommon/Services Server/src/Services/Rendering Server/src/Services/Tile Server/src/UnitTesting
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Fri Jun 7 07:19:52 PDT 2019
Author: jng
Date: 2019-06-07 07:19:52 -0700 (Fri, 07 Jun 2019)
New Revision: 9540
Modified:
sandbox/jng/tiling_v3/Common/MapGuideCommon/Resources/mapguide_en.res
sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/ProxyRenderingService.cpp
sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/ProxyRenderingService.h
sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/RenderingDefs.h
sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/RenderingService.h
sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/TileDefs.h
sandbox/jng/tiling_v3/Server/src/Services/Rendering/OpRenderMetatileXYZ.cpp
sandbox/jng/tiling_v3/Server/src/Services/Rendering/OpRenderTileXYZ.cpp
sandbox/jng/tiling_v3/Server/src/Services/Rendering/RenderingOperationFactory.cpp
sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingService.cpp
sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingService.h
sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp
sandbox/jng/tiling_v3/Server/src/Services/Tile/ServerTileService.cpp
sandbox/jng/tiling_v3/Server/src/Services/Tile/ServerTileService.h
sandbox/jng/tiling_v3/Server/src/Services/Tile/TileCacheXYZProvider.cpp
sandbox/jng/tiling_v3/Server/src/Services/Tile/TileCacheXYZProvider.h
sandbox/jng/tiling_v3/Server/src/UnitTesting/TestRenderingService.cpp
sandbox/jng/tiling_v3/Server/src/UnitTesting/TestRenderingService.h
sandbox/jng/tiling_v3/Server/src/UnitTesting/TestTileService.cpp
Log:
Implement support for "retina" tiles. This is available for the XYZ provider through a new RetinaScale tile set parameter.
How retina tiles work here is the same as it does in mapguide-rest. If specified and > 1, a tile of (256 * retina_scale) x (256 * retina_scale) is rendered instead.
This support also extends to XYZ meta-tiles.
In the process, a few loose ends were tied up from the round 2 work:
- Only meta-tile if meta-tile factor > 1 *and* tile format is image-based
- Add missing wiring for RenderMetatileXYZ proxy service method.
The existing RenderMetatileXYZ unit tests have been extended to test at various retina scales. Since these tests call RenderTileXYZ to produce a visual baseline, we get a 2-for-1 deal on verification.
Modified: sandbox/jng/tiling_v3/Common/MapGuideCommon/Resources/mapguide_en.res
===================================================================
--- sandbox/jng/tiling_v3/Common/MapGuideCommon/Resources/mapguide_en.res 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Common/MapGuideCommon/Resources/mapguide_en.res 2019-06-07 14:19:52 UTC (rev 9540)
@@ -452,6 +452,7 @@
MgTileProvider_Common_Property_TileExtentOffset_LocalizedName = Tile Extent Offset
MgTileProvider_Common_Property_MetaTileFactor_LocalizedName = Meta-tiling factor
MgTileProvider_Common_Property_MetaTileLockMethod_LocalizedName = Meta-tiling lock method
+MgTileProvider_XYZ_Property_RetinaScale_LocalizedName = Scaling factor for Retina Tiles
# *****************************************************************************
Modified: sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/ProxyRenderingService.cpp
===================================================================
--- sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/ProxyRenderingService.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/ProxyRenderingService.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -234,15 +234,16 @@
INT32 z,
INT32 dpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset)
+ double tileExtentOffset,
+ INT32 retinaScale)
{
MgCommand cmd;
- cmd.ExecuteCommand(m_connProp, // Connection
+ cmd.ExecuteCommand(m_connProp, // Connection
MgCommand::knObject, // Return type expected
MgRenderingServiceOpId::RenderTileXYZ2, // Command Code
- 8, // No of arguments
+ 9, // No of arguments
Rendering_Service, // Service Id
- BUILD_VERSION(4,0,0), // Operation version
+ BUILD_VERSION(4,0,0), // Operation version
MgCommand::knObject, map, // Argument#1
MgCommand::knString, &baseMapLayerGroupName, // Argument#2
MgCommand::knInt32, x, // Argument#3
@@ -251,6 +252,7 @@
MgCommand::knInt32, dpi, // Argument#6
MgCommand::knString, &tileImageFormat, // Argument#7
MgCommand::knDouble, tileExtentOffset, // Argument#8
+ MgCommand::knInt32, retinaScale, // Argument#9
MgCommand::knNone); // End of arguments
SetWarning(cmd.GetWarningObject());
@@ -1379,15 +1381,16 @@
INT32 dpi,
CREFSTRING tileImageFormat,
double tileExtentOffset,
- INT32 metaTilingFactor)
+ INT32 metaTilingFactor,
+ INT32 retinaScale)
{
MgCommand cmd;
cmd.ExecuteCommand(m_connProp, // Connection
MgCommand::knObject, // Return type expected
- MgRenderingServiceOpId::RenderTileXYZ2, // Command Code
- 9, // No of arguments
+ MgRenderingServiceOpId::RenderMetatileXYZ, // Command Code
+ 10, // No of arguments
Rendering_Service, // Service Id
- BUILD_VERSION(4,0,0), // Operation version
+ BUILD_VERSION(4,0,0), // Operation version
MgCommand::knObject, map, // Argument#1
MgCommand::knString, &baseMapLayerGroupName, // Argument#2
MgCommand::knInt32, x, // Argument#3
@@ -1397,6 +1400,7 @@
MgCommand::knString, &tileImageFormat, // Argument#7
MgCommand::knDouble, tileExtentOffset, // Argument#8
MgCommand::knInt32, metaTilingFactor, // Argument#9
+ MgCommand::knInt32, retinaScale, // Argument#10
MgCommand::knNone); // End of arguments
SetWarning(cmd.GetWarningObject());
Modified: sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/ProxyRenderingService.h
===================================================================
--- sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/ProxyRenderingService.h 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/ProxyRenderingService.h 2019-06-07 14:19:52 UTC (rev 9540)
@@ -263,6 +263,8 @@
/// Specifies the ratio by which the tile to be rendered should be "buffered out". The tile will be rendered at the specified width
/// multiplied by the given ration, which will be cropped back to the original requested size after rendering. This is to improve
/// label placement on rendered tiles by giving extra "breathing space" to label placement algorithms.
+ /// \param retinaScale
+ /// The scaling factor to apply for "retina" tiles
///
/// \return
/// A byte reader containing the rendered tile image.
@@ -276,7 +278,8 @@
INT32 z,
INT32 dpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset);
+ double tileExtentOffset,
+ INT32 retinaScale);
/////////////////////////////////////////////////////////////////
/// \brief
@@ -1206,6 +1209,9 @@
/// The meta-tiling factor. If less than or equal to 1, no meta-tiling is done and the returned meta-tile can be extracted
/// as the orignally requested tile image. If greater than 1, a tile that is m times bigger than the requested tile is rendered
/// (where m is the specified tiling factor) and the raw image frame buffer of this meta-tile is returned instead.
+ /// \param retinaScale
+ /// Input
+ /// The scaling factor to apply for "retina" tiles
///
/// \return
/// A meta-tile with sufficient information for the consumer to properly sub-divide this back into sub-tiles of the
@@ -1221,7 +1227,8 @@
INT32 dpi,
CREFSTRING tileImageFormat,
double tileExtentOffset,
- INT32 metaTilingFactor);
+ INT32 metaTilingFactor,
+ INT32 retinaScale);
/////////////////////////////////////////////////////////////////
/// \brief
Modified: sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/RenderingDefs.h
===================================================================
--- sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/RenderingDefs.h 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/RenderingDefs.h 2019-06-07 14:19:52 UTC (rev 9540)
@@ -49,6 +49,7 @@
static const int QueryFeatureProperties3 = 0x1111E915;
static const int RenderMetatile = 0x1111E916;
static const int RenderTileFromMetaTile = 0x1111E917;
+ static const int RenderMetatileXYZ = 0x1111E918;
};
/// \endcond
Modified: sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/RenderingService.h
===================================================================
--- sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/RenderingService.h 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/RenderingService.h 2019-06-07 14:19:52 UTC (rev 9540)
@@ -278,6 +278,8 @@
/// Specifies the ratio by which the tile to be rendered should be "buffered out". The tile will be rendered at the specified width
/// multiplied by the given ration, which will be cropped back to the original requested size after rendering. This is to improve
/// label placement on rendered tiles by giving extra "breathing space" to label placement algorithms.
+ /// \param retinaScale
+ /// The scaling factor to apply for "retina" tiles
///
/// \return
/// A byte reader containing the rendered tile image.
@@ -291,7 +293,8 @@
INT32 z,
INT32 dpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset) = 0;
+ double tileExtentOffset,
+ INT32 retinaScale) = 0;
/////////////////////////////////////////////////////////////////
/// \brief
@@ -1221,6 +1224,9 @@
/// The meta-tiling factor. If less than or equal to 1, no meta-tiling is done and the returned meta-tile can be extracted
/// as the orignally requested tile image. If greater than 1, a tile that is m times bigger than the requested tile is rendered
/// (where m is the specified tiling factor) and the raw image frame buffer of this meta-tile is returned instead.
+ /// \param retinaScale
+ /// Input
+ /// The scaling factor to apply for "retina" tiles
///
/// \return
/// A meta-tile with sufficient information for the consumer to properly sub-divide this back into sub-tiles of the
@@ -1236,7 +1242,8 @@
INT32 dpi,
CREFSTRING tileImageFormat,
double tileExtentOffset,
- INT32 metaTilingFactor) = 0;
+ INT32 metaTilingFactor,
+ INT32 retinaScale) = 0;
/////////////////////////////////////////////////////////////////
Modified: sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/TileDefs.h
===================================================================
--- sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/TileDefs.h 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Common/MapGuideCommon/Services/TileDefs.h 2019-06-07 14:19:52 UTC (rev 9540)
@@ -69,6 +69,7 @@
#define MG_TILE_PROVIDER_COMMON_PARAM_TILEEXTENTOFFSET L"TileExtentOffset"
#define MG_TILE_PROVIDER_COMMON_PARAM_METATILEFACTOR L"MetaTileFactor"
#define MG_TILE_PROVIDER_COMMON_PARAM_METATILELOCKMETHOD L"MetaTileLockMethod"
+#define MG_TILE_PROVIDER_XYZ_PARAM_RETINASCALE L"RetinaScale"
#define MG_METATILE_MAX_FACTOR 8
Modified: sandbox/jng/tiling_v3/Server/src/Services/Rendering/OpRenderMetatileXYZ.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Rendering/OpRenderMetatileXYZ.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Rendering/OpRenderMetatileXYZ.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -38,7 +38,7 @@
ACE_ASSERT(m_stream != NULL);
- if (8 == m_packet.m_NumArguments)
+ if (10 == m_packet.m_NumArguments)
{
Ptr<MgMap> map = (MgMap*)m_stream->GetObject();
Ptr<MgResourceIdentifier> resource = map->GetResourceId();
@@ -68,6 +68,9 @@
INT32 metaTilingFactor = 0;
m_stream->GetInt32(metaTilingFactor);
+ INT32 retinaScale = 1;
+ m_stream->GetInt32(retinaScale);
+
BeginExecution();
MG_LOG_OPERATION_MESSAGE_PARAMETERS_START();
@@ -88,11 +91,13 @@
MG_LOG_OPERATION_MESSAGE_ADD_DOUBLE(tileExtentOffset);
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR();
MG_LOG_OPERATION_MESSAGE_ADD_INT32(metaTilingFactor);
+ MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR();
+ MG_LOG_OPERATION_MESSAGE_ADD_INT32(retinaScale);
MG_LOG_OPERATION_MESSAGE_PARAMETERS_END();
Validate();
- Ptr<MgMetatile> metaTile = m_service->RenderMetatileXYZ(map, baseMapLayerGroupName, x, y, z, tileDpi, tileImageFormat, tileExtentOffset, metaTilingFactor);
+ Ptr<MgMetatile> metaTile = m_service->RenderMetatileXYZ(map, baseMapLayerGroupName, x, y, z, tileDpi, tileImageFormat, tileExtentOffset, metaTilingFactor, retinaScale);
EndExecution(metaTile);
}
Modified: sandbox/jng/tiling_v3/Server/src/Services/Rendering/OpRenderTileXYZ.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Rendering/OpRenderTileXYZ.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Rendering/OpRenderTileXYZ.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -146,7 +146,7 @@
EndExecution(byteReader);
}
- else if (8 == m_packet.m_NumArguments)
+ else if (9 == m_packet.m_NumArguments)
{
Ptr<MgMap> map = (MgMap*)m_stream->GetObject();
Ptr<MgResourceIdentifier> resource = map->GetResourceId();
@@ -173,6 +173,9 @@
double tileExtentOffset = 0.0;
m_stream->GetDouble(tileExtentOffset);
+ INT32 retinaScale = 1;
+ m_stream->GetInt32(retinaScale);
+
BeginExecution();
MG_LOG_OPERATION_MESSAGE_PARAMETERS_START();
@@ -191,11 +194,13 @@
MG_LOG_OPERATION_MESSAGE_ADD_STRING(tileImageFormat.c_str());
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR();
MG_LOG_OPERATION_MESSAGE_ADD_DOUBLE(tileExtentOffset);
+ MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR();
+ MG_LOG_OPERATION_MESSAGE_ADD_INT32(retinaScale);
MG_LOG_OPERATION_MESSAGE_PARAMETERS_END();
Validate();
- Ptr<MgByteReader> byteReader = m_service->RenderTileXYZ(map, baseMapLayerGroupName, x, y, z, tileDpi, tileImageFormat, tileExtentOffset);
+ Ptr<MgByteReader> byteReader = m_service->RenderTileXYZ(map, baseMapLayerGroupName, x, y, z, tileDpi, tileImageFormat, tileExtentOffset, retinaScale);
EndExecution(byteReader);
}
Modified: sandbox/jng/tiling_v3/Server/src/Services/Rendering/RenderingOperationFactory.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Rendering/RenderingOperationFactory.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Rendering/RenderingOperationFactory.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -101,6 +101,7 @@
switch (VERSION_NO_PHASE(operationVersion))
{
case VERSION_SUPPORTED(3,0):
+ case VERSION_SUPPORTED(4,0):
handler.reset(new MgOpRenderTileXYZ());
break;
default:
@@ -119,6 +120,17 @@
L"MgRenderingOperationFactory.GetOperation", __LINE__, __WFILE__, NULL, L"", NULL);
}
break;
+ case MgRenderingServiceOpId::RenderMetatileXYZ:
+ switch (VERSION_NO_PHASE(operationVersion))
+ {
+ case VERSION_SUPPORTED(4,0):
+ handler.reset(new MgOpRenderMetatileXYZ());
+ break;
+ default:
+ throw new MgInvalidOperationVersionException(
+ L"MgRenderingOperationFactory.GetOperation", __LINE__, __WFILE__, NULL, L"", NULL);
+ }
+ break;
case MgRenderingServiceOpId::RenderTileFromMetaTile:
switch (VERSION_NO_PHASE(operationVersion))
{
Modified: sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingService.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingService.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -274,7 +274,7 @@
MG_TRY()
- ret = RenderTileXYZ(map, baseMapLayerGroupName, x, y, z, dpi, tileImageFormat, tileExtentOffset);
+ ret = RenderTileXYZ(map, baseMapLayerGroupName, x, y, z, dpi, tileImageFormat, tileExtentOffset, 1 /* retinaScale */);
MG_CATCH_AND_THROW(L"MgServerRenderingService.RenderTileXYZ")
@@ -2251,7 +2251,8 @@
INT32 z,
INT32 dpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset)
+ double tileExtentOffset,
+ INT32 retinaScale)
{
Ptr<MgByteReader> ret;
@@ -2258,10 +2259,10 @@
MG_TRY()
INT32 metaTilingFactor = 0;
- Ptr<MgMetatile> metaTile = RenderMetatileXYZ(map, baseMapLayerGroupName, x, y, z, dpi, tileImageFormat, tileExtentOffset, metaTilingFactor);
+ Ptr<MgMetatile> metaTile = RenderMetatileXYZ(map, baseMapLayerGroupName, x, y, z, dpi, tileImageFormat, tileExtentOffset, metaTilingFactor, retinaScale);
- _ASSERT(metaTile->GetRequestedWidth() == XYZ_TILE_WIDTH);
- _ASSERT(metaTile->GetRequestedHeight() == XYZ_TILE_HEIGHT);
+ _ASSERT(metaTile->GetRequestedWidth() == (XYZ_TILE_WIDTH * std::max(retinaScale, 1)));
+ _ASSERT(metaTile->GetRequestedHeight() == (XYZ_TILE_HEIGHT * std::max(retinaScale, 1)));
_ASSERT(metaTile->GetMetaTilingFactor() <= 1);
ret = metaTile->GetImage();
@@ -2393,7 +2394,8 @@
INT32 dpi,
CREFSTRING tileImageFormat,
double tileExtentOffset,
- INT32 metaTilingFactor)
+ INT32 metaTilingFactor,
+ INT32 retinaScale)
{
Ptr<MgMetatile> ret;
@@ -2441,8 +2443,11 @@
StylizationUtil::ParseColor(map->GetBackgroundColor(), bgColor);
bgColor.alpha() = 0;
- INT32 width = XYZ_TILE_WIDTH * std::max(metaTilingFactor, 1);
- INT32 height = XYZ_TILE_HEIGHT * std::max(metaTilingFactor, 1);
+ INT32 xyzWidth = (XYZ_TILE_WIDTH * std::max(1, retinaScale));
+ INT32 xyzHeight = (XYZ_TILE_HEIGHT * std::max(1, retinaScale));
+
+ INT32 width = xyzWidth * std::max(metaTilingFactor, 1);
+ INT32 height = xyzHeight * std::max(metaTilingFactor, 1);
INT32 drawWidth = width;
INT32 drawHeight = height;
double scale = 0.0;
@@ -2480,7 +2485,7 @@
tile = RenderMapInternal(map, NULL, roLayers, dr.get(), drawWidth, drawHeight, drawWidth, drawHeight, format, scale, extent, true, true, false, NULL);
else
tile = RenderMapInternal(map, NULL, roLayers, dr.get(), drawWidth, drawHeight, width, height, format, scale, extent, true, true, false, NULL);
- ret = new MgMetatile(tile, drawWidth, drawHeight, XYZ_TILE_WIDTH, XYZ_TILE_HEIGHT, tileImageFormat, metaTilingFactor);
+ ret = new MgMetatile(tile, drawWidth, drawHeight, xyzWidth, xyzHeight, tileImageFormat, metaTilingFactor);
// restore the base group's visibility
baseGroup->SetVisible(groupVisible);
Modified: sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingService.h
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingService.h 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingService.h 2019-06-07 14:19:52 UTC (rev 9540)
@@ -90,7 +90,8 @@
INT32 z,
INT32 dpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset);
+ double tileExtentOffset,
+ INT32 retinaScale);
virtual MgByteReader* RenderTileUTFGrid(MgMap* map,
CREFSTRING baseMapLayerGroupName,
@@ -284,7 +285,8 @@
INT32 dpi,
CREFSTRING tileImageFormat,
double tileExtentOffset,
- INT32 metaTilingFactor);
+ INT32 metaTilingFactor,
+ INT32 retinaScale);
virtual MgByteReader* RenderTileFromMetaTile(MgMap* map, MgMetatile* metaTile, CREFSTRING rendererName, INT32 subTileX, INT32 subTileY);
Modified: sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -24,6 +24,7 @@
#include "OpRenderMap.cpp"
#include "OpRenderMapLegend.cpp"
#include "OpRenderMetatile.cpp"
+#include "OpRenderMetatileXYZ.cpp"
#include "OpRenderTileFromMetatile.cpp"
#include "OpRenderTile.cpp"
#include "OpRenderTileXYZ.cpp"
Modified: sandbox/jng/tiling_v3/Server/src/Services/Tile/ServerTileService.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Tile/ServerTileService.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Tile/ServerTileService.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -153,6 +153,93 @@
return ret;
}
+void MgServerTileService::WriteCommonTileProviderProperties(std::string& xml)
+{
+ //Property: TilePath
+ xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
+ xml.append("<Name>");
+ std::string mbTilePath;
+ MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEPATH, mbTilePath);
+ xml.append(mbTilePath);
+ xml.append("</Name>\n");
+ xml.append("<LocalizedName>");
+ std::string mbLocName;
+ STRING wLocName = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TilePath_LocalizedName");
+ MgUtil::WideCharToMultiByte(wLocName, mbLocName);
+ xml.append(mbLocName);
+ xml.append("</LocalizedName>\n");
+ xml.append("<DefaultValue>");
+ std::string mbDefaultTag;
+ MgUtil::WideCharToMultiByte(MgResourceTag::TileCachePath, mbDefaultTag);
+ xml.append(mbDefaultTag);
+ xml.append("</DefaultValue>\n");
+ xml.append("</ConnectionProperty>\n");
+
+ //Property: RenderOnly
+ xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"false\">\n");
+ xml.append("<Name>");
+ std::string mbRenderOnly;
+ MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_RENDERONLY, mbRenderOnly);
+ xml.append(mbRenderOnly);
+ xml.append("</Name>\n");
+ xml.append("<LocalizedName>");
+ std::string mbLocRenderOnly;
+ STRING wLocRenderOnly = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_RenderOnly_LocalizedName");
+ MgUtil::WideCharToMultiByte(wLocRenderOnly, mbLocRenderOnly);
+ xml.append(mbLocRenderOnly);
+ xml.append("</LocalizedName>\n");
+ xml.append("<DefaultValue>false</DefaultValue>\n");
+ xml.append("</ConnectionProperty>\n");
+
+ //Property: TileExtentOffset
+ xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
+ xml.append("<Name>");
+ std::string mbTileExtentOffset;
+ MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEEXTENTOFFSET, mbTileExtentOffset);
+ xml.append(mbTileExtentOffset);
+ xml.append("</Name>\n");
+ xml.append("<LocalizedName>");
+ std::string mbLocTileExtentOffset;
+ STRING wLocTileExtentOffset = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TileExtentOffset_LocalizedName");
+ MgUtil::WideCharToMultiByte(wLocTileExtentOffset, mbLocTileExtentOffset);
+ xml.append(mbLocTileExtentOffset);
+ xml.append("</LocalizedName>\n");
+ xml.append("<DefaultValue></DefaultValue>\n");
+ xml.append("</ConnectionProperty>\n");
+
+ //Property: MetaTileFactor
+ xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
+ xml.append("<Name>");
+ std::string mbMetaTileFactor;
+ MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILEFACTOR, mbMetaTileFactor);
+ xml.append(mbMetaTileFactor);
+ xml.append("</Name>\n");
+ xml.append("<LocalizedName>");
+ std::string mbLocMetaTileFactor;
+ STRING wLocMetaTileFactor = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileFactor_LocalizedName");
+ MgUtil::WideCharToMultiByte(wLocMetaTileFactor, mbLocMetaTileFactor);
+ xml.append(mbLocMetaTileFactor);
+ xml.append("</LocalizedName>\n");
+ xml.append("<DefaultValue></DefaultValue>\n");
+ xml.append("</ConnectionProperty>\n");
+
+ //Property: MetaTileLockMethod
+ xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
+ xml.append("<Name>");
+ std::string mbMetaTileLockMethod;
+ MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILELOCKMETHOD, mbMetaTileLockMethod);
+ xml.append(mbMetaTileLockMethod);
+ xml.append("</Name>\n");
+ xml.append("<LocalizedName>");
+ std::string mbLocMetaTileLockMethod;
+ STRING wLocMetaTileLockMethod = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileLockMethod_LocalizedName");
+ MgUtil::WideCharToMultiByte(wLocMetaTileLockMethod, mbLocMetaTileLockMethod);
+ xml.append(mbLocMetaTileLockMethod);
+ xml.append("</LocalizedName>\n");
+ xml.append("<DefaultValue></DefaultValue>\n");
+ xml.append("</ConnectionProperty>\n");
+}
+
MgByteReader* MgServerTileService::GetTileProviders()
{
Ptr<MgByteReader> ret;
@@ -186,27 +273,7 @@
xml.append(mbDescription);
xml.append("</Description>\n");
xml.append("<ConnectionProperties>\n");
-
- //Property: TilePath
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
- xml.append("<Name>");
- std::string mbTilePath;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEPATH, mbTilePath);
- xml.append(mbTilePath);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocName;
- STRING wLocName = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TilePath_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocName, mbLocName);
- xml.append(mbLocName);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue>");
- std::string mbDefaultTag;
- MgUtil::WideCharToMultiByte(MgResourceTag::TileCachePath, mbDefaultTag);
- xml.append(mbDefaultTag);
- xml.append("</DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
-
+
//Property: TileWidth
xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
xml.append("<Name>");
@@ -269,22 +336,6 @@
xml.append("</ConnectionProperty>\n");
- //Property: RenderOnly
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"false\">\n");
- xml.append("<Name>");
- std::string mbRenderOnly;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_RENDERONLY, mbRenderOnly);
- xml.append(mbRenderOnly);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocRenderOnly;
- STRING wLocRenderOnly = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_RenderOnly_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocRenderOnly, mbLocRenderOnly);
- xml.append(mbLocRenderOnly);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue>false</DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
-
//Property: CoordinateSystem
xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
xml.append("<Name>");
@@ -317,54 +368,8 @@
xml.append("<DefaultValue></DefaultValue>\n");
xml.append("</ConnectionProperty>\n");
- //Property: TileExtentOffset
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
- xml.append("<Name>");
- std::string mbTileExtentOffset;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEEXTENTOFFSET, mbTileExtentOffset);
- xml.append(mbTileExtentOffset);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocTileExtentOffset;
- STRING wLocTileExtentOffset = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TileExtentOffset_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocTileExtentOffset, mbLocTileExtentOffset);
- xml.append(mbLocTileExtentOffset);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue></DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
+ WriteCommonTileProviderProperties(xml);
- //Property: MetaTileFactor
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
- xml.append("<Name>");
- std::string mbMetaTileFactor;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILEFACTOR, mbMetaTileFactor);
- xml.append(mbMetaTileFactor);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocMetaTileFactor;
- STRING wLocMetaTileFactor = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileFactor_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocMetaTileFactor, mbLocMetaTileFactor);
- xml.append(mbLocMetaTileFactor);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue></DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
-
- //Property: MetaTileLockMethod
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
- xml.append("<Name>");
- std::string mbMetaTileLockMethod;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILELOCKMETHOD, mbMetaTileLockMethod);
- xml.append(mbMetaTileLockMethod);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocMetaTileLockMethod;
- STRING wLocMetaTileLockMethod = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileLockMethod_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocMetaTileLockMethod, mbLocMetaTileLockMethod);
- xml.append(mbLocMetaTileLockMethod);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue></DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
-
xml.append("</ConnectionProperties>\n");
xml.append("</TileProvider>\n");
}
@@ -390,26 +395,6 @@
xml.append(mbDescription);
xml.append("</Description>\n");
xml.append("<ConnectionProperties>\n");
-
- //Property: TilePath
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
- xml.append("<Name>");
- std::string mbTilePath;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEPATH, mbTilePath);
- xml.append(mbTilePath);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocName;
- STRING wLocName = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TilePath_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocName, mbLocName);
- xml.append(mbLocName);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue>");
- std::string mbDefaultTag;
- MgUtil::WideCharToMultiByte(MgResourceTag::TileCachePath, mbDefaultTag);
- xml.append(mbDefaultTag);
- xml.append("</DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
//Property: TileFormat
xml.append("<ConnectionProperty Enumerable=\"true\" Protected=\"false\" Required=\"true\">\n");
@@ -433,71 +418,24 @@
xml.append("<Value>UTFGRID</Value>");
xml.append("</ConnectionProperty>\n");
- //Property: RenderOnly
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"false\">\n");
- xml.append("<Name>");
- std::string mbRenderOnly;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_RENDERONLY, mbRenderOnly);
- xml.append(mbRenderOnly);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocRenderOnly;
- STRING wLocRenderOnly = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_RenderOnly_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocRenderOnly, mbLocRenderOnly);
- xml.append(mbLocRenderOnly);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue>false</DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
-
- //Property: TileExtentOffset
+ //Property: RetinaScale
xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
xml.append("<Name>");
- std::string mbTileExtentOffset;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_TILEEXTENTOFFSET, mbTileExtentOffset);
- xml.append(mbTileExtentOffset);
+ std::string mbRetinaScale;
+ MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_XYZ_PARAM_RETINASCALE, mbRetinaScale);
+ xml.append(mbRetinaScale);
xml.append("</Name>\n");
xml.append("<LocalizedName>");
- std::string mbLocTileExtentOffset;
- STRING wLocTileExtentOffset = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_TileExtentOffset_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocTileExtentOffset, mbLocTileExtentOffset);
- xml.append(mbLocTileExtentOffset);
+ std::string mbLocRetinaScale;
+ STRING wLocRetinaScale = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_XYZ_Property_RetinaScale_LocalizedName");
+ MgUtil::WideCharToMultiByte(wLocRetinaScale, mbLocRetinaScale);
+ xml.append(mbLocRetinaScale);
xml.append("</LocalizedName>\n");
xml.append("<DefaultValue></DefaultValue>\n");
xml.append("</ConnectionProperty>\n");
- //Property: MetaTileFactor
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
- xml.append("<Name>");
- std::string mbMetaTileFactor;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILEFACTOR, mbMetaTileFactor);
- xml.append(mbMetaTileFactor);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocMetaTileFactor;
- STRING wLocMetaTileFactor = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileFactor_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocMetaTileFactor, mbLocMetaTileFactor);
- xml.append(mbLocMetaTileFactor);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue></DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
+ WriteCommonTileProviderProperties(xml);
- //Property: MetaTileLockMethod
- xml.append("<ConnectionProperty Enumerable=\"false\" Protected=\"false\" Required=\"true\">\n");
- xml.append("<Name>");
- std::string mbMetaTileLockMethod;
- MgUtil::WideCharToMultiByte(MG_TILE_PROVIDER_COMMON_PARAM_METATILELOCKMETHOD, mbMetaTileLockMethod);
- xml.append(mbMetaTileLockMethod);
- xml.append("</Name>\n");
- xml.append("<LocalizedName>");
- std::string mbLocMetaTileLockMethod;
- STRING wLocMetaTileLockMethod = MgUtil::GetResourceMessage(MgResources::TileService, L"MgTileProvider_Common_Property_MetaTileLockMethod_LocalizedName");
- MgUtil::WideCharToMultiByte(wLocMetaTileLockMethod, mbLocMetaTileLockMethod);
- xml.append(mbLocMetaTileLockMethod);
- xml.append("</LocalizedName>\n");
- xml.append("<DefaultValue></DefaultValue>\n");
- xml.append("</ConnectionProperty>\n");
-
-
xml.append("</ConnectionProperties>\n");
xml.append("</TileProvider>\n");
}
@@ -668,6 +606,7 @@
bool bRenderOnly = false;
INT32 metaTileFactor = 0;
INT32 metaTileLockMethod = 0;
+ INT32 retinaScale = 1;
for (INT32 i = 0; i < parameters->GetCount(); i++)
{
MdfModel::NameStringPair* pair = parameters->GetAt(i);
@@ -699,6 +638,10 @@
{
metaTileLockMethod = MgUtil::StringToInt32(pair->GetValue());
}
+ else if (pair->GetName() == MG_TILE_PROVIDER_XYZ_PARAM_RETINASCALE)
+ {
+ retinaScale = MgUtil::StringToInt32(pair->GetValue());
+ }
}
//If we find the cache path substitution tag, replace it with the default path from the configuration
@@ -707,7 +650,7 @@
path = MgTileParameters::tileCachePath;
}
- cache = new MgTileCacheXYZProvider(tileSetId, path, format, bRenderOnly, tileExtentOffset, m_rendererName, metaTileFactor, metaTileLockMethod);
+ cache = new MgTileCacheXYZProvider(tileSetId, path, format, bRenderOnly, tileExtentOffset, m_rendererName, metaTileFactor, metaTileLockMethod, retinaScale);
}
else
{
Modified: sandbox/jng/tiling_v3/Server/src/Services/Tile/ServerTileService.h
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Tile/ServerTileService.h 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Tile/ServerTileService.h 2019-06-07 14:19:52 UTC (rev 9540)
@@ -76,6 +76,8 @@
void SetConnectionProperties(MgConnectionProperties* connProp);
private:
+ void WriteCommonTileProviderProperties(std::string& xml);
+
MgTileCache* GetTileCache(MgResourceIdentifier* resource);
MgTileCache* GetTileCache(MgResourceIdentifier* tileSetId, MdfModel::TileSetDefinition* tileset);
Modified: sandbox/jng/tiling_v3/Server/src/Services/Tile/TileCacheXYZProvider.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Tile/TileCacheXYZProvider.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Tile/TileCacheXYZProvider.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -27,7 +27,8 @@
double tileExtentOffset,
CREFSTRING rendererName,
INT32 metaTileFactor,
- INT32 metaTileLockMethod)
+ INT32 metaTileLockMethod,
+ INT32 retinaScale)
{
m_tilesetId = SAFE_ADDREF(tileSetId);
m_path = path;
@@ -37,6 +38,7 @@
m_rendererName = rendererName;
m_metaTileFactor = metaTileFactor;
m_metaTileLockMethod = metaTileLockMethod;
+ m_retinaScale = retinaScale;
}
MgTileCacheXYZProvider::~MgTileCacheXYZProvider()
@@ -44,15 +46,20 @@
}
+bool MgTileCacheXYZProvider::IsTileImageFormat()
+{
+ return m_format == L"UTFGRID";
+}
+
MgByteReader* MgTileCacheXYZProvider::GetTile(CREFSTRING baseMapLayerGroupName,
- INT32 tileColumn,
- INT32 tileRow,
- INT32 scaleIndex)
+ INT32 tileColumn,
+ INT32 tileRow,
+ INT32 scaleIndex)
{
Ptr<MgByteReader> ret;
MG_TRY()
- if (m_metaTileFactor > 1)
+ if (IsTileImageFormat() && m_metaTileFactor > 1)
ret = GetMetatileForResource(m_tilesetId, baseMapLayerGroupName, tileColumn, tileRow, scaleIndex);
else
ret = GetTileForResource(m_tilesetId, baseMapLayerGroupName, tileColumn, tileRow, scaleIndex);
@@ -86,7 +93,7 @@
else //Assume it must be image-based at this point
{
// generate the tile
- img = svcRendering->RenderTileXYZ(map, baseMapLayerGroupName, tileRow, tileColumn, scaleIndex, map->GetDisplayDpi(), m_format, m_tileExtentOffset);
+ img = svcRendering->RenderTileXYZ(map, baseMapLayerGroupName, tileRow, tileColumn, scaleIndex, map->GetDisplayDpi(), m_format, m_tileExtentOffset, m_retinaScale);
}
// cache the tile
if (!m_renderOnly)
@@ -409,9 +416,8 @@
serviceMan->RequestService(MgServiceType::RenderingService));
_ASSERT(NULL != svcRendering);
- //Ptr<MgByteReader> metaTileBitMap = GetTile(metaTileName, map, scaleIndex, baseMapLayerGroupName, metaTileColumn, metaTileRow);
INT32 tileDpi = map->GetDisplayDpi();
- Ptr<MgMetatile> metaTile = svcRendering->RenderMetatileXYZ(map, baseMapLayerGroupName, metaTileRow, metaTileColumn, scaleIndex, tileDpi, m_format, m_tileExtentOffset, m_metaTileFactor);
+ Ptr<MgMetatile> metaTile = svcRendering->RenderMetatileXYZ(map, baseMapLayerGroupName, metaTileRow, metaTileColumn, scaleIndex, tileDpi, m_format, m_tileExtentOffset, m_metaTileFactor, m_retinaScale);
#ifdef _DEBUG
Ptr<MgByteReader> mtContent = metaTile->GetImage();
INT32 metaTileLen = mtContent->GetLength();
Modified: sandbox/jng/tiling_v3/Server/src/Services/Tile/TileCacheXYZProvider.h
===================================================================
--- sandbox/jng/tiling_v3/Server/src/Services/Tile/TileCacheXYZProvider.h 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/Services/Tile/TileCacheXYZProvider.h 2019-06-07 14:19:52 UTC (rev 9540)
@@ -29,7 +29,9 @@
double tileExtentOffset,
CREFSTRING rendererName,
INT32 metaTileFactor,
- INT32 metaTileLockMethod);
+ INT32 metaTileLockMethod,
+ INT32 retinaScale);
+
virtual ~MgTileCacheXYZProvider();
virtual MgByteReader* GetTile(CREFSTRING baseMapLayerGroupName,
@@ -60,6 +62,8 @@
virtual STRING GetTileFileExtension();
private:
+ bool IsTileImageFormat();
+
// ---------------- Begin Metatile stuff --------------------- //
MgByteReader* GetMetatileForResource(MgResourceIdentifier* resource,
CREFSTRING baseMapLayerGroupName,
@@ -79,6 +83,7 @@
double m_tileExtentOffset;
INT32 m_metaTileFactor;
INT32 m_metaTileLockMethod;
+ INT32 m_retinaScale;
STRING m_rendererName;
};
Modified: sandbox/jng/tiling_v3/Server/src/UnitTesting/TestRenderingService.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/UnitTesting/TestRenderingService.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/UnitTesting/TestRenderingService.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -1760,21 +1760,30 @@
}
}
-void TestRenderingService::TestCase_RenderXYZMetatile(CREFSTRING imageFormat, CREFSTRING extension)
+void TestRenderingService::TestCase_RenderXYZMetatile(CREFSTRING imageFormat, CREFSTRING extension, INT32 retinaScale)
{
try
{
+ STRING retinaSuffix = L"";
+ if (retinaScale > 1)
+ {
+ retinaSuffix = L"@";
+ STRING sRetina;
+ MgUtil::Int32ToString(retinaScale, sRetina);
+ retinaSuffix += sRetina;
+ }
+
Ptr<MgMap> map = CreateTestTiledMap();
map->SetViewScale(12500.0);
- Ptr<MgByteReader> tile_16798_23891_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16798, 23891, 16, MgTileParameters::tileDPI, imageFormat);
- Ptr<MgByteReader> tile_16799_23891_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16799, 23891, 16, MgTileParameters::tileDPI, imageFormat);
- Ptr<MgByteReader> tile_16798_23892_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16798, 23892, 16, MgTileParameters::tileDPI, imageFormat);
- Ptr<MgByteReader> tile_16799_23892_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16799, 23892, 16, MgTileParameters::tileDPI, imageFormat);
+ Ptr<MgByteReader> tile_16798_23891_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16798, 23891, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, retinaScale);
+ Ptr<MgByteReader> tile_16799_23891_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16799, 23891, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, retinaScale);
+ Ptr<MgByteReader> tile_16798_23892_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16798, 23892, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, retinaScale);
+ Ptr<MgByteReader> tile_16799_23892_baseline = m_svcRendering->RenderTileXYZ(map, L"BaseLayers", 16799, 23892, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, retinaScale);
- tile_16798_23891_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23891_16_Baseline", imageFormat, extension));
- tile_16799_23891_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23891_16_Baseline", imageFormat, extension));
- tile_16798_23892_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23892_16_Baseline", imageFormat, extension));
- tile_16799_23892_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23892_16_Baseline", imageFormat, extension));
+ tile_16798_23891_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23891_16_Baseline" + retinaSuffix, imageFormat, extension));
+ tile_16799_23891_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23891_16_Baseline" + retinaSuffix, imageFormat, extension));
+ tile_16798_23892_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23892_16_Baseline" + retinaSuffix, imageFormat, extension));
+ tile_16799_23892_baseline->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23892_16_Baseline" + retinaSuffix, imageFormat, extension));
MgRenderingService* renderSvc = dynamic_cast<MgRenderingService*>(m_svcRendering.p);
CPPUNIT_ASSERT(NULL != renderSvc);
@@ -1781,7 +1790,7 @@
// Render a 2x2 metatile which should cover the same tiles as the baseline test.
INT32 metaTileFactor = 2;
- Ptr<MgMetatile> metaTile = renderSvc->RenderMetatileXYZ(map, L"BaseLayers", 16798, 23891, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, metaTileFactor);
+ Ptr<MgMetatile> metaTile = renderSvc->RenderMetatileXYZ(map, L"BaseLayers", 16798, 23891, 16, MgTileParameters::tileDPI, imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, metaTileFactor, retinaScale);
//metaTile->ToFile(L"../UnitTestFiles/RenderTileXYZ_Metatile at 16798_23891_16.png");
//CPPUNIT_ASSERT(metaTile->IsRewindable());
//metaTile->Rewind();
@@ -1791,10 +1800,10 @@
Ptr<MgByteReader> tile_16798_23892 = renderSvc->RenderTileFromMetaTile(map, metaTile, rendererName, 0, 1);
Ptr<MgByteReader> tile_16799_23892 = renderSvc->RenderTileFromMetaTile(map, metaTile, rendererName, 1, 1);
- tile_16798_23891->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23891_16_Metatiled", imageFormat, extension));
- tile_16799_23891->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23891_16_Metatiled", imageFormat, extension));
- tile_16798_23892->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23892_16_Metatiled", imageFormat, extension));
- tile_16799_23892->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23892_16_Metatiled", imageFormat, extension));
+ tile_16798_23891->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23891_16_Metatiled" + retinaSuffix, imageFormat, extension));
+ tile_16799_23891->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23891_16_Metatiled" + retinaSuffix, imageFormat, extension));
+ tile_16798_23892->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16798_23892_16_Metatiled" + retinaSuffix, imageFormat, extension));
+ tile_16799_23892->ToFile(GetPath(L"../UnitTestFiles/RenderTileXYZ_16799_23892_16_Metatiled" + retinaSuffix, imageFormat, extension));
}
catch (MgException* e)
{
Modified: sandbox/jng/tiling_v3/Server/src/UnitTesting/TestRenderingService.h
===================================================================
--- sandbox/jng/tiling_v3/Server/src/UnitTesting/TestRenderingService.h 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/UnitTesting/TestRenderingService.h 2019-06-07 14:19:52 UTC (rev 9540)
@@ -29,6 +29,16 @@
CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG8);
CPPUNIT_TEST(TestCase_RenderXYZMetatileJPG);
CPPUNIT_TEST(TestCase_RenderXYZMetatileGIF);
+
+ CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG_2x);
+ CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG8_2x);
+ CPPUNIT_TEST(TestCase_RenderXYZMetatileJPG_2x);
+ CPPUNIT_TEST(TestCase_RenderXYZMetatileGIF_2x);
+
+ CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG_4x);
+ CPPUNIT_TEST(TestCase_RenderXYZMetatilePNG8_4x);
+ CPPUNIT_TEST(TestCase_RenderXYZMetatileJPG_4x);
+ CPPUNIT_TEST(TestCase_RenderXYZMetatileGIF_4x);
CPPUNIT_TEST(TestCase_RenderMetatilePNG);
CPPUNIT_TEST(TestCase_RenderMetatilePNG8);
@@ -169,7 +179,7 @@
void TestCase_QueryFeatures();
void TestCase_RenderMetatile(CREFSTRING imageFormat, CREFSTRING extension);
- void TestCase_RenderXYZMetatile(CREFSTRING imageFormat, CREFSTRING extension);
+ void TestCase_RenderXYZMetatile(CREFSTRING imageFormat, CREFSTRING extension, INT32 retinaScale);
void TestCase_RenderTile(CREFSTRING imageFormat, CREFSTRING extension);
void TestCase_RenderTileXYZ(CREFSTRING imageFormat, CREFSTRING extension);
@@ -318,11 +328,21 @@
void TestCase_RenderMetatileJPG() { TestCase_RenderMetatile(L"JPG", L"jpg"); }
void TestCase_RenderMetatileGIF() { TestCase_RenderMetatile(L"GIF", L"gif"); }
- void TestCase_RenderXYZMetatilePNG() { TestCase_RenderXYZMetatile(L"PNG", L"png"); }
- void TestCase_RenderXYZMetatilePNG8() { TestCase_RenderXYZMetatile(L"PNG8", L"png"); }
- void TestCase_RenderXYZMetatileJPG() { TestCase_RenderXYZMetatile(L"JPG", L"jpg"); }
- void TestCase_RenderXYZMetatileGIF() { TestCase_RenderXYZMetatile(L"GIF", L"gif"); }
+ void TestCase_RenderXYZMetatilePNG() { TestCase_RenderXYZMetatile(L"PNG", L"png", 1); }
+ void TestCase_RenderXYZMetatilePNG8() { TestCase_RenderXYZMetatile(L"PNG8", L"png", 1); }
+ void TestCase_RenderXYZMetatileJPG() { TestCase_RenderXYZMetatile(L"JPG", L"jpg", 1); }
+ void TestCase_RenderXYZMetatileGIF() { TestCase_RenderXYZMetatile(L"GIF", L"gif", 1); }
+ void TestCase_RenderXYZMetatilePNG_2x() { TestCase_RenderXYZMetatile(L"PNG", L"png", 2); }
+ void TestCase_RenderXYZMetatilePNG8_2x() { TestCase_RenderXYZMetatile(L"PNG8", L"png", 2); }
+ void TestCase_RenderXYZMetatileJPG_2x() { TestCase_RenderXYZMetatile(L"JPG", L"jpg", 2); }
+ void TestCase_RenderXYZMetatileGIF_2x() { TestCase_RenderXYZMetatile(L"GIF", L"gif", 2); }
+
+ void TestCase_RenderXYZMetatilePNG_4x() { TestCase_RenderXYZMetatile(L"PNG", L"png", 4); }
+ void TestCase_RenderXYZMetatilePNG8_4x() { TestCase_RenderXYZMetatile(L"PNG8", L"png", 4); }
+ void TestCase_RenderXYZMetatileJPG_4x() { TestCase_RenderXYZMetatile(L"JPG", L"jpg", 4); }
+ void TestCase_RenderXYZMetatileGIF_4x() { TestCase_RenderXYZMetatile(L"GIF", L"gif", 4); }
+
private:
MgMap* CreateTestMap();
MgMap* CreateTestTiledMap();
Modified: sandbox/jng/tiling_v3/Server/src/UnitTesting/TestTileService.cpp
===================================================================
--- sandbox/jng/tiling_v3/Server/src/UnitTesting/TestTileService.cpp 2019-06-07 12:03:17 UTC (rev 9539)
+++ sandbox/jng/tiling_v3/Server/src/UnitTesting/TestTileService.cpp 2019-06-07 14:19:52 UTC (rev 9540)
@@ -1860,7 +1860,7 @@
INT32 mtX = y;
INT32 mtY = x;
- Ptr<MgMetatile> metaTile = renderSvc->RenderMetatileXYZ(map, L"BaseLayers", mtX, mtY, z, MgTileParameters::tileDPI, MgImageFormats::Png, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, metaTileFactor);
+ Ptr<MgMetatile> metaTile = renderSvc->RenderMetatileXYZ(map, L"BaseLayers", mtX, mtY, z, MgTileParameters::tileDPI, MgImageFormats::Png, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, metaTileFactor, 1 /* retinaScale */);
Ptr<MgByteReader> mtContent = metaTile->GetImage();
INT64 metaTileLen = mtContent->GetLength();
INT32 mtFactor = metaTile->GetMetaTilingFactor();
More information about the mapguide-commits
mailing list