KiCad PCB EDA Suite
KIGFX::GAL_DISPLAY_OPTIONS Class Reference

#include <gal_display_options.h>

Inheritance diagram for KIGFX::GAL_DISPLAY_OPTIONS:
UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER > UTIL::DETAIL::OBSERVABLE_BASE

Public Member Functions

 GAL_DISPLAY_OPTIONS ()
 
void ReadConfig (wxConfigBase *aCfg, wxString aBaseName)
 
void WriteConfig (wxConfigBase *aCfg, wxString aBaseName)
 
void NotifyChanged ()
 
void SubscribeUnmanaged (GAL_DISPLAY_OPTIONS_OBSERVER *aObserver)
 Function SubscribeUnmanaged adds a subscription without RAII link. More...
 
LINK Subscribe (GAL_DISPLAY_OPTIONS_OBSERVER *aObserver)
 Function Subscribe adds a subscription returning an RAII link. More...
 
void Unsubscribe (GAL_DISPLAY_OPTIONS_OBSERVER *aObserver)
 Function Unsubscribe cancels the subscription of a subscriber. More...
 
void Notify (void(GAL_DISPLAY_OPTIONS_OBSERVER::*Ptr)(Args1...), Args2 &&...aArgs)
 Function Notify Notifies event to all subscribed observers. More...
 
void NotifyIgnore (void(GAL_DISPLAY_OPTIONS_OBSERVER::*Ptr)(Args1...), GAL_DISPLAY_OPTIONS_OBSERVER *aIgnore, Args2 &&...aArgs)
 Function Notify Notifies event to all subscribed observers but one to be ignore. More...
 
size_t size () const
 

Public Attributes

OPENGL_ANTIALIASING_MODE gl_antialiasing_mode
 
KIGFX::GRID_STYLE m_gridStyle
 

The grid style to draw the grid in

More...
 
double m_gridLineWidth
 

Thickness to render grid lines/dots

More...
 
double m_gridMinSpacing
 

Minimum pixel distance between displayed grid lines

More...
 
bool m_axesEnabled
 

Whether or not to draw the coordinate system axes

More...
 
bool m_fullscreenCursor
 

Fullscreen crosshair or small cross

More...
 
bool m_forceDisplayCursor
 

Force cursor display

More...
 

Protected Member Functions

void on_observers_empty ()
 
void enter_iteration ()
 
void leave_iteration ()
 
void add_observer (void *observer)
 
void remove_observer (void *observer)
 

Protected Attributes

std::shared_ptr< IMPLimpl_
 

Detailed Description

Definition at line 64 of file gal_display_options.h.

Constructor & Destructor Documentation

GAL_DISPLAY_OPTIONS::GAL_DISPLAY_OPTIONS ( )

Definition at line 61 of file gal_display_options.cpp.

References KIGFX::DOTS.

64  m_gridLineWidth( 0.5 ),
65  m_gridMinSpacing( 10.0 ),
66  m_axesEnabled( false ),
67  m_fullscreenCursor( false ),
68  m_forceDisplayCursor( false )
69 {}
KIGFX::GRID_STYLE m_gridStyle
The grid style to draw the grid in
bool m_forceDisplayCursor
Force cursor display
double m_gridMinSpacing
Minimum pixel distance between displayed grid lines
OPENGL_ANTIALIASING_MODE gl_antialiasing_mode
bool m_axesEnabled
Whether or not to draw the coordinate system axes
Use dots for the grid.
double m_gridLineWidth
Thickness to render grid lines/dots
bool m_fullscreenCursor
Fullscreen crosshair or small cross

Member Function Documentation

void UTIL::DETAIL::OBSERVABLE_BASE::add_observer ( void *  observer)
protectedinherited

Definition at line 216 of file observable.cpp.

References UTIL::DETAIL::OBSERVABLE_BASE::allocate_impl(), and UTIL::DETAIL::OBSERVABLE_BASE::impl_.

217  {
218  allocate_impl();
219  impl_->add_observer( observer );
220  }
std::shared_ptr< IMPL > impl_
Definition: observable.h:93
void UTIL::DETAIL::OBSERVABLE_BASE::enter_iteration ( )
protectedinherited

Definition at line 230 of file observable.cpp.

References UTIL::DETAIL::OBSERVABLE_BASE::impl_.

Referenced by UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::Notify(), and UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::NotifyIgnore().

231  {
232  if( impl_ )
233  impl_->enter_iteration();
234  }
std::shared_ptr< IMPL > impl_
Definition: observable.h:93
void UTIL::DETAIL::OBSERVABLE_BASE::leave_iteration ( )
protectedinherited

Definition at line 237 of file observable.cpp.

