NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
2d_geometry_path_editor_interface.h
Go to the documentation of this file.
1 #ifndef SDK_2D_GEOMETRY_PATH_EDITOR_INTERFACE_H_
12 #define SDK_2D_GEOMETRY_PATH_EDITOR_INTERFACE_H_
13 
14 #include <base/inc/platform.h>
15 #include <base/inc/base_types.h>
19 #include "2d_geometry_objects.h"
20 
21 namespace sdk {
22 namespace geometry {
23 
27 static const float k2DInfiniteCoordinate = SDK_MAX_FLOAT / 10.0f;
28 
31 static inline bool Is2DCoordinateInfinite(const float& coord)
32 {
33  return (coord >= k2DInfiniteCoordinate) || (coord <= -k2DInfiniteCoordinate);
34 }
35 
39 {
44 
48 {
55 
71 
75 {
79 
84 {
85  public:
87  virtual SDKResult SDK_CALLTYPE SetFillMode(
88  const sdk::geometry::GeometryFillModeType& fill_mode_type) throw() = 0;
90  virtual SDKResult SDK_CALLTYPE GetFillMode(
91  sdk::geometry::GeometryFillModeType& fill_mode_type) const throw() = 0;
92 
94  virtual SDKResult SDK_CALLTYPE StartFigure(
95  const SDKPointF2D& start_point) throw() = 0;
97  virtual SDKResult SDK_CALLTYPE FinishFigure(
98  const sdk::geometry::GeometryFinishFigureRule& rule) throw() = 0;
99 
101  virtual SDKResult SDK_CALLTYPE GetFigureLastPoint(
102  SDKPointF2D& figure_last_point) const throw() = 0;
103 
104  // The following operations can be applied only to started figure
105 
107  virtual SDKResult SDK_CALLTYPE AddLine(const SDKPointF2D& point) throw() = 0;
109  virtual SDKResult SDK_CALLTYPE AddLines(const SDKPointF2D* points,
110  const SDKUInt32& points_count) throw() = 0;
111 
113  virtual SDKResult SDK_CALLTYPE AddQuadraticBezier(
114  const SDKQBezierSegment& segment) throw() = 0;
116  virtual SDKResult SDK_CALLTYPE AddQuadraticBeziers(
117  const SDKQBezierSegment* segments,
118  const SDKUInt32& segments_count) throw() = 0;
119 
121  virtual SDKResult SDK_CALLTYPE AddCubicBezier(
122  const SDKCuBezierSegment& segment) throw() = 0;
124  virtual SDKResult SDK_CALLTYPE AddCubicBeziers(
125  const SDKCuBezierSegment* segments,
126  const SDKUInt32& segments_count) throw() = 0;
127 
129  SDK_IMPLEMENT_IID(I2DGeometryPathEditor)
130  SDK_END_INTERFACE(I2DGeometryPathEditor)
131 };
132 SDK_DECLARE_IID(I2DGeometryPathEditor)
133 } // namespace geometry
134 } // namespace sdk
135 
136 #endif // SDK_2D_GEOMETRY_PATH_EDITOR_INTERFACE_H_
sdk::geometry::I2DGeometryPathEditor
Allows to edit the geometry path by adding geometric primitives, like line, Bezier curves,...
Definition: 2d_geometry_path_editor_interface.h:83
sdk::geometry::I2DGeometryPathEditor::SetFillMode
virtual SDKResult SDK_CALLTYPE SetFillMode(const sdk::geometry::GeometryFillModeType &fill_mode_type)=0
Set ups the geometry fill mode type.
sdk::geometry::kSkiaGeometryPathEditorProp_AddOpenedPolyMode
@ kSkiaGeometryPathEditorProp_AddOpenedPolyMode
AddLines(points,count) method is treated as (optimized) shortcut for: StartFigure(points[0]); for...
Definition: 2d_geometry_path_editor_interface.h:69
sdk::geometry::I2DGeometryPathEditor::StartFigure
virtual SDKResult SDK_CALLTYPE StartFigure(const SDKPointF2D &start_point)=0
Starts a new geometric figure.
base_types.h
SDK base types.
sdk::geometry::kGeometryPathEditorProp_ImplementationSpecificBase
@ kGeometryPathEditorProp_ImplementationSpecificBase
Base for implementation specific properties.
Definition: 2d_geometry_path_editor_interface.h:54
sdk::geometry::GeometryFillModeType
GeometryFillModeType
Geometry fill mode.
Definition: 2d_geometry_path_editor_interface.h:38
sdk::geometry::GeometryPathEditorProps
GeometryPathEditorProps
Geometry path editor properties.
Definition: 2d_geometry_path_editor_interface.h:47
sdk::geometry::I2DGeometryPathEditor::FinishFigure
virtual SDKResult SDK_CALLTYPE FinishFigure(const sdk::geometry::GeometryFinishFigureRule &rule)=0
Finishes previously started figure.
sdk::geometry::GeometryFillModeType_EvenOdd
@ GeometryFillModeType_EvenOdd
Fill mode by checking even/odd intersection count.
Definition: 2d_geometry_path_editor_interface.h:41
properties_interface.h
Object generic properties interface.
sdk::geometry::GeometryFinishFigureRule_CloseFigure
@ GeometryFinishFigureRule_CloseFigure
Figure should be closed.
Definition: 2d_geometry_path_editor_interface.h:77
sdk::geometry::k2DInfiniteCoordinate
static const float k2DInfiniteCoordinate
Infinite value for Ox/Oy coordinate, if at least one of coordinates is equal or bigger than infinity ...
Definition: 2d_geometry_path_editor_interface.h:27
sdk::geometry::I2DGeometryPathEditor::AddQuadraticBezier
virtual SDKResult SDK_CALLTYPE AddQuadraticBezier(const SDKQBezierSegment &segment)=0
Adds new quadratic Bezier curve segment to currently started figure.
sdk::geometry::kSkiaGeometryPathEditorProp_DefaultAddLinesMode
@ kSkiaGeometryPathEditorProp_DefaultAddLinesMode
Default AddLines mode.
Definition: 2d_geometry_path_editor_interface.h:59
SDKQBezierSegment
Quadratic Bezier curve segment.
Definition: geometry_base_types.h:1495
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
sdk::ISDKProperties
Provides access to members that control the properties.
Definition: properties_interface.h:32
SDKCuBezierSegment
Cubic Bezier curve segment.
Definition: geometry_base_types.h:1502
sdk::geometry::kGeometryPathEditorProp_ApproximateCubicBeziersByLines
@ kGeometryPathEditorProp_ApproximateCubicBeziersByLines
Approximate quadratic Beziers by lines on AddCubicBezier(s) call.
Definition: 2d_geometry_path_editor_interface.h:52
sdk::geometry::kSkiaGeometryPathEditorProp_AddClosedPolyMode
@ kSkiaGeometryPathEditorProp_AddClosedPolyMode
AddLines(points,count) method is treated as (optimized) shortcut for: StartFigure(points[0]); for...
Definition: 2d_geometry_path_editor_interface.h:64
sdk_component_interface.h
Common base SDK interfaces.
SDKPointF2D
Single 2D point.
Definition: geometry_base_types.h:33
sdk::geometry::GeometryFillModeType_Winding
@ GeometryFillModeType_Winding
Fill mode by checking left-to-right or right-to-left segment intersection count.
Definition: 2d_geometry_path_editor_interface.h:42
platform.h
Describes the platform constants.
sdk::geometry::Is2DCoordinateInfinite
static bool Is2DCoordinateInfinite(const float &coord)
Checks, if given 2D coordinate value is infinite.
Definition: 2d_geometry_path_editor_interface.h:31
sdk::geometry::GeometryFinishFigureRule_LeaveOpened
@ GeometryFinishFigureRule_LeaveOpened
Figure should be opened.
Definition: 2d_geometry_path_editor_interface.h:76
geometry_base_types.h
Geometry base types.
sdk::geometry::I2DGeometryPathEditor::AddCubicBeziers
virtual SDKResult SDK_CALLTYPE AddCubicBeziers(const SDKCuBezierSegment *segments, const SDKUInt32 &segments_count)=0
Adds set of cubic Bezier curves to currently started figure.
sdk::geometry::I2DGeometryPathEditor::GetFigureLastPoint
virtual SDKResult SDK_CALLTYPE GetFigureLastPoint(SDKPointF2D &figure_last_point) const =0
Returns last(current) point for currently started figure.
sdk::geometry::I2DGeometryPathEditor::AddLine
virtual SDKResult SDK_CALLTYPE AddLine(const SDKPointF2D &point)=0
Adds new line to figure between current and specified points.
sdk::geometry::I2DGeometryPathEditor::AddLines
virtual SDKResult SDK_CALLTYPE AddLines(const SDKPointF2D *points, const SDKUInt32 &points_count)=0
Adds a set of connected lines to currently started figure.
sdk::geometry::I2DGeometryPathEditor::GetFillMode
virtual SDKResult SDK_CALLTYPE GetFillMode(sdk::geometry::GeometryFillModeType &fill_mode_type) const =0
Returns current geometry fill mode type in use.
sdk::geometry::I2DGeometryPathEditor::AddCubicBezier
virtual SDKResult SDK_CALLTYPE AddCubicBezier(const SDKCuBezierSegment &segment)=0
Adds new cubic Bezier curve segment to currently started figure.
sdk::geometry::GeometryFillModeType_Unknown
@ GeometryFillModeType_Unknown
Unknown fill mode type.
Definition: 2d_geometry_path_editor_interface.h:40
SDK_MAX_FLOAT
static const float SDK_MAX_FLOAT
Max limit of float.
Definition: platform.h:197
sdk::geometry::kGeometryPathEditorProp_ApproximateQuadraticBeziersByLines
@ kGeometryPathEditorProp_ApproximateQuadraticBeziersByLines
Approximate quadratic Beziers by lines on AddQuadraticBezier(s) call.
Definition: 2d_geometry_path_editor_interface.h:50
sdk::geometry::GeometryFinishFigureRule
GeometryFinishFigureRule
Figure finish rule (see I2DGeometryPathEditor::FinishFigure)
Definition: 2d_geometry_path_editor_interface.h:74
sdk::geometry::I2DGeometryPathEditor::AddQuadraticBeziers
virtual SDKResult SDK_CALLTYPE AddQuadraticBeziers(const SDKQBezierSegment *segments, const SDKUInt32 &segments_count)=0
Adds set of quadratic Bezier curves to currently started figure.
sdk::geometry::kSkiaGeometryPathEditorProp_AddLinesMode
@ kSkiaGeometryPathEditorProp_AddLinesMode
SkiaGeometryPathEditor properties.
Definition: 2d_geometry_path_editor_interface.h:57