@@ -1851,17 +1851,16 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
1851
1851
geom = QgsGeometry ( geom.geometry ()->boundary () );
1852
1852
}
1853
1853
1854
- const GEOSGeometry* geos_geom = nullptr ;
1854
+ GEOSGeometry* geos_geom_clone = nullptr ;
1855
1855
if ( QgsPalLabeling::geometryRequiresPreparation ( geom, context, ct, doClip ? &extentGeom : nullptr ) )
1856
1856
{
1857
1857
geom = QgsPalLabeling::prepareGeometry ( geom, context, ct, doClip ? &extentGeom : nullptr );
1858
1858
1859
1859
if ( geom.isEmpty () )
1860
1860
return ;
1861
1861
}
1862
- geos_geom = geom.asGeos ();
1862
+ geos_geom_clone = geom.exportToGeos ();
1863
1863
1864
- const GEOSGeometry* geosObstacleGeom = nullptr ;
1865
1864
QScopedPointer<QgsGeometry> scopedObstacleGeom;
1866
1865
if ( isObstacle )
1867
1866
{
@@ -1870,16 +1869,12 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
1870
1869
scopedObstacleGeom.reset ( new QgsGeometry ( QgsPalLabeling::prepareGeometry ( *obstacleGeometry, context, ct, doClip ? &extentGeom : nullptr ) ) );
1871
1870
obstacleGeometry = scopedObstacleGeom.data ();
1872
1871
}
1873
- if ( obstacleGeometry )
1874
- {
1875
- geosObstacleGeom = obstacleGeometry->asGeos ();
1876
- }
1877
1872
}
1878
1873
1879
1874
if ( minFeatureSize > 0 && !checkMinimumSizeMM ( context, geom, minFeatureSize ) )
1880
1875
return ;
1881
1876
1882
- if ( !geos_geom )
1877
+ if ( !geos_geom_clone )
1883
1878
return ; // invalid geometry
1884
1879
1885
1880
// likelihood exists label will be registered with PAL and may be drawn
@@ -1907,11 +1902,10 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, QgsRenderContext &cont
1907
1902
}
1908
1903
}
1909
1904
1910
- GEOSGeometry* geos_geom_clone = GEOSGeom_clone_r ( QgsGeometry::getGEOSHandler (), geos_geom );
1911
1905
GEOSGeometry* geosObstacleGeomClone = nullptr ;
1912
- if ( geosObstacleGeom )
1906
+ if ( obstacleGeometry )
1913
1907
{
1914
- geosObstacleGeomClone = GEOSGeom_clone_r ( QgsGeometry::getGEOSHandler (), geosObstacleGeom );
1908
+ geosObstacleGeomClone = obstacleGeometry-> exportToGeos ( );
1915
1909
}
1916
1910
1917
1911
@@ -2384,21 +2378,18 @@ void QgsPalLayerSettings::registerObstacleFeature( QgsFeature& f, QgsRenderConte
2384
2378
geom = simplifier.simplify ( geom );
2385
2379
}
2386
2380
2387
- const GEOSGeometry* geos_geom = nullptr ;
2381
+ GEOSGeometry* geos_geom_clone = nullptr ;
2388
2382
QScopedPointer<QgsGeometry> scopedPreparedGeom;
2389
2383
2390
2384
if ( QgsPalLabeling::geometryRequiresPreparation ( geom, context, ct, &extentGeom ) )
2391
2385
{
2392
2386
geom = QgsPalLabeling::prepareGeometry ( geom, context, ct, &extentGeom );
2393
2387
}
2394
- geos_geom = geom.asGeos ();
2388
+ geos_geom_clone = geom.exportToGeos ();
2395
2389
2396
- if ( !geos_geom )
2390
+ if ( !geos_geom_clone )
2397
2391
return ; // invalid geometry
2398
2392
2399
- GEOSGeometry* geos_geom_clone;
2400
- geos_geom_clone = GEOSGeom_clone_r ( QgsGeometry::getGEOSHandler (), geos_geom );
2401
-
2402
2393
// feature to the layer
2403
2394
*obstacleFeature = new QgsLabelFeature ( f.id (), geos_geom_clone, QSizeF ( 0 , 0 ) );
2404
2395
( *obstacleFeature )->setIsObstacle ( true );
@@ -3416,8 +3407,10 @@ QgsGeometry QgsPalLabeling::prepareGeometry( const QgsGeometry& geometry, QgsRen
3416
3407
}
3417
3408
}
3418
3409
3419
- if ( !geom.asGeos () )
3420
- return QgsGeometry (); // there is something really wrong with the geometry
3410
+ // MD: exporting geometry to GEOS just to see if the geometry is wrong...?
3411
+ // if still needed, we could have a more specific test here
3412
+ // if ( !geom.asGeos() )
3413
+ // return QgsGeometry(); // there is something really wrong with the geometry
3421
3414
3422
3415
// fix invalid polygons
3423
3416
if ( geom.type () == QgsWkbTypes::PolygonGeometry && !geom.isGeosValid () )
0 commit comments