References UTIL::DETAIL::OBSERVABLE_BASE::impl_.

Referenced by UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::Notify(), and UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::NotifyIgnore().

238  {
239  if( impl_)
240  {
241  impl_->leave_iteration();
242 
243  if( !impl_->is_iterating() && !impl_->is_shared() && impl_.use_count() == 1 )
244  impl_.reset();
245  }
246  }
std::shared_ptr< IMPL > impl_
Definition: observable.h:93
void UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::Notify ( void(GAL_DISPLAY_OPTIONS_OBSERVER ::*)(Args1...)  Ptr,
Args2 &&...  aArgs 
)
inlineinherited

Function Notify Notifies event to all subscribed observers.

Parameters
Ptrpointer to method of the Observer-interface
aArgslist of arguments to each notification call, will be perfectly forwarded.

Definition at line 183 of file observable.h.

References UTIL::DETAIL::OBSERVABLE_BASE::enter_iteration(), UTIL::DETAIL::OBSERVABLE_BASE::impl_, and UTIL::DETAIL::OBSERVABLE_BASE::leave_iteration().

Referenced by NotifyChanged().

184  {
185  static_assert(sizeof...(Args1) == sizeof...(Args2), "argument counts don't match");
186 
187  if( impl_ )
188  {
189  enter_iteration();
190  try {
191  for( auto* void_ptr : impl_->observers_ )
192  {
193  if( void_ptr )
194  {
195  auto* typed_ptr = static_cast<ObserverInterface*>(void_ptr);
196  (typed_ptr->*Ptr)(std::forward<Args2>( aArgs )...);
197  }
198  }
199  }
200  catch(...)
201  {
202  leave_iteration();
203  throw;
204  }
205 
206  leave_iteration();
207  }
208  }
std::shared_ptr< IMPL > impl_
Definition: observable.h:93
void GAL_DISPLAY_OPTIONS::NotifyChanged ( )

Definition at line 128 of file gal_display_options.cpp.

References UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::Notify(), and KIGFX::GAL_DISPLAY_OPTIONS_OBSERVER::OnGalDisplayOptionsChanged().

Referenced by ReadConfig(), EDA_DRAW_PANEL_GAL::SwitchBackend(), and GAL_OPTIONS_PANEL::TransferDataFromWindow().

129 {
131 }
void Notify(void(GAL_DISPLAY_OPTIONS_OBSERVER::*Ptr)(Args1...), Args2 &&...aArgs)
Function Notify Notifies event to all subscribed observers.
Definition: observable.h:183
virtual void OnGalDisplayOptionsChanged(const GAL_DISPLAY_OPTIONS &)=0
void UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::NotifyIgnore ( void(GAL_DISPLAY_OPTIONS_OBSERVER ::*)(Args1...)  Ptr,
GAL_DISPLAY_OPTIONS_OBSERVER *  aIgnore,
Args2 &&...  aArgs 
)
inlineinherited

Function Notify Notifies event to all subscribed observers but one to be ignore.

Parameters
Ptrpointer to method of the Observer-interface
aIgnoreobserver to ignore during this notification
aArgslist of arguments to each notification call, will be perfectly forwarded.

Definition at line 218 of file observable.h.

References UTIL::DETAIL::OBSERVABLE_BASE::enter_iteration(), UTIL::DETAIL::OBSERVABLE_BASE::impl_, and UTIL::DETAIL::OBSERVABLE_BASE::leave_iteration().

220  {
221  static_assert(sizeof...(Args1) == sizeof...(Args2), "argument counts don't match");
222 
223  if( impl_ )
224  {
225  enter_iteration();
226 
227  try
228  {
229  for(auto* void_ptr : impl_->observers_)
230  {
231  if( void_ptr && void_ptr != aIgnore )
232  {
233  auto* typed_ptr = static_cast<ObserverInterface*>(void_ptr);
234  (typed_ptr->*Ptr)(std::forward<Args2>( aArgs )...);
235  }
236  }
237  }
238  catch(...)
239  {
240  leave_iteration();
241  throw;
242  }
243 
244  leave_iteration();
245  }
246  }
std::shared_ptr< IMPL > impl_
Definition: observable.h:93
void UTIL::DETAIL::OBSERVABLE_BASE::on_observers_empty ( )
protectedinherited

Definition at line 258 of file observable.cpp.

References UTIL::DETAIL::OBSERVABLE_BASE::deallocate_impl().

259  {
260  // called by an impl that is owned by this, ie. it is a non-shared impl
261  // also it is not iterating
262  deallocate_impl();
263  }
void GAL_DISPLAY_OPTIONS::ReadConfig ( wxConfigBase *  aCfg,
wxString  aBaseName 
)

