17 #include <QDomElement>
18 #include <QDomDocument>
26 unsigned int wkbType = *((
int* ) wkb );
27 wkb +=
sizeof(
unsigned int );
29 double x = *((
double * ) wkb ); wkb +=
sizeof( double );
30 double y = *((
double * ) wkb ); wkb +=
sizeof( double );
33 wkb +=
sizeof( double );
50 unsigned int wkbType = *((
int* ) wkb );
51 wkb +=
sizeof(
unsigned int );
52 unsigned int nPoints = *((
int* ) wkb );
53 wkb +=
sizeof(
unsigned int );
65 double cw = e.
width() / 10;
double ch = e.
height() / 10;
71 pts.resize( nPoints );
73 for (
unsigned int i = 0; i < nPoints; ++i )
75 x = *((
double * ) wkb );
76 wkb +=
sizeof( double );
77 y = *((
double * ) wkb );
78 wkb +=
sizeof( double );
81 wkb +=
sizeof( double );
83 pts[i] = QPointF( x, y );
88 for (
int i = 0; i < pts.size(); ++i )
105 unsigned int wkbType = *((
int* ) wkb );
106 wkb +=
sizeof(
unsigned int );
107 unsigned int numRings = *((
int* ) wkb );
108 wkb +=
sizeof(
unsigned int );
122 double cw = e.
width() / 10;
double ch = e.
height() / 10;
125 for (
unsigned int idx = 0; idx < numRings; idx++ )
127 unsigned int nPoints = *((
int* )wkb );
128 wkb +=
sizeof(
unsigned int );
130 QPolygonF poly( nPoints );
133 for (
unsigned int jdx = 0; jdx < nPoints; jdx++ )
135 x = *((
double * ) wkb ); wkb +=
sizeof( double );
136 y = *((
double * ) wkb ); wkb +=
sizeof( double );
138 poly[jdx] = QPointF( x, y );
141 wkb +=
sizeof( double );
151 for (
int i = 0; i < poly.size(); ++i )
164 holes.append( poly );
172 : mType( type ), mUsingSymbolLevels( false ),
174 mCurrentVertexMarkerSize( 3 )
187 if ( symbol == NULL )
200 QgsDebugMsg(
"point can be drawn only with marker symbol!" );
217 QgsDebugMsg(
"linestring can be drawn only with line symbol!" );
222 ((
QgsLineSymbolV2* )symbol )->renderPolyline( pts, context, layer, selected );
224 if ( drawVertexMarker )
234 QgsDebugMsg(
"polygon can be drawn only with fill symbol!" );
238 QList<QPolygonF> holes;
240 ((
QgsFillSymbolV2* )symbol )->renderPolygon( pts, ( holes.count() ? &holes : NULL ), context, layer, selected );
242 if ( drawVertexMarker )
252 QgsDebugMsg(
"multi-point can be drawn only with marker symbol!" );
256 unsigned char* wkb = geom->
asWkb();
257 unsigned int num = *((
int* )( wkb + 5 ) );
258 unsigned char* ptr = wkb + 9;
261 for (
unsigned int i = 0; i < num; ++i )
277 QgsDebugMsg(
"multi-linestring can be drawn only with line symbol!" );
281 unsigned char* wkb = geom->
asWkb();
282 unsigned int num = *((
int* )( wkb + 5 ) );
283 unsigned char* ptr = wkb + 9;
286 for (
unsigned int i = 0; i < num; ++i )
289 ((
QgsLineSymbolV2* )symbol )->renderPolyline( pts, context, layer, selected );
291 if ( drawVertexMarker )
302 QgsDebugMsg(
"multi-polygon can be drawn only with fill symbol!" );
306 unsigned char* wkb = geom->
asWkb();
307 unsigned int num = *((
int* )( wkb + 5 ) );
308 unsigned char* ptr = wkb + 9;
310 QList<QPolygonF> holes;
312 for (
unsigned int i = 0; i < num; ++i )
315 ((
QgsFillSymbolV2* )symbol )->renderPolygon( pts, ( holes.count() ? &holes : NULL ), context, layer, selected );
317 if ( drawVertexMarker )
324 QgsDebugMsg(
"unsupported wkb type for rendering" );
330 return "UNKNOWN RENDERER\n";
338 if ( element.isNull() )
342 QString rendererType = element.attribute(
"type" );
389 foreach( QPointF pt, pts )
395 foreach( QPointF pt, pts )
400 foreach( QPolygonF ring, *rings )
402 foreach( QPointF pt, ring )