NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
gl2d_texts_visibility_state_impl.h
Go to the documentation of this file.
1 #ifndef SDK_GL2D_TEXTS_VISIBILITY_STATE_IMPL_H_
11 #define SDK_GL2D_TEXTS_VISIBILITY_STATE_IMPL_H_
12 #pragma once
13 
14 #include <vector>
15 #include <deque>
16 
17 #include <base/inc/platform.h>
19 #include <base/inc/sdk_component_base.h>
20 #include <visualizationlayer/inc/vis_const.h>
21 
23 
24 SDK_GL2D_BEGIN_NAMESPACE
25 
28 class GL2DTextsVisState : public SDKComponentBase <
29  SDKInherit<IGL2DTextsVisState>, ISDKProperties >
30 {
31 public:
32  // Items
33  typedef std::pair<GL2DTextID, bool> IDAndState;
34  typedef std::vector<IDAndState> Items;
35  typedef std::deque<IDAndState> ItemsDeq;
36 
37  // ctor/dtor
38  explicit GL2DTextsVisState(Items& items)
39  : m_items()
40  { m_items.swap(items); }
41 
42  explicit GL2DTextsVisState(const Items& items)
43  : m_items(items)
44  {}
45 
46  explicit GL2DTextsVisState(const ItemsDeq& items)
47  : m_items(items.begin(), items.end())
48  {}
49 
50  virtual ~GL2DTextsVisState()
51  {}
52 
54  virtual SDKUInt32 SDK_CALLTYPE GetEntriesCount() const throw()
55  {
56  try
57  { return static_cast<SDKUInt32>(m_items.size()); }
58  catch (...) {}
59 
60  return 0UL;
61  }
62 
63  virtual SDKResult SDK_CALLTYPE GetEntry(const SDKUInt32& entry_idx,
64  GL2DTextID& text_id, bool& is_visible) const throw()
65  {
66  try
67  {
68  const size_t idx = static_cast<size_t>(entry_idx);
69  const bool valid_idx = (idx < m_items.size());
70 
71  const IDAndState id_and_state = valid_idx
72  ? m_items[idx] : IDAndState(kGL2DUndefinedTextID, false);
73  text_id = id_and_state.first;
74  is_visible = id_and_state.second;
75 
76  return valid_idx ? Ok : Err_InvalidArg;
77  }
78  catch (...) {}
79 
80  return Err_UnknownError;
81  }
82 
84  virtual SDKResult SDK_CALLTYPE SetProperty(
85  const SDKPropertyID& id, const SDKAny& value) throw()
86  { return Err_NotFound; }
87  virtual SDKResult SDK_CALLTYPE GetProperty(
88  const SDKPropertyID& id, SDKAny& value) const throw()
89  { return Err_NotFound; }
90 
91 private:
94  void operator=(const GL2DTextsVisState&);
95 
96 protected:
97  // Items
98  /*const */Items m_items;
99 };
100 
103 class GL2DTextBoxesVisState : public SDKComponentBase <
104  SDKInherit<IGL2DTextBoxesVisState>, ISDKProperties >
105 {
106 public:
107  // Items
108  typedef std::pair<GL2DTextBoxID, bool> IDAndState;
109  typedef std::vector<IDAndState> Items;
110  typedef std::deque<IDAndState> ItemsDeq;
111 
112  // ctor/dtor
113  explicit GL2DTextBoxesVisState(Items& items)
114  : m_items()
115  { m_items.swap(items); }
116 
117  explicit GL2DTextBoxesVisState(const Items& items)
118  : m_items(items)
119  {}
120 
121  explicit GL2DTextBoxesVisState(const ItemsDeq& items)
122  : m_items(items.begin(), items.end())
123  {}
124 
125  virtual ~GL2DTextBoxesVisState()
126  {}
127 
129  virtual SDKUInt32 SDK_CALLTYPE GetEntriesCount() const throw()
130  {
131  try
132  { return static_cast<SDKUInt32>(m_items.size()); }
133  catch (...) {}
134 
135  return 0UL;
136  }
137 
138  virtual SDKResult SDK_CALLTYPE GetEntry(const SDKUInt32& entry_idx,
139  GL2DTextBoxID& textbox_id, bool& is_visible) const throw()
140  {
141  try
142  {
143  const size_t idx = static_cast<size_t>(entry_idx);
144  const bool valid_idx = (idx < m_items.size());
145 
146  const IDAndState id_and_state = valid_idx
147  ? m_items[idx] : IDAndState(kGL2DUndefinedTextBoxID, false);
148  textbox_id = id_and_state.first;
149  is_visible = id_and_state.second;
150 
151  return valid_idx ? Ok : Err_InvalidArg;
152  }
153  catch (...) {}
154 
155  return Err_UnknownError;
156  }
157 
159  virtual SDKResult SDK_CALLTYPE SetProperty(
160  const SDKPropertyID& id, const SDKAny& value) throw()
161  { return Err_NotFound; }
162  virtual SDKResult SDK_CALLTYPE GetProperty(
163  const SDKPropertyID& id, SDKAny& value) const throw()
164  { return Err_NotFound; }
165 
166 private:
169  void operator=(const GL2DTextBoxesVisState&);
170 
171 protected:
172  // Items
173  /*const */Items m_items;
174 };
175 
176 SDK_GL2D_END_NAMESPACE
177 
178 #endif // SDK_GL2D_TEXTS_VISIBILITY_STATE_IMPL_H_
sdk::Err_NotFound
@ Err_NotFound
Requested item is not found.
Definition: sdk_results_enum.h:40
GL2DTextsVisState::SetProperty
virtual SDKResult SDK_CALLTYPE SetProperty(const SDKPropertyID &id, const SDKAny &value)
ISDKProperties interface implementation.
Definition: gl2d_texts_visibility_state_impl.h:84
GL2DTextsVisState::GetEntriesCount
virtual SDKUInt32 SDK_CALLTYPE GetEntriesCount() const
IGL2DTextsVisState interface implementation.
Definition: gl2d_texts_visibility_state_impl.h:54
gl2d_texts_visibility_state_interface.h
GL2D texts visibility state, describes visibility state of several texts.
sdk::Ok
@ Ok
Operation completed successfully.
Definition: sdk_results_enum.h:22
SDKResult
SDKInt32 SDKResult
Type of all error or return codes which SDK functions can end with.
Definition: sdk_results.h:17
sdk::Err_InvalidArg
@ Err_InvalidArg
Wrong argument passed to function.
Definition: sdk_results_enum.h:27
sdk::Err_UnknownError
@ Err_UnknownError
Unknown error.
Definition: sdk_results_enum.h:52
platform.h
Describes the platform constants.
GL2DTextsVisState
Generic implementation of IGL2DTextsVisState interface.
Definition: gl2d_texts_visibility_state_impl.h:28
GL2DTextBoxID
GL2DTextID GL2DTextBoxID
Unique text box entry ID.
Definition: gl2d_texts_visibility_state_interface.h:33
GL2DTextBoxesVisState::SetProperty
virtual SDKResult SDK_CALLTYPE SetProperty(const SDKPropertyID &id, const SDKAny &value)
ISDKProperties interface implementation.
Definition: gl2d_texts_visibility_state_impl.h:159
GL2DTextBoxesVisState
Generic implementation of IGL2DTextBoxesVisState interface.
Definition: gl2d_texts_visibility_state_impl.h:103
GL2DTextBoxesVisState::GetEntriesCount
virtual SDKUInt32 SDK_CALLTYPE GetEntriesCount() const
IGL2DTextBoxesVisState interface implementation.
Definition: gl2d_texts_visibility_state_impl.h:129
sdk_results_enum.h
SDK return values synonyms in the sdk namespace.
GL2DTextID
SDKUInt64 GL2DTextID
Generic GL2D text ID.
Definition: gl2d_texts_visibility_state_interface.h:28