Definition at line 72 of file gal_display_options.cpp.

References aaModeConfigVals, KIGFX::DOTS, GalForceDisplayCursorConfig(), GalFullscreenCursorConfig(), GalGLAntialiasingKeyword(), GalGridAxesEnabledConfig(), GalGridLineWidthConfig(), GalGridMaxDensityConfig(), GalGridStyleConfig(), UTIL::GetValFromConfig(), gl_antialiasing_mode, gridStyleConfigVals, m_axesEnabled, m_forceDisplayCursor, m_fullscreenCursor, m_gridLineWidth, m_gridMinSpacing, m_gridStyle, KIGFX::NONE, and NotifyChanged().

73 {
74  long readLong; // Temp value buffer
75 
76  aCfg->Read( aBaseName + GalGLAntialiasingKeyword, &readLong,
77  static_cast<long>( KIGFX::OPENGL_ANTIALIASING_MODE::NONE ) );
79 
80  aCfg->Read( aBaseName + GalGridStyleConfig, &readLong,
81  static_cast<long>( KIGFX::GRID_STYLE::DOTS ) );
83 
84  aCfg->Read( aBaseName + GalGridLineWidthConfig,
85  &m_gridLineWidth, 0.5 );
86 
87  aCfg->Read( aBaseName + GalGridMaxDensityConfig,
88  &m_gridMinSpacing, 10 );
89 
90  aCfg->Read( aBaseName + GalGridAxesEnabledConfig,
91  &m_axesEnabled, false );
92 
93  aCfg->Read( aBaseName + GalFullscreenCursorConfig,
94  &m_fullscreenCursor, false );
95 
96  aCfg->Read( aBaseName + GalForceDisplayCursorConfig,
97  &m_forceDisplayCursor, false );
98 
99  NotifyChanged();
100 }
static const wxString GalGridAxesEnabledConfig("GridAxesEnabled")
static const wxString GalGridLineWidthConfig("GridLineWidth")
static const wxString GalGridStyleConfig("GridStyle")
static const wxString GalForceDisplayCursorConfig("ForceDisplayCursor")
KIGFX::GRID_STYLE m_gridStyle
The grid style to draw the grid in
static const UTIL::CFG_MAP< KIGFX::GRID_STYLE > gridStyleConfigVals
bool m_forceDisplayCursor
Force cursor display
double m_gridMinSpacing
Minimum pixel distance between displayed grid lines
OPENGL_ANTIALIASING_MODE gl_antialiasing_mode
bool m_axesEnabled
Whether or not to draw the coordinate system axes
static const UTIL::CFG_MAP< KIGFX::OPENGL_ANTIALIASING_MODE > aaModeConfigVals
static const wxString GalGLAntialiasingKeyword("OpenGLAntialiasingMode")
static const wxString GalGridMaxDensityConfig("GridMaxDensity")
static CFG_NATIVE_VAL< MAP > GetValFromConfig(const MAP &aMap, long aConf)
Get the native value corresponding to the config value (read from file or UI, probably) and find it i...
Definition: config_map.h:96
Use dots for the grid.
static const wxString GalFullscreenCursorConfig("CursorFullscreen")
double m_gridLineWidth
Thickness to render grid lines/dots
bool m_fullscreenCursor
Fullscreen crosshair or small cross
void UTIL::DETAIL::OBSERVABLE_BASE::remove_observer ( void *  observer)
protectedinherited

Definition at line 223 of file observable.cpp.

References UTIL::DETAIL::OBSERVABLE_BASE::impl_.

224  {
225  assert( impl_ );
226  impl_->remove_observer( observer );
227  }
std::shared_ptr< IMPL > impl_
Definition: observable.h:93
size_t UTIL::DETAIL::OBSERVABLE_BASE::size ( ) const
inherited

Definition at line 249 of file observable.cpp.

References UTIL::DETAIL::OBSERVABLE_BASE::impl_.

250  {
251  if( impl_ )
252  return impl_->observers_.size();
253  else
254  return 0;
255  }
std::shared_ptr< IMPL > impl_
Definition: observable.h:93
LINK UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::Subscribe ( GAL_DISPLAY_OPTIONS_OBSERVER *  aObserver)
inlineinherited

Function Subscribe adds a subscription returning an RAII link.

Parameters
aObserverobserver to subscribe
Returns
RAII link controlling the lifetime of the subscription

Definition at line 161 of file observable.h.

References UTIL::DETAIL::OBSERVABLE_BASE::impl_.

