[mapguide-commits] r6084 - in trunk/MgDev: Common/MdfModel Common/MdfParser Server/src/Services/Profiling

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Aug 22 00:56:16 EDT 2011


Author: liuar
Date: 2011-08-21 21:56:16 -0700 (Sun, 21 Aug 2011)
New Revision: 6084

Added:
   trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.cpp
   trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.h
   trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.cpp
   trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.h
   trunk/MgDev/Common/MdfModel/ProfileRenderLayersResult.cpp
   trunk/MgDev/Common/MdfModel/ProfileRenderLayersResult.h
   trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.cpp
   trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.h
   trunk/MgDev/Common/MdfModel/ProfileRenderSelectionResult.cpp
   trunk/MgDev/Common/MdfModel/ProfileRenderSelectionResult.h
   trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.cpp
   trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.h
   trunk/MgDev/Common/MdfModel/ProfileRenderWatermarksResult.cpp
   trunk/MgDev/Common/MdfModel/ProfileRenderWatermarksResult.h
   trunk/MgDev/Common/MdfModel/ProfileResult.cpp
   trunk/MgDev/Common/MdfModel/ProfileResult.h
   trunk/MgDev/Common/MdfModel/ScaleRange.cpp
   trunk/MgDev/Common/MdfModel/ScaleRange.h
   trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.cpp
   trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.h
   trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.cpp
   trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.h
   trunk/MgDev/Common/MdfParser/IOProfileRenderLayersResult.cpp
   trunk/MgDev/Common/MdfParser/IOProfileRenderLayersResult.h
   trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.cpp
   trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.h
   trunk/MgDev/Common/MdfParser/IOProfileRenderSelectionResult.cpp
   trunk/MgDev/Common/MdfParser/IOProfileRenderSelectionResult.h
   trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.cpp
   trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.h
   trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarksResult.cpp
   trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarksResult.h
   trunk/MgDev/Common/MdfParser/IOProfileResult.cpp
   trunk/MgDev/Common/MdfParser/IOProfileResult.h
   trunk/MgDev/Common/MdfParser/IOScaleRange.cpp
   trunk/MgDev/Common/MdfParser/IOScaleRange.h
Modified:
   trunk/MgDev/Common/MdfModel/Makefile.am
   trunk/MgDev/Common/MdfModel/MdfModel.vcproj
   trunk/MgDev/Common/MdfModel/MdfModel.vcxproj
   trunk/MgDev/Common/MdfModel/MdfModel.vcxproj.filters
   trunk/MgDev/Common/MdfParser/Makefile.am
   trunk/MgDev/Common/MdfParser/MdfParser.vcproj
   trunk/MgDev/Common/MdfParser/MdfParser.vcxproj
   trunk/MgDev/Common/MdfParser/MdfParser.vcxproj.filters
   trunk/MgDev/Server/src/Services/Profiling/ServerProfilingService.vcxproj
Log:
The RFC 110 Profiling Service (IV). 

Implement MdfModel and MdfParser (serialize only) for profile results.


Modified: trunk/MgDev/Common/MdfModel/Makefile.am
===================================================================
--- trunk/MgDev/Common/MdfModel/Makefile.am	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Common/MdfModel/Makefile.am	2011-08-22 04:56:16 UTC (rev 6084)
@@ -21,6 +21,15 @@
   PrintLayout/PropertyMapping.cpp \
   PrintLayout/StylizationConfiguration.cpp \
   PrintLayout/Thickness.cpp \
+  ProfileResult/ProfileRenderLabelsResult.cpp \
+  ProfileResult/ProfileRenderLayerResult.cpp \
+  ProfileResult/ProfileRenderLayersResult.cpp \
+  ProfileResult/ProfileRenderMapResult.cpp \
+  ProfileResult/ProfileRenderSelectionResult.cpp \
+  ProfileResult/ProfileRenderWatermarkResult.cpp \
+  ProfileResult/ProfileRenderWatermarksResult.cpp \
+  ProfileResult/ProfileResult.cpp \
+  ProfileResult/ScaleRange.cpp \
   AreaRule.cpp \
   AreaSymbolization2D.cpp \
   AreaTypeStyle.cpp \
@@ -124,6 +133,15 @@
   PrintLayout/PropertyMapping.h \
   PrintLayout/StylizationConfiguration.h \
   PrintLayout/Thickness.h \
+  ProfileResult/ProfileRenderLabelsResult.h \
+  ProfileResult/ProfileRenderLayerResult.h \
+  ProfileResult/ProfileRenderLayersResult.h \
+  ProfileResult/ProfileRenderMapResult.h \
+  ProfileResult/ProfileRenderSelectionResult.h \
+  ProfileResult/ProfileRenderWatermarkResult.h \
+  ProfileResult/ProfileRenderWatermarksResult.h \
+  ProfileResult/ProfileResult.h \
+  ProfileResult/ScaleRange.h \
   AreaRule.h \
   AreaSymbolization2D.h \
   AreaTypeStyle.h \

Modified: trunk/MgDev/Common/MdfModel/MdfModel.vcproj
===================================================================
--- trunk/MgDev/Common/MdfModel/MdfModel.vcproj	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Common/MdfModel/MdfModel.vcproj	2011-08-22 04:56:16 UTC (rev 6084)
@@ -1181,6 +1181,82 @@
 				>
 			</File>
 		</Filter>
+		<Filter
+			Name="ProfileResult"
+			>
+			<File
+				RelativePath=".\ProfileRenderLabelsResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderLabelsResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderLayerResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderLayerResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderLayersResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderLayersResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderMapResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderMapResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderSelectionResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderSelectionResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderWatermarkResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderWatermarkResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderWatermarksResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileRenderWatermarksResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ProfileResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ScaleRange.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ScaleRange.h"
+				>
+			</File>
+		</Filter>
 		<File
 			RelativePath=".\Base64.h"
 			>

Modified: trunk/MgDev/Common/MdfModel/MdfModel.vcxproj
===================================================================
--- trunk/MgDev/Common/MdfModel/MdfModel.vcxproj	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Common/MdfModel/MdfModel.vcxproj	2011-08-22 04:56:16 UTC (rev 6084)
@@ -200,7 +200,16 @@
     <ClCompile Include="Parameter.cpp" />
     <ClCompile Include="Path.cpp" />
     <ClCompile Include="PointUsage.cpp" />
+    <ClCompile Include="ProfileRenderLabelsResult.cpp" />
+    <ClCompile Include="ProfileRenderLayerResult.cpp" />
+    <ClCompile Include="ProfileRenderLayersResult.cpp" />
+    <ClCompile Include="ProfileRenderMapResult.cpp" />
+    <ClCompile Include="ProfileRenderSelectionResult.cpp" />
+    <ClCompile Include="ProfileRenderWatermarkResult.cpp" />
+    <ClCompile Include="ProfileRenderWatermarksResult.cpp" />
+    <ClCompile Include="ProfileResult.cpp" />
     <ClCompile Include="ResizeBox.cpp" />
+    <ClCompile Include="ScaleRange.cpp" />
     <ClCompile Include="SimpleSymbol.cpp" />
     <ClCompile Include="SimpleSymbolDefinition.cpp" />
     <ClCompile Include="SymbolDefinition.cpp" />
@@ -305,7 +314,16 @@
     <ClInclude Include="Parameter.h" />
     <ClInclude Include="Path.h" />
     <ClInclude Include="PointUsage.h" />
+    <ClInclude Include="ProfileRenderLayerResult.h" />
+    <ClInclude Include="ProfileRenderLayersResult.h" />
+    <ClInclude Include="ProfileRenderMapResult.h" />
+    <ClInclude Include="ProfileRenderLabelsResult.h" />
+    <ClInclude Include="ProfileRenderSelectionResult.h" />
+    <ClInclude Include="ProfileRenderWatermarkResult.h" />
+    <ClInclude Include="ProfileRenderWatermarksResult.h" />
+    <ClInclude Include="ProfileResult.h" />
     <ClInclude Include="ResizeBox.h" />
+    <ClInclude Include="ScaleRange.h" />
     <ClInclude Include="SimpleSymbol.h" />
     <ClInclude Include="SimpleSymbolDefinition.h" />
     <ClInclude Include="SymbolDefinition.h" />

Modified: trunk/MgDev/Common/MdfModel/MdfModel.vcxproj.filters
===================================================================
--- trunk/MgDev/Common/MdfModel/MdfModel.vcxproj.filters	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Common/MdfModel/MdfModel.vcxproj.filters	2011-08-22 04:56:16 UTC (rev 6084)
@@ -37,6 +37,9 @@
     <Filter Include="WatermarkDefinition">
       <UniqueIdentifier>{e53f17be-958d-40bb-882d-aa1ef9f538bc}</UniqueIdentifier>
     </Filter>
+    <Filter Include="ProfileResult">
+      <UniqueIdentifier>{e2817956-7222-40f0-93fd-d3fc5ad63418}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="AreaUsage.cpp">
@@ -322,6 +325,33 @@
     <ClCompile Include="NameStringPair.cpp" />
     <ClCompile Include="UnicodeString.cpp" />
     <ClCompile Include="Version.cpp" />
+    <ClCompile Include="ScaleRange.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="ProfileRenderLabelsResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="ProfileRenderLayerResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="ProfileRenderLayersResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="ProfileRenderMapResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="ProfileRenderSelectionResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="ProfileRenderWatermarkResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="ProfileRenderWatermarksResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="ProfileResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="AreaUsage.h">
@@ -623,6 +653,33 @@
     <ClInclude Include="URLData.h">
       <Filter>VectorLayer</Filter>
     </ClInclude>
+    <ClInclude Include="ProfileResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="ProfileRenderMapResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="ProfileRenderLayersResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="ProfileRenderLayerResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="ProfileRenderSelectionResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="ProfileRenderWatermarksResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="ProfileRenderWatermarkResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="ScaleRange.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="ProfileRenderLabelsResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="MdfModel.rc" />

