NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
gl2d_sprites_interface.h
1 #ifndef SDK_GL2D_SPRITES_INTERFACE_H_
11 #define SDK_GL2D_SPRITES_INTERFACE_H_
12 #pragma once
13 
14 #include <base/inc/platform.h>
15 #include <base/inc/base_types.h>
16 #include <base/inc/sdk_component_base.h>
19 #include <visualizationlayer/inc/vis_const.h>
20 
21 #include "gl2d_texture_interface.h"
22 
23 SDK_GL2D_BEGIN_NAMESPACE
24 
29 
32 
35 enum GL2DSpritePosPropertyIDs
36 {
37 };
38 
41 class IGL2DSpritePos : public ISDKProperties
42 {
43 public:
45  virtual void SDK_CALLTYPE Dump() const throw() = 0;
46 
48  virtual IGL2DCanvasSP SDK_CALLTYPE GetCanvas() const throw() = 0;
49 
51  virtual SDKResult SDK_CALLTYPE GetID(SDKString& id) const throw() = 0;
53  virtual SDKPointF2D SDK_CALLTYPE GetPosition() const throw() = 0;
54 
57  virtual SDKResult SDK_CALLTYPE SetPositionTransform(
58  const SDKMatrix3X2& position_transform) throw() = 0;
60  virtual SDKMatrix3X2 SDK_CALLTYPE GetPositionTransform() const throw() = 0;
61 
64  virtual SDKResult SDK_CALLTYPE SetSpriteSizeFixedFlag(
65  const bool& is_sprite_size_fixed) throw() = 0;
67  virtual bool SDK_CALLTYPE GetSpriteSizeFixedFlag() const throw() = 0;
68 
71  virtual SDKResult SDK_CALLTYPE SetSpriteRotationFixedFlag(
72  const bool& is_sprite_rotation_fixed) throw() = 0;
74  virtual bool SDK_CALLTYPE GetSpriteRotationFixedFlag() const throw() = 0;
75 
76  SDK_IMPLEMENT_IID(IGL2DSpritePos)
77  SDK_END_INTERFACE(IGL2DSpritePos)
78 };
79 SDK_DECLARE_IID(IGL2DSpritePos)
80 
81 enum GL2DSpritePropertyIDs
84 {
85 };
86 
89 class IGL2DSprite : public ISDKProperties
90 {
91 public:
93  virtual void SDK_CALLTYPE Dump() const throw() = 0;
94 
96  virtual IGL2DCanvasSP SDK_CALLTYPE GetCanvas() const throw() = 0;
97 
99  virtual SDKResult SDK_CALLTYPE GetID(SDKString& id) const throw() = 0;
101  virtual SDKRect2D SDK_CALLTYPE GetTextureRect() const throw() = 0;
103  virtual SDKPointF2D SDK_CALLTYPE GetPivotPoint() const throw() = 0;
104 
107  virtual SDKResult SDK_CALLTYPE SetDefaultSpritePositionTransform(
108  const SDKMatrix3X2& sprite_transform) throw() = 0;
110  virtual SDKMatrix3X2 SDK_CALLTYPE GetDefaultSpritePositionTransform() const throw() = 0;
111 
114  virtual SDKResult SDK_CALLTYPE SetDefaultSpriteSizeFixedFlag(
115  const bool& is_sprite_size_fixed) throw() = 0;
117  virtual bool SDK_CALLTYPE GetDefaultSpriteSizeFixedFlag() const throw() = 0;
118 
121  virtual SDKResult SDK_CALLTYPE SetDefaultSpriteRotationFixedFlag(
122  const bool& is_sprite_rotation_fixed) throw() = 0;
124  virtual bool SDK_CALLTYPE GetDefaultSpriteRotationFixedFlag() const throw() = 0;
125 
129  virtual SDKResult SDK_CALLTYPE ApplySpritePositionTransform(
130  const SDKMatrix3X2& sprite_transform) throw() = 0;
134  virtual SDKResult SDK_CALLTYPE ApplySpriteSizeFixedFlag(
135  const bool& is_sprite_size_fixed) throw() = 0;
139  virtual SDKResult SDK_CALLTYPE ApplySpriteRotationFixedFlag(
140  const bool& is_sprite_rotation_fixed) throw() = 0;
141 
148  virtual IGL2DSpritePosSP SDK_CALLTYPE AddPosition(
149  const SDKString& id, const SDKPointF2D& position) throw() = 0;
152  virtual SDKResult SDK_CALLTYPE RemovePosition(const SDKString& id) throw() = 0;
153 
155  virtual SDKUInt32 SDK_CALLTYPE GetPositionsCount() const throw() = 0;
157  virtual IGL2DSpritePosSP SDK_CALLTYPE GetPositionByIndex(
158  const SDKUInt32& index) const throw() = 0;
160  virtual IGL2DSpritePosSP SDK_CALLTYPE GetPositionByID(
161  const SDKString& id) const throw() = 0;
162 
163  SDK_IMPLEMENT_IID(IGL2DSprite)
164  SDK_END_INTERFACE(IGL2DSprite)
165 };
166 SDK_DECLARE_IID(IGL2DSprite)
167 
168 enum GL2DSpritesPropertyIDs
171 {
172 };
173 
176 enum GL2DSpritesType
177 {
178  // Unknown sprites type
179  kGL2DSpritesType_Unknown = 0,
180 
181  // Following sprites can't be used with projection
182 
183  // Generic sprites
184  kGL2DSpritesType_Generic = 1,
185 
186  // Following sprites can be used with any of perspective projections
187  // (see GL2DProjectionType)
188 
189  // Sprites for perspective projection, similar to kGL2DSpritesType_Generic,
190  // but can be projected via any perspective projection during rendering
191  kGL2DSpritesType_ForPerspProj = 2,
192 };
193 
196 class IGL2DSprites : public ISDKProperties
197 {
198 public:
200  virtual void SDK_CALLTYPE Dump() const throw() = 0;
201 
203  virtual IGL2DCanvasSP SDK_CALLTYPE GetParent() const throw() = 0;
204 
206  virtual GL2DSpritesType SDK_CALLTYPE GetType() const throw() = 0;
208  virtual IGL2DTextureSP SDK_CALLTYPE GetTexture() const throw() = 0;
209 
213  virtual SDKUInt32 SDK_CALLTYPE GetMemSize() const throw() = 0;
216  virtual SDKUInt32 SDK_CALLTYPE GetSpritePositionsCount() const throw() = 0;
217 
219  virtual SDKUInt32 SDK_CALLTYPE GetSpritesCount() const throw() = 0;
221  virtual IGL2DSpriteSP SDK_CALLTYPE GetSpriteByIndex(
222  const SDKUInt32& index) const throw() = 0;
224  virtual IGL2DSpriteSP SDK_CALLTYPE GetSpriteByID(
225  const SDKString& id) const throw() = 0;
226 
232  virtual SDKResult SDK_CALLTYPE StartEdit() throw() = 0;
234  virtual SDKResult SDK_CALLTYPE FinishEdit() throw() = 0;
236  virtual bool SDK_CALLTYPE IsEditing() const throw() = 0;
237 
245  virtual IGL2DSpriteSP SDK_CALLTYPE AddSprite(
246  const SDKString& id, const SDKRect2D& texture_rect,
247  const SDKPointF2D& pivot_point) throw() = 0;
250  virtual SDKResult SDK_CALLTYPE RemoveSprite(const SDKString& id) throw() = 0;
251 
252  SDK_IMPLEMENT_IID(IGL2DSprites)
253  SDK_END_INTERFACE(IGL2DSprites)
254 };
255 SDK_DECLARE_IID(IGL2DSprites)
256 
259 {
260 public:
261  AutoStartFinishSpriteEdit(const IGL2DSpritesSP& sprites)
262  : m_sprites(sprites), m_started(false)
263  {
264  if (m_sprites)
265  m_started = SDK_SUCCEEDED(m_sprites->StartEdit());
266  }
267 
268  virtual ~AutoStartFinishSpriteEdit()
269  { if (m_started) m_sprites->FinishEdit(); }
270 
271  inline bool IsEditing() const
272  { return m_sprites ? m_sprites->IsEditing() : false; }
273 
274 private:
275  const IGL2DSpritesSP m_sprites;
276  bool m_started;
277 };
278 
279 SDK_GL2D_END_NAMESPACE
280 
281 #endif // SDK_GL2D_SPRITES_INTERFACE_H_
IGL2DSprite
Set of GL2D sprite entries, based on same texture fragment.
Definition: gl2d_sprites_interface.h:89
IGL2DSprites::Dump
virtual void SDK_CALLTYPE Dump() const =0
Dumps given object.
IGL2DSprite::SetDefaultSpriteRotationFixedFlag
virtual SDKResult SDK_CALLTYPE SetDefaultSpriteRotationFixedFlag(const bool &is_sprite_rotation_fixed)=0
Sets default sprite rotation fixed flag Given flag will be set for all of new sprite positions.
IGL2DSprite::ApplySpritePositionTransform
virtual SDKResult SDK_CALLTYPE ApplySpritePositionTransform(const SDKMatrix3X2 &sprite_transform)=0
Applies given sprite position transformation matrix to all of sprite positions in given sprite IGL2DS...
IGL2DSprite::GetDefaultSpriteRotationFixedFlag
virtual bool SDK_CALLTYPE GetDefaultSpriteRotationFixedFlag() const =0
Returns current default sprite rotation fixed flag.
IGL2DSprites::GetParent
virtual IGL2DCanvasSP SDK_CALLTYPE GetParent() const =0
Returns parent canvas object.
base_types.h
SDK base types.
IGL2DSpritePos::GetSpriteRotationFixedFlag
virtual bool SDK_CALLTYPE GetSpriteRotationFixedFlag() const =0
Returns current sprite rotation fixed flag.
IGL2DSprites::GetMemSize
virtual SDKUInt32 SDK_CALLTYPE GetMemSize() const =0
Returns OpenGL memory size used for sprites (not including texture memory size) Statistics only - val...
IGL2DSprite::GetDefaultSpriteSizeFixedFlag
virtual bool SDK_CALLTYPE GetDefaultSpriteSizeFixedFlag() const =0
Returns current default sprite size fixed flag.
IGL2DSprite::AddPosition
virtual IGL2DSpritePosSP SDK_CALLTYPE AddPosition(const SDKString &id, const SDKPointF2D &position)=0
Adds new sprite position to given sprite id - Sprite position ID, if sprite position with given ID al...
IGL2DSprite::SetDefaultSpriteSizeFixedFlag
virtual SDKResult SDK_CALLTYPE SetDefaultSpriteSizeFixedFlag(const bool &is_sprite_size_fixed)=0
Sets default sprite size fixed flag Given flag will be set for all of new sprite positions.
IGL2DSpritePos::SetSpriteRotationFixedFlag
virtual SDKResult SDK_CALLTYPE SetSpriteRotationFixedFlag(const bool &is_sprite_rotation_fixed)=0
Sets sprite rotation fixed flag IGL2DSprites::StartEdit method should be called before calling this o...
IGL2DSpritePos::GetPosition
virtual SDKPointF2D SDK_CALLTYPE GetPosition() const =0
Returns sprite position.
AutoStartFinishSpriteEdit
Auto starts sprites editing in ctor, finishes in dtor.
Definition: gl2d_sprites_interface.h:258
IGL2DSprites::GetSpritesCount
virtual SDKUInt32 SDK_CALLTYPE GetSpritesCount() const =0
Returns total number of sprites in collection.
IGL2DSprite::GetID
virtual SDKResult SDK_CALLTYPE GetID(SDKString &id) const =0
Returns sprite ID.
SDK_SUCCEEDED
#define SDK_SUCCEEDED(res)
Checks no error result.
Definition: sdk_results_enum.h:67
properties_interface.h
Object generic properties interface.
IGL2DSpritePos
Single GL2D sprite position.
Definition: gl2d_sprites_interface.h:41
IGL2DSprite::GetCanvas
virtual IGL2DCanvasSP SDK_CALLTYPE GetCanvas() const =0
Returns parent canvas object.
IGL2DSprites::GetType
virtual GL2DSpritesType SDK_CALLTYPE GetType() const =0
Returns sprites type.
IGL2DSpritePos::GetPositionTransform
virtual SDKMatrix3X2 SDK_CALLTYPE GetPositionTransform() const =0
Returns current sprite position transformation matrix.
IGL2DSprite::SetDefaultSpritePositionTransform
virtual SDKResult SDK_CALLTYPE SetDefaultSpritePositionTransform(const SDKMatrix3X2 &sprite_transform)=0
Sets default sprite position transformation matrix Given matrix will be set for all of new sprite pos...
IGL2DSprite::GetPivotPoint
virtual SDKPointF2D SDK_CALLTYPE GetPivotPoint() const =0
Returns sprite pivot point.
IGL2DSprites::GetTexture
virtual IGL2DTextureSP SDK_CALLTYPE GetTexture() const =0
Returns appropriate sprites host texture.
IGL2DSprite::ApplySpriteRotationFixedFlag
virtual SDKResult SDK_CALLTYPE ApplySpriteRotationFixedFlag(const bool &is_sprite_rotation_fixed)=0
Applies given sprite rotation fixed flag to all of sprite positions in given sprite IGL2DSprites::Sta...
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
IGL2DSprites::FinishEdit
virtual SDKResult SDK_CALLTYPE FinishEdit()=0
Finishes previously started edit sprites collection operation.
IGL2DSprite::GetPositionByIndex
virtual IGL2DSpritePosSP SDK_CALLTYPE GetPositionByIndex(const SDKUInt32 &index) const =0
Returns sprite position by it's index.
IGL2DSprites
Set of GL2D sprites, based on same texture.
Definition: gl2d_sprites_interface.h:196
SDKPointF2D
Single 2D point.
Definition: geometry_base_types.h:33
IGL2DSprites::AddSprite
virtual IGL2DSpriteSP SDK_CALLTYPE AddSprite(const SDKString &id, const SDKRect2D &texture_rect, const SDKPointF2D &pivot_point)=0
Adds new sprite to sprites collection id - Sprite ID, if sprite with given ID already exist - it will...
platform.h
Describes the platform constants.
IGL2DCanvas
GL2D Canvas to use to drawing NOTE! Create/Draw functionality was moved to appropriate GL2D Canvas Fu...
Definition: gl2d_canvas_interface.h:435
IGL2DSprite::GetDefaultSpritePositionTransform
virtual SDKMatrix3X2 SDK_CALLTYPE GetDefaultSpritePositionTransform() const =0
Returns current default sprite position transformation matrix.
matrix_base_types.h
Matrix base definitions.
IGL2DSpritePos::SetPositionTransform
virtual SDKResult SDK_CALLTYPE SetPositionTransform(const SDKMatrix3X2 &position_transform)=0
Sets sprite position transformation matrix IGL2DSprites::StartEdit method should be called before cal...
IGL2DSprite::RemovePosition
virtual SDKResult SDK_CALLTYPE RemovePosition(const SDKString &id)=0
Removes sprite position from sprite by it's ID IGL2DSprites::StartEdit method should be called before...
IGL2DSpritePos::GetID
virtual SDKResult SDK_CALLTYPE GetID(SDKString &id) const =0
Returns position ID.
IGL2DSpritePos::GetSpriteSizeFixedFlag
virtual bool SDK_CALLTYPE GetSpriteSizeFixedFlag() const =0
Returns current sprite size fixed flag.
IGL2DSprites::GetSpriteByIndex
virtual IGL2DSpriteSP SDK_CALLTYPE GetSpriteByIndex(const SDKUInt32 &index) const =0
Returns sprite by it's index.
IGL2DSprite::GetPositionByID
virtual IGL2DSpritePosSP SDK_CALLTYPE GetPositionByID(const SDKString &id) const =0
Returns sprite position by it's ID.
IGL2DSprite::GetPositionsCount
virtual SDKUInt32 SDK_CALLTYPE GetPositionsCount() const =0
Returns total number of sprite positions in sprite.
IGL2DSprite::GetTextureRect
virtual SDKRect2D SDK_CALLTYPE GetTextureRect() const =0
Returns texture fragment rectangle to use as a sprite image.
IGL2DSpritePos::SetSpriteSizeFixedFlag
virtual SDKResult SDK_CALLTYPE SetSpriteSizeFixedFlag(const bool &is_sprite_size_fixed)=0
Sets sprite size fixed flag IGL2DSprites::StartEdit method should be called before calling this one.
IGL2DSprite::ApplySpriteSizeFixedFlag
virtual SDKResult SDK_CALLTYPE ApplySpriteSizeFixedFlag(const bool &is_sprite_size_fixed)=0
Applies given sprite size fixed flag to all of sprite positions in given sprite IGL2DSprites::StartEd...
gl2d_texture_interface.h
GL2D Texture object.
IGL2DSprites::RemoveSprite
virtual SDKResult SDK_CALLTYPE RemoveSprite(const SDKString &id)=0
Removes sprite from collection by it's ID StartEdit method should be called before calling this one.
FWD_DECL_INTERFACE
FWD_DECL_INTERFACE(ILWEParserWrapper)
Provides a wrapper around the message parser to get, add or remove the.
IGL2DSprite::Dump
virtual void SDK_CALLTYPE Dump() const =0
Dumps given object.
IGL2DSprites::IsEditing
virtual bool SDK_CALLTYPE IsEditing() const =0
Checks, if sprites collection edit operation in progress now.
IGL2DSpritePos::Dump
virtual void SDK_CALLTYPE Dump() const =0
Dumps given object.
IGL2DSpritePos::GetCanvas
virtual IGL2DCanvasSP SDK_CALLTYPE GetCanvas() const =0
Returns parent canvas object.
IGL2DSprites::GetSpritePositionsCount
virtual SDKUInt32 SDK_CALLTYPE GetSpritePositionsCount() const =0
Returns total number of sprites positions in given sprite object Statistics only - value refreshed af...
IGL2DSprites::StartEdit
virtual SDKResult SDK_CALLTYPE StartEdit()=0
Starts sprite collection edit process, call for this method in case you want to change anything in gi...
IGL2DSprites::GetSpriteByID
virtual IGL2DSpriteSP SDK_CALLTYPE GetSpriteByID(const SDKString &id) const =0
Returns sprite by it's ID.