@@ -339,13 +339,17 @@ void QgsCoordinateTransform::transformPolygon( QPolygonF &poly, TransformDirecti
339339 QVector<double > x ( nVertices );
340340 QVector<double > y ( nVertices );
341341 QVector<double > z ( nVertices );
342+ double *destX = x.data ();
343+ double *destY = y.data ();
344+ double *destZ = z.data ();
342345
346+ const QPointF *polyData = poly.constData ();
343347 for ( int i = 0 ; i < nVertices; ++i )
344348 {
345- const QPointF &pt = poly. at ( i );
346- x[i] = pt. x ();
347- y[i] = pt. y () ;
348- z[i] = 0 ;
349+ *destX++ = polyData-> x ( );
350+ *destY++ = polyData-> y ();
351+ *destZ++ = 0 ;
352+ polyData++ ;
349353 }
350354
351355 try
@@ -359,11 +363,14 @@ void QgsCoordinateTransform::transformPolygon( QPolygonF &poly, TransformDirecti
359363 throw ;
360364 }
361365
366+ QPointF *destPoint = poly.data ();
367+ const double *srcX = x.constData ();
368+ const double *srcY = y.constData ();
362369 for ( int i = 0 ; i < nVertices; ++i )
363370 {
364- QPointF &pt = poly[i] ;
365- pt. rx () = x[i] ;
366- pt. ry () = y[i] ;
371+ destPoint-> rx () = *srcX++ ;
372+ destPoint-> ry () = *srcY++ ;
373+ destPoint++ ;
367374 }
368375}
369376
@@ -416,20 +423,36 @@ void QgsCoordinateTransform::transformInPlace(
416423 QVector<double > xd ( x.size () );
417424 QVector<double > yd ( y.size () );
418425 QVector<double > zd ( z.size () );
426+
427+ double *destX = xd.data ();
428+ double *destY = yd.data ();
429+ double *destZ = zd.data ();
430+
431+ const float *srcX = x.constData ();
432+ const float *srcY = y.constData ();
433+ const float *srcZ = z.constData ();
434+
419435 for ( int i = 0 ; i < vectorSize; ++i )
420436 {
421- xd[i] = x[i] ;
422- yd[i] = y[i] ;
423- zd[i] = z[i] ;
437+ *destX++ = static_cast < double >( *srcX++ ) ;
438+ *destY++ = static_cast < double >( *srcY++ ) ;
439+ *destZ++ = static_cast < double >( *srcZ++ ) ;
424440 }
441+
425442 transformCoords ( x.size (), &xd[0 ], &yd[0 ], &zd[0 ], direction );
426443
427444 // copy back
445+ float *destFX = x.data ();
446+ float *destFY = y.data ();
447+ float *destFZ = z.data ();
448+ const double *srcXD = xd.constData ();
449+ const double *srcYD = yd.constData ();
450+ const double *srcZD = zd.constData ();
428451 for ( int i = 0 ; i < vectorSize; ++i )
429452 {
430- x[i] = xd[i] ;
431- y[i] = yd[i] ;
432- z[i] = zd[i] ;
453+ *destFX++ = static_cast < float >( *srcXD++ ) ;
454+ *destFY++ = static_cast < float >( *srcYD++ ) ;
455+ *destFZ++ = static_cast < float >( *srcZD++ ) ;
433456 }
434457 }
435458 catch ( QgsCsException & )
0 commit comments