[prev in list] [next in list] [prev in thread] [next in thread]
List: mapguide-commits
Subject: [mapguide-commits] r9495 - in sandbox/jng/tiling_v2: Common/MapGuideCommon Common/MapGuideCommon/Ser
From: svn_mapguide () osgeo ! org
Date: 2019-04-25 7:15:43
Message-ID: 20190425071543.BE6293903E1 () trac ! osgeo ! org
[Download RAW message or body]
Author: jng
Date: 2019-04-25 00:15:43 -0700 (Thu, 25 Apr 2019)
New Revision: 9495
Added:
sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/Metatile.cpp
sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/Metatile.h
sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderMetatile.cpp
sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderMetatile.h
Modified:
sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.h
sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.vcxproj
sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.vcxproj.filters
sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommonBuild.cpp
sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/ProxyRenderingService.cpp
sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/ProxyRenderingService.h
sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/RenderingDefs.h
sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/RenderingService.h
sandbox/jng/tiling_v2/Common/MapGuideCommon/System/MapGuideCommonClassId.h
sandbox/jng/tiling_v2/Common/MapGuideCommon/System/MapGuideCommonFactory.cpp
sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderTile.cpp
sandbox/jng/tiling_v2/Server/src/Services/Rendering/RenderingOperationFactory.cpp
sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.cpp
sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.h
sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.vcxproj
sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.vcxproj.filters
sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp
sandbox/jng/tiling_v2/Server/src/Services/Tile/TileCacheDefaultProvider.cpp
sandbox/jng/tiling_v2/Server/src/UnitTesting/TestRenderingService.cpp
Log:
Introduce a new MgMetatile class that encapsulates a meta-tile and all information \
needed to properly sub-divide it back to tiles of the originally requested size.
Refactor the current metatile rendering primitive to return a MgMetatile instead and \
have the meta-tile slicing method take a MgMetatile instead.
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.h
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.h 2019-04-24 03:20:38 \
UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.h 2019-04-25 07:15:43 \
UTC (rev 9495) @@ -145,6 +145,7 @@
#include "Services/MapPlot.h"
#include "Services/MapPlotCollection.h"
#include "Services/MapPlotInstruction.h"
+#include "Services/Metatile.h"
#include "Services/FeatureInformation.h"
#include "Services/MappingDefs.h"
#include "Services/MappingService.h"
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.vcxproj
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.vcxproj 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.vcxproj 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -684,6 +684,12 @@
<ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> \
</ClCompile> + <ClCompile Include="Services\Metatile.cpp">
+ <ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> + \
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + \
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ </ClCompile>
<ClCompile Include="Services\PackageStatusInformation.cpp">
<ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> @@ \
-1033,6 +1039,7 @@ <ClInclude Include="Services\MapPlot.h" />
<ClInclude Include="Services\MapPlotCollection.h" />
<ClInclude Include="Services\MapPlotInstruction.h" />
+ <ClInclude Include="Services\Metatile.h" />
<ClInclude Include="Services\PackageStatusInformation.h" />
<ClInclude Include="Services\PlotSpecification.h" />
<ClInclude Include="Services\PrintLayout.h" />
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.vcxproj.filters
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.vcxproj.filters 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommon.vcxproj.filters 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -400,6 +400,9 @@
<ClCompile Include="Exception\UnsupportedTileProviderException.cpp">
<Filter>Exception</Filter>
</ClCompile>
+ <ClCompile Include="Services\Metatile.cpp">
+ <Filter>Services</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="MapLayer\Layer.h">
@@ -781,6 +784,9 @@
<ClInclude Include="Exception\UnsupportedTileProviderException.h">
<Filter>Exception</Filter>
</ClInclude>
+ <ClInclude Include="Services\Metatile.h">
+ <Filter>Services</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="MapGuideCommon.rc" />
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommonBuild.cpp
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommonBuild.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/MapGuideCommonBuild.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -96,6 +96,7 @@
#include "Services/MappingService.cpp"
#include "Services/MapPlot.cpp"
#include "Services/MapPlotCollection.cpp"
+#include "Services/Metatile.cpp"
#include "Services/PackageStatusInformation.cpp"
#include "Services/PlotSpecification.cpp"
#include "Services/PrintLayout.cpp"
Added: sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/Metatile.cpp
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/Metatile.cpp \
(rev 0)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/Metatile.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -0,0 +1,95 @@
+//
+// Copyright (C) 2004-2019 by Autodesk, Inc.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+
+#include "MapGuideCommon.h"
+#include "Metatile.h"
+
+MG_IMPL_DYNCREATE(MgMetatile)
+
+MgMetatile::MgMetatile()
+ : m_width(0), m_height(0), m_metaTilingFactor(0), m_requestedWidth(0), \
m_requestedHeight(0) +{
+
+}
+
+MgMetatile::MgMetatile(MgByteReader* image, INT32 width, INT32 height, INT32 \
requestedWidth, INT32 requestedHeight, CREFSTRING imageFormat, INT32 \
metaTilingFactor) + : m_width(width), m_height(height), \
m_requestedWidth(requestedWidth), m_requestedHeight(requestedHeight), \
m_imageFormat(imageFormat), m_metaTilingFactor(metaTilingFactor) +{
+ m_image = SAFE_ADDREF(image);
+}
+
+MgMetatile::~MgMetatile()
+{
+ m_image = NULL;
+}
+
+MgByteReader* MgMetatile::GetImage()
+{
+ return SAFE_ADDREF(m_image.p);
+}
+
+INT32 MgMetatile::GetRequestedWidth()
+{
+ return m_requestedWidth;
+}
+
+INT32 MgMetatile::GetRequestedHeight()
+{
+ return m_requestedHeight;
+}
+
+INT32 MgMetatile::GetWidth()
+{
+ return m_width;
+}
+
+INT32 MgMetatile::GetHeight()
+{
+ return m_height;
+}
+
+STRING MgMetatile::GetTileImageFormat()
+{
+ return m_imageFormat;
+}
+
+INT32 MgMetatile::GetMetaTilingFactor()
+{
+ return m_metaTilingFactor;
+}
+
+void MgMetatile::Serialize(MgStream * stream)
+{
+ stream->WriteInt32(m_requestedWidth);
+ stream->WriteInt32(m_requestedHeight);
+ stream->WriteInt32(m_width);
+ stream->WriteInt32(m_height);
+ stream->WriteInt32(m_metaTilingFactor);
+ stream->WriteString(m_imageFormat);
+ stream->WriteObject(m_image);
+}
+
+void MgMetatile::Deserialize(MgStream * stream)
+{
+ stream->GetInt32(m_requestedWidth);
+ stream->GetInt32(m_requestedHeight);
+ stream->GetInt32(m_width);
+ stream->GetInt32(m_height);
+ stream->GetInt32(m_metaTilingFactor);
+ stream->GetString(m_imageFormat);
+ m_image = static_cast<MgByteReader*>(stream->GetObject());
+}
Added: sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/Metatile.h
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/Metatile.h \
(rev 0)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/Metatile.h 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -0,0 +1,123 @@
+//
+// Copyright (C) 2004-2019 by Autodesk, Inc.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+
+#ifndef METATILE_H
+#define METATILE_H
+
+/// \cond INTERNAL
+/////////////////////////////////////////////////////////////////
+/// \brief
+/// Defines a raw image frame buffer from the result of a meta-tile
+/// rendering operation
+///
+/// \since 3.3
+class MG_MAPGUIDE_API MgMetatile : public MgSerializable
+{
+ MG_DECL_DYNCREATE()
+ DECLARE_CLASSNAME(MgMetatile)
+
+EXTERNAL_API:
+
+ /// \brief
+ /// Gets the meta-tile content. If no meta-tiling is performed, this is the tile \
image. Otherwise, + /// it is the raw image frame buffer (for sub-dividing into \
originally requested tile images) + MgByteReader* GetImage();
+
+ /// \brief
+ /// Gets the originally requested width of this tile
+ INT32 GetRequestedWidth();
+
+ /// \brief
+ /// Gets the originally requested height of this tile
+ INT32 GetRequestedHeight();
+
+ /// \brief
+ /// Gets the width of this metatile
+ INT32 GetWidth();
+
+ /// \brief
+ /// Gets the height of this metatile
+
+ INT32 GetHeight();
+
+ /// \brief
+ /// Gets the meta-tiling factor.
+ INT32 GetMetaTilingFactor();
+
+ /// \brief
+ /// Gets the originally requested tile image format
+ STRING GetTileImageFormat();
+
+protected:
+
+ /// \brief
+ /// Dispose this object.
+ ///
+ /// \return
+ /// Returns nothing
+ ///
+ virtual void Dispose()
+ {
+ delete this;
+ }
+
+ /// \brief
+ /// Get the unique identifier for the class
+ ///
+ /// \return
+ /// Class Identifider.
+ ///
+ virtual INT32 GetClassId() { return m_cls_id; }
+
+CLASS_ID:
+ static const INT32 m_cls_id = MapGuide_RenderingService_Metatile;
+
+INTERNAL_API:
+ MgMetatile();
+ MgMetatile(MgByteReader* image, INT32 width, INT32 height, INT32 requestedWidth, \
INT32 requestedHeight, CREFSTRING imageFormat, INT32 metaTilingFactor); + virtual \
~MgMetatile(); +
+ //////////////////////////////////////////////////////////////////
+ /// \brief
+ /// Serialize data to a stream
+ ///
+ /// \param stream
+ /// Stream
+ ///
+ virtual void Serialize(MgStream* stream);
+
+ //////////////////////////////////////////////////////////////////
+ /// \brief
+ /// Deserialize data from a stream
+ ///
+ /// \param stream
+ /// Stream
+ ///
+ virtual void Deserialize(MgStream* stream);
+
+private:
+ Ptr<MgByteReader> m_image;
+ INT32 m_width;
+ INT32 m_height;
+ INT32 m_requestedWidth;
+ INT32 m_requestedHeight;
+ INT32 m_metaTilingFactor;
+ STRING m_imageFormat;
+};
+/// \endcond
+
+#endif
\ No newline at end of file
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/ProxyRenderingService.cpp
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/ProxyRenderingService.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/ProxyRenderingService.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -148,14 +148,13 @@
INT32 tileHeight,
INT32 tileDpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset,
- INT32 metaTileFactor)
+ double tileExtentOffset)
{
MgCommand cmd;
cmd.ExecuteCommand(m_connProp, // \
Connection
MgCommand::knObject, // Return type expected
MgRenderingServiceOpId::RenderTile2, // Command Code
- 10, // No of arguments
+ 9, // No of arguments
Rendering_Service, // Service Id
BUILD_VERSION(3, 3, 0), // Operation version
MgCommand::knObject, map, // Argument#1
@@ -167,7 +166,6 @@
MgCommand::knInt32, tileDpi, // Argument#7
MgCommand::knString, &tileImageFormat, // Argument#8
MgCommand::knDouble, tileExtentOffset, // Argument#9
- MgCommand::knInt32, metaTileFactor, // Argument#10
MgCommand::knNone); // End of arguments
SetWarning(cmd.GetWarningObject());
@@ -1334,4 +1332,40 @@
SetWarning(cmd.GetWarningObject());
return (MgByteReader*)cmd.GetReturnValue().val.m_obj;
+}
+
+MgMetatile* MgProxyRenderingService::RenderMetatile(
+ MgMap* map,
+ CREFSTRING baseMapLayerGroupName,
+ INT32 tileColumn,
+ INT32 tileRow,
+ INT32 tileWidth,
+ INT32 tileHeight,
+ INT32 tileDpi,
+ CREFSTRING tileImageFormat,
+ double tileExtentOffset,
+ INT32 metaTilingFactor)
+{
+ MgCommand cmd;
+ cmd.ExecuteCommand(m_connProp, // \
Connection + MgCommand::knObject, // Return type \
expected + MgRenderingServiceOpId::RenderMetatile, // Command Code
+ 10, // No of arguments
+ Rendering_Service, // Service Id
+ BUILD_VERSION(3, 3, 0), // Operation version
+ MgCommand::knObject, map, // Argument#1
+ MgCommand::knString, &baseMapLayerGroupName, // Argument#2
+ MgCommand::knInt32, tileColumn, // Argument#3
+ MgCommand::knInt32, tileRow, // Argument#4
+ MgCommand::knInt32, tileWidth, // Argument#5
+ MgCommand::knInt32, tileHeight, // Argument#6
+ MgCommand::knInt32, tileDpi, // Argument#7
+ MgCommand::knString, &tileImageFormat, // Argument#8
+ MgCommand::knDouble, tileExtentOffset, // Argument#9
+ MgCommand::knInt32, metaTilingFactor, // Argument#10
+ MgCommand::knNone); // End of arguments
+
+ SetWarning(cmd.GetWarningObject());
+
+ return (MgMetatile*)cmd.GetReturnValue().val.m_obj;
}
\ No newline at end of file
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/ProxyRenderingService.h
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/ProxyRenderingService.h 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/ProxyRenderingService.h 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -157,8 +157,7 @@
INT32 tileHeight,
INT32 tileDpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset,
- INT32 metaTileFactor);
+ double tileExtentOffset);
/////////////////////////////////////////////////////////////////
/// \brief
@@ -1105,6 +1104,61 @@
bool bIncludeFeatureBBOX,
bool bIncludeGeometry);
+ /////////////////////////////////////////////////////////////////
+ /// \brief
+ /// Returns the specified base map tile for the given map.
+ ///
+ /// \remarks
+ /// This method only renders the given tile. No tile caching is performed
+ /// by this method. To render and cache the tile, use the
+ /// \link MgTileService::GetTile GetTile \endlink method instead. However,
+ /// using that method will use default tile width/height/dpi/format specified
+ /// in your MapGuide Server configuration
+ ///
+ /// \param map
+ /// Input
+ /// map object containing current state of map.
+ /// \param baseMapLayerGroupName
+ /// Input
+ /// Specifies the name of the baseMapLayerGroup for which to render the tile.
+ /// \param tileColumn
+ /// Input
+ /// Specifies the column index of the tile to return.
+ /// \param tileRow
+ /// Input
+ /// Specifies the row index of the tile to return.
+ /// \param tileWidth
+ /// Input
+ /// Specifies the width of the tile to return.
+ /// \param tileHeight
+ /// Input
+ /// Specifies the height of the tile to return.
+ /// \param tileDpi
+ /// Input
+ /// Specifies the dpi the tile to return.
+ /// \param tileImageFormat
+ /// Input
+ /// Specifies the image format of the tile. See \link MgImageFormats \endlink
+ /// \param tileExtentOffset
+ /// 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. + ///
+ /// \return
+ /// A byte reader containing the rendered tile image.
+ ///
+ virtual MgMetatile* RenderMetatile(
+ MgMap* map,
+ CREFSTRING baseMapLayerGroupName,
+ INT32 tileColumn,
+ INT32 tileRow,
+ INT32 tileWidth,
+ INT32 tileHeight,
+ INT32 tileDpi,
+ CREFSTRING tileImageFormat,
+ double tileExtentOffset,
+ INT32 metaTilingFactor);
+
protected:
//////////////////////////////////////////////////////////////////
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/RenderingDefs.h
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/RenderingDefs.h 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/RenderingDefs.h 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -47,6 +47,7 @@
static const int RenderMap7 = 0x1111E913;
static const int RenderTileUTFGrid = 0x1111E914;
static const int QueryFeatureProperties3 = 0x1111E915;
+ static const int RenderMetatile = 0x1111E916;
};
/// \endcond
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/RenderingService.h
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/RenderingService.h 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/Services/RenderingService.h 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -162,6 +162,7 @@
/// \return
/// A byte reader containing the rendered tile image.
///
+ /// \since 3.3
virtual MgByteReader* RenderTile(
MgMap* map,
CREFSTRING baseMapLayerGroupName,
@@ -171,8 +172,7 @@
INT32 tileHeight,
INT32 tileDpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset,
- INT32 metaTileFactor) = 0;
+ double tileExtentOffset) = 0;
/////////////////////////////////////////////////////////////////
/// \brief
@@ -1117,6 +1117,62 @@
bool bIncludeFeatureBBOX,
bool bIncludeGeometry) = 0;
+ /////////////////////////////////////////////////////////////////
+ /// \brief
+ /// Returns the specified base map tile for the given map.
+ ///
+ /// \remarks
+ /// This method only renders the given tile. No tile caching is performed
+ /// by this method. To render and cache the tile, use the
+ /// \link MgTileService::GetTile GetTile \endlink method instead. However,
+ /// using that method will use default tile width/height/dpi/format specified
+ /// in your MapGuide Server configuration
+ ///
+ /// \param map
+ /// Input
+ /// map object containing current state of map.
+ /// \param baseMapLayerGroupName
+ /// Input
+ /// Specifies the name of the baseMapLayerGroup for which to render the tile.
+ /// \param tileColumn
+ /// Input
+ /// Specifies the column index of the tile to return.
+ /// \param tileRow
+ /// Input
+ /// Specifies the row index of the tile to return.
+ /// \param tileWidth
+ /// Input
+ /// Specifies the width of the tile to return.
+ /// \param tileHeight
+ /// Input
+ /// Specifies the height of the tile to return.
+ /// \param tileDpi
+ /// Input
+ /// Specifies the dpi the tile to return.
+ /// \param tileImageFormat
+ /// Input
+ /// Specifies the image format of the tile. See \link MgImageFormats \endlink
+ /// \param tileExtentOffset
+ /// 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. + ///
+ /// \return
+ /// A byte reader containing the rendered tile image.
+ ///
+ /// \since 3.3
+ virtual MgMetatile* RenderMetatile(
+ MgMap* map,
+ CREFSTRING baseMapLayerGroupName,
+ INT32 tileColumn,
+ INT32 tileRow,
+ INT32 tileWidth,
+ INT32 tileHeight,
+ INT32 tileDpi,
+ CREFSTRING tileImageFormat,
+ double tileExtentOffset,
+ INT32 metaTileFactor) = 0;
+
protected:
/////////////////////////////////////////////////////////////////
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/System/MapGuideCommonClassId.h
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/System/MapGuideCommonClassId.h 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/System/MapGuideCommonClassId.h 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -130,6 +130,7 @@
#define MapGuide_RenderingService_RenderingService \
MAPGUIDE_RENDERINGSERVICE_ID+0 #define MapGuide_RenderingService_FeatureInformation \
MAPGUIDE_RENDERINGSERVICE_ID+1 #define MapGuide_RenderingService_RenderingOptions \
MAPGUIDE_RENDERINGSERVICE_ID+2 +#define MapGuide_RenderingService_Metatile \
MAPGUIDE_RENDERINGSERVICE_ID+3
// Resource Service
#define MapGuide_ResourceService_ResourceService \
MAPGUIDE_RESOURCESERVICE_ID+0
Modified: sandbox/jng/tiling_v2/Common/MapGuideCommon/System/MapGuideCommonFactory.cpp
===================================================================
--- sandbox/jng/tiling_v2/Common/MapGuideCommon/System/MapGuideCommonFactory.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Common/MapGuideCommon/System/MapGuideCommonFactory.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -111,6 +111,7 @@
fact->Register(MapGuide_MappingService_MapPlotCollection, \
MgMapPlotCollection::CreateObject);
fact->Register(MapGuide_RenderingService_FeatureInformation, \
MgFeatureInformation::CreateObject);
fact->Register(MapGuide_RenderingService_RenderingOptions, \
MgRenderingOptions::CreateObject); + \
fact->Register(MapGuide_RenderingService_Metatile, \
MgMetatile::CreateObject);
fact->Register(PlatformBase_FeatureService_FeatureTransaction, \
MgProxyFeatureTransaction::CreateObject);
fact->Register(MapGuide_Service_SqlResult, MgSqlResult::CreateObject);
Added: sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderMetatile.cpp
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderMetatile.cpp \
(rev 0)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderMetatile.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -0,0 +1,131 @@
+//
+// Copyright (C) 2004-2019 by Autodesk, Inc.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+
+#include "OpRenderMetatile.h"
+#include "LogManager.h"
+
+MgOpRenderMetatile::MgOpRenderMetatile()
+{
+}
+
+MgOpRenderMetatile::~MgOpRenderMetatile()
+{
+}
+
+void MgOpRenderMetatile::Execute()
+{
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT(" (%t) MgOpRenderMetatile::Execute()\n")));
+
+ MG_LOG_OPERATION_MESSAGE(L"MgOpRenderMetatile");
+
+ MG_TRY()
+
+ MG_LOG_OPERATION_MESSAGE_INIT(m_packet.m_OperationVersion, \
m_packet.m_NumArguments); +
+ ACE_ASSERT(m_stream != NULL);
+
+ if (10 == m_packet.m_NumArguments)
+ {
+ Ptr<MgMap> map = (MgMap*)m_stream->GetObject();
+ Ptr<MgResourceIdentifier> resource = map->GetResourceId();
+ map->SetDelayedLoadResourceService(m_resourceService);
+
+ STRING baseMapLayerGroupName;
+ m_stream->GetString(baseMapLayerGroupName);
+
+ INT32 tileCol = 0;
+ m_stream->GetInt32(tileCol);
+
+ INT32 tileRow = 0;
+ m_stream->GetInt32(tileRow);
+
+ INT32 tileWidth = 0;
+ m_stream->GetInt32(tileWidth);
+
+ INT32 tileHeight = 0;
+ m_stream->GetInt32(tileHeight);
+
+ INT32 tileDpi = 0;
+ m_stream->GetInt32(tileDpi);
+
+ STRING tileImageFormat;
+ m_stream->GetString(tileImageFormat);
+
+ double tileExtentOffset = 0.0;
+ m_stream->GetDouble(tileExtentOffset);
+
+ INT32 metaTileFactor = 0;
+ m_stream->GetInt32(metaTileFactor);
+
+ BeginExecution();
+
+ MG_LOG_OPERATION_MESSAGE_PARAMETERS_START();
+ MG_LOG_OPERATION_MESSAGE_ADD_STRING((NULL == resource) ? \
L"MgResourceIdentifier" : resource->ToString().c_str()); + \
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR(); + \
MG_LOG_OPERATION_MESSAGE_ADD_STRING(baseMapLayerGroupName.c_str()); + \
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR(); + \
MG_LOG_OPERATION_MESSAGE_ADD_INT32(tileCol); + \
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR(); + \
MG_LOG_OPERATION_MESSAGE_ADD_INT32(tileRow); + \
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR(); + \
MG_LOG_OPERATION_MESSAGE_ADD_INT32(tileWidth); + \
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR(); + \
MG_LOG_OPERATION_MESSAGE_ADD_INT32(tileHeight); + \
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR(); + \
MG_LOG_OPERATION_MESSAGE_ADD_INT32(tileDpi); + \
MG_LOG_OPERATION_MESSAGE_ADD_SEPARATOR(); + \
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(metaTileFactor); + \
MG_LOG_OPERATION_MESSAGE_PARAMETERS_END(); +
+ Validate();
+
+ Ptr<MgMetatile> metaTile = m_service->RenderMetatile(map, \
baseMapLayerGroupName, tileCol, tileRow, tileWidth, tileHeight, tileDpi, \
tileImageFormat, tileExtentOffset, metaTileFactor); +
+ EndExecution(metaTile);
+ }
+ else
+ {
+ MG_LOG_OPERATION_MESSAGE_PARAMETERS_START();
+ MG_LOG_OPERATION_MESSAGE_PARAMETERS_END();
+ }
+
+ if (!m_argsRead)
+ {
+ throw new MgOperationProcessingException(L"MgOpRenderMetatile.Execute",
+ __LINE__, __WFILE__, NULL, L"", NULL);
+ }
+
+ // Successful operation
+ MG_LOG_OPERATION_MESSAGE_ADD_STRING(MgResources::Success.c_str());
+
+ MG_CATCH(L"MgOpRenderMetatile.Execute")
+
+ if (mgException != NULL)
+ {
+ // Failed operation
+ MG_LOG_OPERATION_MESSAGE_ADD_STRING(MgResources::Failure.c_str());
+ }
+
+ // Add access log entry for operation
+ MG_LOG_OPERATION_MESSAGE_ACCESS_ENTRY();
+
+ MG_THROW()
+}
Added: sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderMetatile.h
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderMetatile.h \
(rev 0)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderMetatile.h 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -0,0 +1,32 @@
+//
+// Copyright (C) 2004-2019 by Autodesk, Inc.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of version 2.1 of the GNU Lesser
+// General Public License as published by the Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+#ifndef MG_OP_RENDER_METATILE_H
+#define MG_OP_RENDER_METATILE_H
+
+#include "RenderingOperation.h"
+
+class MgOpRenderMetatile : public MgRenderingOperation
+{
+public:
+ MgOpRenderMetatile();
+ virtual ~MgOpRenderMetatile();
+
+public:
+ virtual void Execute();
+};
+
+#endif
\ No newline at end of file
Modified: sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderTile.cpp
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderTile.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/OpRenderTile.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -148,7 +148,7 @@
EndExecution(byteReader);
}
- else if (10 == m_packet.m_NumArguments)
+ else if (9 == m_packet.m_NumArguments)
{
Ptr<MgMap> map = (MgMap*)m_stream->GetObject();
Ptr<MgResourceIdentifier> resource = map->GetResourceId();
@@ -178,9 +178,6 @@
double tileExtentOffset = 0.0;
m_stream->GetDouble(tileExtentOffset);
- INT32 metaTileFactor = 0;
- m_stream->GetInt32(metaTileFactor);
-
BeginExecution();
MG_LOG_OPERATION_MESSAGE_PARAMETERS_START();
@@ -201,14 +198,12 @@
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(metaTileFactor);
MG_LOG_OPERATION_MESSAGE_PARAMETERS_END();
Validate();
Ptr<MgByteReader> byteReader =
- m_service->RenderTile(map, baseMapLayerGroupName, tileCol, tileRow, \
tileWidth, tileHeight, tileDpi, tileImageFormat, tileExtentOffset, metaTileFactor); + \
m_service->RenderTile(map, baseMapLayerGroupName, tileCol, tileRow, tileWidth, \
tileHeight, tileDpi, tileImageFormat, tileExtentOffset);
EndExecution(byteReader);
}
Modified: sandbox/jng/tiling_v2/Server/src/Services/Rendering/RenderingOperationFactory.cpp
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/RenderingOperationFactory.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/RenderingOperationFactory.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -108,6 +108,17 @@
L"MgRenderingOperationFactory.GetOperation", __LINE__, __WFILE__, \
NULL, L"", NULL); }
break;
+ case MgRenderingServiceOpId::RenderMetatile:
+ switch (VERSION_NO_PHASE(operationVersion))
+ {
+ case VERSION_SUPPORTED(3, 3):
+ handler.reset(new MgOpRenderMetatile());
+ break;
+ default:
+ throw new MgInvalidOperationVersionException(
+ L"MgRenderingOperationFactory.GetOperation", __LINE__, __WFILE__, \
NULL, L"", NULL); + }
+ break;
case MgRenderingServiceOpId::RenderTileUTFGrid:
switch (VERSION_NO_PHASE(operationVersion))
{
Modified: sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -191,7 +191,7 @@
MG_TRY()
- ret = RenderTile(map, baseMapLayerGroupName, tileColumn, tileRow, tileWidth, \
tileHeight, tileDpi, tileImageFormat, tileExtentOffset, 0 /* MT factor = 1 -> render \
at original size */); + ret = RenderTile(map, baseMapLayerGroupName, tileColumn, \
tileRow, tileWidth, tileHeight, tileDpi, tileImageFormat, tileExtentOffset);
MG_CATCH_AND_THROW(L"MgServerRenderingService.RenderTile")
@@ -500,11 +500,15 @@
///////////////////////////////////////////////////////////////////////////////
// gets called with a bitmap in the bytereader to be split up into metatile^2 images
-MgByteReader* MgServerRenderingService::RenderTileFromMetaTile(MgMap* map, \
MgByteReader* metaTileBitMap, CREFSTRING origTileFormat,
- INT32 origTileWidth, \
INT32 origTileHeight,
- INT32 metaTileFactor, \
INT32 subTileX, INT32 subTileY) +MgByteReader* \
MgServerRenderingService::RenderTileFromMetaTile(MgMap* map, MgMetatile* metaTile, \
INT32 subTileX, INT32 subTileY) {
- MgByteSource* bs = metaTileBitMap->GetByteSource();
+ Ptr<MgByteReader> image = metaTile->GetImage();
+ INT32 metaTileFactor = metaTile->GetMetaTilingFactor();
+ INT32 origTileWidth = metaTile->GetRequestedWidth();
+ INT32 origTileHeight = metaTile->GetRequestedHeight();
+ STRING origTileFormat = metaTile->GetTileImageFormat();
+
+ MgByteSource* bs = image->GetByteSource();
// upcast to bytesource Impl to access bytearray member
ByteSourceMemoryImpl* source = \
dynamic_cast<ByteSourceMemoryImpl*>(bs->GetSourceImpl()); assert(source);
@@ -2399,58 +2403,21 @@
INT32 tileHeight,
INT32 tileDpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset,
- INT32 metaTileFactor)
+ double tileExtentOffset)
{
Ptr<MgByteReader> ret;
MG_TRY()
- CHECKARGUMENTNULL(map, L"MgServerRenderingService.RenderTile");
- CHECKARGUMENTEMPTYSTRING(baseMapLayerGroupName, \
L"MgServerRenderingService.RenderTile"); + INT32 metaTilingFactor = 0;
+ Ptr<MgMetatile> metaTile = RenderMetatile(map, baseMapLayerGroupName, \
tileColumn, tileRow, tileWidth, tileHeight, tileDpi, tileImageFormat, \
tileExtentOffset, metaTilingFactor);
- // find the finite display scale closest to the requested map scale
- double scale = map->GetViewScale();
- INT32 scaleIndex = map->FindNearestFiniteDisplayScaleIndex(scale);
+ _ASSERT(metaTile->GetRequestedWidth() == tileWidth);
+ _ASSERT(metaTile->GetRequestedHeight() == tileHeight);
+ _ASSERT(metaTile->GetMetaTilingFactor() <= 1);
- // if we don't find a nearest scale then something is wrong with the map
- if (scaleIndex < 0)
- throw new MgInvalidMapDefinitionException(L"MgServerRenderingService.RenderTile", \
__LINE__, __WFILE__, NULL, L"", NULL); + ret = metaTile->GetImage();
- // get the layer group associated with the name
- Ptr<MgLayerGroupCollection> layerGroups = map->GetLayerGroups();
- Ptr<MgLayerGroup> baseGroup = layerGroups->GetItem(baseMapLayerGroupName);
- if (baseGroup == NULL)
- {
- MgStringCollection arguments;
- arguments.Add(L"2");
- arguments.Add(baseMapLayerGroupName);
-
- throw new MgInvalidArgumentException(L"MgServerRenderingService.RenderTile",
- __LINE__, __WFILE__, &arguments, L"MgMapLayerGroupNameNotFound", NULL);
- }
-
- // get the scale at which to render the tile
- scale = map->GetFiniteDisplayScaleAt(scaleIndex);
-
- // ensure the tile DPI is set on the map
- map->SetDisplayDpi(tileDpi);
-
- // ------------------------------------------------------
- // the upper left corner of tile (0,0) corresponds to the
- // upper left corner of the map extent
- // ------------------------------------------------------
-
- double tileMinX, tileMaxX, tileMinY, tileMaxY;
- map->GetTileCoords(std::max(metaTileFactor, 1), tileColumn, tileRow, tileDpi, \
tileWidth, tileHeight, tileMinX, tileMaxX, tileMinY, tileMaxY);
-
- // make the call to render the tile
- ret = RenderTileInternal(map, baseGroup, scaleIndex,
- tileWidth * std::max(metaTileFactor, 1), tileHeight * \
std::max(metaTileFactor, 1),
- scale, tileMinX, tileMaxX, tileMinY, tileMaxY,
- (metaTileFactor > 1 ? MgImageFormats::Meta : \
tileImageFormat),
- tileExtentOffset);
-
MG_CATCH_AND_THROW(L"MgServerRenderingService.RenderTile")
return ret.Detach();
@@ -2585,4 +2552,73 @@
if (abs(drawWidth - width) <= 1)
drawWidth = width;
}
+}
+
+
+MgMetatile* MgServerRenderingService::RenderMetatile(MgMap* map,
+ CREFSTRING \
baseMapLayerGroupName, + INT32 \
tileColumn, + INT32 tileRow,
+ INT32 tileWidth,
+ INT32 tileHeight,
+ INT32 tileDpi,
+ CREFSTRING tileImageFormat,
+ double tileExtentOffset,
+ INT32 metaTileFactor)
+{
+ Ptr<MgMetatile> ret;
+
+ MG_TRY()
+
+ CHECKARGUMENTNULL(map, L"MgServerRenderingService.RenderMetatile");
+ CHECKARGUMENTEMPTYSTRING(baseMapLayerGroupName, \
L"MgServerRenderingService.RenderMetatile"); +
+ // find the finite display scale closest to the requested map scale
+ double scale = map->GetViewScale();
+ INT32 scaleIndex = map->FindNearestFiniteDisplayScaleIndex(scale);
+
+ // if we don't find a nearest scale then something is wrong with the map
+ if (scaleIndex < 0)
+ throw new MgInvalidMapDefinitionException(L"MgServerRenderingService.RenderMetatile", \
__LINE__, __WFILE__, NULL, L"", NULL); +
+ // get the layer group associated with the name
+ Ptr<MgLayerGroupCollection> layerGroups = map->GetLayerGroups();
+ Ptr<MgLayerGroup> baseGroup = layerGroups->GetItem(baseMapLayerGroupName);
+ if (baseGroup == NULL)
+ {
+ MgStringCollection arguments;
+ arguments.Add(L"2");
+ arguments.Add(baseMapLayerGroupName);
+
+ throw new MgInvalidArgumentException(L"MgServerRenderingService.RenderMetatile",
+ __LINE__, __WFILE__, &arguments, L"MgMapLayerGroupNameNotFound", NULL);
+ }
+
+ // get the scale at which to render the tile
+ scale = map->GetFiniteDisplayScaleAt(scaleIndex);
+
+ // ensure the tile DPI is set on the map
+ map->SetDisplayDpi(tileDpi);
+
+ // ------------------------------------------------------
+ // the upper left corner of tile (0,0) corresponds to the
+ // upper left corner of the map extent
+ // ------------------------------------------------------
+
+ double tileMinX, tileMaxX, tileMinY, tileMaxY;
+ map->GetTileCoords(std::max(metaTileFactor, 1), tileColumn, tileRow, tileDpi, \
tileWidth, tileHeight, tileMinX, tileMaxX, tileMinY, tileMaxY); +
+ // make the call to render the tile
+ INT32 tw = tileWidth * std::max(metaTileFactor, 1);
+ INT32 th = tileHeight * std::max(metaTileFactor, 1);
+ STRING tformat = (metaTileFactor > 1 ? MgImageFormats::Meta : tileImageFormat);
+ Ptr<MgByteReader> tile = RenderTileInternal(map, baseGroup, scaleIndex, tw, th,
+ scale, tileMinX, tileMaxX, tileMinY, \
tileMaxY, + tformat, \
tileExtentOffset); +
+ ret = new MgMetatile(tile, tw, th, tileWidth, tileHeight, tileImageFormat, \
metaTileFactor); +
+ MG_CATCH_AND_THROW(L"MgServerRenderingService.RenderMetatile")
+
+ return ret.Detach();
}
\ No newline at end of file
Modified: sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.h
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.h 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.h 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -64,8 +64,7 @@
INT32 tileHeight,
INT32 tileDpi,
CREFSTRING tileImageFormat,
- double tileExtentOffset,
- INT32 metaTileFactor);
+ double tileExtentOffset);
virtual MgByteReader* RenderTileXYZ(MgMap* map,
CREFSTRING baseMapLayerGroupName,
@@ -263,10 +262,19 @@
bool bIncludeFeatureBBOX,
bool bIncludeGeometry);
- MgByteReader* RenderTileFromMetaTile(MgMap* map, MgByteReader* metaTileBitMap, \
CREFSTRING origTileFormat,
- INT32 origTileWidth, INT32 origTileHeight,
- INT32 metaTileFactor, INT32 subTileX, INT32 \
subTileY); + virtual MgMetatile* RenderMetatile(MgMap* map,
+ CREFSTRING baseMapLayerGroupName,
+ INT32 tileColumn,
+ INT32 tileRow,
+ INT32 tileWidth,
+ INT32 tileHeight,
+ INT32 tileDpi,
+ CREFSTRING tileImageFormat,
+ double tileExtentOffset,
+ INT32 metaTilingFactor);
+ MgByteReader* RenderTileFromMetaTile(MgMap* map, MgMetatile* metaTile, INT32 \
subTileX, INT32 subTileY); +
private:
static void ComputeScaledDimensions(RS_Bounds& extent, INT32 width, INT32 \
height, INT32 dpi,
double metersPerUnit, INT32& drawWidth, \
INT32& drawHeight, double& scale);
Modified: sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.vcxproj
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.vcxproj 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.vcxproj 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -228,6 +228,12 @@
<ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> \
</ClCompile> + <ClCompile Include="OpRenderMetatile.cpp">
+ <ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> + \
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + \
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ </ClCompile>
<ClCompile Include="OpRenderTile.cpp">
<ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild \
Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> @@ \
-296,6 +302,7 @@ <ClInclude Include="OpRenderDynamicOverlay.h" />
<ClInclude Include="OpRenderMap.h" />
<ClInclude Include="OpRenderMapLegend.h" />
+ <ClInclude Include="OpRenderMetatile.h" />
<ClInclude Include="OpRenderTile.h" />
<ClInclude Include="OpRenderTileXYZ.h" />
<ClInclude Include="OpRenderTileUTFGrid.h" />
Modified: sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.vcxproj.filters
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.vcxproj.filters 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingService.vcxproj.filters 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -42,6 +42,9 @@
<ClCompile Include="OpRenderTileUTFGrid.cpp">
<Filter>Ops</Filter>
</ClCompile>
+ <ClCompile Include="OpRenderMetatile.cpp">
+ <Filter>Ops</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="OpQueryFeatureProperties.h">
@@ -80,6 +83,9 @@
<ClInclude Include="OpRenderTileUTFGrid.h">
<Filter>Ops</Filter>
</ClInclude>
+ <ClInclude Include="OpRenderMetatile.h">
+ <Filter>Ops</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ServerRenderingService.rc" />
Modified: sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/Services/Rendering/ServerRenderingServiceBuild.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -23,6 +23,7 @@
#include "OpRenderDynamicOverlay.cpp"
#include "OpRenderMap.cpp"
#include "OpRenderMapLegend.cpp"
+#include "OpRenderMetatile.cpp"
#include "OpRenderTile.cpp"
#include "OpRenderTileXYZ.cpp"
#include "OpRenderTileUTFGrid.cpp"
Modified: sandbox/jng/tiling_v2/Server/src/Services/Tile/TileCacheDefaultProvider.cpp
===================================================================
--- sandbox/jng/tiling_v2/Server/src/Services/Tile/TileCacheDefaultProvider.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/Services/Tile/TileCacheDefaultProvider.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -65,7 +65,7 @@
if (svcRendering != NULL)
{
// generate the tile
- img = svcRendering->RenderTile(map, baseMapLayerGroupName, tileColumn, \
tileRow, GetDefaultTileSizeX(), GetDefaultTileSizeY(), map->GetDisplayDpi(), \
GetTileFormat(), m_tileExtentOffset, 0); + img = svcRendering->RenderTile(map, \
baseMapLayerGroupName, tileColumn, tileRow, GetDefaultTileSizeX(), \
GetDefaultTileSizeY(), map->GetDisplayDpi(), GetTileFormat(), m_tileExtentOffset);
// cache the tile
if (!m_renderOnly)
Modified: sandbox/jng/tiling_v2/Server/src/UnitTesting/TestRenderingService.cpp
===================================================================
--- sandbox/jng/tiling_v2/Server/src/UnitTesting/TestRenderingService.cpp 2019-04-24 \
03:20:38 UTC (rev 9494)
+++ sandbox/jng/tiling_v2/Server/src/UnitTesting/TestRenderingService.cpp 2019-04-25 \
07:15:43 UTC (rev 9495) @@ -1738,15 +1738,15 @@
// Render a 2x2 metatile which should cover the same tiles as the baseline \
test. INT32 metaTileFactor = 2;
- Ptr<MgByteReader> metaTile = renderSvc->RenderTile(map, L"BaseLayers", 4, 6, \
MgTileParameters::tileWidth, MgTileParameters::tileHeight, MgTileParameters::tileDPI, \
imageFormat, MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, \
metaTileFactor); + Ptr<MgMetatile> metaTile = renderSvc->RenderMetatile(map, \
L"BaseLayers", 4, 6, MgTileParameters::tileWidth, MgTileParameters::tileHeight, \
MgTileParameters::tileDPI, imageFormat, \
MgConfigProperties::DefaultRenderingServicePropertyTileExtentOffset, \
metaTileFactor);
//metaTile->ToFile(L"../UnitTestFiles/RenderTile_Metatile@4_6.png");
//CPPUNIT_ASSERT(metaTile->IsRewindable());
//metaTile->Rewind();
- Ptr<MgByteReader> tile4_6 = renderSvc->RenderTileFromMetaTile(map, metaTile, \
imageFormat, MgTileParameters::tileWidth, \
MgTileParameters::tileHeight, 2, 0, 0);
- Ptr<MgByteReader> tile4_7 = renderSvc->RenderTileFromMetaTile(map, metaTile, \
imageFormat, MgTileParameters::tileWidth, \
MgTileParameters::tileHeight, 2, 0, 1);
- Ptr<MgByteReader> tile5_6 = renderSvc->RenderTileFromMetaTile(map, metaTile, \
imageFormat, MgTileParameters::tileWidth, \
MgTileParameters::tileHeight, 2, 1, 0);
- Ptr<MgByteReader> tile5_7 = renderSvc->RenderTileFromMetaTile(map, metaTile, \
imageFormat, MgTileParameters::tileWidth, MgTileParameters::tileHeight, 2, 1, 1); + \
Ptr<MgByteReader> tile4_6 = renderSvc->RenderTileFromMetaTile(map, metaTile, 0, 0); + \
Ptr<MgByteReader> tile4_7 = renderSvc->RenderTileFromMetaTile(map, metaTile, 0, 1); + \
Ptr<MgByteReader> tile5_6 = renderSvc->RenderTileFromMetaTile(map, metaTile, 1, 0); + \
Ptr<MgByteReader> tile5_7 = renderSvc->RenderTileFromMetaTile(map, metaTile, 1, 1);
tile4_6->ToFile(GetPath(L"../UnitTestFiles/RenderTile_4_6_Metatiled", \
imageFormat, extension));
_______________________________________________
mapguide-commits mailing list
mapguide-commits@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/mapguide-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic