[mapguide-commits] r1346 - trunk/MgDev/Common/Stylization
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Mar 22 14:16:43 EDT 2007
Author: traianstanev
Date: 2007-03-22 14:16:41 -0400 (Thu, 22 Mar 2007)
New Revision: 1346
Modified:
trunk/MgDev/Common/Stylization/SE_StyleVisitor.cpp
trunk/MgDev/Common/Stylization/SE_SymbolDefProxies.h
trunk/MgDev/Common/Stylization/Stylization.h
Log:
Added support for storing image elements inlined as base64 inside symbol definitions.
Modified: trunk/MgDev/Common/Stylization/SE_StyleVisitor.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/SE_StyleVisitor.cpp 2007-03-22 09:55:25 UTC (rev 1345)
+++ trunk/MgDev/Common/Stylization/SE_StyleVisitor.cpp 2007-03-22 18:16:41 UTC (rev 1346)
@@ -460,15 +460,29 @@
if (image.GetContent().size())
{
- /* Handle this; Base64 as MdfString is not a particularly inspired plan */
- primitive->pngPtr = NULL;
+ const MdfModel::MdfString& src_u = image.GetContent();
+
+ size_t srclen = src_u.size();
+ char* src_ascii = new char[srclen];
+
+ char* ptr = src_ascii;
+ for (int i=0; i<srclen; i++)
+ *ptr++ = (char)src_u[i];
+
+ size_t dstlen = Base64::GetDecodedLength(image.GetContent().size());
+ primitive->pngPtr = new unsigned char[dstlen];
+ primitive->ownPtr = true;
+
+ Base64::Decode((unsigned char*)primitive->pngPtr, src_ascii, srclen);
+
+ delete [] src_ascii;
}
else
{
ParseStringExpression(image.GetReference(), primitive->pngPath);
if (primitive->pngPath.expression == NULL) // constant path
- primitive->pngPtr = m_resources? m_resources->GetImageData(primitive->resId, primitive->pngPath.value, primitive->pngSize) : NULL;
+ primitive->pngPtr = (unsigned char*)(m_resources? m_resources->GetImageData(primitive->resId, primitive->pngPath.value, primitive->pngSize) : NULL);
else
primitive->pngPtr = NULL;
}
Modified: trunk/MgDev/Common/Stylization/SE_SymbolDefProxies.h
===================================================================
--- trunk/MgDev/Common/Stylization/SE_SymbolDefProxies.h 2007-03-22 09:55:25 UTC (rev 1345)
+++ trunk/MgDev/Common/Stylization/SE_SymbolDefProxies.h 2007-03-22 18:16:41 UTC (rev 1346)
@@ -111,13 +111,15 @@
{
SE_String pngPath;
const wchar_t* resId;
- const unsigned char* pngPtr;
+ unsigned char* pngPtr;
+ bool ownPtr;
int pngSize;
SE_Double position[2];
SE_Double extent[2];
SE_Double angle;
- SE_INLINE SE_Raster() { }
+ SE_INLINE SE_Raster() : ownPtr(false) { }
+ ~SE_Raster() { if (ownPtr) delete[] pngPtr; }
virtual SE_RenderPrimitive* evaluate(SE_EvalContext*);
};
Modified: trunk/MgDev/Common/Stylization/Stylization.h
===================================================================
--- trunk/MgDev/Common/Stylization/Stylization.h 2007-03-22 09:55:25 UTC (rev 1345)
+++ trunk/MgDev/Common/Stylization/Stylization.h 2007-03-22 18:16:41 UTC (rev 1346)
@@ -81,6 +81,7 @@
#include "Text.h"
#include "Image.h"
#include "GraphicElement.h"
+#include "Base64.h"
//FDO headers
#include "Fdo.h"
More information about the mapguide-commits
mailing list