161  {
162  OBSERVABLE_BASE::add_observer( static_cast<void*>(aObserver) );
163  return LINK( impl_, static_cast<void*>(aObserver) );
164  }
std::shared_ptr< IMPL > impl_
Definition: observable.h:93
void UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::SubscribeUnmanaged ( GAL_DISPLAY_OPTIONS_OBSERVER *  aObserver)
inlineinherited

Function SubscribeUnmanaged adds a subscription without RAII link.

Parameters
aObserverObserver to subscribe

Definition at line 150 of file observable.h.

151  {
152  OBSERVABLE_BASE::add_observer( static_cast<void*>(aObserver) );
153  }
void UTIL::OBSERVABLE< GAL_DISPLAY_OPTIONS_OBSERVER >::Unsubscribe ( GAL_DISPLAY_OPTIONS_OBSERVER *  aObserver)
inlineinherited

Function Unsubscribe cancels the subscription of a subscriber.

Can be called during notification calls.

Parameters
aObserverobserver to remove from the subscription list

Definition at line 171 of file observable.h.

172  {
173  OBSERVABLE_BASE::remove_observer( static_cast<void*>(aObserver) );
174  }
void GAL_DISPLAY_OPTIONS::WriteConfig ( wxConfigBase *  aCfg,
wxString  aBaseName 
)

Definition at line 103 of file gal_display_options.cpp.

References aaModeConfigVals, GalForceDisplayCursorConfig(), GalFullscreenCursorConfig(), GalGLAntialiasingKeyword(), GalGridAxesEnabledConfig(), GalGridLineWidthConfig(), GalGridMaxDensityConfig(), GalGridStyleConfig(), UTIL::GetConfigForVal(), gl_antialiasing_mode, gridStyleConfigVals, m_axesEnabled, m_forceDisplayCursor, m_fullscreenCursor, m_gridLineWidth, m_gridMinSpacing, and m_gridStyle.

104 {
105  aCfg->Write( aBaseName + GalGLAntialiasingKeyword,
107 
108  aCfg->Write( aBaseName + GalGridStyleConfig,
110 
111  aCfg->Write( aBaseName + GalGridLineWidthConfig,
112  m_gridLineWidth );
113 
114  aCfg->Write( aBaseName + GalGridMaxDensityConfig,
116 
117  aCfg->Write( aBaseName + GalGridAxesEnabledConfig,
118  m_axesEnabled );
119 
120  aCfg->Write( aBaseName + GalFullscreenCursorConfig,
122 
123  aCfg->Write( aBaseName + GalForceDisplayCursorConfig,
125 }
static const wxString GalGridAxesEnabledConfig("GridAxesEnabled")
static const wxString GalGridLineWidthConfig("GridLineWidth")
static const wxString GalGridStyleConfig("GridStyle")
static const wxString GalForceDisplayCursorConfig("ForceDisplayCursor")
KIGFX::GRID_STYLE m_gridStyle
The grid style to draw the grid in
static const UTIL::CFG_MAP< KIGFX::GRID_STYLE > gridStyleConfigVals
bool m_forceDisplayCursor
Force cursor display
double m_gridMinSpacing
Minimum pixel distance between displayed grid lines
OPENGL_ANTIALIASING_MODE gl_antialiasing_mode
bool m_axesEnabled
Whether or not to draw the coordinate system axes
static const UTIL::CFG_MAP< KIGFX::OPENGL_ANTIALIASING_MODE > aaModeConfigVals
static const wxString GalGLAntialiasingKeyword("OpenGLAntialiasingMode")
static const wxString GalGridMaxDensityConfig("GridMaxDensity")
static const wxString GalFullscreenCursorConfig("CursorFullscreen")
double m_gridLineWidth
Thickness to render grid lines/dots
bool m_fullscreenCursor
Fullscreen crosshair or small cross
static long GetConfigForVal(const MAP &aMap, CFG_NATIVE_VAL< MAP > aVal)
Get the mapped config value (the one to write to file, or use in an index) from the given native (pro...
Definition: config_map.h:69

Member Data Documentation

bool KIGFX::GAL_DISPLAY_OPTIONS::m_axesEnabled

Whether or not to draw the coordinate system axes

Definition at line 86 of file gal_display_options.h.

Referenced by ReadConfig(), KIGFX::GAL::updatedGalDisplayOptions(), and WriteConfig().

bool KIGFX::GAL_DISPLAY_OPTIONS::m_forceDisplayCursor
double KIGFX::GAL_DISPLAY_OPTIONS::m_gridLineWidth
double KIGFX::GAL_DISPLAY_OPTIONS::m_gridMinSpacing
KIGFX::GRID_STYLE KIGFX::GAL_DISPLAY_OPTIONS::m_gridStyle

The documentation for this class was generated from the following files: