Handle<Value> Geometry::New(OGRGeometry *geom, bool owned) { HandleScope scope; if (!geom) { return Null(); } switch(getGeometryType_fixed(geom)) { case wkbPoint : return scope.Close(Point::New(static_cast<OGRPoint*>(geom), owned)); case wkbLineString : return scope.Close(LineString::New(static_cast<OGRLineString*>(geom), owned)); case wkbLinearRing : return scope.Close(LinearRing::New(static_cast<OGRLinearRing*>(geom), owned)); case wkbPolygon : return scope.Close(Polygon::New(static_cast<OGRPolygon*>(geom), owned)); case wkbGeometryCollection : return scope.Close(GeometryCollection::New(static_cast<OGRGeometryCollection*>(geom), owned)); case wkbMultiPoint : return scope.Close(MultiPoint::New(static_cast<OGRMultiPoint*>(geom), owned)); case wkbMultiLineString : return scope.Close(MultiLineString::New(static_cast<OGRMultiLineString*>(geom), owned)); case wkbMultiPolygon : return scope.Close(MultiPolygon::New(static_cast<OGRMultiPolygon*>(geom), owned)); default : return NODE_THROW("Tried to create unsupported geometry type"); } }
Local<Value> Geometry::New(OGRGeometry *geom, bool owned) { Nan::EscapableHandleScope scope; if (!geom) { return scope.Escape(Nan::Null()); } OGRwkbGeometryType type = getGeometryType_fixed(geom); type = wkbFlatten(type); switch (type) { case wkbPoint: return scope.Escape(Point::New(static_cast<OGRPoint*>(geom), owned)); case wkbLineString: return scope.Escape(LineString::New(static_cast<OGRLineString*>(geom), owned)); case wkbLinearRing: return scope.Escape(LinearRing::New(static_cast<OGRLinearRing*>(geom), owned)); case wkbPolygon: return scope.Escape(Polygon::New(static_cast<OGRPolygon*>(geom), owned)); case wkbGeometryCollection: return scope.Escape(GeometryCollection::New(static_cast<OGRGeometryCollection*>(geom), owned)); case wkbMultiPoint: return scope.Escape(MultiPoint::New(static_cast<OGRMultiPoint*>(geom), owned)); case wkbMultiLineString: return scope.Escape(MultiLineString::New(static_cast<OGRMultiLineString*>(geom), owned)); case wkbMultiPolygon: return scope.Escape(MultiPolygon::New(static_cast<OGRMultiPolygon*>(geom), owned)); default: Nan::ThrowError("Tried to create unsupported geometry type"); return scope.Escape(Nan::Undefined()); } }