[mapguide-commits] r5907 - trunk/MgDev/Common/Stylization
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Jun 2 14:40:03 EDT 2011
Author: traianstanev
Date: 2011-06-02 11:40:03 -0700 (Thu, 02 Jun 2011)
New Revision: 5907
Modified:
trunk/MgDev/Common/Stylization/LineBuffer.cpp
trunk/MgDev/Common/Stylization/LineBuffer.h
trunk/MgDev/Common/Stylization/PolygonUtils.h
trunk/MgDev/Common/Stylization/RS_FeatureReader.h
trunk/MgDev/Common/Stylization/SE_LineBuffer.cpp
Log:
Made LineBuffer class independent of FDO headers. To do this, I duplicated three enumerations. This will allow for the class to be used in locations which do not explicitly include FDO headers and will also speed up compilation.
Modified: trunk/MgDev/Common/Stylization/LineBuffer.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/LineBuffer.cpp 2011-06-02 18:02:26 UTC (rev 5906)
+++ trunk/MgDev/Common/Stylization/LineBuffer.cpp 2011-06-02 18:40:03 UTC (rev 5907)
@@ -65,7 +65,7 @@
ResizeContours(4);
m_dimensionality = dimensionality;
m_bIgnoreZ = bIgnoreZ;
- m_bProcessZ = (m_dimensionality & FdoDimensionality_Z) && !m_bIgnoreZ;
+ m_bProcessZ = (m_dimensionality & Dimensionality_Z) && !m_bIgnoreZ;
m_bTransform2DPoints = false;
m_num_geomcntrs_len = m_cntrs_len;
m_num_geomcntrs = new int[m_num_geomcntrs_len];
@@ -94,7 +94,7 @@
m_closeseg(NULL),
m_cur_closeseg(-1),
m_drawingScale(0.0),
- m_dimensionality(FdoDimensionality_XY),
+ m_dimensionality(Dimensionality_XY),
m_bIgnoreZ(true),
m_bProcessZ(false),
m_bTransform2DPoints(false),
@@ -123,7 +123,7 @@
m_bIgnoreZ = bIgnoreZ;
m_dimensionality = dimensionality;
- m_bProcessZ = (m_dimensionality & FdoDimensionality_Z) && !m_bIgnoreZ;
+ m_bProcessZ = (m_dimensionality & Dimensionality_Z) && !m_bIgnoreZ;
m_bTransform2DPoints = false;
m_cur_geom = -1;
m_num_geomcntrs[0] = 0;
@@ -867,7 +867,7 @@
int* ireader = (int*)data;
// the geometry type
- m_geom_type = (FdoGeometryType)*ireader++;
+ m_geom_type = (GeometryType)*ireader++;
double last_z = 0.0;
bool use_last_z = false;
@@ -876,16 +876,16 @@
switch (m_geom_type)
{
// all the linear types...
- case FdoGeometryType_MultiLineString:
- case FdoGeometryType_MultiPolygon:
- case FdoGeometryType_MultiPoint:
- case FdoGeometryType_LineString:
- case FdoGeometryType_Polygon:
- case FdoGeometryType_Point:
+ case GeometryType_MultiLineString:
+ case GeometryType_MultiPolygon:
+ case GeometryType_MultiPoint:
+ case GeometryType_LineString:
+ case GeometryType_Polygon:
+ case GeometryType_Point:
{
- bool is_multi = (m_geom_type == FdoGeometryType_MultiLineString)
- || (m_geom_type == FdoGeometryType_MultiPolygon
- || (m_geom_type == FdoGeometryType_MultiPoint));
+ bool is_multi = (m_geom_type == GeometryType_MultiLineString)
+ || (m_geom_type == GeometryType_MultiPolygon
+ || (m_geom_type == GeometryType_MultiPoint));
// the coordinate type
int skip = 0; //0=XY, 1=XYZ or XYM, 2 = XYZM
@@ -907,23 +907,23 @@
*ireader++;
// read cordinate typeB
- FdoDimensionality dim = (FdoDimensionality)*ireader++;
+ Dimensionality dim = (Dimensionality)*ireader++;
// ensure that all dimensionalities of each geometry are the same
- _ASSERT(q==0 || m_dimensionality == (dim & ~FdoDimensionality_M));
+ _ASSERT(q==0 || m_dimensionality == (dim & ~Dimensionality_M));
- m_dimensionality = dim & ~FdoDimensionality_M; //LineBuffer doesn't support M
- m_bProcessZ = (m_dimensionality & FdoDimensionality_Z) && !m_bIgnoreZ;
+ m_dimensionality = dim & ~Dimensionality_M; //LineBuffer doesn't support M
+ m_bProcessZ = (m_dimensionality & Dimensionality_Z) && !m_bIgnoreZ;
skip = 0;
- if ((dim & FdoDimensionality_Z) && m_bIgnoreZ) skip++;
- if (dim & FdoDimensionality_M) skip++;
+ if ((dim & Dimensionality_Z) && m_bIgnoreZ) skip++;
+ if (dim & Dimensionality_M) skip++;
// the number of contours in current polygon/linestring
int contour_count = 1; //for linestrings
- if (m_geom_type == FdoGeometryType_Polygon ||
- m_geom_type == FdoGeometryType_MultiPolygon)
+ if (m_geom_type == GeometryType_Polygon ||
+ m_geom_type == GeometryType_MultiPolygon)
contour_count = *ireader++;
for (int i=0; i<contour_count; ++i)
@@ -932,8 +932,8 @@
// point geoms do not have a point count, since
// each piece is just one point each
- if (m_geom_type != FdoGeometryType_MultiPoint &&
- m_geom_type != FdoGeometryType_Point)
+ if (m_geom_type != GeometryType_MultiPoint &&
+ m_geom_type != GeometryType_Point)
point_count = *ireader++;
//*** ireader not valid from here down
@@ -950,8 +950,8 @@
// if current contour is just a point, add a second point
// for easier time in the line style algorithm
// but only do this for line and polygons, not points!!!!!
- if (m_geom_type != FdoGeometryType_MultiPoint &&
- m_geom_type != FdoGeometryType_Point)
+ if (m_geom_type != GeometryType_MultiPoint &&
+ m_geom_type != GeometryType_Point)
LineTo(x, y, z);
}
else
@@ -1019,10 +1019,10 @@
}
// all the non-linear types...
- case FdoGeometryType_CurveString:
- case FdoGeometryType_CurvePolygon:
- case FdoGeometryType_MultiCurveString:
- case FdoGeometryType_MultiCurvePolygon:
+ case GeometryType_CurveString:
+ case GeometryType_CurvePolygon:
+ case GeometryType_MultiCurveString:
+ case GeometryType_MultiCurvePolygon:
{
bool is_multi = false;
@@ -1031,18 +1031,18 @@
// change geometry type over to flattened type
switch (m_geom_type)
{
- case FdoGeometryType_CurveString:
- m_geom_type = FdoGeometryType_LineString;
+ case GeometryType_CurveString:
+ m_geom_type = GeometryType_LineString;
break;
- case FdoGeometryType_CurvePolygon:
- m_geom_type = FdoGeometryType_Polygon;
+ case GeometryType_CurvePolygon:
+ m_geom_type = GeometryType_Polygon;
break;
- case FdoGeometryType_MultiCurveString:
- m_geom_type = FdoGeometryType_MultiLineString;
+ case GeometryType_MultiCurveString:
+ m_geom_type = GeometryType_MultiLineString;
is_multi = true;
break;
- case FdoGeometryType_MultiCurvePolygon:
- m_geom_type = FdoGeometryType_MultiPolygon;
+ case GeometryType_MultiCurvePolygon:
+ m_geom_type = GeometryType_MultiPolygon;
is_multi = true;
break;
}
@@ -1067,23 +1067,23 @@
*ireader++;
// read cordinate typeB
- FdoDimensionality dim = (FdoDimensionality)*ireader++;
+ Dimensionality dim = (Dimensionality)*ireader++;
// ensure that all dimensionalities of each geometry are the same
- _ASSERT(q==0 || m_dimensionality == (dim & ~FdoDimensionality_M));
+ _ASSERT(q==0 || m_dimensionality == (dim & ~Dimensionality_M));
- m_dimensionality = dim & ~FdoDimensionality_M; //LineBuffer doesn't support M
- m_bProcessZ = (m_dimensionality & FdoDimensionality_Z) && !m_bIgnoreZ;
+ m_dimensionality = dim & ~Dimensionality_M; //LineBuffer doesn't support M
+ m_bProcessZ = (m_dimensionality & Dimensionality_Z) && !m_bIgnoreZ;
skip = 0;
- if ((dim & FdoDimensionality_Z) && m_bIgnoreZ) skip++;
- if (dim & FdoDimensionality_M) skip++;
+ if ((dim & Dimensionality_Z) && m_bIgnoreZ) skip++;
+ if (dim & Dimensionality_M) skip++;
// the number of contours in current polygon/linestring
int contour_count = 1; //for linestrings, no rings, just one
- if (real_geom_type == FdoGeometryType_CurvePolygon ||
- real_geom_type == FdoGeometryType_MultiCurvePolygon)
+ if (real_geom_type == GeometryType_CurvePolygon ||
+ real_geom_type == GeometryType_MultiCurvePolygon)
contour_count = *ireader++; // # rings for polygons
for (int i=0; i<contour_count; ++i)
@@ -1105,7 +1105,7 @@
switch (seg_type)
{
- case FdoGeometryComponentType_CircularArcSegment:
+ case GeometryComponentType_CircularArcSegment:
// circular arc: read midpont and endpoint
// first point was either the start point or
@@ -1129,7 +1129,7 @@
ireader = (int*)dreader;
break;
- case FdoGeometryComponentType_LineStringSegment:
+ case GeometryComponentType_LineStringSegment:
// line string segment - just read the points and do LineTos
int num_pts = *ireader++;
@@ -1146,8 +1146,8 @@
}
}
- if (m_geom_type == FdoGeometryType_Polygon ||
- m_geom_type == FdoGeometryType_MultiPolygon)
+ if (m_geom_type == GeometryType_Polygon ||
+ m_geom_type == GeometryType_MultiPolygon)
{
Close();
}
@@ -1156,7 +1156,7 @@
break;
}
- case FdoGeometryType_MultiGeometry:
+ case GeometryType_MultiGeometry:
{
// can't do that yet
break;
@@ -1183,19 +1183,19 @@
switch (m_geom_type)
{
// all the linear types...
- case FdoGeometryType_MultiLineString:
- case FdoGeometryType_MultiPolygon:
- case FdoGeometryType_MultiPoint:
- case FdoGeometryType_LineString:
- case FdoGeometryType_Polygon:
- case FdoGeometryType_Point:
+ case GeometryType_MultiLineString:
+ case GeometryType_MultiPolygon:
+ case GeometryType_MultiPoint:
+ case GeometryType_LineString:
+ case GeometryType_Polygon:
+ case GeometryType_Point:
{
// write geometry type
WRITE_INT(os, m_geom_type);
- bool is_multi = (m_geom_type == FdoGeometryType_MultiLineString ||
- m_geom_type == FdoGeometryType_MultiPolygon ||
- m_geom_type == FdoGeometryType_MultiPoint);
+ bool is_multi = (m_geom_type == GeometryType_MultiLineString ||
+ m_geom_type == GeometryType_MultiPolygon ||
+ m_geom_type == GeometryType_MultiPoint);
// the coordinate type
// int skip = 0; //0=XY, 1=XYZ or XYM, 2 = XYZM
@@ -1208,8 +1208,8 @@
int num_geoms = m_cur_geom + 1;
if (is_multi)
{
- if ( m_geom_type == FdoGeometryType_MultiPoint
- || m_geom_type == FdoGeometryType_MultiLineString )
+ if ( m_geom_type == GeometryType_MultiPoint
+ || m_geom_type == GeometryType_MultiLineString )
{
//write number of geometries -- for multipoint/linestring the
//number of contours (i.e. MoveTos) is equal to the
@@ -1232,14 +1232,14 @@
{
switch (m_geom_type)
{
- case FdoGeometryType_MultiLineString:
- WRITE_INT(os, FdoGeometryType_LineString);
+ case GeometryType_MultiLineString:
+ WRITE_INT(os, GeometryType_LineString);
break;
- case FdoGeometryType_MultiPolygon:
- WRITE_INT(os, FdoGeometryType_Polygon);
+ case GeometryType_MultiPolygon:
+ WRITE_INT(os, GeometryType_Polygon);
break;
- case FdoGeometryType_MultiPoint:
- WRITE_INT(os, FdoGeometryType_Point);
+ case GeometryType_MultiPoint:
+ WRITE_INT(os, GeometryType_Point);
break;
}
}
@@ -1247,21 +1247,21 @@
// write cordinate type
// If user specifies ignored Z, then we don't have Z values
// even though m_dimensionality indicates we do.
- // Write out FdoDimensionality_XY in this case.
+ // Write out Dimensionality_XY in this case.
if (m_bProcessZ)
{
WRITE_INT(os, m_dimensionality);
}
else
{
- WRITE_INT(os, FdoDimensionality_XY);
+ WRITE_INT(os, Dimensionality_XY);
}
// the number of contours in current polygon/linestring
int contour_count = 1; //for linestrings
- if (m_geom_type == FdoGeometryType_MultiPolygon ||
- m_geom_type == FdoGeometryType_Polygon )
+ if (m_geom_type == GeometryType_MultiPolygon ||
+ m_geom_type == GeometryType_Polygon )
{
contour_count = m_num_geomcntrs[q];
WRITE_INT(os, contour_count);
@@ -1273,8 +1273,8 @@
// point geoms do not have a point count, since
// each piece is just one point each
- if ((m_geom_type != FdoGeometryType_MultiPoint)
- && (m_geom_type != FdoGeometryType_Point))
+ if ((m_geom_type != GeometryType_MultiPoint)
+ && (m_geom_type != GeometryType_Point))
{
point_count = m_cntrs[i];
WRITE_INT(os, point_count);
@@ -1316,10 +1316,10 @@
break;
}
- case FdoGeometryType_CurveString:
- case FdoGeometryType_CurvePolygon:
- case FdoGeometryType_MultiCurveString:
- case FdoGeometryType_MultiCurvePolygon:
+ case GeometryType_CurveString:
+ case GeometryType_CurvePolygon:
+ case GeometryType_MultiCurveString:
+ case GeometryType_MultiCurvePolygon:
{
// TODO: the LineBuffer is already tessellated, so in case of these
// we need to actually use a tessellated type, i.e. the code above
@@ -1467,7 +1467,7 @@
|| m_bounds.maxy < b.miny)
return NULL;
- std::auto_ptr<LineBuffer> spLB(LineBufferPool::NewLineBuffer(lbp, m_cur_types, (FdoDimensionality)m_dimensionality, m_bIgnoreZ));
+ std::auto_ptr<LineBuffer> spLB(LineBufferPool::NewLineBuffer(lbp, m_cur_types, m_dimensionality, m_bIgnoreZ));
if (clipType == ctArea)
{
@@ -1488,20 +1488,20 @@
{
switch (m_geom_type)
{
- case FdoGeometryType_MultiPolygon:
- case FdoGeometryType_Polygon:
+ case GeometryType_MultiPolygon:
+ case GeometryType_Polygon:
{
ClipPolygon(b, spLB.get());
return spLB.release();
}
- case FdoGeometryType_MultiLineString:
- case FdoGeometryType_LineString:
+ case GeometryType_MultiLineString:
+ case GeometryType_LineString:
{
ClipPolyline(b, spLB.get());
return spLB.release();
}
- case FdoGeometryType_Point:
- case FdoGeometryType_MultiPoint:
+ case GeometryType_Point:
+ case GeometryType_MultiPoint:
{
ClipPoints(b, spLB.get());
return spLB.release();
@@ -2548,9 +2548,9 @@
}
-FdoDimensionality LineBuffer::dimensionality() const
+int LineBuffer::dimensionality() const
{
- return (FdoDimensionality)m_dimensionality;
+ return m_dimensionality;
}
Modified: trunk/MgDev/Common/Stylization/LineBuffer.h
===================================================================
--- trunk/MgDev/Common/Stylization/LineBuffer.h 2011-06-02 18:02:26 UTC (rev 5906)
+++ trunk/MgDev/Common/Stylization/LineBuffer.h 2011-06-02 18:40:03 UTC (rev 5907)
@@ -23,10 +23,6 @@
#include "Bounds.h"
#include "DataValueStack.h"
#include "Matrix3D.h"
-#pragma warning(push)
-#pragma warning(disable: 4201)
-#include "Fdo.h"
-#pragma warning(pop)
#ifndef RESTRICT
#ifdef _WIN32
@@ -90,7 +86,44 @@
ctAGF = 4
};
- STYLIZATION_API LineBuffer(int size, int dimensionality = FdoDimensionality_XY, bool bIgnoreZ = true);
+ //Matches the FGF enumeration FdoDimensionality
+ enum Dimensionality
+ {
+ /// X and Y dimensions are present.
+ Dimensionality_XY = 0,
+ /// Z dimension is present.
+ Dimensionality_Z = 1,
+ /// M ('measure') dimension is present.
+ Dimensionality_M = 2
+ };
+
+ //Matches the FGF enumeration FdoGeometryType
+ enum GeometryType
+ {
+ GeometryType_None = 0,
+ GeometryType_Point = 1,
+ GeometryType_LineString = 2,
+ GeometryType_Polygon = 3,
+ GeometryType_MultiPoint = 4,
+ GeometryType_MultiLineString = 5,
+ GeometryType_MultiPolygon = 6,
+ GeometryType_MultiGeometry = 7,
+ GeometryType_CurveString = 10,
+ GeometryType_CurvePolygon = 11,
+ GeometryType_MultiCurveString = 12,
+ GeometryType_MultiCurvePolygon = 13
+ };
+
+ //Matches FdoGeometryComponentType
+ enum GeometryComponentType
+ {
+ GeometryComponentType_LinearRing = 129,
+ GeometryComponentType_CircularArcSegment = 130,
+ GeometryComponentType_LineStringSegment = 131,
+ GeometryComponentType_Ring = 132
+ };
+
+ STYLIZATION_API LineBuffer(int size, int dimensionality = Dimensionality_XY, bool bIgnoreZ = true);
STYLIZATION_API virtual ~LineBuffer();
// rudimentary stuff
@@ -120,14 +153,14 @@
STYLIZATION_API void Centroid(GeomOperationType type, double* x, double * y, double* slope) const;
// clears the buffer for reuse
- STYLIZATION_API void Reset(int dimensionality = FdoDimensionality_XY, bool bIgnoreZ = true);
+ STYLIZATION_API void Reset(int dimensionality = Dimensionality_XY, bool bIgnoreZ = true);
STYLIZATION_API void SetGeometryType(int geomType);
// computes the bounds of the line buffer's geometry
STYLIZATION_API void ComputeBounds(RS_Bounds& bounds);
// attributes
- STYLIZATION_API FdoDimensionality dimensionality() const;
+ STYLIZATION_API int dimensionality() const;
STYLIZATION_API bool hasZ() const;
STYLIZATION_API bool ignoreZ() const;
@@ -267,7 +300,7 @@
STYLIZATION_API LineBufferPool();
STYLIZATION_API virtual ~LineBufferPool();
- STYLIZATION_API static LineBuffer* NewLineBuffer(LineBufferPool* pool, int requestSize, int dimensionality = FdoDimensionality_XY, bool bIgnoreZ = true);
+ STYLIZATION_API static LineBuffer* NewLineBuffer(LineBufferPool* pool, int requestSize, int dimensionality = LineBuffer::Dimensionality_XY, bool bIgnoreZ = true);
STYLIZATION_API static void FreeLineBuffer(LineBufferPool* pool, LineBuffer* lb);
private:
Modified: trunk/MgDev/Common/Stylization/PolygonUtils.h
===================================================================
--- trunk/MgDev/Common/Stylization/PolygonUtils.h 2011-06-02 18:02:26 UTC (rev 5906)
+++ trunk/MgDev/Common/Stylization/PolygonUtils.h 2011-06-02 18:40:03 UTC (rev 5907)
@@ -19,6 +19,7 @@
#define POLYGONUTILS_H_
#include "LineBuffer.h"
+#include <map>
////////////////////////////////////////////////////////////////////////////////
// Used with overlapping contour computations.
Modified: trunk/MgDev/Common/Stylization/RS_FeatureReader.h
===================================================================
--- trunk/MgDev/Common/Stylization/RS_FeatureReader.h 2011-06-02 18:02:26 UTC (rev 5906)
+++ trunk/MgDev/Common/Stylization/RS_FeatureReader.h 2011-06-02 18:40:03 UTC (rev 5907)
@@ -21,6 +21,7 @@
#include "LineBuffer.h"
#include "CSysTransformer.h"
#include "RS_Raster.h"
+#include <Fdo.h>
// Defines a feature data reader interface.
class RS_FeatureReader
Modified: trunk/MgDev/Common/Stylization/SE_LineBuffer.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/SE_LineBuffer.cpp 2011-06-02 18:02:26 UTC (rev 5906)
+++ trunk/MgDev/Common/Stylization/SE_LineBuffer.cpp 2011-06-02 18:40:03 UTC (rev 5907)
@@ -301,7 +301,7 @@
}
}
- m_xf_buf->SetGeometryType(FdoGeometryType_LineString);
+ m_xf_buf->SetGeometryType(LineBuffer::GeometryType_LineString);
}
More information about the mapguide-commits
mailing list