1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
diff -Nur osgearth-osgearth-2.10.2.a/src/osgEarthSymbology/GEOS.cpp osgearth-osgearth-2.10.2.b/src/osgEarthSymbology/GEOS.cpp
--- osgearth-osgearth-2.10.2.a/src/osgEarthSymbology/GEOS.cpp 2019-07-12 08:49:14.000000000 -0700
+++ osgearth-osgearth-2.10.2.b/src/osgEarthSymbology/GEOS.cpp 2019-11-16 10:00:08.966241888 -0800
@@ -49,7 +49,7 @@
namespace
{
- geom::CoordinateSequence*
+ std::unique_ptr<geom::CoordinateSequence>
vec3dArray2CoordSeq( const Symbology::Geometry* input, bool close, const geom::CoordinateSequenceFactory* factory )
{
bool needToClose = close && input->size() > 2 && input->front() != input->back();
@@ -64,7 +64,7 @@
{
coords->push_back( coords->front() );
}
- geom::CoordinateSequence* seq = factory->create( coords );
+ std::unique_ptr<geom::CoordinateSequence> seq = factory->create( coords );
return seq;
}
@@ -108,7 +108,8 @@
else
{
// any other type will at least contain points:
- geom::CoordinateSequence* seq = 0L;
+ std::unique_ptr<geom::CoordinateSequence> seq = 0L;
+
try
{
switch( input->getType() )
@@ -119,24 +120,24 @@
case Symbology::Geometry::TYPE_POINTSET:
seq = vec3dArray2CoordSeq( input, false, f->getCoordinateSequenceFactory() );
- if ( seq ) output = f->createPoint( seq );
+ if ( seq ) output = f->createPoint( *seq );
break;
case Symbology::Geometry::TYPE_LINESTRING:
seq = vec3dArray2CoordSeq( input, false, f->getCoordinateSequenceFactory() );
- if ( seq ) output = f->createLineString( seq );
+ if ( seq ) output = f->createLineString( *seq );
break;
case Symbology::Geometry::TYPE_RING:
seq = vec3dArray2CoordSeq( input, true, f->getCoordinateSequenceFactory() );
- if ( seq ) output = f->createLinearRing( seq );
+ if ( seq ) output = f->createLinearRing( *seq );
break;
case Symbology::Geometry::TYPE_POLYGON:
seq = vec3dArray2CoordSeq( input, true, f->getCoordinateSequenceFactory() );
geom::LinearRing* shell = 0L;
if ( seq )
- shell = f->createLinearRing( seq );
+ shell = f->createLinearRing( *seq );
if ( shell )
{
@@ -155,7 +156,7 @@
holes = 0L;
}
}
- output = f->createPolygon( shell, holes );
+ output = f->createPolygon( shell, (std::vector<geom::LinearRing * >*)holes );
}
break;
|