NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
visual_object_interface.h
Go to the documentation of this file.
1 #ifndef VISUAL_OBJECT_INTERFACE_H_
11 #define VISUAL_OBJECT_INTERFACE_H_
12 
13 #include <base/inc/platform.h>
14 #include <base/inc/base_types.h>
17 #include <base/inc/sdk_ref_ptr.h>
20 
21 #include <geometry/inc/geometry/geometry2d/2d_geometry_objects.h>
23 
25 
28 
30 
31 #include <base/inc/sdk_pshpack1.h>
32 
33 namespace sdk {
34 namespace vis {
35 namespace sdl {
36 
38 SDK_PACK(struct SDKPosition
39 {
40  SDKPointF2D m_pos;
41  float m_angle;
42 });
43 
45 FWD_DECL_INTERFACE(ISpriteElementCollection);
46 FWD_DECL_INTERFACE(IShapeCollection);
47 FWD_DECL_INTERFACE(ISpriteElement);
48 FWD_DECL_INTERFACE(IShapeElement);
49 FWD_DECL_INTERFACE(IPositionsCollection);
50 
51 typedef enum VisualObjectFlags
52 {
53  VisualObject_CanBeSprite = 0x01,
54  VisualObject_IsSprite = 0x02,
55  VisualObject_HasPositions = 0x04,
56  VisualObject_CreatingSprite = 0x08,
57  VisualObject_CanBeCached = 0x10,
58  VisualObject_NotToScale = 0x20,
59  VisualObject_ShouldBeClipped = 0x40,
60 
61  VisualObject_UnitsMeter = 0x80,
62 
63  VisualObject_LayoutOwner = 0x0100,
64  VisualObject_DoNotCache = 0x0200,
65 } VisualObjectFlags;
66 
71 class IVisualObject :
72  public sdk::ISDKComponent
73 {
74 public:
75 
83  virtual SDKResult SDK_CALLTYPE GetUniqueId(
84  SDKUInt16& id, SDKAny& var_key) const throw() = 0;
85 
90  virtual SDKResult SDK_CALLTYPE GetSymbolGeometryType(
91  SymbolGeometryType& geom_type) const throw() = 0;
92 
97  virtual SDKResult SDK_CALLTYPE GetSymbolType(
98  SymbolType& type) const throw() = 0;
99 
109  virtual SDKResult SDK_CALLTYPE Draw(
110  SDKUInt16 palette_id,
111  const sdk::gfx::RenderTargetSP& target,
112  const sdk::ISDKComponentSP& geometry,
113  const SDKMatrix3X2& transformation_matrix,
114  const IDrawingContextSP& context) throw() = 0;
115 
124  virtual SDKResult SDK_CALLTYPE Attach(
125  IVisualObjectSP& child_vo,
126  AnchorType anchor,
127  float x_offset, float y_offset) throw() = 0;
128 
136  virtual SDKResult SDK_CALLTYPE GetMetrics(
137  SDKSizeF& size,
138  SDKPointF2D& origin,
139  const sdk::gfx::RenderTargetSP& target) const throw() = 0;
140 
147  virtual SDKResult SDK_CALLTYPE GetAnchorOffset(
148  AnchorType anchor,
149  SDKPointF2D& offset) const throw() = 0;
150 
162  virtual SDKResult SDK_CALLTYPE GetSprites(
163  ISpriteElementCollectionSP& sprites) const throw() = 0;
164 
172  virtual SDKResult SDK_CALLTYPE GetShapes(
173  IShapeCollection& sprites) const throw() = 0;
174 
175  virtual SDKResult SDK_CALLTYPE SetOffset(
176  const SDKPointF2D& offset) throw() = 0;
177  virtual SDKResult SDK_CALLTYPE GetOffset(
178  SDKPointF2D& offset) const throw() = 0;
179  virtual SDKResult SDK_CALLTYPE GetFlags(
180  SDKUInt16& flags) const throw() = 0;
181  virtual SDKResult SDK_CALLTYPE SetFlags(
182  SDKUInt16 flags) throw() = 0;
183  virtual SDKResult SDK_CALLTYPE GetScale(
184  float& scale) const throw() = 0;
185  virtual SDKResult SDK_CALLTYPE GetAABB(
186  RectF2D& aabb) const throw() = 0;
187  virtual SDKResult SDK_CALLTYPE AddAABB(
188  const RectF2D& aabb, const PointF2D& offset) throw() = 0;
189 
191  SDK_IMPLEMENT_IID(IVisualObject)
192  SDK_END_INTERFACE(IVisualObject)
193 };
194 SDK_DECLARE_IID(IVisualObject)
195 
199  public sdk::ISDKComponent
200 {
201 public:
203  virtual SDKResult SDK_CALLTYPE Count(SDKUInt32& count) const throw() = 0;
204 
213  virtual SDKResult SDK_CALLTYPE GetSprite(
214  SDKUInt32 index,
215  ISpriteElementSP& sprite) throw() = 0;
216 
217  SDK_IMPLEMENT_IID(ISpriteElementCollection)
218  SDK_END_INTERFACE(ISpriteElementCollection)
219 };
220 SDK_DECLARE_IID(ISpriteElementCollection)
221 
222 class ISpriteElement :
225  public sdk::ISDKComponent
226 {
227 public:
228 
236  virtual SDKResult SDK_CALLTYPE GetUniqueId(
237  SDKUInt16& id, SDKAny& var_key) const throw() = 0;
238 
245  virtual SDKResult SDK_CALLTYPE CreateTexture(
246  const sdk::gfx::RenderTargetSP& target,
247  SDKPointI2D& org,
248  SDKRect2D& rect) const throw() = 0;
249 
257  virtual SDKResult SDK_CALLTYPE GetPosition(
258  const sdk::gfx::RenderTargetSP& target,
259  const sdk::geometry::GeometryPathSP& geometry,
260  const IDrawingContextSP& context,
261  SDKAny& positions) const throw() = 0;
262 
267  virtual SDKResult SDK_CALLTYPE GetVisualObject(
268  IVisualObjectSP& vo) throw() = 0;
269 
271  virtual SDKResult SDK_CALLTYPE SetFlags(
272  const SDKUInt16 flags) throw() = 0;
273  virtual SDKResult SDK_CALLTYPE GetFlags(
274  SDKUInt16& flags) throw() = 0;
275 
278  virtual SDKResult SDK_CALLTYPE ClearVectorData(void) throw() = 0;
279 
280  SDK_IMPLEMENT_IID(ISpriteElement)
281  SDK_END_INTERFACE(ISpriteElement)
282 };
283 SDK_DECLARE_IID(ISpriteElement)
284 
285 class IPositionsCollection :
288  public sdk::ISDKComponent
289 {
290 public:
292  virtual SDKResult SDK_CALLTYPE Count(SDKUInt32& count) const throw() = 0;
293 
295  virtual SDKResult SDK_CALLTYPE GetPosition(
296  SDKUInt32 index,
297  SDKPosition& pos) throw() = 0;
298 
299  SDK_IMPLEMENT_IID(IPositionsCollection)
300  SDK_END_INTERFACE(IPositionsCollection)
301 };
302 SDK_DECLARE_IID(IPositionsCollection)
303 } // namespace sdl
304 } // namespace vis
305 } // namespace sdk
306 
307 #include <base/inc/sdk_poppack.h>
308 
309 #endif // VISUAL_OBJECT_INTERFACE_H_
sdk::vis::sdl::SymbolGeometryType
SymbolGeometryType
Defines the symbol geometry type.
Definition: sdl_interface.h:71
sdk::vis::sdl::SymbolType
SymbolType
Defines the symbol type.
Definition: sdl_interface.h:57
base_types.h
SDK base types.
sdk::vis::sdl::ISpriteElement::GetUniqueId
virtual SDKResult SDK_CALLTYPE GetUniqueId(SDKUInt16 &id, SDKAny &var_key) const =0
Returns the unique key composed of two parts: a two-byte SDL script ID and variable length byte strea...
sdk_ref_ptr.h
Interfaces wrapper with reference count control.
2d_render_target_interface.h
Generic 2D render target (allows to render 2D images)
2d_geometry_path_interface.h
Describes interface for 2D geometry path, which supports the edit operations.
sdk::PointF2D
A 2-D point.
Definition: geometry_base_types_helpers.h:58
sdk::vis::sdl::IVisualObject::GetSymbolGeometryType
virtual SDKResult SDK_CALLTYPE GetSymbolGeometryType(SymbolGeometryType &geom_type) const =0
Returns the symbol geometry type.
sdk::vis::sdl::IVisualObject::GetMetrics
virtual SDKResult SDK_CALLTYPE GetMetrics(SDKSizeF &size, SDKPointF2D &origin, const sdk::gfx::RenderTargetSP &target) const =0
Calculates size and origin of the visual object on the specified target.
sdk::vis::sdl::IVisualObject
Provides access to individual elements of a visual object including potential sprite elements and vec...
Definition: visual_object_interface.h:71
sdk::vis::sdl::ISpriteElementCollection::GetSprite
virtual SDKResult SDK_CALLTYPE GetSprite(SDKUInt32 index, ISpriteElementSP &sprite)=0
Returns the sprites element specified by index. The first sprite has index 0 and the last sprite has ...
sdk::vis::sdl::IVisualObject::GetUniqueId
virtual SDKResult SDK_CALLTYPE GetUniqueId(SDKUInt16 &id, SDKAny &var_key) const =0
Returns the unique key composed of two parts: a two-byte SDL script ID and variable length byte strea...
sdk::vis::sdl::ISpriteElementCollection::Count
virtual SDKResult SDK_CALLTYPE Count(SDKUInt32 &count) const =0
Returns the number of potential sprites in the VO.
sdk_string_handler.h
Wrappers and helper functions for SDKString.
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
sdk::RectF2D
A 2-D Rectangle.
Definition: geometry_base_types_helpers.h:423
sdk::vis::sdl::IVisualObject::GetAnchorOffset
virtual SDKResult SDK_CALLTYPE GetAnchorOffset(AnchorType anchor, SDKPointF2D &offset) const =0
Returns the additional anchor offset.
texture_interface.h
Definition of graphic texture interfaces.
sdk::vis::sdl::IVisualObject::GetSymbolType
virtual SDKResult SDK_CALLTYPE GetSymbolType(SymbolType &type) const =0
Returns the symbol type.
sdk::vis::sdl::IPositionsCollection::Count
virtual SDKResult SDK_CALLTYPE Count(SDKUInt32 &count) const =0
Returns the count of positions.
sdk::vis::sdl::IVisualObject::GetSprites
virtual SDKResult SDK_CALLTYPE GetSprites(ISpriteElementCollectionSP &sprites) const =0
Returns the sprites collection of the visual object.
stream_interface.h
Generic data stream interface.
sdk::vis::sdl::ISpriteElement::GetVisualObject
virtual SDKResult SDK_CALLTYPE GetVisualObject(IVisualObjectSP &vo)=0
Returns the correspondent visual object.
sdk::vis::sdl::IVisualObject::GetShapes
virtual SDKResult SDK_CALLTYPE GetShapes(IShapeCollection &sprites) const =0
Returns the shape collection of the visual object.
sdk::vis::sdl::ISpriteElement::CreateTexture
virtual SDKResult SDK_CALLTYPE CreateTexture(const sdk::gfx::RenderTargetSP &target, SDKPointI2D &org, SDKRect2D &rect) const =0
Draws symbol to the specified texture render target.
sdk_component_interface.h
Common base SDK interfaces.
graphic_context_interface.h
Definition of graphic context interfaces.
sdk::vis::sdl::IVisualObject::Draw
virtual SDKResult SDK_CALLTYPE Draw(SDKUInt16 palette_id, const sdk::gfx::RenderTargetSP &target, const sdk::ISDKComponentSP &geometry, const SDKMatrix3X2 &transformation_matrix, const IDrawingContextSP &context)=0
Draws visual object on the specified target.
SDKPointF2D
Single 2D point.
Definition: geometry_base_types.h:33
sdk::vis::sdl::IPositionsCollection::GetPosition
virtual SDKResult SDK_CALLTYPE GetPosition(SDKUInt32 index, SDKPosition &pos)=0
Returns a position specified by its index.
platform.h
Describes the platform constants.
sdk::vis::sdl::ISpriteElement::GetPosition
virtual SDKResult SDK_CALLTYPE GetPosition(const sdk::gfx::RenderTargetSP &target, const sdk::geometry::GeometryPathSP &geometry, const IDrawingContextSP &context, SDKAny &positions) const =0
Returns array of positions and angles for this sprite.
SDKPointI2D
Single 2D point.
Definition: geometry_base_types.h:178
sdk::vis::sdl::ISpriteElement::SetFlags
virtual SDKResult SDK_CALLTYPE SetFlags(const SDKUInt16 flags)=0
Setter and getter for visual object flags.
sdl_interface.h
Symbol Definition Language (SDL) interfaces.
sdk::vis::sdl::IVisualObject::Attach
virtual SDKResult SDK_CALLTYPE Attach(IVisualObjectSP &child_vo, AnchorType anchor, float x_offset, float y_offset)=0
Combines the specified visual objects into the specified layout.
enum_interface.h
Describes a basic enumeration interfaces.
sdk::vis::sdl::AnchorType
AnchorType
Anchor type enumeration.
Definition: sdl.h:118
sdk::vis::sdl::ISpriteElement::ClearVectorData
virtual SDKResult SDK_CALLTYPE ClearVectorData(void)=0
Clears all cached vector data of the visual object (if any).
sdk::vis::sdl::ISpriteElementCollection
Provides access to potential sprite elements.
Definition: visual_object_interface.h:198
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
SDKSizeF
SizeF.
Definition: geometry_base_types.h:1111