 |
NAVTOR SDK
v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
|
|
Go to the documentation of this file.
9 #ifndef SDK_GEOMETRY_INTERFACE_H_
10 #define SDK_GEOMETRY_INTERFACE_H_
23 class IHorizontalCoordinateSystem;
25 class IVerticalCoordinateSystem;
30 #ifndef SDK_GEOMETRY_NAMESPACE
31 #define SDK_GEOMETRY_NAMESPACE SDK_NAMESPACE::geometry
32 #endif // SDK_GEOMETRY_NAMESPACE
34 #ifndef SDK_GEOMETRY_BEGIN_NAMESPACE
35 #define SDK_GEOMETRY_BEGIN_NAMESPACE namespace SDK_NAMESPACE { \
37 #endif // SDK_GEOMETRY_BEGIN_NAMESPACE
39 #ifndef SDK_GEOMETRY_END_NAMESPACE
40 #define SDK_GEOMETRY_END_NAMESPACE } }
41 #endif // SDK_GEOMETRY_END_NAMESPACE
43 SDK_GEOMETRY_BEGIN_NAMESPACE
125 struct GeometryTypeName {
130 static const GeometryTypeName kGeometryTypeNames[] = {
157 kGMTF_Point = 0x0001,
158 kGMTF_Multipoint = 0x0002,
159 kGMTF_Curve = 0x0004,
160 kGMTF_Surface = 0x0008,
161 kGMTF_Triangles = 0x0010,
163 kGMTF_TriangleFan = 0x0040,
164 kGMTF_CompositeCurve = 0x0080,
166 kGMTF_GeometryCollection = 0x0200,
167 kGMTF_Polygon = 0x0000,
168 kGMTF_MultiSurface = 0x0400,
169 kGMTF_MultiPolygon = 0x0000,
170 kGMTF_CurveSegment = 0x0800,
171 kGMTF_MultiCompositeCurve = 0x1000,
172 kGMTF_MultiCurve = 0x2000,
173 kGMTF_TriangleStrip = 0x4000,
174 kGMTF_Circle = 0x8000,
175 kGMTF_BezierCurve = 0x10000,
189 kGMTF_CompositeCurve,
191 kGMTF_GeometryCollection,
196 kGMTF_MultiCompositeCurve,
354 IGeometry** projected_geometry)
throw() = 0;
385 SDKUInt16& hordat)
const throw() = 0;
394 SDKUInt64& flags)
const throw() = 0;
402 SDKUInt64& flags)
const throw() = 0;
417 SDKUInt32& count)
const throw() = 0;
462 void* ymax)
const throw() = 0;
469 void* zmax)
const throw() = 0;
502 virtual SDKResult SDK_CALLTYPE GetCoords(
505 void* Y)
const throw() = 0;
510 void* Z)
const throw() = 0;
523 virtual SDKResult SDK_CALLTYPE GetPointCount(
524 SDKUInt32& point_count)
const throw() = 0;
527 virtual SDKResult SDK_CALLTYPE GetItemCount(
528 SDKUInt32& item_count)
const throw() = 0;
531 virtual SDKResult SDK_CALLTYPE GetItemPointCount(SDKUInt32 item,
532 SDKUInt32& point_count)
const throw() = 0;
536 point_dimension)
const throw() = 0;
573 virtual SDKResult SDK_CALLTYPE GetPoints(
577 void* points)
const throw() = 0;
621 virtual SDKResult SDK_CALLTYPE GetPointsRef(
624 const SDKAnyType** types,
625 const SDKUInt32** counts,
626 SDKUInt32* array_count)
throw() = 0;
647 virtual SDKResult SDK_CALLTYPE GetInterpolationMethod(
662 virtual SDKResult SDK_CALLTYPE IsClosed()
const throw() = 0;
686 virtual SDKResult SDK_CALLTYPE IsExterior()
const throw() = 0;
688 SDK_IMPLEMENT_IID(
IRing)
689 SDK_END_INTERFACE(
IRing)
691 SDK_DECLARE_IID(
IRing)
700 virtual SDKResult SDK_CALLTYPE IsEnvelope()
const throw() = 0;
703 virtual SDKResult SDK_CALLTYPE GetExteriorRingCount(
704 SDKUInt32& count)
const throw() = 0;
746 virtual SDKResult SDK_CALLTYPE GetBounds(
750 void* max)
const throw() = 0;
758 virtual SDKResult SDK_CALLTYPE GetCellCount(
760 SDKUInt32& count)
const throw() = 0;
762 SDK_IMPLEMENT_IID(
IGrid)
763 SDK_END_INTERFACE(
IGrid)
765 SDK_DECLARE_IID(
IGrid)
782 virtual SDKResult SDK_CALLTYPE GetParameter(
784 SDKAny& value)
throw() = 0;
786 virtual SDKResult SDK_CALLTYPE SetParameter(
788 const SDKAny& value)
throw() = 0;
801 virtual void SDK_CALLTYPE SetDegree(SDKUInt8 degree) noexcept = 0;
804 virtual void SDK_CALLTYPE GetDegree(SDKUInt8& degree)
const noexcept = 0;
811 virtual SDKResult SDK_CALLTYPE ConstructBezierCurve(
double density,
814 IGeometrySP& out_curve)
const noexcept = 0;
929 SDK_GEOMETRY_END_NAMESPACE
931 #endif // SDK_GEOMETRY_INTERFACE_H_
@ kGMT_MultiCompositeCurve
A MultiCompositCurve is a two-dimensional geometric collection whose elements are composite curves.
Definition: geometry.h:113
@ kGMT_GeometryCollection
A GeometryCollection is a geometry that is a collection of 1 or more geometries.
Definition: geometry.h:99
Provides access to members that identify a grid.
Definition: geometry.h:736
GeometryDimension
The topological dimension of a geometry.
Definition: geometry.h:205
@ PointCollectionParameter_Approximation
Approximation.
Definition: geometry.h:287
@ kGMT_TriangleFan
A surface patch of triangles defined by the first point and two consecutive points.
Definition: geometry.h:91
@ kGMD_1D
A one dimensional geometry (such as a curve).
Definition: geometry.h:208
@ kGM_IM_CircularArc3Points
CircularArc3Points is the interpolation defined by a series of 3 DirectPositions on a circular arc pa...
Definition: geometry.h:263
Provides access to members that manipulate the points of a Multipoint, Curve, Ring,...
Definition: geometry.h:520
virtual SDKResult SDK_CALLTYPE GetHorizontalCoordinateSystem(sdk::crs::IHorizontalCoordinateSystem **coordinate_system) const =0
Returns an interface that provides access to properties of the horizontal coordinate system.
@ kGMT_TriangleStrip
A surface patch of triangles defined by three consecutive points.
Definition: geometry.h:118
Describes the members that manage the point collection parameters.
Definition: geometry.h:779
virtual SDKResult SDK_CALLTYPE GetDimension(GeometryDimension &dimension) const =0
Returns the topological dimension of the envelope.
@ kGMPT_GeoIntPoint3D
3D points are in GeoInt units.
Definition: geometry.h:226
@ kGMT_MultiSurface
A MultiSurface is a two-dimensional geometric collection whose elements are surfaces.
Definition: geometry.h:106
Provides access to members that control access to the properties of the vertical coordinate system.
Definition: crs_vertical_coordinate_system.h:85
@ kGMPD_2
2 coordinates.
Definition: geometry.h:217
@ kGMPT_GeoPoint
2D points are in GeoPoint units.
Definition: geometry.h:227
SDKUInt8 PointDimensionType
Point dimension type.
Definition: geometry.h:246
@ kGMD_2D
A two dimensional geometry (such as a surface).
Definition: geometry.h:209
virtual SDKResult SDK_CALLTYPE GetEnvelope(IEnvelope **envelope) const =0
Returns the unique Envelope that binds the Geometry object. This is the smallest Envelope that Contai...
SDKUInt8 GeometryInterpolationMethodType
Geometry interpolation method type.
Definition: geometry.h:282
Provides access to members that describe properties and behavior of geometric envelope.
Definition: geometry.h:453
Provides access to members that identify a surface and give access to its inner and outer rings.
Definition: geometry.h:696
Provides access to members that identify third degree bezier curve.
Definition: geometry.h:797
@ kGM_IM_Geodesic
Geodesic (geodesic) is the interpolation mechanism which shall return DirectPositions on a geodesic c...
Definition: geometry.h:269
@ kGMPD_4
4 coordinates.
Definition: geometry.h:219
@ kGMT_Triangles
A surface patch of triangles defined by non-overlapping sets of three consecutive points each.
Definition: geometry.h:86
@ kGMPT_PointD3D
3D points are in spatial Cartesian units.
Definition: geometry.h:233
Provides access to members that describe properties and behavior of all geometric objects.
Definition: geometry.h:293
@ kGMPD_3
3 coordinates.
Definition: geometry.h:218
Interface that identifies a Curve Segment.
Definition: geometry.h:644
virtual SDKResult SDK_CALLTYPE GetDimension(GeometryDimension &dimension) const =0
Returns the topological dimension of the geometry object.
virtual SDKResult SDK_CALLTYPE IsEmpty() const =0
Indicates whether this geometry contains any points.
PointCollectionParameter
Specifies parameters for a point collection.
Definition: geometry.h:286
@ kGMPT_PointF2D
2D points are in spatial Cartesian units.
Definition: geometry.h:230
virtual SDKResult SDK_CALLTYPE GetGeometryFlags(SDKUInt64 &flags) const =0
Returns geometry flags.
@ kGMT_Null
Unknown type of geometry.
Definition: geometry.h:75
@ kGMT_Ring
A Ring is an area bounded by one, closed sequence of connected curves.
Definition: geometry.h:96
Provides access to members that can be used for accessing individual geometries of a multi-part geome...
Definition: geometry.h:413
@ kGMD_0D
A zero dimensional geometry (such as a point or multipoint).
Definition: geometry.h:207
Wrappers and helper functions for SDKString.
GeometryInterpolationMethod
Interpolation method of a Segment.
Definition: geometry.h:250
Provides access to members that manipulate the points references of a Multipoint, CurveSegment,...
Definition: geometry.h:605
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
Indicator interface for a Null geometry.
Definition: geometry.h:769
@ kGMTF_All
All geometry types.
Definition: geometry.h:176
@ kGMTF_Null
No flags.
Definition: geometry.h:156
PointType
Type of point.
Definition: geometry.h:224
virtual SDKResult SDK_CALLTYPE GetGeometryType(GeometryType &type) const =0
Returns the type of a geometry.
@ kGMD_25D
A 2.5D geometry (such as a surface mesh).
Definition: geometry.h:210
virtual SDKResult SDK_CALLTYPE GetHorizontalDatum(SDKUInt16 &hordat) const =0
Returns the horizontal datum of the geometry.
virtual SDKResult SDK_CALLTYPE IsInfinite() const =0
Indicates whether a Geometry object has infinite coordinates in any dimension.
virtual SDKResult SDK_CALLTYPE GetCoordinates(SDKAnyType type, void *xmin, void *ymin, void *xmax, void *ymax) const =0
Returns coordinates formatted in the specified type.
virtual SDKResult SDK_CALLTYPE GetGeometryID(SDKUInt64 &flags) const =0
Returns geometry identifier.
virtual SDKResult SDK_CALLTYPE GetVerticalCoordinateSystem(sdk::crs::IVerticalCoordinateSystem **coordinate_system) const =0
Returns an interface that provides access to properties of the vertical coordinate system.
Common base SDK interfaces.
@ kGM_IM_SeparatePoints
The points list not represent a continued segment but it is just a list of separate points.
Definition: geometry.h:253
Provides access to members that identify a ring.
Definition: geometry.h:681
@ kGMT_Grid
A grid geometry type.
Definition: geometry.h:88
@ kGMD_3D
A 3D geometry.
Definition: geometry.h:211
static const SDKUInt32 kGeometryTypeToTypeFlagTable[]
The geometry type to geometry type flag cross table.
Definition: geometry.h:180
@ kGM_IM_CubicSpline
The control points are interpolated using initial tangents and cubic polynomials, a form of degree 3 ...
Definition: geometry.h:277
@ kGMT_Curve
A Curve is a connected sequence of segments.
Definition: geometry.h:81
static const SDKUInt64 kGeometryID_Undefined
Undefined ID.
Definition: geometry.h:69
@ kGMT_MultiCurve
A MultiCurve is a two-dimensional geometric collection whose elements are curves.
Definition: geometry.h:116
@ kGMPT_PointD2D
2D points are in spatial Cartesian units.
Definition: geometry.h:232
GeometryTypeFlag
Geometry type flag. It is used for the parameterization of queries.
Definition: geometry.h:155
virtual SDKResult SDK_CALLTYPE GetBoundary(IGeometry **geometry)=0
Returns boundary of the geometry object.
Base interface for all SDK interfaces.
Definition: sdk_component_interface.h:41
@ kGMT_MultiPolygon
A MultiPolygon is a MultiSurface whose elements are Polygons.
Definition: geometry.h:108
@ kGMT_Surface
A Surface is a collection of rings.
Definition: geometry.h:83
@ kGMT_CompositeCurve
A CompositCurve is a connected sequence of curves.
Definition: geometry.h:93
GeometryType
Available types of geometry objects.
Definition: geometry.h:73
Provides access to members that define two dimensional points.
Definition: geometry.h:493
virtual SDKResult SDK_CALLTYPE GetZCoordinates(SDKAnyType type, void *zmin, void *zmax) const =0
Returns the minimum and maximum Z values.
virtual SDKResult SDK_CALLTYPE GetGeometryCount(SDKUInt32 &count) const =0
Returns the number of Geometries in the GeometryCollection.
@ kGMT_Circle
Circle.
Definition: geometry.h:120
Describes member that manage the horizontal coordinate system
Definition: crs_horizontal_coordinate_system.h:137
Indicator interface for a CompositeCurve.
Definition: geometry.h:671
@ kGMPT_GeoPoint3D
3D points are in GeoPoint units.
Definition: geometry.h:228
Indicator interface for a multipoint.
Definition: geometry.h:635
virtual SDKResult SDK_CALLTYPE GetGeometry(SDKUInt32 index, IGeometry **geometry) const =0
Returns the ith Geometry from the GeometryCollection. The first Geometry has index 0 and the last Geo...
virtual SDKResult SDK_CALLTYPE Project(sdk::crs::IProjection *projection, IGeometry **projected_geometry)=0
Projects the geometry into a new projection.
SDKUInt32 GeometryTypeFlagType
Geometry type flag.
Definition: geometry.h:65
virtual SDKResult SDK_CALLTYPE GetPointCollection(IPointCollectionParameters *parameters, IPointCollection **point_collection)=0
Returns the point collection of the Geometry object.
@ kGMPT_GeoIntPoint
2D points are in GeoInt units.
Definition: geometry.h:225
@ kGMT_CurveSegment
A CurveSegment is a homogeneous segment of a Curve.
Definition: geometry.h:110
@ kGMPT_PointF3D
3D points are in spatial Cartesian units.
Definition: geometry.h:231
virtual SDKResult SDK_CALLTYPE IsEmpty() const =0
Returns whether the width and height are equal to 0.
@ kGMT_Polygon
A Polygon is a planar surface, defined by 1 exterior boundary and 0 or more interior boundaries....
Definition: geometry.h:103
@ kGMT_BezierCurve
Bezier curve.
Definition: geometry.h:122
@ kGM_IM_Linear
Linear (linear) is the interpolation mechanism that shall return DirectPositions on a straight line b...
Definition: geometry.h:257
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
Axis
Axis.
Definition: geometry.h:238
PointDimension
The coordinates dimension.
Definition: geometry.h:216
virtual SDKResult SDK_CALLTYPE IsInfinite() const =0
Indicates whether a Geometry object has infinite coordinates in any dimension.
Indicator interface for the MultiSurface.
Definition: geometry.h:726
@ kGMT_Point
A point is a single 0 dimensional geometry.
Definition: geometry.h:77
@ kGMD_NoD
The dimension is unknown or unspecified.
Definition: geometry.h:206
Provides access to properties and methods of 1 dimensional curves.
Definition: geometry.h:657
@ kGM_IM_Loxodromic
Loxodromic is the interpolation method that shall return DirectPositions on a loxodromic curve betwee...
Definition: geometry.h:274
@ kGMT_Multipoint
A Multipoint is an ordered collection of points.
Definition: geometry.h:79
Provides access to members that control the properties and methods for the projection.
Definition: crs_projection.h:31