Added: trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,72 @@
+//
+//  Copyright (C) 2010-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ProfileRenderLayersResult class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ProfileRenderLabelsResult.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the ProfileRenderLabelsResult class.
+//-------------------------------------------------------------------------
+ProfileRenderLabelsResult::ProfileRenderLabelsResult()
+{
+    this->m_dRenderTime = 0.0;
+
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor. Release any dynamically allocated resources.
+//-------------------------------------------------------------------------
+ProfileRenderLabelsResult::~ProfileRenderLabelsResult()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the RenderTime property.
+//          
+// RETURNS: The time of stylizing all labels in the map.
+//-------------------------------------------------------------------------
+const double ProfileRenderLabelsResult::GetRenderTime() const
+{
+    return this->m_dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the RenderTime property.
+// PARAMETERS:
+//      Input:
+//          dRenderTime - The time of stylizing all labels in the map.
+//-------------------------------------------------------------------------
+void ProfileRenderLabelsResult::SetRenderTime(const double& dRenderTime)
+{
+    this->m_dRenderTime = dRenderTime;
+}
+
+#ifdef _WIN32
+#ifdef _DEBUG
+int ProfileRenderLabelsResult::DumpMemoryLeaks()
+{
+    return _CrtDumpMemoryLeaks();
+}
+#endif
+#endif

Added: trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,63 @@
+//
+//  Copyright (C) 2010-2011 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 PROFILERENDERLABELSRESULT_H_
+#define PROFILERENDERLABELSRESULT_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // The ProfileRenderLabelsResult is the profiling result which records 
+    // information during labels rendering procsses.
+    //------------------------------------------------------------------------
+    class MDFMODEL_API ProfileRenderLabelsResult : public MdfRootObject
+    {
+    public:
+        // Construction, destruction, initialization.
+        ProfileRenderLabelsResult();
+        virtual ~ProfileRenderLabelsResult();
+
+        // Operations
+
+        // Property: RenderTime
+        // The time of stylizing labels in the map.
+        const double GetRenderTime() const;
+        void SetRenderTime(const double& dRenderTime);
+
+//#ifdef _WIN32
+#if _DEBUG
+        // for memory leak testing
+        static int DumpMemoryLeaks();
+#endif
+//#endif
+
+    private:
+        // Hidden ProfileResult copy constructor and assignment operator.
+        ProfileRenderLabelsResult(const ProfileRenderLabelsResult&);
+        ProfileRenderLabelsResult& operator=(const ProfileRenderLabelsResult&);
+
+        // Data members
+        // See corresponding properties for descriptions
+        double m_dRenderTime;
+    };
+
+END_NAMESPACE_MDFMODEL
+#endif // PROFILERENDERLABELSRESULT_H_

Added: trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,247 @@
+//
+//  Copyright (C) 2010-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ProfileRenderLayerResult class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ProfileRenderLayerResult.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the ProfileRenderLayerResult class.
+//-------------------------------------------------------------------------
+ProfileRenderLayerResult::ProfileRenderLayerResult()
+{
+    this->m_dRenderTime = 0.0;
+    this->m_scaleRange = NULL;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor. Release any dynamically allocated resources.
+//-------------------------------------------------------------------------
+ProfileRenderLayerResult::~ProfileRenderLayerResult()
+{
+    delete this->m_scaleRange;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ResourceId property.
+//          
+// RETURNS: The resource identifier of the layer.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderLayerResult::GetResourceId() const
+{
+    return this->m_strResourceId;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the ResourceId property.
+// PARAMETERS:
+//      Input:
+//          pstrResourceId - ResourceId of layer
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::SetResourceId(const MdfString& pstrResourceId)
+{
+    this->m_strResourceId = pstrResourceId;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the LayerName property.
+//          
+// RETURNS: The name of the layer.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderLayerResult::GetLayerName() const
+{
+    return this->m_strLayerName;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the LayerName property.
+// PARAMETERS:
+//      Input:
+//          pstrLayerName - The name of the layer.
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::SetLayerName(const MdfString& pstrLayerName)
+{
+    this->m_strLayerName = pstrLayerName;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the LayerType property.
+//          
+// RETURNS: The type (vector or raster) of the layer.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderLayerResult::GetLayerType() const
+{
+    return this->m_strLayerType;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the LayerType property.
+// PARAMETERS:
+//      Input:
+//          pstrLayerType - The type (vector or raster) of the layer.
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::SetLayerType(const MdfString& pstrLayerType)
+{
+    this->m_strLayerType = pstrLayerType;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the FeatureClassName property.
+//          
+// RETURNS: The name of the feature class referenced by the layer.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderLayerResult::GetFeatureClassName() const
+{
+    return this->m_strFeatureClassName;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the FeatureClassName property.
+// PARAMETERS:
+//      Input:
+//          pstrLayerName - The name of the feature class referenced by the layer.
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::SetFeatureClassName(const MdfString& pstrFeatureClassName)
+{
+    this->m_strFeatureClassName = pstrFeatureClassName;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the CoordinateSystem property.
+//          
+// RETURNS: The coordinate system as WKT used by the layer.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderLayerResult::GetCoordinateSystem() const
+{
+    return this->m_strCoordinateSystem;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the CoordinateSystem property.
+// PARAMETERS:
+//      Input:
+//          pstrCoordinateSystem - The coordinate system as WKT used by the layer.
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::SetCoordinateSystem(const MdfString& pstrCoordinateSystem)
+{
+    this->m_strCoordinateSystem = pstrCoordinateSystem;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ScaleRange property.
+//          
+// RETURNS: The current scale range of the layer in the map.
+//-------------------------------------------------------------------------
+const ScaleRange* ProfileRenderLayerResult::GetScaleRange() const
+{
+    return this->m_scaleRange;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ScaleRange property.
+//          
+// RETURNS: The current scale range of the layer in the map.
+//-------------------------------------------------------------------------
+ScaleRange* ProfileRenderLayerResult::GetScaleRange()
+{
+    return this->m_scaleRange;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ScaleRange property.
+// PARAMETERS:
+//        Input:
+//          pScaleRange - The current scale range of the layer in the map.
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::AdoptScaleRange(ScaleRange* pScaleRange)
+{
+    if (this->m_scaleRange != pScaleRange)
+    {
+        delete this->m_scaleRange;
+        this->m_scaleRange = pScaleRange;
+    }
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ScaleRange property.
+//
+// RETURNS: The pointer to the orphaned ScaleRange object. It may be NULL.
+//-------------------------------------------------------------------------
+ScaleRange* ProfileRenderLayerResult::OrphanScaleRange()
+{
+    ScaleRange* pRet = this->m_scaleRange;
+    this->m_scaleRange = NULL;
+    return pRet;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the Filter property.
+//          
+// RETURNS: A boolean FDO expression that specifies which features to return.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderLayerResult::GetFilter() const
+{
+    return this->m_strFilter;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the Filter property.
+// PARAMETERS:
+//      Input:
+//          pstrFilter - A boolean FDO expression that specifies which features to return.
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::SetFilter(const MdfString& pstrFilter)
+{
+    this->m_strFilter = pstrFilter;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the RenderTime property.
+//          
+// RETURNS: The time of stylizing the layer in the map.
+//-------------------------------------------------------------------------
+const double ProfileRenderLayerResult::GetRenderTime() const
+{
+    return this->m_dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the RenderTime property.
+// PARAMETERS:
+//      Input:
+//          dRenderTime - The time of stylizing the layer in the map.
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::SetRenderTime(const double& dRenderTime)
+{
+    this->m_dRenderTime = dRenderTime;
+}
+
+
+#ifdef _WIN32
+#ifdef _DEBUG
+int ProfileRenderLayerResult::DumpMemoryLeaks()
+{
+    return _CrtDumpMemoryLeaks();
+}
+#endif
+#endif

Added: trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,111 @@
+//
+//  Copyright (C) 2010-2011 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 PROFILERENDERLAYERRESULT_H_
+#define PROFILERENDERLAYERRESULT_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+#include "ScaleRange.h"
+#include "MdfOwnerCollection.h"
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // The ProfileRenderLayerResult is a Profiling result which records information 
+    // during a particular layer rendering procsses.
+    //------------------------------------------------------------------------
+    class MDFMODEL_API ProfileRenderLayerResult : public MdfRootObject
+    {
+    public:
+        // Construction, destruction, initialization.
+        ProfileRenderLayerResult();
+        virtual ~ProfileRenderLayerResult();
+
+        // Operations
+
+        // Property: ResourceID
+        // The resource identifier of the layer.
+        const MdfString& GetResourceId() const;
+        void SetResourceId(const MdfString& pstrResourceId);
+
+        // Property: LayerName
+        // The name of the layer.
+        const MdfString& GetLayerName() const;
+        void SetLayerName(const MdfString& pstrLayerName);
+
+        // Property: LayerType
+        // The type (vector or raster) of the layer.
+        const MdfString& GetLayerType() const;
+        void SetLayerType(const MdfString& pstrLayerType);
+
+        // Property: FeatureClassName
+        // The name of the feature class referenced by the layer.
+        const MdfString& GetFeatureClassName() const;
+        void SetFeatureClassName(const MdfString& pstrFeatureClassName);
+
+        // Property: CoordinateSystem
+        // The coordinate system as WKT used by the layer.
+        const MdfString& GetCoordinateSystem() const;
+        void SetCoordinateSystem(const MdfString& pstrCoordinateSystem);
+
+        // Property: ScaleRange
+        // The current scale range of the layer in the map.
+        const ScaleRange* GetScaleRange() const;
+        ScaleRange* GetScaleRange();
+        void AdoptScaleRange(ScaleRange* pScaleRange);
+        ScaleRange* OrphanScaleRange();
+
+        // Property: Filter
+        // A boolean FDO expression that specifies which features to return.  No filter means pass all features through.
+        const MdfString& GetFilter() const;
+        void SetFilter(const MdfString& pstrFilter);
+
+        // Property: RenderTime
+        // The time of stylizing a paricular layer in the map.
+        const double GetRenderTime() const;
+        void SetRenderTime(const double& dRenderTime);
+
+//#ifdef _WIN32
+#if _DEBUG
+        // for memory leak testing
+        static int DumpMemoryLeaks();
+#endif
+//#endif
+
+    private:
+        // Hidden ProfileRenderLayersResult copy constructor and assignment operator.
+        ProfileRenderLayerResult(const ProfileRenderLayerResult&);
+        ProfileRenderLayerResult& operator=(const ProfileRenderLayerResult&);
+
+        // Data members
+        // See corresponding properties for descriptions
+        MdfString m_strResourceId;
+        MdfString m_strLayerName;
+        MdfString m_strLayerType;
+        MdfString m_strFeatureClassName;
+        MdfString m_strCoordinateSystem;
+        ScaleRange* m_scaleRange;
+        MdfString m_strFilter;
+        double m_dRenderTime;
+    };
+
+    typedef MdfOwnerCollection<ProfileRenderLayerResult> ProfileRenderLayerResultCollection;
+    EXPIMP_TEMPLATE template class MDFMODEL_API MdfOwnerCollection<ProfileRenderLayerResult>;
+END_NAMESPACE_MDFMODEL
+#endif // PROFILERENDERLAYERSRESULT_H_

Added: trunk/MgDev/Common/MdfModel/ProfileRenderLayersResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLayersResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLayersResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,82 @@
+//
+//  Copyright (C) 2010-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ProfileRenderLayersResult class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ProfileRenderLayersResult.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the ProfileRenderLayersResult class.
+//-------------------------------------------------------------------------
+ProfileRenderLayersResult::ProfileRenderLayersResult()
+{
+    this->m_dRenderTime = 0.0;
+
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor. Release any dynamically allocated resources.
+//-------------------------------------------------------------------------
+ProfileRenderLayersResult::~ProfileRenderLayersResult()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the RenderTime property.
+//          
+// RETURNS: The time of stylizing all layers in the map.
+//-------------------------------------------------------------------------
+const double ProfileRenderLayersResult::GetRenderTime() const
+{
+    return this->m_dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the RenderTime property.
+// PARAMETERS:
+//      Input:
+//          dRenderTime - The time of stylizing all layers in the map.
+//-------------------------------------------------------------------------
+void ProfileRenderLayersResult::SetRenderTime(const double& dRenderTime)
+{
+    this->m_dRenderTime = dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLayerResults property.
+//          
+// RETURNS: A collection of ProfileRenderLayerResult.
+//-------------------------------------------------------------------------
+ProfileRenderLayerResultCollection* ProfileRenderLayersResult::GetProfileRenderLayerResults()
+{
+    return &this->m_profileRenderLayerResults;
+}
+
+#ifdef _WIN32
+#ifdef _DEBUG
+int ProfileRenderLayersResult::DumpMemoryLeaks()
+{
+    return _CrtDumpMemoryLeaks();
+}
+#endif
+#endif

Added: trunk/MgDev/Common/MdfModel/ProfileRenderLayersResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLayersResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLayersResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,70 @@
+//
+//  Copyright (C) 2010-2011 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 PROFILERENDERLAYERSRESULT_H_
+#define PROFILERENDERLAYERSRESULT_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+#include "ProfileRenderLayerResult.h"
+
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // The ProfileRenderLayersResult is a profiling result which records information 
+    // during layers rendering procsses.
+    //------------------------------------------------------------------------
+    class MDFMODEL_API ProfileRenderLayersResult : public MdfRootObject
+    {
+    public:
+        // Construction, destruction, initialization.
+        ProfileRenderLayersResult();
+        virtual ~ProfileRenderLayersResult();
+
+        // Operations
+
+        // Property: RenderTime
+        // The time of stylizing all layers in the map.
+        const double GetRenderTime() const;
+        void SetRenderTime(const double& dRenderTime);
+
+        // Property: ProfileRenderLayerResults
+        // A collection of ProfileRenderLayerResult.
+        ProfileRenderLayerResultCollection* GetProfileRenderLayerResults();
+
+//#ifdef _WIN32
+#if _DEBUG
+        // for memory leak testing
+        static int DumpMemoryLeaks();
+#endif
+//#endif
+
+    private:
+        // Hidden ProfileRenderLayersResult copy constructor and assignment operator.
+        ProfileRenderLayersResult(const ProfileRenderLayersResult&);
+        ProfileRenderLayersResult& operator=(const ProfileRenderLayersResult&);
+
+        // Data members
+        // See corresponding properties for descriptions
+        double m_dRenderTime;
+        ProfileRenderLayerResultCollection m_profileRenderLayerResults;
+    };
+
+END_NAMESPACE_MDFMODEL
+#endif // PROFILERENDERLAYERSRESULT_H_

Added: trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,432 @@
+//
+//  Copyright (C) 2010-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ProfileRenderMapResult class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ProfileRenderMapResult.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the ProfileRenderMapResult class.
+//-------------------------------------------------------------------------
+ProfileRenderMapResult::ProfileRenderMapResult()
+: m_boxExtents(0.0, 0.0)
+, m_dScale(0.0)
+, m_dRenderTime(0.0)
+, m_dCreateImageTime(0.0)
+{
+    this->m_profileRenderLayersResult = NULL;
+    this->m_profileRenderSelectionResult = NULL;
+    this->m_profileRenderWatermarksResult = NULL;
+    this->m_profileRenderLabelsResult = NULL;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor. Release any dynamically allocated resources.
+//-------------------------------------------------------------------------
+ProfileRenderMapResult::~ProfileRenderMapResult()
+{
+    delete this->m_profileRenderLayersResult;
+    delete this->m_profileRenderSelectionResult;
+    delete this->m_profileRenderWatermarksResult;
+    delete this->m_profileRenderLabelsResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ResourceId property.
+//          
+// RETURNS: The resource identifier of the map.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderMapResult::GetResourceId() const
+{
+    return this->m_strResourceId;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the ResourceId property.
+// PARAMETERS:
+//      Input:
+//          pstrResourceId - ResourceId of map
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetResourceId(const MdfString& pstrResourceId)
+{
+    this->m_strResourceId = pstrResourceId;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the CoordinateSystem property.
+//          
+// RETURNS: The coordinate system as WKT used by the map.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderMapResult::GetCoordinateSystem() const
+{
+    return this->m_strCoordinateSystem;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the CoordinateSystem property.
+// PARAMETERS:
+//      Input:
+//          pstrCoordinateSystem - The coordinate system as WKT used by the map.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetCoordinateSystem(const MdfString& pstrCoordinateSystem)
+{
+    this->m_strCoordinateSystem = pstrCoordinateSystem;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the extents property.
+// RETURNS: A bounding box around the area of the map.
+//-------------------------------------------------------------------------
+const Box2D& ProfileRenderMapResult::GetExtents() const
+{
+    return this->m_boxExtents;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the extents property.
+// PARAMETERS:
+//     Input:
+//         boxExtents - A bounding box around the area of the map.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetExtents(const Box2D& boxExtents)
+{
+    this->m_boxExtents = boxExtents;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the Scale property.
+//          
+// RETURNS: The initial display scale of the map.
+//-------------------------------------------------------------------------
+const double ProfileRenderMapResult::GetScale() const
+{
+    return this->m_dScale;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the Scale property.
+// PARAMETERS:
+//      Input:
+//          pScale- The initial display scale of the map.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetScale(const double& dScale)
+{
+    this->m_dScale = dScale;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the LayerCount property.
+//          
+// RETURNS: The number of layers in the map.
+//-------------------------------------------------------------------------
+const int ProfileRenderMapResult::GetLayerCount() const
+{
+    return this->m_iLayerCount;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the LayerCount property.
+// PARAMETERS:
+//      Input:
+//          pScale- The number of layers in the map.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetLayerCount(const int& iLayerCount)
+{
+    this->m_iLayerCount = iLayerCount;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ImageFormat property.
+//          
+// RETURNS: The format of the map image.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderMapResult::GetImageFormat() const
+{
+    return this->m_strImageFormat;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the ImageFormat property.
+// PARAMETERS:
+//      Input:
+//          pstrImageFormat - The format of the map image.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetImageFormat(const MdfString& pstrImageFormat)
+{
+    this->m_strImageFormat = pstrImageFormat;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the RendererType property.
+//          
+// RETURNS: The renderer used in the image rendering process.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderMapResult::GetRendererType() const
+{
+    return this->m_strRendererType;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the RendererType property.
+// PARAMETERS:
+//      Input:
+//          pstrRendererType - The renderer used in the image rendering process.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetRendererType(const MdfString& pstrRendererType)
+{
+    this->m_strRendererType = pstrRendererType;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the RenderTime property.
+//          
+// RETURNS: The total render time to generate the map image.
+//-------------------------------------------------------------------------
+const double ProfileRenderMapResult::GetRenderTime() const
+{
+    return this->m_dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the RenderTime property.
+// PARAMETERS:
+//      Input:
+//          dRenderTime - The total render time to generate the map image.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetRenderTime(const double& dRenderTime)
+{
+    this->m_dRenderTime = dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLayersResult property.
+// RETURNS: The pointer of ProfileRenderLayersResult.
+//-------------------------------------------------------------------------
+const ProfileRenderLayersResult* ProfileRenderMapResult::GetProfileRenderLayersResult() const
+{
+    return this->m_profileRenderLayersResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLayersResult property.
+// RETURNS: The pointer of ProfileRenderLayersResult.
+//-------------------------------------------------------------------------
+ProfileRenderLayersResult* ProfileRenderMapResult::GetProfileRenderLayersResult()
+{
+    return this->m_profileRenderLayersResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLayersResult property.
+// PARAMETERS:
+//        Input:
+//          pProfileRenderLayersResult - Adopted ProfileRenderLayersResult object that is created on the heap.
+//                                         It may be NULL.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::AdoptProfileRenderLayersResult(ProfileRenderLayersResult* pProfileRenderLayersResult)
+{
+    if (this->m_profileRenderLayersResult != pProfileRenderLayersResult)
+    {
+        delete this->m_profileRenderLayersResult;
+        this->m_profileRenderLayersResult = pProfileRenderLayersResult;
+    }
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLayersResult property.
+//
+// RETURNS: The pointer to the orphaned ProfileRenderLayersResult object. It may be NULL.
+//-------------------------------------------------------------------------
+ProfileRenderLayersResult* ProfileRenderMapResult::OrphanProfileRenderLayersResult()
+{
+    ProfileRenderLayersResult* pRet = this->m_profileRenderLayersResult;
+    this->m_profileRenderLayersResult = NULL;
+    return pRet;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderSelectionResult property.
+// RETURNS: The pointer of ProfileRenderSelectionResult.
+//-------------------------------------------------------------------------
+const ProfileRenderSelectionResult* ProfileRenderMapResult::GetProfileRenderSelectionResult() const
+{
+    return this->m_profileRenderSelectionResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderSelectionResult property.
+// RETURNS: The pointer of ProfileRenderSelectionResult.
+//-------------------------------------------------------------------------
+ProfileRenderSelectionResult* ProfileRenderMapResult::GetProfileRenderSelectionResult()
+{
+    return this->m_profileRenderSelectionResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderSelectionResult property.
+// PARAMETERS:
+//        Input:
+//          pProfileRenderSelectionResult - Adopted ProfileRenderSelectionResult object that is created on the heap.
+//                                         It may be NULL.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::AdoptProfileRenderSelectionResult(ProfileRenderSelectionResult* pProfileRenderSelectionResult)
+{
+    if (this->m_profileRenderSelectionResult != pProfileRenderSelectionResult)
+    {
+        delete this->m_profileRenderSelectionResult;
+        this->m_profileRenderSelectionResult = pProfileRenderSelectionResult;
+    }
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderSelectionResult property.
+//
+// RETURNS: The pointer to the orphaned ProfileRenderSelectionResult object. It may be NULL.
+//-------------------------------------------------------------------------
+ProfileRenderSelectionResult* ProfileRenderMapResult::OrphanProfileRenderSelectionResult()
+{
+    ProfileRenderSelectionResult* pRet = this->m_profileRenderSelectionResult;
+    this->m_profileRenderSelectionResult = NULL;
+    return pRet;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderWatermarksResult property.
+// RETURNS: The pointer of ProfileRenderWatermarksResult.
+//-------------------------------------------------------------------------
+const ProfileRenderWatermarksResult* ProfileRenderMapResult::GetProfileRenderWatermarksResult() const
+{
+    return this->m_profileRenderWatermarksResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderWatermarksResult property.
+// RETURNS: The pointer of ProfileRenderWatermarksResult.
+//-------------------------------------------------------------------------
+ProfileRenderWatermarksResult* ProfileRenderMapResult::GetProfileRenderWatermarksResult()
+{
+    return this->m_profileRenderWatermarksResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderWatermarksResult property.
+// PARAMETERS:
+//        Input:
+//          pProfileRenderWatermarksResult - Adopted ProfileRenderWatermarksResult object that is created on the heap.
+//                                         It may be NULL.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::AdoptProfileRenderWatermarksResult(ProfileRenderWatermarksResult* pProfileRenderWatermarksResult)
+{
+    if (this->m_profileRenderWatermarksResult != pProfileRenderWatermarksResult)
+    {
+        delete this->m_profileRenderWatermarksResult;
+        this->m_profileRenderWatermarksResult = pProfileRenderWatermarksResult;
+    }
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderWatermarksResult property.
+//
+// RETURNS: The pointer to the orphaned ProfileRenderWatermarksResult object. It may be NULL.
+//-------------------------------------------------------------------------
+ProfileRenderWatermarksResult* ProfileRenderMapResult::OrphanProfileRenderWatermarksResult()
+{
+    ProfileRenderWatermarksResult* pRet = this->m_profileRenderWatermarksResult;
+    this->m_profileRenderWatermarksResult = NULL;
+    return pRet;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLabelsResult property.
+// RETURNS: The pointer of ProfileRenderLabelsResult.
+//-------------------------------------------------------------------------
+const ProfileRenderLabelsResult* ProfileRenderMapResult::GetProfileRenderLabelsResult() const
+{
+    return this->m_profileRenderLabelsResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLabelsResult property.
+// RETURNS: The pointer of ProfileRenderLabelsResult.
+//-------------------------------------------------------------------------
+ProfileRenderLabelsResult* ProfileRenderMapResult::GetProfileRenderLabelsResult()
+{
+    return this->m_profileRenderLabelsResult;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLabelsResult property.
+// PARAMETERS:
+//        Input:
+//          pProfileRenderLabelsResult - Adopted ProfileRenderLabelsResult object that is created on the heap.
+//                                         It may be NULL.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::AdoptProfileRenderLabelsResult(ProfileRenderLabelsResult* pProfileRenderLabelsResult)
+{
+    if (this->m_profileRenderLabelsResult != pProfileRenderLabelsResult)
+    {
+        delete this->m_profileRenderLabelsResult;
+        this->m_profileRenderLabelsResult = pProfileRenderLabelsResult;
+    }
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLabelsResult property.
+//
+// RETURNS: The pointer to the orphaned ProfileRenderLabelsResult object. It may be NULL.
+//-------------------------------------------------------------------------
+ProfileRenderLabelsResult* ProfileRenderMapResult::OrphanProfileRenderLabelsResult()
+{
+    ProfileRenderLabelsResult* pRet = this->m_profileRenderLabelsResult;
+    this->m_profileRenderLabelsResult = NULL;
+    return pRet;
+}
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the CreateImageTime property.
+//          
+// RETURNS: The time of rendering stylized map to an image.
+//-------------------------------------------------------------------------
+const double ProfileRenderMapResult::GetCreateImageTime() const
+{
+    return this->m_dCreateImageTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the CreateImageTime property.
+// PARAMETERS:
+//      Input:
+//          dCreateImageTime - The time of rendering stylized map to an image.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetCreateImageTime(const double& dCreateImageTime)
+{
+    this->m_dCreateImageTime = dCreateImageTime;
+}
+
+#ifdef _WIN32
+#ifdef _DEBUG
+int ProfileRenderMapResult::DumpMemoryLeaks()
+{
+    return _CrtDumpMemoryLeaks();
+}
+#endif
+#endif

Added: trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,150 @@
+//
+//  Copyright (C) 2010-2011 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 PROFILERENDERMAPRESULT_H_
+#define PROFILERENDERMAPRESULT_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+#include "ProfileResult.h"
+#include "ProfileRenderLayersResult.h"
+#include "ProfileRenderSelectionResult.h"
+#include "ProfileRenderWatermarksResult.h"
+#include "ProfileRenderLabelsResult.h"
+#include "Box2D.h"
+
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // The ProfileRenderMapResult class is one concrete implementation of ProfileResult.
+    // It's a profiling result which records information during RenderMap or RenderDynamicOverlay procsses.
+    //------------------------------------------------------------------------
+    class MDFMODEL_API ProfileRenderMapResult : public ProfileResult
+    {
+    public:
+        // Construction, destruction, initialization.
+        ProfileRenderMapResult();
+        virtual ~ProfileRenderMapResult();
+
+        // Operations
+
+        // Property: ResourceID
+        // The resource identifier of the map.
+        const MdfString& GetResourceId() const;
+        void SetResourceId(const MdfString& pstrResourceId);
+
+        // Property: CoordinateSystem
+        // The coordinate system as WKT used by the map.
+        const MdfString& GetCoordinateSystem() const;
+        void SetCoordinateSystem(const MdfString& pstrCoordinateSystem);
+
+        // Property: Extents
+        // A bounding box around the area of the map.
+        const Box2D& GetExtents() const;
+        void SetExtents(const Box2D& boxExtents);
+
+        // Property: LayerCount
+        // The number of layers in the map.
+        const int GetLayerCount() const;
+        void SetLayerCount(const int& iLayerCount);
+
+        // Property: LayerCount
+        // The initial display scale of the map.
+        const double GetScale() const;
+        void SetScale(const double& dScale);
+
+        // Property: ImageFormat
+        // The format of the map image.
+        const MdfString& GetImageFormat() const;
+        void SetImageFormat(const MdfString& pstrImageFormat);
+
+        // Property: RendererType
+        // The renderer used in the image rendering process.
+        const MdfString& GetRendererType() const;
+        void SetRendererType(const MdfString& pstrRendererType);
+
+        // Property: RenderTime
+        // The total render time to generate the map image.
+        const double GetRenderTime() const;
+        void SetRenderTime(const double& dRenderTime);
+
+        // Property: ProfileRenderLayersResult
+        // Profiling result which records information during layers rendering procsses.
+        const  ProfileRenderLayersResult* GetProfileRenderLayersResult() const;
+        ProfileRenderLayersResult* GetProfileRenderLayersResult();
+        void AdoptProfileRenderLayersResult(ProfileRenderLayersResult* pProfileRenderLayersResult);
+        ProfileRenderLayersResult* OrphanProfileRenderLayersResult();
+
+        // Property: ProfileRenderSelectionResult
+        // Profiling result which records information during selection rendering procsses.
+        const  ProfileRenderSelectionResult* GetProfileRenderSelectionResult() const;
+        ProfileRenderSelectionResult* GetProfileRenderSelectionResult();
+        void AdoptProfileRenderSelectionResult(ProfileRenderSelectionResult* pProfileRenderSelectionResult);
+        ProfileRenderSelectionResult* OrphanProfileRenderSelectionResult();
+
+        // Property: ProfileRenderWatermarksResult
+        // Profiling result which records information during watermarks rendering procsses.
+        const  ProfileRenderWatermarksResult* GetProfileRenderWatermarksResult() const;
+        ProfileRenderWatermarksResult* GetProfileRenderWatermarksResult();
+        void AdoptProfileRenderWatermarksResult(ProfileRenderWatermarksResult* pProfileRenderWatermarksResult);
+        ProfileRenderWatermarksResult* OrphanProfileRenderWatermarksResult();
+
+        // Property: ProfileRenderLabelsResult
+        // Profiling result which records information during labels rendering procsses.
+        const  ProfileRenderLabelsResult* GetProfileRenderLabelsResult() const;
+        ProfileRenderLabelsResult* GetProfileRenderLabelsResult();
+        void AdoptProfileRenderLabelsResult(ProfileRenderLabelsResult* pProfileRenderLabelsResult);
+        ProfileRenderLabelsResult* OrphanProfileRenderLabelsResult();
+
+        // Property: CreateImageTime
+        // The time of rendering stylized map to an image.
+        const double GetCreateImageTime() const;
+        void SetCreateImageTime(const double& dCreateImageTime);
+
+//#ifdef _WIN32
+#if _DEBUG
+        // for memory leak testing
+        static int DumpMemoryLeaks();
+#endif
+//#endif
+
+    private:
+        // Hidden ProfileResult copy constructor and assignment operator.
+        ProfileRenderMapResult(const ProfileRenderMapResult&);
+        ProfileRenderMapResult& operator=(const ProfileRenderMapResult&);
+
+        // Data members
+        // See corresponding properties for descriptions
+        MdfString m_strResourceId;
+        MdfString m_strCoordinateSystem;
+        Box2D m_boxExtents;
+        double m_dScale;
+        int m_iLayerCount;
+        MdfString m_strImageFormat;
+        MdfString m_strRendererType;
+        double m_dRenderTime;
+        ProfileRenderLayersResult* m_profileRenderLayersResult;
+        ProfileRenderSelectionResult* m_profileRenderSelectionResult;
+        ProfileRenderWatermarksResult* m_profileRenderWatermarksResult;
+        ProfileRenderLabelsResult* m_profileRenderLabelsResult;
+        double m_dCreateImageTime;
+    };
+
+END_NAMESPACE_MDFMODEL
+#endif // PROFILERENDERMAPRESULT_H_

Added: trunk/MgDev/Common/MdfModel/ProfileRenderSelectionResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderSelectionResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderSelectionResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,92 @@
+//
+//  Copyright (C) 2010-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ProfileRenderLayersResult class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ProfileRenderSelectionResult.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the ProfileRenderSelectionResult class.
+//-------------------------------------------------------------------------
+ProfileRenderSelectionResult::ProfileRenderSelectionResult()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor. Release any dynamically allocated resources.
+//-------------------------------------------------------------------------
+ProfileRenderSelectionResult::~ProfileRenderSelectionResult()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the RenderTime property.
+//          
+// RETURNS: The time of stylizing all selected layers in the map.
+//-------------------------------------------------------------------------
+const double ProfileRenderSelectionResult::GetRenderTime() const
+{
+    return this->m_dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the RenderTime property.
+// PARAMETERS:
+//      Input:
+//          dRenderTime - The time of stylizing all selected layers in the map.
+//-------------------------------------------------------------------------
+void ProfileRenderSelectionResult::SetRenderTime(const double& dRenderTime)
+{
+    this->m_dRenderTime = dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the Filter property.
+//          
+// RETURNS: A boolean FDO expression that specifies which features to return.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderSelectionResult::GetFilter() const
+{
+    return this->m_strFilter;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the Filter property.
+// PARAMETERS:
+//      Input:
+//          pstrFilter - A boolean FDO expression that specifies which features to return.
+//-------------------------------------------------------------------------
+void ProfileRenderSelectionResult::SetFilter(const MdfString& pstrFilter)
+{
+    this->m_strFilter = pstrFilter;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderLayerResults property.
+//          
+// RETURNS: A collection of ProfileRenderLayerResult.
+//-------------------------------------------------------------------------
+ProfileRenderLayerResultCollection* ProfileRenderSelectionResult::GetProfileRenderSelectedLayerResults()
+{
+    return &this->m_profileRenderSelectedLayerResults;
+}
\ No newline at end of file

Added: trunk/MgDev/Common/MdfModel/ProfileRenderSelectionResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderSelectionResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderSelectionResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,77 @@
+//
+//  Copyright (C) 2010-2011 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 PROFILERENDERSELECTIONRESULT_H_
+#define PROFILERENDERSELECTIONRESULT_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+#include "ProfileRenderLayersResult.h"
+
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // The ProfileRenderSelectionResult is a profiling result which records information 
+    // during selected layers rendering procsses.
+    //------------------------------------------------------------------------
+    class MDFMODEL_API ProfileRenderSelectionResult : public MdfRootObject
+    {
+    public:
+        // Construction, destruction, initialization.
+        ProfileRenderSelectionResult();
+        virtual ~ProfileRenderSelectionResult();
+
+        // Operations
+
+        // Property: RenderTime
+        // The time of stylizing all selected layers in the map.
+        const double GetRenderTime() const;
+        void SetRenderTime(const double& dRenderTime);
+
+        // Property: Filter
+        // A boolean FDO expression that specifies which features to return.  No filter means pass all features through.
+        const MdfString& GetFilter() const;
+        void SetFilter(const MdfString& pstrFilter);
+
+        
+        // Property: ProfileRenderSelectedLayerResults
+        // A collection of ProfileRenderSelectedLayerResult.
+        ProfileRenderLayerResultCollection* GetProfileRenderSelectedLayerResults();
+
+//#ifdef _WIN32
+#if _DEBUG
+        // for memory leak testing
+        static int DumpMemoryLeaks();
+#endif
+//#endif
+
+    private:
+        // Hidden ProfileRenderSelectionResult copy constructor and assignment operator.
+        ProfileRenderSelectionResult(const ProfileRenderSelectionResult&);
+        ProfileRenderSelectionResult& operator=(const ProfileRenderSelectionResult&);
+
+        // Data members
+        // See corresponding properties for descriptions
+        double m_dRenderTime;
+        MdfString m_strFilter;
+        ProfileRenderLayerResultCollection m_profileRenderSelectedLayerResults;
+    };
+
+END_NAMESPACE_MDFMODEL
+#endif // PROFILERENDERSELECTIONRESULT_H_

Added: trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,114 @@
+//
+//  Copyright (C) 2010-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ProfileRenderWatermarkResult class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ProfileRenderWatermarkResult.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the ProfileRenderWatermarkResult class.
+//-------------------------------------------------------------------------
+ProfileRenderWatermarkResult::ProfileRenderWatermarkResult()
+{
+    this->m_dRenderTime = 0.0;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor. Release any dynamically allocated resources.
+//-------------------------------------------------------------------------
+ProfileRenderWatermarkResult::~ProfileRenderWatermarkResult()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ResourceId property.
+//          
+// RETURNS: The resource identifier of the watermark.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderWatermarkResult::GetResourceId() const
+{
+    return this->m_strResourceId;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the ResourceId property.
+// PARAMETERS:
+//      Input:
+//          pstrResourceId - ResourceId of watermark
+//-------------------------------------------------------------------------
+void ProfileRenderWatermarkResult::SetResourceId(const MdfString& pstrResourceId)
+{
+    this->m_strResourceId = pstrResourceId;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the PositionType property.
+//          
+// RETURNS: The position type (XY or Tile) of the watermark.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderWatermarkResult::GetPositionType() const
+{
+    return this->m_strPositionType;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the Position property.
+// PARAMETERS:
+//      Input:
+//          pstrPositionType - PositionType of watermark
+//-------------------------------------------------------------------------
+void ProfileRenderWatermarkResult::SetPositionType(const MdfString& pstrPositionType)
+{
+    this->m_strPositionType = pstrPositionType;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the RenderTime property.
+//          
+// RETURNS: The time of stylizing a paricular watermark in the map.
+//-------------------------------------------------------------------------
+const double ProfileRenderWatermarkResult::GetRenderTime() const
+{
+    return this->m_dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the RenderTime property.
+// PARAMETERS:
+//      Input:
+//          dRenderTime - RenderTime of the watermark
+//-------------------------------------------------------------------------
+void ProfileRenderWatermarkResult::SetRenderTime(const double& dRenderTime)
+{
+    this->m_dRenderTime = dRenderTime;
+}
+
+
+#ifdef _WIN32
+#ifdef _DEBUG
+int ProfileRenderWatermarkResult::DumpMemoryLeaks()
+{
+    return _CrtDumpMemoryLeaks();
+}
+#endif
+#endif

Added: trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,80 @@
+//
+//  Copyright (C) 2010-2011 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 PROFILERENDERWATERMARKRESULT_H_
+#define PROFILERENDERWATERMARKRESULT_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+#include "MdfOwnerCollection.h"
+
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // The ProfileRenderWatermarkResult is a Profiling result which records information 
+    // during a particular watermark rendering procsses.
+    //------------------------------------------------------------------------
+    class MDFMODEL_API ProfileRenderWatermarkResult : public MdfRootObject
+    {
+    public:
+        // Construction, destruction, initialization.
+        ProfileRenderWatermarkResult();
+        virtual ~ProfileRenderWatermarkResult();
+
+        // Operations
+
+        // Property: ResourceID
+        // The resource identifier of the watermark.
+        const MdfString& GetResourceId() const;
+        void SetResourceId(const MdfString& pstrResourceId);
+
+        // Property: PositionType
+        // The position type (XY or Tile) of the watermark.
+        const MdfString& GetPositionType() const;
+        void SetPositionType(const MdfString& pstrPositionType);
+
+        // Property: RenderTime
+        // The time of stylizing a paricular watermark in the map.
+        const double GetRenderTime() const;
+        void SetRenderTime(const double& dRenderTime);
+
+//#ifdef _WIN32
+#if _DEBUG
+        // for memory leak testing
+        static int DumpMemoryLeaks();
+#endif
+//#endif
+
+    private:
+        // Hidden ProfileRenderWatermarkResult copy constructor and assignment operator.
+        ProfileRenderWatermarkResult(const ProfileRenderWatermarkResult&);
+        ProfileRenderWatermarkResult& operator=(const ProfileRenderWatermarkResult&);
+
+        // Data members
+        // See corresponding properties for descriptions
+        MdfString m_strResourceId;
+        MdfString m_strPositionType;
+        double m_dRenderTime;
+    };
+
+    typedef MdfOwnerCollection<ProfileRenderWatermarkResult> ProfileRenderWatermarkResultCollection;
+    EXPIMP_TEMPLATE template class MDFMODEL_API MdfOwnerCollection<ProfileRenderWatermarkResult>;
+
+END_NAMESPACE_MDFMODEL
+#endif // PROFILERENDERWATERMARKRESULT_H_

Added: trunk/MgDev/Common/MdfModel/ProfileRenderWatermarksResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderWatermarksResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderWatermarksResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,82 @@
+//
+//  Copyright (C) 2010-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ProfileRenderWatermarksResult class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ProfileRenderWatermarksResult.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the ProfileRenderWatermarksResult class.
+//-------------------------------------------------------------------------
+ProfileRenderWatermarksResult::ProfileRenderWatermarksResult()
+{
+    this->m_dRenderTime = 0.0;
+
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor. Release any dynamically allocated resources.
+//-------------------------------------------------------------------------
+ProfileRenderWatermarksResult::~ProfileRenderWatermarksResult()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the RenderTime property.
+//          
+// RETURNS: The time of stylizing all watermarks in the map.
+//-------------------------------------------------------------------------
+const double ProfileRenderWatermarksResult::GetRenderTime() const
+{
+    return this->m_dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the RenderTime property.
+// PARAMETERS:
+//      Input:
+//          dRenderTime - The time of stylizing all watermarks in the map.
+//-------------------------------------------------------------------------
+void ProfileRenderWatermarksResult::SetRenderTime(const double& dRenderTime)
+{
+    this->m_dRenderTime = dRenderTime;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileRenderWatermarkResults property.
+//          
+// RETURNS: A collection of ProfileRenderWatermarkResult.
+//-------------------------------------------------------------------------
+ProfileRenderWatermarkResultCollection* ProfileRenderWatermarksResult::GetProfileRenderWatermarkResults()
+{
+    return &this->m_profileRenderWatermarkResults;
+}
+
+#ifdef _WIN32
+#ifdef _DEBUG
+int ProfileRenderWatermarksResult::DumpMemoryLeaks()
+{
+    return _CrtDumpMemoryLeaks();
+}
+#endif
+#endif

Added: trunk/MgDev/Common/MdfModel/ProfileRenderWatermarksResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderWatermarksResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderWatermarksResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,73 @@
+//
+//  Copyright (C) 2010-2011 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 PROFILERENDERWATERMARKSRESULT_H_
+#define PROFILERENDERWATERMARKSRESULT_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+#include "ProfileRenderWatermarkResult.h"
+
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // The ProfileRenderWatermarksResult is a profiling result which records information 
+    // during watermarks rendering procsses.
+    //------------------------------------------------------------------------
+    class MDFMODEL_API ProfileRenderWatermarksResult : public MdfRootObject
+    {
+    public:
+        // Construction, destruction, initialization.
+        ProfileRenderWatermarksResult();
+        virtual ~ProfileRenderWatermarksResult();
+
+        // Operations
+
+        // Property: RenderTime
+        // The time of stylizing all watermarks in the map.
+        const double GetRenderTime() const;
+        void SetRenderTime(const double& dRenderTime);
+
+          
+        // Property: ProfileRenderWatermarkResults
+        // A collection of ProfileRenderWatermarkResult.
+        ProfileRenderWatermarkResultCollection* GetProfileRenderWatermarkResults();
+       
+
+
+//#ifdef _WIN32
+#if _DEBUG
+        // for memory leak testing
+        static int DumpMemoryLeaks();
+#endif
+//#endif
+
+    private:
+        // Hidden ProfileRenderSelectionResult copy constructor and assignment operator.
+        ProfileRenderWatermarksResult(const ProfileRenderWatermarksResult&);
+        ProfileRenderWatermarksResult& operator=(const ProfileRenderWatermarksResult&);
+
+        // Data members
+        // See corresponding properties for descriptions
+        double m_dRenderTime;
+        ProfileRenderWatermarkResultCollection m_profileRenderWatermarkResults;
+    };
+
+END_NAMESPACE_MDFMODEL
+#endif // PROFILERENDERWATERMARKSRESULT_H_

Added: trunk/MgDev/Common/MdfModel/ProfileResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,69 @@
+//
+//  Copyright (C) 2004-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ScaleRange class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ProfileResult.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the ProfileResult class.
+//-------------------------------------------------------------------------
+ProfileResult::ProfileResult()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor.
+//-------------------------------------------------------------------------
+ProfileResult::~ProfileResult()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileResultType attribute.
+// RETURNS: A profile result type attribute
+//-------------------------------------------------------------------------
+ProfileResult::ProfileResultType ProfileResult::GetProfileResultType() const
+{
+    return this->m_eProfileResultType;
+}
+   
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the ProfileResultType attribute.
+// PARAMETERS:
+//      Input:
+//          type - profile result type
+//-------------------------------------------------------------------------
+void ProfileResult::SetProfileResultType(ProfileResult::ProfileResultType type)
+{
+    this->m_eProfileResultType = type;
+}
+
+#ifdef _WIN32
+#ifdef _DEBUG
+int ProfileResult::DumpMemoryLeaks()
+{
+    return _CrtDumpMemoryLeaks();
+}
+#endif
+#endif
\ No newline at end of file

Added: trunk/MgDev/Common/MdfModel/ProfileResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ProfileResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,67 @@
+//
+//  Copyright (C) 2010-2011 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 PROFILERESULT_H_
+#define PROFILERESULT_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // The ProfileResult class is the root document node of the MdfModel. Through its
+    // interface, one can get access to all the data in the ProfileResult.
+    //------------------------------------------------------------------------
+    class MDFMODEL_API ProfileResult : public MdfRootObject
+    {
+    public:
+
+        // Defines the profile result type
+        enum ProfileResultType
+        {
+            ProfileRenderMap,
+            ProfileRenderDynamicOverlay
+        };
+
+        // Construction, destruction, initialization.
+        ProfileResult();
+        virtual ~ProfileResult();
+
+        // Attribute : ProfileResultType
+        ProfileResultType GetProfileResultType() const;
+        void SetProfileResultType(ProfileResultType type);
+
+//#ifdef _WIN32
+#if _DEBUG
+        // for memory leak testing
+        static int DumpMemoryLeaks();
+#endif
+//#endif
+
+    private:
+        // Hidden ProfileResult copy constructor and assignment operator.
+        ProfileResult(const ProfileResult&);
+        ProfileResult& operator=(const ProfileResult&);
+
+        // profile result type attribute
+        ProfileResultType m_eProfileResultType;
+    };
+
+END_NAMESPACE_MDFMODEL
+#endif // PROFILERSULT_H_

Added: trunk/MgDev/Common/MdfModel/ScaleRange.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ScaleRange.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ScaleRange.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,88 @@
+//
+//  Copyright (C) 2004-2011 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
+//
+
+//-------------------------------------------------------------------------
+// DESCRIPTION:
+// The ScaleRange class implementation.
+//-------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "ScaleRange.h"
+
+using namespace MDFMODEL_NAMESPACE;
+
+//-------------------------------------------------------------------------
+// Contants : Represents the maximum value for the map scale.
+//-------------------------------------------------------------------------
+const double ScaleRange::MAX_MAP_SCALE = 1000000000000.0; // one trillion
+
+//-------------------------------------------------------------------------
+// PURPOSE: Construct and initialize an instance of the VectorScaleRange class.
+//-------------------------------------------------------------------------
+ScaleRange::ScaleRange()
+{
+    // default values
+    this->m_dMinScale = 0.0;
+    this->m_dMaxScale = MAX_MAP_SCALE;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Destructor.
+//-------------------------------------------------------------------------
+ScaleRange::~ScaleRange()
+{
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the minimum value component of this ScaleRange.
+// RETURNS: The minimum value.
+//-------------------------------------------------------------------------
+double ScaleRange::GetMinScale() const
+{
+    return this->m_dMinScale;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the minimum value component of this ScaleRange.
+// PARAMETERS:
+//      Input:
+//          dMinScale - the minimum value.
+//-------------------------------------------------------------------------
+void ScaleRange::SetMinScale(const double& dMinScale)
+{
+    this->m_dMinScale = dMinScale;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the maximum value component of this ScaleRange.
+// RETURNS: The maximum value.
+//-------------------------------------------------------------------------
+double ScaleRange::GetMaxScale() const
+{
+    return this->m_dMaxScale;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the maximum value component of this ScaleRange.
+// PARAMETERS:
+//      Input:
+//          dMaxScale - The maximum value.
+//-------------------------------------------------------------------------
+void ScaleRange::SetMaxScale(const double& dMaxScale)
+{
+    this->m_dMaxScale = dMaxScale;
+}
\ No newline at end of file

Added: trunk/MgDev/Common/MdfModel/ScaleRange.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ScaleRange.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfModel/ScaleRange.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,61 @@
+//
+//  Copyright (C) 2004-2011 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 SCALERANGE_H_
+#define SCALERANGE_H_
+
+#include "MdfModel.h"
+#include "MdfRootObject.h"
+
+BEGIN_NAMESPACE_MDFMODEL
+
+    //-------------------------------------------------------------------------
+    // DESCRIPTION:
+    // ScaleRange describes a range includes the min and max scales of a particular layer.
+    //-------------------------------------------------------------------------
+class MDFMODEL_API ScaleRange : public MdfRootObject
+    {
+    public:
+        // Represents the maximum value for the map scale.
+        static const double MAX_MAP_SCALE;
+
+    public:
+        // Construction, destruction, initialization
+        ScaleRange();
+        virtual ~ScaleRange();
+
+        // Operations
+        // Property : MinScale
+        double GetMinScale() const;
+        void SetMinScale(const double& dMinScale);
+
+        // Property : MaxScale
+        double GetMaxScale() const;
+        void SetMaxScale(const double& dMaxScale);
+
+    private:
+
+        // Data members
+        // The minimum value component of the Scale Range.
+        double m_dMinScale;
+
+        // The maximum value component of the Scale Range.
+        double m_dMaxScale;
+    };
+
+END_NAMESPACE_MDFMODEL
+#endif //SCALERANGE_H_

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,81 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOProfileRenderLabelsResult.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ProfileRenderLabelsResult);
+ELEM_MAP_ENTRY(2, RenderTime);
+ELEM_MAP_ENTRY(3, ExtendedData1);
+
+IOProfileRenderLabelsResult::IOProfileRenderLabelsResult(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderLabelsResult = NULL;
+}
+
+
+IOProfileRenderLabelsResult::IOProfileRenderLabelsResult(ProfileRenderLabelsResult* profileRenderLabelsResult, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderLabelsResult = profileRenderLabelsResult;
+}
+
+
+IOProfileRenderLabelsResult::~IOProfileRenderLabelsResult()
+{
+}
+
+
+void IOProfileRenderLabelsResult::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLabelsResult::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLabelsResult::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLabelsResult::Write(MdfStream& fd, ProfileRenderLabelsResult* profileRenderLabelsResult, Version* version, MgTab& tab)
+{
+    fd << tab.tab() << startStr(sProfileRenderLabelsResult) << std::endl;
+    tab.inctab();
+
+    // Property: RenderTime
+    fd << tab.tab() << startStr(sRenderTime);
+    fd << DoubleToStr(profileRenderLabelsResult->GetRenderTime());
+    fd << endStr(sRenderTime) << std::endl;
+    
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, profileRenderLabelsResult->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    fd << tab.tab() << endStr(sProfileRenderLabelsResult) << std::endl;
+}

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOPROFILERENDERLABELSRESULT_H_
+#define _IOPROFILERENDERLABELSRESULT_H_
+
+#include "SAX2ElementHandler.h"
+#include "ProfileRenderLabelsResult.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOProfileRenderLabelsResult : public SAX2ElementHandler
+{
+    public:
+        IOProfileRenderLabelsResult(Version& version);
+        IOProfileRenderLabelsResult(ProfileRenderLabelsResult* profileRenderLabelsResult, Version& version);
+        virtual ~IOProfileRenderLabelsResult();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ProfileRenderLabelsResult* profileRenderLabelsResult, Version* version, MgTab& tab);
+
+    private:
+        ProfileRenderLabelsResult* m_profileRenderLabelsResult;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOPROFILERENDERLABELSRESULT_H_

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,124 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOProfileRenderLayerResult.h"
+#include "IOScaleRange.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ProfileRenderLayerResult);
+ELEM_MAP_ENTRY(2, ResourceId);
+ELEM_MAP_ENTRY(3, LayerName);
+ELEM_MAP_ENTRY(4, LayerType);
+ELEM_MAP_ENTRY(5, FeatureClassName);
+ELEM_MAP_ENTRY(6, CoordinateSystem);
+ELEM_MAP_ENTRY(7, ScaleRange);
+ELEM_MAP_ENTRY(8, Filter);
+ELEM_MAP_ENTRY(9, RenderTime);
+ELEM_MAP_ENTRY(10, ExtendedData1);
+
+IOProfileRenderLayerResult::IOProfileRenderLayerResult(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderLayerResult = NULL;
+}
+
+
+IOProfileRenderLayerResult::IOProfileRenderLayerResult(ProfileRenderLayerResult* profileRenderLayerResult, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderLayerResult = profileRenderLayerResult;
+}
+
+
+IOProfileRenderLayerResult::~IOProfileRenderLayerResult()
+{
+}
+
+
+void IOProfileRenderLayerResult::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLayerResult::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLayerResult::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLayerResult::Write(MdfStream& fd, ProfileRenderLayerResult* profileRenderLayerResult, Version* version, MgTab& tab)
+{
+    fd << tab.tab() << startStr(sProfileRenderLayerResult) << std::endl;
+    tab.inctab();
+
+    // Property: ResourceId
+    fd << tab.tab() << startStr(sResourceId);
+    fd << EncodeString(profileRenderLayerResult->GetResourceId());
+    fd << endStr(sResourceId) << std::endl;
+    
+    // Property: LayerName
+    fd << tab.tab() << startStr(sLayerName);
+    fd << EncodeString(profileRenderLayerResult->GetLayerName());
+    fd << endStr(sLayerName) << std::endl;
+
+    // Property: LayerType
+    fd << tab.tab() << startStr(sLayerType);
+    fd << EncodeString(profileRenderLayerResult->GetLayerType());
+    fd << endStr(sLayerType) << std::endl;
+
+    // Property: FeatureClassName
+    fd << tab.tab() << startStr(sFeatureClassName);
+    fd << EncodeString(profileRenderLayerResult->GetFeatureClassName());
+    fd << endStr(sFeatureClassName) << std::endl;
+
+    // Property: CoordinateSystem
+    fd << tab.tab() << startStr(sCoordinateSystem);
+    fd << EncodeString(profileRenderLayerResult->GetCoordinateSystem());
+    fd << endStr(sCoordinateSystem) << std::endl;
+
+    // Property: ScaleRange
+    ScaleRange* scaleRange = profileRenderLayerResult->GetScaleRange();
+    if(scaleRange)
+        IOScaleRange::Write(fd, scaleRange, version, tab);
+
+    // Property: Filter
+    fd << tab.tab() << startStr(sFilter);
+    fd << EncodeString(profileRenderLayerResult->GetFilter());
+    fd << endStr(sFilter) << std::endl;
+
+    // Property: RenderTime
+    fd << tab.tab() << startStr(sRenderTime);
+    fd << DoubleToStr(profileRenderLayerResult->GetRenderTime());
+    fd << endStr(sRenderTime) << std::endl;
+    
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, profileRenderLayerResult->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    fd << tab.tab() << endStr(sProfileRenderLayerResult) << std::endl;
+}

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOPROFILERENDERLAYERRESULT_H_
+#define _IOPROFILERENDERLAYERRESULT_H_
+
+#include "SAX2ElementHandler.h"
+#include "ProfileRenderLayerResult.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOProfileRenderLayerResult : public SAX2ElementHandler
+{
+    public:
+        IOProfileRenderLayerResult(Version& version);
+        IOProfileRenderLayerResult(ProfileRenderLayerResult* profileRenderLayerResult, Version& version);
+        virtual ~IOProfileRenderLayerResult();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ProfileRenderLayerResult* profileRenderLayerResult, Version* version, MgTab& tab);
+
+    private:
+        ProfileRenderLayerResult* m_profileRenderLayerResult;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOPROFILERENDERLAYERRESULT_H_

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderLayersResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderLayersResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderLayersResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,87 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOProfileRenderLayersResult.h"
+#include "IOProfileRenderLayerResult.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ProfileRenderLayersResult);
+ELEM_MAP_ENTRY(2, RenderTime);
+ELEM_MAP_ENTRY(3, ProfileRenderLayerResult);
+ELEM_MAP_ENTRY(4, ExtendedData1);
+
+IOProfileRenderLayersResult::IOProfileRenderLayersResult(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderLayersResult = NULL;
+}
+
+
+IOProfileRenderLayersResult::IOProfileRenderLayersResult(ProfileRenderLayersResult* profileRenderLayersResult, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderLayersResult = profileRenderLayersResult;
+}
+
+
+IOProfileRenderLayersResult::~IOProfileRenderLayersResult()
+{
+}
+
+
+void IOProfileRenderLayersResult::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLayersResult::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLayersResult::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderLayersResult::Write(MdfStream& fd, ProfileRenderLayersResult* profileRenderLayersResult, Version* version, MgTab& tab)
+{
+    fd << tab.tab() << startStr(sProfileRenderLayersResult) << std::endl;
+    tab.inctab();
+
+    // Property: RenderTime
+    fd << tab.tab() << startStr(sRenderTime);
+    fd << DoubleToStr(profileRenderLayersResult->GetRenderTime());
+    fd << endStr(sRenderTime) << std::endl;
+
+    // Property: ProfileRenderLayerResult
+    for (int i=0; i<profileRenderLayersResult->GetProfileRenderLayerResults()->GetCount(); ++i)
+        IOProfileRenderLayerResult::Write(fd, profileRenderLayersResult->GetProfileRenderLayerResults()->GetAt(i), version, tab);
+
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, profileRenderLayersResult->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    fd << tab.tab() << endStr(sProfileRenderLayersResult) << std::endl;
+}

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderLayersResult.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderLayersResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderLayersResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOPROFILERENDERLAYERSRESULT_H_
+#define _IOPROFILERENDERLAYERSRESULT_H_
+
+#include "SAX2ElementHandler.h"
+#include "ProfileRenderLayersResult.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOProfileRenderLayersResult : public SAX2ElementHandler
+{
+    public:
+        IOProfileRenderLayersResult(Version& version);
+        IOProfileRenderLayersResult(ProfileRenderLayersResult* profileRenderLayersResult, Version& version);
+        virtual ~IOProfileRenderLayersResult();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ProfileRenderLayersResult* profileRenderLayersResult, Version* version, MgTab& tab);
+
+    private:
+        ProfileRenderLayersResult* m_profileRenderLayersResult;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOPROFILERENDERLAYERSRESULT_H_

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,164 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOProfileRenderMapResult.h"
+#include "IOProfileRenderLayersResult.h"
+#include "IOProfileRenderSelectionResult.h"
+#include "IOProfileRenderWatermarksResult.h"
+#include "IOProfileRenderLabelsResult.h"
+#include "IOExtra.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ProfileRenderMapResult);
+ELEM_MAP_ENTRY(2, ProfileRenderDynamicOverlayResult);
+ELEM_MAP_ENTRY(3, ResourceId);
+ELEM_MAP_ENTRY(4, CoordinateSystem);
+ELEM_MAP_ENTRY(5, Extents);
+ELEM_MAP_ENTRY(6, Scale);
+ELEM_MAP_ENTRY(7, LayerCount);
+ELEM_MAP_ENTRY(8, ImageFormat);
+ELEM_MAP_ENTRY(9, RendererType);
+ELEM_MAP_ENTRY(10, RenderTime);
+ELEM_MAP_ENTRY(11, ProfileRenderLayersResult);
+ELEM_MAP_ENTRY(13, ProfileRenderSelectionResult);
+ELEM_MAP_ENTRY(13, ProfileRenderWatermarksResult);
+ELEM_MAP_ENTRY(14, ProfileRenderLabelsResult);
+ELEM_MAP_ENTRY(15, CreateImageTime);
+ELEM_MAP_ENTRY(16, ExtendedData1);
+
+IOProfileRenderMapResult::IOProfileRenderMapResult(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderMapResult = NULL;
+}
+
+
+IOProfileRenderMapResult::IOProfileRenderMapResult(ProfileRenderMapResult* profileRenderMapResult, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderMapResult = profileRenderMapResult;
+}
+
+
+IOProfileRenderMapResult::~IOProfileRenderMapResult()
+{
+}
+
+
+void IOProfileRenderMapResult::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderMapResult::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderMapResult::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderMapResult::Write(MdfStream& fd, ProfileRenderMapResult* profileRenderMapResult, Version* version, MgTab& tab)
+{
+    ProfileResult::ProfileResultType type = profileRenderMapResult->GetProfileResultType();
+    if(ProfileResult::ProfileRenderMap)
+        fd << tab.tab() << startStr(sProfileRenderMapResult) << std::endl;
+    else //ProfileResult::ProfileRenderDynamicOverlay
+        fd << tab.tab() << startStr(sProfileRenderDynamicOverlayResult) << std::endl;
+    tab.inctab();
+
+    // Property: ResourceID
+    fd << tab.tab() << startStr(sResourceId);
+    fd << EncodeString(profileRenderMapResult->GetResourceId());
+    fd << endStr(sResourceId) << std::endl;
+
+    // Property: CoordinateSystem
+    fd << tab.tab() << startStr(sCoordinateSystem);
+    fd << EncodeString(profileRenderMapResult->GetCoordinateSystem());
+    fd << endStr(sCoordinateSystem) << std::endl;
+
+    // Property: Extents
+    IOExtra::WriteBox2D(fd, profileRenderMapResult->GetExtents(), false, version, tab);
+
+    // Property: Scale
+    fd << tab.tab() << startStr(sScale);
+    fd << DoubleToStr(profileRenderMapResult->GetScale());
+    fd << endStr(sScale) << std::endl;
+
+    // Property: LayerCount
+    fd << tab.tab() << startStr(sLayerCount);
+    fd << IntToStr(profileRenderMapResult->GetLayerCount());
+    fd << endStr(sLayerCount) << std::endl;
+
+    // Property: ImageFormat
+    fd << tab.tab() << startStr(sImageFormat);
+    fd << EncodeString(profileRenderMapResult->GetImageFormat());
+    fd << endStr(sImageFormat) << std::endl;
+
+    // Property: RendererType
+    fd << tab.tab() << startStr(sRendererType);
+    fd << EncodeString(profileRenderMapResult->GetRendererType());
+    fd << endStr(sRendererType) << std::endl;
+
+    // Property: RenderTime
+    fd << tab.tab() << startStr(sRenderTime);
+    fd << DoubleToStr(profileRenderMapResult->GetRenderTime());
+    fd << endStr(sRenderTime) << std::endl;
+
+    // Property: ProfileRenderLayersResult
+    ProfileRenderLayersResult* pProfileRenderLayersResult = profileRenderMapResult->GetProfileRenderLayersResult();
+    if(pProfileRenderLayersResult)
+        IOProfileRenderLayersResult::Write(fd, pProfileRenderLayersResult, version, tab);
+    
+    // Property: ProfileRenderSelectionResult
+    ProfileRenderSelectionResult* pProfileRenderSelectionResult = profileRenderMapResult->GetProfileRenderSelectionResult();
+    if(pProfileRenderSelectionResult)
+        IOProfileRenderSelectionResult::Write(fd, pProfileRenderSelectionResult, version, tab);
+
+    // Property: ProfileRenderWatermarksResult
+    ProfileRenderWatermarksResult* pProfileRenderWatermarksResult = profileRenderMapResult->GetProfileRenderWatermarksResult();
+    if(pProfileRenderWatermarksResult)
+        IOProfileRenderWatermarksResult::Write(fd, pProfileRenderWatermarksResult, version, tab);
+
+    // Property: ProfileRenderLabelsResult
+    ProfileRenderLabelsResult* pProfileRenderLabelsResult = profileRenderMapResult->GetProfileRenderLabelsResult();
+    if(pProfileRenderLabelsResult)
+        IOProfileRenderLabelsResult::Write(fd, pProfileRenderLabelsResult, version, tab);
+
+    // Property: CreateImageTime
+    fd << tab.tab() << startStr(sCreateImageTime);
+    fd << DoubleToStr(profileRenderMapResult->GetCreateImageTime());
+    fd << endStr(sCreateImageTime) << std::endl;
+
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, profileRenderMapResult->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    if(ProfileResult::ProfileRenderMap)
+        fd << tab.tab() << endStr(sProfileRenderMapResult) << std::endl;
+    else //ProfileResult::ProfileRenderDynamicOverlay
+        fd << tab.tab() << endStr(sProfileRenderDynamicOverlayResult) << std::endl;
+}

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOPROFILERENDERMAPRESULT_H_
+#define _IOPROFILERENDERMAPRESULT_H_
+
+#include "SAX2ElementHandler.h"
+#include "ProfileRenderMapResult.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOProfileRenderMapResult : public SAX2ElementHandler
+{
+    public:
+        IOProfileRenderMapResult(Version& version);
+        IOProfileRenderMapResult(ProfileRenderMapResult* profileRenderMapResult, Version& version);
+        virtual ~IOProfileRenderMapResult();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ProfileRenderMapResult* profileRenderMapResult, Version* version, MgTab& tab);
+
+    private:
+        ProfileRenderMapResult* m_profileRenderMapResult;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOPROFILERENDERMAPRESULT_H_

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderSelectionResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderSelectionResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderSelectionResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,88 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOProfileRenderSelectionResult.h"
+#include "IOProfileRenderLayerResult.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ProfileRenderSelectionResult);
+ELEM_MAP_ENTRY(2, RenderTime);
+ELEM_MAP_ENTRY(3, Filter);
+ELEM_MAP_ENTRY(4, ProfileRenderLayerResult);
+ELEM_MAP_ENTRY(5, ExtendedData1);
+
+IOProfileRenderSelectionResult::IOProfileRenderSelectionResult(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderSelectionResult = NULL;
+}
+
+
+IOProfileRenderSelectionResult::IOProfileRenderSelectionResult(ProfileRenderSelectionResult* profileRenderSelectionResult, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderSelectionResult = profileRenderSelectionResult;
+}
+
+
+IOProfileRenderSelectionResult::~IOProfileRenderSelectionResult()
+{
+}
+
+
+void IOProfileRenderSelectionResult::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderSelectionResult::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderSelectionResult::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderSelectionResult::Write(MdfStream& fd, ProfileRenderSelectionResult* profileRenderSelectionResult, Version* version, MgTab& tab)
+{
+    fd << tab.tab() << startStr(sProfileRenderSelectionResult) << std::endl;
+    tab.inctab();
+
+    // Property: RenderTime
+    fd << tab.tab() << startStr(sRenderTime);
+    fd << DoubleToStr(profileRenderSelectionResult->GetRenderTime());
+    fd << endStr(sRenderTime) << std::endl;
+
+    // Property: ProfileRenderLayerResult
+    for (int i=0; i<profileRenderSelectionResult->GetProfileRenderSelectedLayerResults()->GetCount(); ++i)
+        IOProfileRenderLayerResult::Write(fd, profileRenderSelectionResult->GetProfileRenderSelectedLayerResults()->GetAt(i), version, tab);
+
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, profileRenderSelectionResult->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    fd << tab.tab() << endStr(sProfileRenderSelectionResult) << std::endl;
+}

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderSelectionResult.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderSelectionResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderSelectionResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOPROFILERENDERSELECTIONRESULT_H_
+#define _IOPROFILERENDERSELECTIONRESULT_H_
+
+#include "SAX2ElementHandler.h"
+#include "ProfileRenderSelectionResult.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOProfileRenderSelectionResult : public SAX2ElementHandler
+{
+    public:
+        IOProfileRenderSelectionResult(Version& version);
+        IOProfileRenderSelectionResult(ProfileRenderSelectionResult* profileRenderSelectionResult, Version& version);
+        virtual ~IOProfileRenderSelectionResult();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ProfileRenderSelectionResult* profileRenderSelectionResult, Version* version, MgTab& tab);
+
+    private:
+        ProfileRenderSelectionResult* m_profileRenderSelectionResult;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOPROFILERENDERSELECTIONRESULT_H_

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,93 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOProfileRenderWatermarkResult.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ProfileRenderWatermarkResult);
+ELEM_MAP_ENTRY(2, ResourceId);
+ELEM_MAP_ENTRY(3, PositionType);
+ELEM_MAP_ENTRY(4, RenderTime);
+ELEM_MAP_ENTRY(5, ExtendedData1);
+
+IOProfileRenderWatermarkResult::IOProfileRenderWatermarkResult(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderWatermarkResult = NULL;
+}
+
+
+IOProfileRenderWatermarkResult::IOProfileRenderWatermarkResult(ProfileRenderWatermarkResult* profileRenderWatermarkResult, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderWatermarkResult = profileRenderWatermarkResult;
+}
+
+
+IOProfileRenderWatermarkResult::~IOProfileRenderWatermarkResult()
+{
+}
+
+
+void IOProfileRenderWatermarkResult::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderWatermarkResult::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderWatermarkResult::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderWatermarkResult::Write(MdfStream& fd, ProfileRenderWatermarkResult* profileRenderWatermarkResult, Version* version, MgTab& tab)
+{
+    fd << tab.tab() << startStr(sProfileRenderWatermarkResult) << std::endl;
+    tab.inctab();
+
+    // Property: ResourceID
+    fd << tab.tab() << startStr(sResourceId);
+    fd << EncodeString(profileRenderWatermarkResult->GetResourceId());
+    fd << endStr(sResourceId) << std::endl;
+    
+    // Property: PositionType
+    fd << tab.tab() << startStr(sPositionType);
+    fd << EncodeString(profileRenderWatermarkResult->GetPositionType());
+    fd << endStr(sPositionType) << std::endl;
+
+    // Property: RenderTime
+    fd << tab.tab() << startStr(sRenderTime);
+    fd << DoubleToStr(profileRenderWatermarkResult->GetRenderTime());
+    fd << endStr(sRenderTime) << std::endl;
+    
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, profileRenderWatermarkResult->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    fd << tab.tab() << endStr(sProfileRenderWatermarkResult) << std::endl;
+}

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOPROFILERENDERWATERMARKRESULT_H_
+#define _IOPROFILERENDERWATERMARKRESULT_H_
+
+#include "SAX2ElementHandler.h"
+#include "ProfileRenderWatermarkResult.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOProfileRenderWatermarkResult : public SAX2ElementHandler
+{
+    public:
+        IOProfileRenderWatermarkResult(Version& version);
+        IOProfileRenderWatermarkResult(ProfileRenderWatermarkResult* profileRenderWatermarkResult, Version& version);
+        virtual ~IOProfileRenderWatermarkResult();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ProfileRenderWatermarkResult* profileRenderWatermarkResult, Version* version, MgTab& tab);
+
+    private:
+        ProfileRenderWatermarkResult* m_profileRenderWatermarkResult;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOPROFILERENDERWATERMARKRESULT_H_

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarksResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarksResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarksResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,87 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOProfileRenderWatermarksResult.h"
+#include "IOProfileRenderWatermarkResult.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ProfileRenderWatermarksResult);
+ELEM_MAP_ENTRY(2, RenderTime);
+ELEM_MAP_ENTRY(3, ProfileRenderWatermarkResult);
+ELEM_MAP_ENTRY(4, ExtendedData1);
+
+IOProfileRenderWatermarksResult::IOProfileRenderWatermarksResult(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderWatermarksResult = NULL;
+}
+
+
+IOProfileRenderWatermarksResult::IOProfileRenderWatermarksResult(ProfileRenderWatermarksResult* profileRenderWatermarksResult, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileRenderWatermarksResult = profileRenderWatermarksResult;
+}
+
+
+IOProfileRenderWatermarksResult::~IOProfileRenderWatermarksResult()
+{
+}
+
+
+void IOProfileRenderWatermarksResult::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderWatermarksResult::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderWatermarksResult::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileRenderWatermarksResult::Write(MdfStream& fd, ProfileRenderWatermarksResult* profileRenderWatermarksResult, Version* version, MgTab& tab)
+{
+    fd << tab.tab() << startStr(sProfileRenderWatermarksResult) << std::endl;
+    tab.inctab();
+
+    // Property: RenderTime
+    fd << tab.tab() << startStr(sRenderTime);
+    fd << DoubleToStr(profileRenderWatermarksResult->GetRenderTime());
+    fd << endStr(sRenderTime) << std::endl;
+
+    // Property: ProfileRenderWatermarkResult
+    for (int i=0; i<profileRenderWatermarksResult->GetProfileRenderWatermarkResults()->GetCount(); ++i)
+        IOProfileRenderWatermarkResult::Write(fd, profileRenderWatermarksResult->GetProfileRenderWatermarkResults()->GetAt(i), version, tab);
+
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, profileRenderWatermarksResult->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    fd << tab.tab() << endStr(sProfileRenderWatermarksResult) << std::endl;
+}

Added: trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarksResult.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarksResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarksResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOPROFILERENDERWATERMARKSRESULT_H_
+#define _IOPROFILERENDERWATERMARKSRESULT_H_
+
+#include "SAX2ElementHandler.h"
+#include "ProfileRenderWatermarksResult.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOProfileRenderWatermarksResult : public SAX2ElementHandler
+{
+    public:
+        IOProfileRenderWatermarksResult(Version& version);
+        IOProfileRenderWatermarksResult(ProfileRenderWatermarksResult* profileRenderWatermarksResult, Version& version);
+        virtual ~IOProfileRenderWatermarksResult();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ProfileRenderWatermarksResult* profileRenderWatermarksResult, Version* version, MgTab& tab);
+
+    private:
+        ProfileRenderWatermarksResult* m_profileRenderWatermarksResult;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOPROFILERENDERWATERMARKSRESULT_H_

Added: trunk/MgDev/Common/MdfParser/IOProfileResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileResult.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileResult.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,118 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOProfileResult.h"
+#include "IOProfileRenderMapResult.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ProfileResult);
+ELEM_MAP_ENTRY(2, ExtendedData1);
+
+IOProfileResult::IOProfileResult(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileResult = NULL;
+}
+
+
+IOProfileResult::IOProfileResult(ProfileResult* profileResult, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_profileResult = profileResult;
+}
+
+
+IOProfileResult::~IOProfileResult()
+{
+}
+
+
+void IOProfileResult::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileResult::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileResult::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOProfileResult::Write(MdfStream& fd, ProfileResult* profileResult, Version* version, MgTab& tab)
+{
+    // verify the ProfileResult version
+    MdfString strVersion;
+    if (version)
+    {
+        if ((*version >= Version(1, 0, 0)) && (*version <= Version(2, 4, 0)))
+        {
+            // PRDF in MapGuide 2013 - current
+            strVersion = version->ToString();
+        }
+        else
+        {
+            // unsupported ProfileResult version
+            // TODO - need a way to return error information
+            _ASSERT(false);
+            return;
+        }
+    }
+    else
+    {
+        // use the current highest version
+        strVersion = L"2.4.0"; // NOXLATE
+    }
+
+    fd << tab.tab() << "<ProfileResult xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"ProfileResult-" << EncodeString(strVersion) << ".xsd\" version=\"" << EncodeString(strVersion) << "\">" << std::endl; // NOXLATE
+    tab.inctab();
+
+    // Property: ProfileResult
+    switch (profileResult->GetProfileResultType())
+    {
+        case ProfileResult::ProfileRenderMap:
+        case ProfileResult::ProfileRenderDynamicOverlay:
+            {
+                ProfileRenderMapResult* profileRenderMapResult = dynamic_cast<ProfileRenderMapResult*>(profileResult);
+                if(NULL != profileRenderMapResult)
+                {
+                    IOProfileRenderMapResult::Write(fd, profileRenderMapResult, version, tab);
+                }
+                break;
+            }
+
+        // need default?
+
+    }
+    
+    
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, profileResult->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    fd << tab.tab() << "</ProfileResult>" << std::endl; // NOXLATE
+}

Added: trunk/MgDev/Common/MdfParser/IOProfileResult.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileResult.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOProfileResult.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOPROFILERESULT_H_
+#define _IOPROFILERESULT_H_
+
+#include "SAX2ElementHandler.h"
+#include "ProfileResult.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOProfileResult : public SAX2ElementHandler
+{
+    public:
+        IOProfileResult(Version& version);
+        IOProfileResult(ProfileResult* profileResult, Version& version);
+        virtual ~IOProfileResult();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ProfileResult* profileResult, Version* version, MgTab& tab);
+
+    private:
+        ProfileResult* m_profileResult;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOPROFILERESULT_H_

Added: trunk/MgDev/Common/MdfParser/IOScaleRange.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOScaleRange.cpp	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOScaleRange.cpp	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,88 @@
+//
+//  Copyright (C) 2004-2011 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 "stdafx.h"
+#include "IOScaleRange.h"
+#include "IOUnknown.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+using namespace MDFPARSER_NAMESPACE;
+
+CREATE_ELEMENT_MAP;
+ELEM_MAP_ENTRY(1, ScaleRange);
+ELEM_MAP_ENTRY(2, MinScale);
+ELEM_MAP_ENTRY(3, MaxScale);
+ELEM_MAP_ENTRY(4, ExtendedData1);
+
+IOScaleRange::IOScaleRange(Version& version) : SAX2ElementHandler(version)
+{
+    this->m_scaleRange = NULL;
+}
+
+
+IOScaleRange::IOScaleRange(ScaleRange* scaleRange, Version& version) : SAX2ElementHandler(version)
+{
+    this->m_scaleRange = scaleRange;
+}
+
+
+IOScaleRange::~IOScaleRange()
+{
+}
+
+
+void IOScaleRange::StartElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOScaleRange::ElementChars(const wchar_t* ch)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOScaleRange::EndElement(const wchar_t* name, HandlerStack* handlerStack)
+{
+    //TODO: Implement this while deserialization is needed.
+}
+
+
+void IOScaleRange::Write(MdfStream& fd, ScaleRange* scaleRange, Version* version, MgTab& tab)
+{
+    fd << tab.tab() << startStr(sScaleRange) << std::endl;
+    tab.inctab();
+
+    // Property: MinScale
+    fd << tab.tab() << startStr(sMinScale);
+    fd << DoubleToStr(scaleRange->GetMinScale());
+    fd << endStr(sMinScale) << std::endl;
+    
+
+    // Property: MaxScale
+    fd << tab.tab() << startStr(sMaxScale);
+    fd << DoubleToStr(scaleRange->GetMaxScale());
+    fd << endStr(sMaxScale) << std::endl;
+    
+    // Write any unknown XML / extended data
+    IOUnknown::Write(fd, scaleRange->GetUnknownXml(), version, tab);
+
+    tab.dectab();
+    fd << tab.tab() << endStr(sScaleRange) << std::endl;
+}

Added: trunk/MgDev/Common/MdfParser/IOScaleRange.h
===================================================================
--- trunk/MgDev/Common/MdfParser/IOScaleRange.h	                        (rev 0)
+++ trunk/MgDev/Common/MdfParser/IOScaleRange.h	2011-08-22 04:56:16 UTC (rev 6084)
@@ -0,0 +1,48 @@
+//
+//  Copyright (C) 2004-2011 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 _IOSCALERANGE_H_
+#define _IOSCALERANGE_H_
+
+#include "SAX2ElementHandler.h"
+#include "ScaleRange.h"
+#include "Version.h"
+
+using namespace XERCES_CPP_NAMESPACE;
+using namespace MDFMODEL_NAMESPACE;
+
+BEGIN_NAMESPACE_MDFPARSER
+
+class IOScaleRange : public SAX2ElementHandler
+{
+    public:
+        IOScaleRange(Version& version);
+        IOScaleRange(ScaleRange* scaleRange, Version& version);
+        virtual ~IOScaleRange();
+
+        virtual void StartElement(const wchar_t* name, HandlerStack* handlerStack);
+        virtual void ElementChars(const wchar_t* ch);
+        virtual void EndElement(const wchar_t* name, HandlerStack* handlerStack);
+
+        static void Write(MdfStream& fd, ScaleRange* scaleRange, Version* version, MgTab& tab);
+
+    private:
+        ScaleRange* m_scaleRange;
+};
+
+END_NAMESPACE_MDFPARSER
+#endif // _IOSCALERANGE_H_

Modified: trunk/MgDev/Common/MdfParser/Makefile.am
===================================================================
--- trunk/MgDev/Common/MdfParser/Makefile.am	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Common/MdfParser/Makefile.am	2011-08-22 04:56:16 UTC (rev 6084)
@@ -24,6 +24,15 @@
   PrintLayout/IOPrintLayoutElementStyle.cpp \
   PrintLayout/IOPropertyMappingCollection.cpp \
   PrintLayout/IOStylizationConfiguration.cpp \
+  ProfileResult/IOProfileRenderLabelsResult.cpp \
+  ProfileResult/IOProfileRenderLayerResult.cpp \
+  ProfileResult/IOProfileRenderLayersResult.cpp \
+  ProfileResult/IOProfileRenderMapResult.cpp \
+  ProfileResult/IOProfileRenderSelectionResult.cpp \
+  ProfileResult/IOProfileRenderWatermarkResult.cpp \
+  ProfileResult/IOProfileRenderWatermarksResult.cpp \
+  ProfileResult/IOProfileResult.cpp \
+  ProfileResult/IOScaleRange.cpp \
   PrintLayout/IOThickness.cpp \
   FSDSAX2Parser.cpp \
   IOAreaRule.cpp \
@@ -128,6 +137,15 @@
   PrintLayout/IOPropertyMappingCollection.h \
   PrintLayout/IOStylizationConfiguration.h \
   PrintLayout/IOThickness.h \
+  ProfileResult/IOProfileRenderLabelsResult.h \
+  ProfileResult/IOProfileRenderLayerResult.h \
+  ProfileResult/IOProfileRenderLayersResult.h \
+  ProfileResult/IOProfileRenderMapResult.h \
+  ProfileResult/IOProfileRenderSelectionResult.h \
+  ProfileResult/IOProfileRenderWatermarkResult.h \
+  ProfileResult/IOProfileRenderWatermarksResult.h \
+  ProfileResult/IOProfileResult.h \
+  ProfileResult/IOScaleRange.h \
   FSDSAX2Parser.h \
   IOAreaRule.h \
   IOAreaSymbolization2D.h \

Modified: trunk/MgDev/Common/MdfParser/MdfParser.vcproj
===================================================================
--- trunk/MgDev/Common/MdfParser/MdfParser.vcproj	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Common/MdfParser/MdfParser.vcproj	2011-08-22 04:56:16 UTC (rev 6084)
@@ -476,6 +476,82 @@
 				>
 			</File>
 		</Filter>
+		<Filter
+			Name="ProfileResult"
+			>
+			<File
+				RelativePath=".\IOProfileRenderLabelsResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderLabelsResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderLayerResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderLayerResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderLayersResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderLayersResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderMapResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderMapResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderSelectionResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderSelectionResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderWatermarkResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderWatermarkResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderWatermarksResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileRenderWatermarksResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileResult.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOProfileResult.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IOScaleRange.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IOScaleRange.h"
+				>
+			</File>
+		</Filter>
 		<File
 			RelativePath=".\FSDSAX2Parser.cpp"
 			>

Modified: trunk/MgDev/Common/MdfParser/MdfParser.vcxproj
===================================================================
--- trunk/MgDev/Common/MdfParser/MdfParser.vcxproj	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Common/MdfParser/MdfParser.vcxproj	2011-08-22 04:56:16 UTC (rev 6084)
@@ -196,6 +196,15 @@
     <ClCompile Include="Common\IOStringObjectCollection.cpp" />
     <ClCompile Include="Common\IOVector3D.cpp" />
     <ClCompile Include="IOURLData.cpp" />
+    <ClCompile Include="IOProfileRenderLabelsResult.cpp" />
+    <ClCompile Include="IOProfileRenderLayerResult.cpp" />
+    <ClCompile Include="IOProfileRenderLayersResult.cpp" />
+    <ClCompile Include="IOProfileRenderMapResult.cpp" />
+    <ClCompile Include="IOProfileRenderSelectionResult.cpp" />
+    <ClCompile Include="IOProfileRenderWatermarkResult.cpp" />
+    <ClCompile Include="IOProfileRenderWatermarksResult.cpp" />
+    <ClCompile Include="IOProfileResult.cpp" />
+    <ClCompile Include="IOScaleRange.cpp" />
     <ClCompile Include="PrintLayout\IODataConfiguration.cpp" />
     <ClCompile Include="PrintLayout\IOMapView.cpp" />
     <ClCompile Include="PrintLayout\IOMapViewportDefinition.cpp" />
@@ -299,6 +308,15 @@
     <ClInclude Include="Common\IOStringObjectCollection.h" />
     <ClInclude Include="Common\IOVector3D.h" />
     <ClInclude Include="IOURLData.h" />
+    <ClInclude Include="IOProfileRenderLabelsResult.h" />
+    <ClInclude Include="IOProfileRenderLayerResult.h" />
+    <ClInclude Include="IOProfileRenderLayersResult.h" />
+    <ClInclude Include="IOProfileRenderMapResult.h" />
+    <ClInclude Include="IOProfileRenderWatermarkResult.h" />
+    <ClInclude Include="IOProfileRenderSelectionResult.h" />
+    <ClInclude Include="IOProfileRenderWatermarksResult.h" />
+    <ClInclude Include="IOProfileResult.h" />
+    <ClInclude Include="IOScaleRange.h" />
     <ClInclude Include="PrintLayout\IODataConfiguration.h" />
     <ClInclude Include="PrintLayout\IOMapView.h" />
     <ClInclude Include="PrintLayout\IOMapViewportDefinition.h" />

Modified: trunk/MgDev/Common/MdfParser/MdfParser.vcxproj.filters
===================================================================
--- trunk/MgDev/Common/MdfParser/MdfParser.vcxproj.filters	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Common/MdfParser/MdfParser.vcxproj.filters	2011-08-22 04:56:16 UTC (rev 6084)
@@ -7,6 +7,9 @@
     <Filter Include="PrintLayout">
       <UniqueIdentifier>{8ae0d67c-c670-4d12-aec1-b77dddc09dcf}</UniqueIdentifier>
     </Filter>
+    <Filter Include="ProfileResult">
+      <UniqueIdentifier>{ba1fc980-0d34-4134-8059-68b42135be47}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="Common\IOColor.cpp">
@@ -142,6 +145,33 @@
     <ClCompile Include="SAX2ElementHandler.cpp" />
     <ClCompile Include="SAX2Parser.cpp" />
     <ClCompile Include="IOURLData.cpp" />
+    <ClCompile Include="IOScaleRange.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="IOProfileRenderWatermarkResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="IOProfileRenderLayerResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="IOProfileRenderWatermarksResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="IOProfileRenderLayersResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="IOProfileRenderSelectionResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="IOProfileRenderLabelsResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="IOProfileRenderMapResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
+    <ClCompile Include="IOProfileResult.cpp">
+      <Filter>ProfileResult</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Common\IOColor.h">
@@ -277,6 +307,33 @@
     <ClInclude Include="SAX2Parser.h" />
     <ClInclude Include="stdafx.h" />
     <ClInclude Include="IOURLData.h" />
+    <ClInclude Include="IOScaleRange.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="IOProfileRenderLabelsResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="IOProfileRenderLayerResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="IOProfileRenderWatermarkResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="IOProfileRenderLayersResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="IOProfileRenderSelectionResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="IOProfileRenderWatermarksResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="IOProfileRenderMapResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
+    <ClInclude Include="IOProfileResult.h">
+      <Filter>ProfileResult</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="MdfParser.rc" />

Modified: trunk/MgDev/Server/src/Services/Profiling/ServerProfilingService.vcxproj
===================================================================
--- trunk/MgDev/Server/src/Services/Profiling/ServerProfilingService.vcxproj	2011-08-18 06:27:36 UTC (rev 6083)
+++ trunk/MgDev/Server/src/Services/Profiling/ServerProfilingService.vcxproj	2011-08-22 04:56:16 UTC (rev 6084)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
@@ -82,6 +82,10 @@
     <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
     <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
     <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MgServerProfilingServiced</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MgServerProfilingServiced</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MgServerProfilingService</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MgServerProfilingService</TargetName>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -268,4 +272,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file



More information about the mapguide-commits mailing list