KiCad PCB EDA Suite
DIALOG_COLOR_PICKER Class Reference

#include <dialog_color_picker.h>

Inheritance diagram for DIALOG_COLOR_PICKER:
DIALOG_COLOR_PICKER_BASE DIALOG_SHIM KIWAY_HOLDER

Public Types

enum  HOLDER_TYPE { DIALOG, FRAME, PANEL }
 

Public Member Functions

 DIALOG_COLOR_PICKER (wxWindow *aParent, const KIGFX::COLOR4D &aCurrentColor, bool aAllowOpacityControl, CUSTOM_COLORS_LIST *aUserColors=nullptr, const KIGFX::COLOR4D &aDefaultColor=KIGFX::COLOR4D::UNSPECIFIED)
 Dialog constructor. More...
 
 ~DIALOG_COLOR_PICKER ()
 
KIGFX::COLOR4D GetColor ()
 
void SetInitialFocus (wxWindow *aWindow)
 Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown. More...
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal () const
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
void SetPosition (const wxPoint &aNewPosition)
 Force the position of the dialog to a new position. More...
 
EDA_UNITS GetUserUnits () const
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 

Static Public Member Functions

static bool IsCtrl (int aChar, const wxKeyEvent &e)
 
static bool IsShiftCtrl (int aChar, const wxKeyEvent &e)
 

Protected Member Functions

void finishDialogSettings ()
 In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls. More...
 
void setSizeInDU (int x, int y)
 Set the dialog to the given dimensions in "dialog units". More...
 
int horizPixelsFromDU (int x) const
 Convert an integer number of dialog units to pixels, horizontally. More...
 
int vertPixelsFromDU (int y) const
 Convert an integer number of dialog units to pixels, vertically. More...
 
void resetSize ()
 Clear the existing dialog size and position. More...
 
virtual void OnCharHook (wxKeyEvent &aEvt)
 

Protected Attributes

wxNotebook * m_notebook
 
wxPanel * m_panelFreeColors
 
wxStaticBitmap * m_RgbBitmap
 
wxStaticText * m_staticTextR
 
wxStaticText * m_staticTextG
 
wxStaticText * m_staticTextB
 
wxSpinCtrl * m_spinCtrlRed
 
wxSpinCtrl * m_spinCtrlGreen
 
wxSpinCtrl * m_spinCtrlBlue
 
wxStaticBitmap * m_HsvBitmap
 
wxStaticText * m_staticTextHue
 
wxStaticText * m_staticTextSat
 
wxSpinCtrl * m_spinCtrlHue
 
wxSpinCtrl * m_spinCtrlSaturation
 
wxStaticText * m_staticTextBright
 
wxSlider * m_sliderBrightness
 
wxPanel * m_panelDefinedColors
 
wxBoxSizer * m_SizerDefinedColors
 
wxFlexGridSizer * m_fgridColor
 
wxBoxSizer * m_SizerTransparency
 
wxStaticText * m_opacityLabel
 
wxSlider * m_sliderTransparency
 
wxStaticLine * m_staticline
 
wxStaticText * m_staticTextOldColor
 
wxStaticBitmap * m_OldColorRect
 
wxStaticBitmap * m_NewColorRect
 
wxTextCtrl * m_colorValue
 
wxButton * m_resetToDefault
 
wxStdDialogButtonSizer * m_sdbSizer
 
wxButton * m_sdbSizerOK
 
wxButton * m_sdbSizerCancel
 
EDA_UNITS m_units
 
std::string m_hash_key
 
bool m_useCalculatedSize
 
bool m_firstPaintEvent
 
wxWindow * m_initialFocusTarget
 
WX_EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 
EDA_BASE_FRAMEm_parentFrame
 
std::vector< wxWindow * > m_tabOrder
 
wxSize m_initialSize
 

Private Member Functions

void SetEditVals (CHANGED_COLOR aChanged, bool aCheckTransparency)
 
void drawAll ()
 
void createHSVBitmap ()
 generate the bitmap that shows the HSV color circle More...
 
void drawHSVPalette ()
 draws the HSV color circle More...
 
void createRGBBitmap ()
 generate the bitmap that shows the RVB color space More...
 
void drawRGBPalette ()
 draws the RVB color space More...
 
void updatePreview (wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
 Event handler from wxSlider: brightness (value) control. More...
 
void OnChangeBrightness (wxScrollEvent &event) override
 Event handler from wxSlider: alpha (transparency) control. More...
 
void OnChangeAlpha (wxScrollEvent &event) override
 Event handlers from wxSpinControl. More...
 
void OnChangeEditRed (wxSpinEvent &event) override
 
void OnChangeEditGreen (wxSpinEvent &event) override
 
void OnChangeEditBlue (wxSpinEvent &event) override
 
void OnChangeEditHue (wxSpinEvent &event) override
 
void OnChangeEditSat (wxSpinEvent &event) override
 mouse handlers, when clicking on a palette bitmap More...
 
void onRGBMouseClick (wxMouseEvent &event) override
 
void onRGBMouseDrag (wxMouseEvent &event) override
 
void onHSVMouseClick (wxMouseEvent &event) override
 
void onHSVMouseDrag (wxMouseEvent &event) override
 
void OnColorValueText (wxCommandEvent &event) override
 Event handler for the reset button press. More...
 
void OnResetButton (wxCommandEvent &aEvent) override
 
bool setHSvaluesFromCursor (const wxPoint &aMouseCursor)
 Manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor. More...
 
void buttColorClick (wxMouseEvent &event)
 Event handler for double click on color buttons. More...
 
void colorDClick (wxMouseEvent &event)
 called when creating the dialog More...
 
bool TransferDataToWindow () override
 
void initDefinedColors (CUSTOM_COLORS_LIST *aPredefinedColors)
 Create the bitmap buttons for each defined colors. More...
 
int normalizeToInt (double aValue, int aValMax=255)
 

Private Attributes

bool m_allowMouseEvents
 
bool m_allowOpacityCtrl
 true to show the widget, false to keep alpha channel = 1.0 More...
 
KIGFX::COLOR4D m_previousColor4D
 the initial color4d More...
 
KIGFX::COLOR4D m_newColor4D
 the current color4d More...
 
KIGFX::COLOR4D m_defaultColor
 The default color4d. More...
 
std::vector< KIGFX::COLOR4Dm_Color4DList
 the list of color4d ordered by button ID, for predefined colors More...
 
int m_cursorsSize
 
wxPoint m_cursorBitmapRed
 the red cursor on the RGB bitmap palette. More...
 
wxPoint m_cursorBitmapGreen
 the green cursor on the RGB bitmap palette. More...
 
wxPoint m_cursorBitmapBlue
 the blue cursor on the RGB bitmap palette. More...
 
wxPoint m_cursorBitmapHSV
 the cursor on the HSV bitmap palette. More...
 
wxPoint * m_selectedCursor
 the ref cursor to the selected cursor, if any, or null. More...
 
double m_hue
 the current hue, in degrees (0 ... 360) More...
 
double m_sat
 the current saturation (0 ... 1.0) More...
 
double m_val
 the current value (0 ... 1.0) More...
 
wxBitmap * m_bitmapRGB
 the basic RGB palette More...
 
wxBitmap * m_bitmapHSV
 the basic HUV palette More...
 
std::vector< wxStaticBitmap * > m_colorSwatches
 list of defined colors buttons More...
 

Detailed Description

Definition at line 81 of file dialog_color_picker.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ DIALOG_COLOR_PICKER()

DIALOG_COLOR_PICKER::DIALOG_COLOR_PICKER ( wxWindow *  aParent,
const KIGFX::COLOR4D aCurrentColor,
bool  aAllowOpacityControl,
CUSTOM_COLORS_LIST aUserColors = nullptr,
const KIGFX::COLOR4D aDefaultColor = KIGFX::COLOR4D::UNSPECIFIED 
)

Dialog constructor.

Parameters
aParentis the caller
aCurrentColoris the current color, used to show it in dialog
aAllowOpacityControltrue to allow opacity (alpha channel) setting false to not show this setting (opacity = 1.0 always)
aUserColorsif not null is a list of defined colors replacing the dialog predefined colors

There are two types of color settings: theme colors and local overrides. Theme colors have a default value, and the Reset to Default button reverts to it. Local override colors have a default of UNSPECIFIED, which means "use the theme color". The underlying action is the same, but we change the label here because the action from the point of view of the user is slightly different.

Definition at line 45 of file dialog_color_picker.cpp.

48  :
49  DIALOG_COLOR_PICKER_BASE( aParent )
50 {
51  m_allowMouseEvents = false;
52  m_allowOpacityCtrl = aAllowOpacityControl;
53  m_previousColor4D = aCurrentColor;
54  m_newColor4D = aCurrentColor;
55  m_cursorsSize = 8; // Size of square cursors drawn on color bitmaps
56  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
57  m_bitmapRGB = nullptr;
58  m_bitmapHSV = nullptr;
59  m_selectedCursor = nullptr;
60  m_defaultColor = aDefaultColor;
61 
62  if( !m_allowOpacityCtrl )
63  {
64  m_SizerTransparency->Show( false );
65 
66  if( aCurrentColor != COLOR4D::UNSPECIFIED )
67  {
68  m_previousColor4D.a = 1.0;
69  m_newColor4D.a = 1.0;
70  }
71  }
72 
73  // UNSPECIFIED is ( 0, 0, 0, 0 ) but that is unfriendly for editing because you have to notice
74  // first that the value slider is all the way down before you get any color
75  if( aCurrentColor == COLOR4D::UNSPECIFIED )
76  m_val = 1.0;
77 
79  wxASSERT( cfg );
80 
81  m_notebook->SetSelection( cfg->m_ColorPicker.default_tab );
82 
83  // Build the defined colors panel:
84  initDefinedColors( aUserColors );
85 
93  if( aDefaultColor == COLOR4D::UNSPECIFIED )
94  m_resetToDefault->SetLabel( _( "Clear Color" ) );
95 
96  m_sdbSizerOK->SetDefault();
97 }
double m_hue
the current hue, in degrees (0 ... 360)
bool m_allowOpacityCtrl
true to show the widget, false to keep alpha channel = 1.0
double m_sat
the current saturation (0 ... 1.0)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Convert current color (stored in RGB) to HSV format.
Definition: color4d.cpp:357
DIALOG_COLOR_PICKER_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Color Picker"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
KIGFX::COLOR4D m_newColor4D
the current color4d
double a
Alpha component.
Definition: color4d.h:380
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
KIGFX::COLOR4D m_previousColor4D
the initial color4d
wxBitmap * m_bitmapHSV
the basic HUV palette
#define _(s)
double m_val
the current value (0 ... 1.0)
KIGFX::COLOR4D m_defaultColor
The default color4d.
void initDefinedColors(CUSTOM_COLORS_LIST *aPredefinedColors)
Create the bitmap buttons for each defined colors.
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_base.h:92
wxBitmap * m_bitmapRGB
the basic RGB palette
COLOR_PICKER m_ColorPicker
Definition: app_settings.h:173
wxPoint * m_selectedCursor
the ref cursor to the selected cursor, if any, or null.

References _, KIGFX::COLOR4D::a, APP_SETTINGS_BASE::COLOR_PICKER::default_tab, initDefinedColors(), Kiface(), KIFACE_BASE::KifaceSettings(), m_allowMouseEvents, m_allowOpacityCtrl, m_bitmapHSV, m_bitmapRGB, APP_SETTINGS_BASE::m_ColorPicker, m_cursorsSize, m_defaultColor, m_hue, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_notebook, m_previousColor4D, DIALOG_COLOR_PICKER_BASE::m_resetToDefault, m_sat, DIALOG_COLOR_PICKER_BASE::m_sdbSizerOK, m_selectedCursor, DIALOG_COLOR_PICKER_BASE::m_SizerTransparency, m_val, and KIGFX::COLOR4D::ToHSV().

◆ ~DIALOG_COLOR_PICKER()

DIALOG_COLOR_PICKER::~DIALOG_COLOR_PICKER ( )

Definition at line 100 of file dialog_color_picker.cpp.

101 {
103  wxASSERT( cfg );
104 
105  cfg->m_ColorPicker.default_tab = m_notebook->GetSelection();
106 
107  delete m_bitmapRGB;
108  delete m_bitmapHSV;
109 
110  for( wxStaticBitmap* swatch : m_colorSwatches )
111  {
112  swatch->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED,
113  wxMouseEventHandler( DIALOG_COLOR_PICKER::buttColorClick ),
114  nullptr, this );
115  }
116 }
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
wxBitmap * m_bitmapHSV
the basic HUV palette
std::vector< wxStaticBitmap * > m_colorSwatches
list of defined colors buttons
void buttColorClick(wxMouseEvent &event)
Event handler for double click on color buttons.
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_base.h:92
wxBitmap * m_bitmapRGB
the basic RGB palette
COLOR_PICKER m_ColorPicker
Definition: app_settings.h:173

References buttColorClick(), APP_SETTINGS_BASE::COLOR_PICKER::default_tab, Kiface(), KIFACE_BASE::KifaceSettings(), m_bitmapHSV, m_bitmapRGB, APP_SETTINGS_BASE::m_ColorPicker, m_colorSwatches, and DIALOG_COLOR_PICKER_BASE::m_notebook.

Member Function Documentation

◆ buttColorClick()

void DIALOG_COLOR_PICKER::buttColorClick ( wxMouseEvent &  event)
private

Event handler for double click on color buttons.

Definition at line 555 of file dialog_color_picker.cpp.

556 {
557  int id = event.GetId();
559  m_newColor4D.r = color.r;
560  m_newColor4D.g = color.g;
561  m_newColor4D.b = color.b;
562  m_newColor4D.a = color.a;
563 
564  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
565  SetEditVals( ALL_CHANGED, false );
566 
567  drawAll();
568 
569  event.Skip();
570 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Convert current color (stored in RGB) to HSV format.
Definition: color4d.cpp:357
std::vector< KIGFX::COLOR4D > m_Color4DList
the list of color4d ordered by button ID, for predefined colors
int color
Definition: DXF_plotter.cpp:57
double g
Green component.
Definition: color4d.h:378
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:379
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
double a
Alpha component.
Definition: color4d.h:380
double m_val
the current value (0 ... 1.0)
double r
Red component.
Definition: color4d.h:377
#define ID_COLOR_BLACK
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References KIGFX::COLOR4D::a, ALL_CHANGED, KIGFX::COLOR4D::b, color, drawAll(), KIGFX::COLOR4D::g, ID_COLOR_BLACK, m_Color4DList, m_hue, m_newColor4D, m_sat, m_val, KIGFX::COLOR4D::r, SetEditVals(), and KIGFX::COLOR4D::ToHSV().

Referenced by initDefinedColors(), and ~DIALOG_COLOR_PICKER().

◆ colorDClick()

void DIALOG_COLOR_PICKER::colorDClick ( wxMouseEvent &  event)
private

called when creating the dialog

Definition at line 549 of file dialog_color_picker.cpp.

550 {
551  wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
552 }

Referenced by initDefinedColors().

◆ createHSVBitmap()

void DIALOG_COLOR_PICKER::createHSVBitmap ( )
private

generate the bitmap that shows the HSV color circle

Definition at line 322 of file dialog_color_picker.cpp.

323 {
324  wxSize bmsize = m_HsvBitmap->GetSize();
325  int half_size = std::min( bmsize.x, bmsize.y )/2;
326 
327  // We use here a Y axis from bottom to top and origin to center, So we need to map
328  // coordinated to write pixel in a wxImage
329  #define MAPX( xx ) bmsize.x / 2 + ( xx )
330  #define MAPY( yy ) bmsize.y / 2 - ( yy )
331 
332  wxImage img( bmsize ); // a temporary buffer to build the color map
333 
334  // clear background (set the window bg color)
335  wxColor bg = GetBackgroundColour();
336 
337  // Don't do standard-color lookups on OSX each time through the loop
338  wxColourBase::ChannelType bgR = bg.Red();
339  wxColourBase::ChannelType bgG = bg.Green();
340  wxColourBase::ChannelType bgB = bg.Blue();
341 
342  for( int xx = 0; xx < bmsize.x; xx++ ) // blue axis
343  {
344  for( int yy = 0; yy < bmsize.y; yy++ ) // Red axis
345  img.SetRGB( xx, yy, bgR, bgG, bgB );
346  }
347 
348  // Reserve room to draw cursors inside the bitmap
349  half_size -= m_cursorsSize/2;
350 
351  double hue, sat;
352  COLOR4D color;
353  int sq_radius = half_size*half_size;
354 
355  // Build the palette
356  for( int xx = -half_size; xx < half_size; xx++ )
357  {
358  for( int yy = -half_size; yy < half_size; yy++ )
359  {
360  sat = double(xx*xx + yy*yy) / sq_radius;
361 
362  // sat is <= 1.0
363  // any value > 1.0 is not a valid HSB color:
364  if( sat > 1.0 )
365  continue;
366 
367  // sat is the distance from center
368  sat = sqrt( sat );
369  hue = atan2( (double)yy, (double)xx ) * 180 / M_PI;
370 
371  if( hue < 0.0 )
372  hue += 360.0;
373 
374  color.FromHSV( hue, sat, 1.0 );
375 
376  img.SetRGB( MAPX( xx ), MAPY( yy ), color.r*255, color.g*255, color.b*255 );
377  }
378  }
379 
380  delete m_bitmapHSV;
381  m_bitmapHSV = new wxBitmap( img, 24 );
382  m_HsvBitmap->SetBitmap( *m_bitmapHSV );
383 }
int color
Definition: DXF_plotter.cpp:57
#define MAPY(yy)
wxBitmap * m_bitmapHSV
the basic HUV palette
#define MAPX(xx)
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, m_bitmapHSV, m_cursorsSize, DIALOG_COLOR_PICKER_BASE::m_HsvBitmap, MAPX, and MAPY.

Referenced by drawHSVPalette().

◆ createRGBBitmap()

void DIALOG_COLOR_PICKER::createRGBBitmap ( )
private

generate the bitmap that shows the RVB color space

Definition at line 228 of file dialog_color_picker.cpp.

229 {
230  wxSize bmsize = m_RgbBitmap->GetSize();
231  int half_size = std::min( bmsize.x, bmsize.y )/2;
232 
233  // We use here a Y axis from bottom to top and origin to center, So we need to map
234  // coordinated to write pixel in a wxImage. MAPX and MAPY are defined above so they
235  // must be undefined here to prevent compiler warnings.
236 #undef MAPX
237 #undef MAPY
238 #define MAPX( xx ) bmsize.x / 2 + ( xx )
239 #define MAPY( yy ) bmsize.y / 2 - ( yy )
240 
241  // Reserve room to draw cursors inside the bitmap
242  half_size -= m_cursorsSize/2;
243 
244  COLOR4D color;
245 
246  // Red blue area in X Z 3d axis
247  double inc = 255.0 / half_size;
248  #define SLOPE_AXIS 50.0
249  double slope = SLOPE_AXIS/half_size;
250  color.g = 0.0;
251 
252  wxImage img( bmsize ); // a temporary buffer to build the color map
253 
254  // clear background (set the window bg color)
255  wxColor bg = GetBackgroundColour();
256 
257  // Don't do standard-color lookups on OSX each time through the loop
258  wxColourBase::ChannelType bgR = bg.Red();
259  wxColourBase::ChannelType bgG = bg.Green();
260  wxColourBase::ChannelType bgB = bg.Blue();
261 
262  for( int xx = 0; xx < bmsize.x; xx++ ) // blue axis
263  {
264  for( int yy = 0; yy < bmsize.y; yy++ ) // Red axis
265  img.SetRGB( xx, yy, bgR, bgG, bgB );
266  }
267 
268  // Build the palette
269  for( int xx = 0; xx < half_size; xx++ ) // blue axis
270  {
271  color.b = inc * xx;
272 
273  for( int yy = 0; yy < half_size; yy++ ) // Red axis
274  {
275  color.r = inc * yy;
276  img.SetRGB( MAPX( xx ), MAPY( yy - (slope*xx) ), color.r, color.g, color.b );
277  }
278  }
279 
280  // Red green area in y Z 3d axis
281  color.b = 0.0;
282 
283  for( int xx = 0; xx < half_size; xx++ ) // green axis
284  {
285  color.g = inc * xx;
286 
287  for( int yy = 0; yy < half_size; yy++ ) // Red axis
288  {
289  color.r = inc * yy;
290  img.SetRGB( MAPX( -xx ), MAPY( yy - (slope*xx) ), color.r, color.g, color.b );
291  }
292  }
293 
294  // Blue green area in x y 3d axis
295  color.r = 0.0;
296 
297  for( int xx = 0; xx < half_size; xx++ ) // green axis
298  {
299  color.g = inc * xx;
300 
301  for( int yy = 0; yy < half_size; yy++ ) // blue axis
302  {
303  color.b = inc * yy;
304 
305  // Mapping the xx, yy color axis to draw coordinates is more tricky than previously
306  // in DC coordinates:
307  // the blue axis is the (0, 0) to half_size, (-yy - SLOPE_AXIS)
308  // the green axis is the (0, 0) to - half_size, (-yy - SLOPE_AXIS)
309  int drawX = -xx + yy;
310  int drawY = - std::min( xx,yy ) * 0.9;
311  img.SetRGB( MAPX( drawX ), MAPY( drawY - std::abs( slope*drawX ) ),
312  color.r, color.g, color.b );
313  }
314  }
315 
316  delete m_bitmapRGB;
317  m_bitmapRGB = new wxBitmap( img, 24 );
318  m_RgbBitmap->SetBitmap( *m_bitmapRGB );
319 }
int color
Definition: DXF_plotter.cpp:57
#define MAPY(yy)
wxBitmap * m_bitmapRGB
the basic RGB palette
#define MAPX(xx)
#define SLOPE_AXIS
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, m_bitmapRGB, m_cursorsSize, DIALOG_COLOR_PICKER_BASE::m_RgbBitmap, MAPX, MAPY, and SLOPE_AXIS.

Referenced by drawRGBPalette().

◆ drawAll()

void DIALOG_COLOR_PICKER::drawAll ( )
private

Definition at line 532 of file dialog_color_picker.cpp.

533 {
534  m_NewColorRect->Freeze(); // Avoid flicker
535  m_HsvBitmap->Freeze();
536  m_RgbBitmap->Freeze();
538  drawHSVPalette();
539  drawRGBPalette();
540  m_NewColorRect->Thaw();
541  m_HsvBitmap->Thaw();
542  m_RgbBitmap->Thaw();
543  m_NewColorRect->Refresh();
544  m_HsvBitmap->Refresh();
545  m_RgbBitmap->Refresh();
546 }
void drawRGBPalette()
draws the RVB color space
void drawHSVPalette()
draws the HSV color circle
KIGFX::COLOR4D m_newColor4D
the current color4d
void updatePreview(wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
Event handler from wxSlider: brightness (value) control.

References drawHSVPalette(), drawRGBPalette(), DIALOG_COLOR_PICKER_BASE::m_HsvBitmap, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_NewColorRect, DIALOG_COLOR_PICKER_BASE::m_RgbBitmap, and updatePreview().

Referenced by buttColorClick(), OnChangeBrightness(), OnChangeEditBlue(), OnChangeEditGreen(), OnChangeEditHue(), OnChangeEditRed(), OnChangeEditSat(), OnColorValueText(), onHSVMouseClick(), onHSVMouseDrag(), OnResetButton(), onRGBMouseDrag(), and TransferDataToWindow().

◆ drawHSVPalette()

void DIALOG_COLOR_PICKER::drawHSVPalette ( )
private

draws the HSV color circle

Definition at line 451 of file dialog_color_picker.cpp.

452 {
453  if( !m_bitmapHSV || m_bitmapHSV->GetSize() != m_HsvBitmap->GetSize() )
454  createHSVBitmap();
455 
456  wxMemoryDC bitmapDC;
457  wxSize bmsize = m_bitmapHSV->GetSize();
458  int half_size = std::min( bmsize.x, bmsize.y ) / 2;
459  wxBitmap newBm( *m_bitmapHSV );
460  bitmapDC.SelectObject( newBm );
461 
462  // Use Y axis from bottom to top and origin to center
463  bitmapDC.SetAxisOrientation( true, true );
464  bitmapDC.SetDeviceOrigin( half_size, half_size );
465 
466  // Reserve room to draw cursors inside the bitmap
467  half_size -= m_cursorsSize / 2;
468 
469  // Draw the HSB cursor:
470  m_cursorBitmapHSV.x = cos( m_hue * M_PI / 180.0 ) * half_size * m_sat;
471  m_cursorBitmapHSV.y = sin( m_hue * M_PI / 180.0 ) * half_size * m_sat;
472 
473  wxPen pen( wxColor( 0, 0, 0 ) );
474  wxBrush brush( wxColor( 0, 0, 0 ), wxBRUSHSTYLE_TRANSPARENT );
475  bitmapDC.SetPen( pen );
476  bitmapDC.SetBrush( brush );
477 
478  int half_csize = m_cursorsSize/2;
479  bitmapDC.DrawRectangle( m_cursorBitmapHSV.x- half_csize,
480  m_cursorBitmapHSV.y-half_csize,
482 
483  m_HsvBitmap->SetBitmap( newBm );
484 
485  /* Deselect the Tool Bitmap from DC,
486  * in order to delete the MemoryDC safely without deleting the bitmap
487  */
488  bitmapDC.SelectObject( wxNullBitmap );
489 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void createHSVBitmap()
generate the bitmap that shows the HSV color circle
wxPoint m_cursorBitmapHSV
the cursor on the HSV bitmap palette.
wxBitmap * m_bitmapHSV
the basic HUV palette

References createHSVBitmap(), m_bitmapHSV, m_cursorBitmapHSV, m_cursorsSize, DIALOG_COLOR_PICKER_BASE::m_HsvBitmap, m_hue, and m_sat.

Referenced by drawAll().

◆ drawRGBPalette()

void DIALOG_COLOR_PICKER::drawRGBPalette ( )
private

draws the RVB color space

repaint a static bitmap with the aColor4D color

Definition at line 386 of file dialog_color_picker.cpp.

387 {
388  if( !m_bitmapRGB || m_bitmapRGB->GetSize() != m_RgbBitmap->GetSize() )
389  createRGBBitmap();
390 
391  wxMemoryDC bitmapDC;
392  wxSize bmsize = m_bitmapRGB->GetSize();
393  int half_size = std::min( bmsize.x, bmsize.y )/2;
394  wxBitmap newBm( *m_bitmapRGB );
395  bitmapDC.SelectObject( newBm );
396 
397  // Use Y axis from bottom to top and origin to center
398  bitmapDC.SetAxisOrientation( true, true );
399  bitmapDC.SetDeviceOrigin( half_size, half_size );
400 
401  // Reserve room to draw cursors inside the bitmap
402  half_size -= m_cursorsSize/2;
403 
404  // Draw the 3 RGB cursors, using white color to make them always visible:
405  wxPen pen( wxColor( 255, 255, 255 ) );
406  wxBrush brush( wxColor( 0, 0, 0 ), wxBRUSHSTYLE_TRANSPARENT );
407  bitmapDC.SetPen( pen );
408  bitmapDC.SetBrush( brush );
409  int half_csize = m_cursorsSize / 2;
410 
411  #define SLOPE_AXIS 50.0
412  double slope = SLOPE_AXIS / half_size;
413 
414  // Red axis cursor (Z 3Daxis):
415  m_cursorBitmapRed.x = 0;
416  m_cursorBitmapRed.y = m_newColor4D.r * half_size;
417  bitmapDC.DrawRectangle( m_cursorBitmapRed.x - half_csize,
418  m_cursorBitmapRed.y - half_csize,
420 
421  // Blue axis cursor (X 3Daxis):
422  m_cursorBitmapBlue.x = m_newColor4D.b * half_size;
424  bitmapDC.DrawRectangle( m_cursorBitmapBlue.x - half_csize,
425  m_cursorBitmapBlue.y - half_csize,
427 
428  // Green axis cursor (Y 3Daxis):
429  m_cursorBitmapGreen.x = m_newColor4D.g * half_size;
432 
433  bitmapDC.DrawRectangle( m_cursorBitmapGreen.x - half_csize,
434  m_cursorBitmapGreen.y - half_csize,
436 
437  // Draw the 3 RGB axis:
438  half_size += half_size/5;
439  bitmapDC.DrawLine( 0, 0, 0, half_size ); // Red axis (Z 3D axis)
440  bitmapDC.DrawLine( 0, 0, half_size, - half_size*slope ); // Blue axis (X 3D axis)
441  bitmapDC.DrawLine( 0, 0, -half_size, - half_size*slope ); // green axis (Y 3D axis)
442 
443  m_RgbBitmap->SetBitmap( newBm );
444 
445  /* Deselect the Tool Bitmap from DC,
446  * in order to delete the MemoryDC safely without deleting the bitmap */
447  bitmapDC.SelectObject( wxNullBitmap );
448 }
double g
Green component.
Definition: color4d.h:378
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:379
void createRGBBitmap()
generate the bitmap that shows the RVB color space
wxPoint m_cursorBitmapRed
the red cursor on the RGB bitmap palette.
wxPoint m_cursorBitmapBlue
the blue cursor on the RGB bitmap palette.
wxBitmap * m_bitmapRGB
the basic RGB palette
double r
Red component.
Definition: color4d.h:377
#define SLOPE_AXIS
wxPoint m_cursorBitmapGreen
the green cursor on the RGB bitmap palette.

References KIGFX::COLOR4D::b, createRGBBitmap(), KIGFX::COLOR4D::g, m_bitmapRGB, m_cursorBitmapBlue, m_cursorBitmapGreen, m_cursorBitmapRed, m_cursorsSize, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_RgbBitmap, KIGFX::COLOR4D::r, and SLOPE_AXIS.

Referenced by drawAll().

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 312 of file dialog_shim.cpp.

313 {
314  // so we can do logging of this state change:
315  return wxDialog::Enable( enable );
316 }

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 473 of file dialog_shim.cpp.

474 {
475  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
476  // handle validation in the same way as other dialogs.
477  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
478  return;
479 
480  SetReturnCode( retCode );
481 
482  if( !IsQuasiModal() )
483  {
484  wxFAIL_MSG( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal"
485  "wasn't called" );
486  return;
487  }
488 
489  if( m_qmodal_loop )
490  {
491  if( m_qmodal_loop->IsRunning() )
492  m_qmodal_loop->Exit( 0 );
493  else
494  m_qmodal_loop->ScheduleExit( 0 );
495 
496  m_qmodal_loop = nullptr;
497  }
498 
500  m_qmodal_parent_disabler = nullptr;
501 
502  Show( false );
503 }
bool IsQuasiModal() const
Definition: dialog_shim.h:106
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:211
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:214

References DIALOG_SHIM::IsQuasiModal(), DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, and DIALOG_SHIM::Show().

Referenced by NETLIST_DIALOG::OnAddGenerator(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_SYMBOLS_LIBID::onCancel(), DIALOG_LIB_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_LIB_EDIT_PIN_TABLE::OnClose(), DIALOG_CHOOSE_FOOTPRINT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), NETLIST_DIALOG::OnDelGenerator(), DIALOG_SYMBOL_PROPERTIES::OnEditLibrarySymbol(), DIALOG_SYMBOL_PROPERTIES::OnEditSymbol(), DIALOG_SYMBOL_PROPERTIES::OnExchangeSymbol(), PCB_ONE_LAYER_SELECTOR::OnLeftGridCellClick(), PCB_ONE_LAYER_SELECTOR::OnRightGridCellClick(), DIALOG_SYMBOL_PROPERTIES::OnUpdateSymbol(), DIALOG_CHOOSE_FOOTPRINT::OnUseBrowser(), DIALOG_PUSH_PAD_PROPERTIES::PadPropertiesAccept(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ finishDialogSettings()

void DIALOG_SHIM::finishDialogSettings ( )
protectedinherited

In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls.

finishDialogSettings must be called from derived classes after all widgets have been initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at the end of TransferDataToWindow, or better yet, at end of a wxInitDialogEvent handler.

Definition at line 151 of file dialog_shim.cpp.

152 {
153  // must be called from the constructor of derived classes,
154  // when all widgets are initialized, and therefore their size fixed
155 
156  // SetSizeHints fixes the minimal size of sizers in the dialog
157  // (SetSizeHints calls Fit(), so no need to call it)
158  GetSizer()->SetSizeHints( this );
159 }

Referenced by DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOM::DIALOG_BOM(), DIALOG_BUS_MANAGER::DIALOG_BUS_MANAGER(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CLEANUP_TRACKS_AND_VIAS::DIALOG_CLEANUP_TRACKS_AND_VIAS(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_DRC::DIALOG_DRC(), DIALOG_EDIT_SYMBOLS_LIBID::DIALOG_EDIT_SYMBOLS_LIBID(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_ERC::DIALOG_ERC(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FOOTPRINT_CHECKER::DIALOG_FOOTPRINT_CHECKER(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_GENCAD_EXPORT_OPTIONS::DIALOG_GENCAD_EXPORT_OPTIONS(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS(), DIALOG_GLOBAL_LIB_TABLE_CONFIG::DIALOG_GLOBAL_LIB_TABLE_CONFIG(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMAGE_EDITOR::DIALOG_IMAGE_EDITOR(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), DIALOG_INSPECTOR::DIALOG_INSPECTOR(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LIB_NEW_SYMBOL::DIALOG_LIB_NEW_SYMBOL(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LINE_WIRE_BUS_PROPERTIES::DIALOG_LINE_WIRE_BUS_PROPERTIES(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_NETLIST::DIALOG_NETLIST(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::DIALOG_PAD_PRIMITIVE_POLY_PROPS(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PASTE_SPECIAL::DIALOG_PASTE_SPECIAL(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC(), DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_REGULATOR_FORM::DIALOG_REGULATOR_FORM(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SELECT_3DMODEL::DIALOG_SELECT_3DMODEL(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_AND_LABEL_PROPERTIES::DIALOG_TEXT_AND_LABEL_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UNUSED_PAD_LAYERS::DIALOG_UNUSED_PAD_LAYERS(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), PAGED_DIALOG::finishInitialization(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_SHEET_PROPERTIES::OnInitDlg(), DIALOG_SYMBOL_PROPERTIES::OnInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), DIALOG_BOARD_STATISTICS::TransferDataToWindow(), and TransferDataToWindow().

◆ GetColor()

KIGFX::COLOR4D DIALOG_COLOR_PICKER::GetColor ( )
inline

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 46 of file kiway_holder.h.

46 { return m_type; }
HOLDER_TYPE m_type
Definition: kiway_holder.h:76

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

◆ horizPixelsFromDU()

int DIALOG_SHIM::horizPixelsFromDU ( int  x) const
protectedinherited

Convert an integer number of dialog units to pixels, horizontally.

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 169 of file dialog_shim.cpp.

170 {
171  wxSize sz( x, 0 );
172  return ConvertDialogToPixels( sz ).x;
173 }

Referenced by DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), and DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

◆ initDefinedColors()

void DIALOG_COLOR_PICKER::initDefinedColors ( CUSTOM_COLORS_LIST aPredefinedColors)
private

Create the bitmap buttons for each defined colors.

If aPredefinedColors is nullptr, a internal predefined list will be used.

Definition at line 151 of file dialog_color_picker.cpp.

152 {
153  #define ID_COLOR_BLACK 2000 // colors_id = ID_COLOR_BLACK a ID_COLOR_BLACK + NBCOLORS-1
154 
155  // Colors are built from the colorRefs() table (size NBCOLORS).
156  // The look is better when colorRefs() order is displayed in a grid matrix
157  // of 7 row and 5 columns, first filling a row, and after the next column.
158  // But the wxFlexGrid used here must be filled by columns, then next row
159  // the best interval colorRefs() from a matrix row to the next row is 6
160  // So when have to reorder the index used to explore colorRefs()
161  int grid_col = 0;
162  int grid_row = 0;
163  int table_row_count = 7;
164 
165  wxSize swatchSize = ConvertDialogToPixels( SWATCH_SIZE_LARGE_DU );
166  wxSize checkerboardSize = ConvertDialogToPixels( CHECKERBOARD_SIZE_DU );
167  COLOR4D checkboardBackground = m_OldColorRect->GetParent()->GetBackgroundColour();
168 
169  auto addSwatch =
170  [&]( int aId, COLOR4D aColor, const wxString& aColorName )
171  {
172  wxBitmap bm = COLOR_SWATCH::MakeBitmap( aColor, COLOR4D::WHITE, swatchSize,
173  checkerboardSize, checkboardBackground );
174  wxStaticBitmap* swatch = new wxStaticBitmap( m_panelDefinedColors, aId, bm );
175 
176  m_fgridColor->Add( swatch, 0, wxALIGN_CENTER_VERTICAL, 5 );
177 
178  wxStaticText* label = new wxStaticText( m_panelDefinedColors, wxID_ANY, aColorName,
179  wxDefaultPosition, wxDefaultSize, 0 );
180  m_fgridColor->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 15 );
181 
182  m_colorSwatches.push_back( swatch );
183 
184  swatch->Connect( wxEVT_LEFT_DOWN,
185  wxMouseEventHandler( DIALOG_COLOR_PICKER::buttColorClick ),
186  nullptr, this );
187  swatch->Connect( wxEVT_LEFT_DCLICK,
188  wxMouseEventHandler( DIALOG_COLOR_PICKER::colorDClick ),
189  nullptr, this );
190  };
191 
192  // If no predefined list is given, build the default predefined colors:
193  if( aPredefinedColors )
194  {
195  for( unsigned jj = 0; jj < aPredefinedColors->size() && jj < NBCOLORS; ++jj )
196  {
197  CUSTOM_COLOR_ITEM* item = & *aPredefinedColors->begin() + jj;
198  int butt_ID = ID_COLOR_BLACK + jj;
199 
200  addSwatch( butt_ID, item->m_Color, item->m_ColorName );
201  m_Color4DList.push_back( item->m_Color );
202  }
203  }
204  else
205  {
206  m_Color4DList.assign( NBCOLORS, COLOR4D( 0.0, 0.0, 0.0, 1.0 ) );
207 
208  for( int jj = 0; jj < NBCOLORS; ++jj, grid_col++ )
209  {
210  if( grid_col * table_row_count >= NBCOLORS )
211  {
212  // the current grid row is filled, and we must fill the next grid row
213  grid_col = 0;
214  grid_row++;
215  }
216 
217  int ii = grid_row + ( grid_col * table_row_count ); // The index in colorRefs()
218  int butt_ID = ID_COLOR_BLACK + ii;
219  COLOR4D buttcolor = COLOR4D( colorRefs()[ii].m_Numcolor );
220 
221  addSwatch( butt_ID, buttcolor, wxGetTranslation( colorRefs()[ii].m_ColorName ) );
222  m_Color4DList[ butt_ID - ID_COLOR_BLACK ] = buttcolor;
223  }
224  }
225 }
static wxBitmap MakeBitmap(const KIGFX::COLOR4D &aColor, const KIGFX::COLOR4D &aBackground, const wxSize &aSize, const wxSize &aCheckerboardSize, const KIGFX::COLOR4D &aCheckerboardBackground)
std::vector< KIGFX::COLOR4D > m_Color4DList
the list of color4d ordered by button ID, for predefined colors
static const wxSize SWATCH_SIZE_LARGE_DU(24, 16)
A class to handle a custom color (predefined color) for the color picker dialog.
Number of colors.
Definition: color4d.h:79
std::vector< wxStaticBitmap * > m_colorSwatches
list of defined colors buttons
void colorDClick(wxMouseEvent &event)
called when creating the dialog
const StructColors * colorRefs()
Global list of legacy color names, still used all over the place for constructing COLOR4D's.
Definition: color4d.cpp:39
void buttColorClick(wxMouseEvent &event)
Event handler for double click on color buttons.
Definition: color4d.h:48
static const wxSize CHECKERBOARD_SIZE_DU(3, 3)
KIGFX::COLOR4D m_Color
#define ID_COLOR_BLACK
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References buttColorClick(), CHECKERBOARD_SIZE_DU(), colorDClick(), colorRefs(), ID_COLOR_BLACK, CUSTOM_COLOR_ITEM::m_Color, m_Color4DList, CUSTOM_COLOR_ITEM::m_ColorName, m_colorSwatches, DIALOG_COLOR_PICKER_BASE::m_fgridColor, DIALOG_COLOR_PICKER_BASE::m_OldColorRect, DIALOG_COLOR_PICKER_BASE::m_panelDefinedColors, COLOR_SWATCH::MakeBitmap(), NBCOLORS, SWATCH_SIZE_LARGE_DU(), and WHITE.

Referenced by DIALOG_COLOR_PICKER().

◆ IsCtrl()

static bool DIALOG_SHIM::IsCtrl ( int  aChar,
const wxKeyEvent &  e 
)
inlinestaticinherited

Definition at line 124 of file dialog_shim.h.

125  {
126  return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
127  !e.ShiftDown() && !e.MetaDown();
128  }

◆ IsQuasiModal()

◆ IsShiftCtrl()

static bool DIALOG_SHIM::IsShiftCtrl ( int  aChar,
const wxKeyEvent &  e 
)
inlinestaticinherited

Definition at line 130 of file dialog_shim.h.

131  {
132  return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
133  e.ShiftDown() && !e.MetaDown();
134  }

◆ Kiway()

KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Return a reference to the KIWAY that this object has an opportunity to participate in.

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 53 of file kiway_holder.h.

54  {
55  wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
56  return *m_kiway;
57  }
KIWAY * m_kiway
Definition: kiway_holder.h:75

References KIWAY_HOLDER::m_kiway.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SYMBOL_EDIT_FRAME::canCloseWindow(), SCH_EDIT_FRAME::canCloseWindow(), KICAD_MANAGER_FRAME::CloseProject(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), DIALOG_CHOOSE_SYMBOL::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), BOARD_EDITOR_CONTROL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), BACK_ANNOTATE::FetchNetlistFromPCB(), KICAD_MANAGER_FRAME::ImportNonKiCadProject(), SCRIPTING_TOOL::Init(), EDA_DRAW_FRAME::IsScriptingConsoleVisible(), KICAD_MANAGER_FRAME::language_change(), KIWAY_PLAYER::language_change(), DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser(), DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser(), LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), SYMBOL_EDIT_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_FIELD_PROPERTIES::OnTextValueSelectButtonClick(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), SCH_BASE_FRAME::PickSymbolFromLibBrowser(), KIWAY_HOLDER::Prj(), SCH_EDIT_TOOL::Properties(), BACK_ANNOTATE::PushNewLinksToPCB(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SCH_EDITOR_CONTROL::rescueProject(), EE_INSPECTION_TOOL::RunSimulation(), SYMBOL_EDIT_FRAME::Save(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), LIB_TREE_MODEL_ADAPTER::SavePinnedItems(), EDA_DRAW_FRAME::ScriptingConsoleEnableDisable(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SetCrossProbeConnection(), SYMBOL_EDIT_FRAME::SetCurSymbol(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), BOARD_EDITOR_CONTROL::UpdateSchematicFromPCB(), and DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint().

◆ normalizeToInt()

int DIALOG_COLOR_PICKER::normalizeToInt ( double  aValue,
int  aValMax = 255 
)
inlineprivate

Definition at line 195 of file dialog_color_picker.h.

196  {
197  return ( aValue * aValMax ) + 0.5;
198  }

Referenced by SetEditVals().

◆ OnChangeAlpha()

void DIALOG_COLOR_PICKER::OnChangeAlpha ( wxScrollEvent &  event)
overrideprivatevirtual

Event handlers from wxSpinControl.

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 743 of file dialog_color_picker.cpp.

744 {
745  double alpha = (double)event.GetPosition() / ALPHA_MAX;
746  m_newColor4D.a = alpha;
747  m_NewColorRect->Freeze(); // Avoid flicker
749  m_NewColorRect->Thaw();
750  m_NewColorRect->Refresh();
751  SetEditVals( ALPHA_CHANGED, false );
752 }
KIGFX::COLOR4D m_newColor4D
the current color4d
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
double a
Alpha component.
Definition: color4d.h:380
#define ALPHA_MAX
void updatePreview(wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
Event handler from wxSlider: brightness (value) control.

References KIGFX::COLOR4D::a, ALPHA_CHANGED, ALPHA_MAX, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_NewColorRect, SetEditVals(), and updatePreview().

◆ OnChangeBrightness()

void DIALOG_COLOR_PICKER::OnChangeBrightness ( wxScrollEvent &  event)
overrideprivatevirtual

Event handler from wxSlider: alpha (transparency) control.

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 809 of file dialog_color_picker.cpp.

810 {
811  m_val = (double)event.GetPosition() / 255.0;
812 
814 
815  SetEditVals( VAL_CHANGED, true );
816 
817  drawAll();
818 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
KIGFX::COLOR4D m_newColor4D
the current color4d
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
void FromHSV(double aInH, double aInS, double aInV)
Changes currently used color to the one given by hue, saturation and value parameters.
Definition: color4d.cpp:411
double m_val
the current value (0 ... 1.0)

References drawAll(), KIGFX::COLOR4D::FromHSV(), m_hue, m_newColor4D, m_sat, m_val, SetEditVals(), and VAL_CHANGED.

◆ OnChangeEditBlue()

void DIALOG_COLOR_PICKER::OnChangeEditBlue ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 775 of file dialog_color_picker.cpp.

776 {
777  double val = (double)event.GetPosition() / 255.0;
778  m_newColor4D.b = val;
779  SetEditVals( BLUE_CHANGED, true );
780 
781  drawAll();
782 }
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:379
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)

References KIGFX::COLOR4D::b, BLUE_CHANGED, drawAll(), m_newColor4D, and SetEditVals().

◆ OnChangeEditGreen()

void DIALOG_COLOR_PICKER::OnChangeEditGreen ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 765 of file dialog_color_picker.cpp.

766 {
767  double val = (double)event.GetPosition() / 255.0;
768  m_newColor4D.g = val;
769  SetEditVals( GREEN_CHANGED, true );
770 
771  drawAll();
772 }
double g
Green component.
Definition: color4d.h:378
KIGFX::COLOR4D m_newColor4D
the current color4d
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)

References drawAll(), KIGFX::COLOR4D::g, GREEN_CHANGED, m_newColor4D, and SetEditVals().

◆ OnChangeEditHue()

void DIALOG_COLOR_PICKER::OnChangeEditHue ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 785 of file dialog_color_picker.cpp.

786 {
787  m_hue = (double)event.GetPosition();
788 
790 
791  SetEditVals( HUE_CHANGED, true );
792 
793  drawAll();
794 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
KIGFX::COLOR4D m_newColor4D
the current color4d
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
void FromHSV(double aInH, double aInS, double aInV)
Changes currently used color to the one given by hue, saturation and value parameters.
Definition: color4d.cpp:411
double m_val
the current value (0 ... 1.0)

References drawAll(), KIGFX::COLOR4D::FromHSV(), HUE_CHANGED, m_hue, m_newColor4D, m_sat, m_val, and SetEditVals().

◆ OnChangeEditRed()

void DIALOG_COLOR_PICKER::OnChangeEditRed ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 755 of file dialog_color_picker.cpp.

756 {
757  double val = (double)event.GetPosition() / 255.0;
758  m_newColor4D.r = val;
759  SetEditVals( RED_CHANGED, true );
760 
761  drawAll();
762 }
KIGFX::COLOR4D m_newColor4D
the current color4d
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
double r
Red component.
Definition: color4d.h:377

References drawAll(), m_newColor4D, KIGFX::COLOR4D::r, RED_CHANGED, and SetEditVals().

◆ OnChangeEditSat()

void DIALOG_COLOR_PICKER::OnChangeEditSat ( wxSpinEvent &  event)
overrideprivatevirtual

mouse handlers, when clicking on a palette bitmap

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 797 of file dialog_color_picker.cpp.

798 {
799  m_sat = (double)event.GetPosition() / 255.0;
800 
802 
803  SetEditVals( SAT_CHANGED, true );
804 
805  drawAll();
806 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
KIGFX::COLOR4D m_newColor4D
the current color4d
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
void FromHSV(double aInH, double aInS, double aInV)
Changes currently used color to the one given by hue, saturation and value parameters.
Definition: color4d.cpp:411
double m_val
the current value (0 ... 1.0)

References drawAll(), KIGFX::COLOR4D::FromHSV(), m_hue, m_newColor4D, m_sat, m_val, SAT_CHANGED, and SetEditVals().

◆ OnCharHook()

void DIALOG_SHIM::OnCharHook ( wxKeyEvent &  aEvt)
protectedvirtualinherited

Reimplemented in DIALOG_CHOOSE_SYMBOL, HK_PROMPT_DIALOG, and HTML_MESSAGE_BOX.

Definition at line 563 of file dialog_shim.cpp.

564 {
565  if( aEvt.GetKeyCode() == 'U' && aEvt.GetModifiers() == wxMOD_CONTROL )
566  {
567  if( m_parentFrame )
568  {
570  return;
571  }
572  }
573  // shift-return (Mac default) or Ctrl-Return (GTK) for OK
574  else if( aEvt.GetKeyCode() == WXK_RETURN && ( aEvt.ShiftDown() || aEvt.ControlDown() ) )
575  {
576  wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
577  return;
578  }
579  else if( aEvt.GetKeyCode() == WXK_TAB && !aEvt.ControlDown() )
580  {
581  wxWindow* currentWindow = wxWindow::FindFocus();
582  int currentIdx = -1;
583  int delta = aEvt.ShiftDown() ? -1 : 1;
584 
585  auto advance = [&]( int& idx )
586  {
587  // Wrap-around modulus
588  int size = m_tabOrder.size();
589  idx = ( ( idx + delta ) % size + size ) % size;
590  };
591 
592  for( size_t i = 0; i < m_tabOrder.size(); ++i )
593  {
594  if( m_tabOrder[i] == currentWindow )
595  {
596  currentIdx = (int) i;
597  break;
598  }
599  }
600 
601  if( currentIdx >= 0 )
602  {
603  advance( currentIdx );
604 
605  //todo: We don't currently have non-textentry dialog boxes but this will break if
606  // we add them.
607 #ifdef __APPLE__
608  while( dynamic_cast<wxTextEntry*>( m_tabOrder[ currentIdx ] ) == nullptr )
609  advance( currentIdx );
610 #endif
611 
612  m_tabOrder[ currentIdx ]->SetFocus();
613  return;
614  }
615  }
616 
617  aEvt.Skip();
618 }
std::vector< wxWindow * > m_tabOrder
Definition: dialog_shim.h:218
EDA_BASE_FRAME * m_parentFrame
Definition: dialog_shim.h:216
virtual void ToggleUserUnits()
constexpr int delta

References delta, DIALOG_SHIM::m_parentFrame, DIALOG_SHIM::m_tabOrder, and EDA_BASE_FRAME::ToggleUserUnits().

Referenced by DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), and DIALOG_TEXT_PROPERTIES::~DIALOG_TEXT_PROPERTIES().

◆ OnColorValueText()

void DIALOG_COLOR_PICKER::OnColorValueText ( wxCommandEvent &  event)
overrideprivatevirtual

Event handler for the reset button press.

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 692 of file dialog_color_picker.cpp.

693 {
694  m_newColor4D.SetFromHexString( m_colorValue->GetValue() );
695  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
696 
697  SetEditVals( HEX_CHANGED, true );
698  drawAll();
699 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Convert current color (stored in RGB) to HSV format.
Definition: color4d.cpp:357
KIGFX::COLOR4D m_newColor4D
the current color4d
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
double m_val
the current value (0 ... 1.0)

References drawAll(), HEX_CHANGED, DIALOG_COLOR_PICKER_BASE::m_colorValue, m_hue, m_newColor4D, m_sat, m_val, SetEditVals(), and KIGFX::COLOR4D::ToHSV().

◆ onHSVMouseClick()

void DIALOG_COLOR_PICKER::onHSVMouseClick ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 673 of file dialog_color_picker.cpp.

674 {
675  m_allowMouseEvents = true;
676 
677  if( setHSvaluesFromCursor( event.GetPosition() ) )
678  drawAll();
679 }
bool setHSvaluesFromCursor(const wxPoint &aMouseCursor)
Manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor.

References drawAll(), m_allowMouseEvents, and setHSvaluesFromCursor().

◆ onHSVMouseDrag()

void DIALOG_COLOR_PICKER::onHSVMouseDrag ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 682 of file dialog_color_picker.cpp.

683 {
684  if( !event.Dragging() || !m_allowMouseEvents )
685  return;
686 
687  if( setHSvaluesFromCursor( event.GetPosition() ) )
688  drawAll();
689 }
bool setHSvaluesFromCursor(const wxPoint &aMouseCursor)
Manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor.

References drawAll(), m_allowMouseEvents, and setHSvaluesFromCursor().

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 380 of file dialog_shim.cpp.

381 {
382  if( m_firstPaintEvent )
383  {
385 
386  selectAllInTextCtrls( GetChildren() );
387 
390  else
391  KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
392 
393  m_firstPaintEvent = false;
394  }
395 
396  event.Skip();
397 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:209
bool m_firstPaintEvent
Definition: dialog_shim.h:208
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44
void FixupCancelButtonCmdKeyCollision(wxWindow *aWindow)
Definition: gtk/ui.cpp:71
static void selectAllInTextCtrls(wxWindowList &children)

References KIPLATFORM::UI::FixupCancelButtonCmdKeyCollision(), KIPLATFORM::UI::ForceFocus(), DIALOG_SHIM::m_firstPaintEvent, DIALOG_SHIM::m_initialFocusTarget, and selectAllInTextCtrls().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnResetButton()

void DIALOG_COLOR_PICKER::OnResetButton ( wxCommandEvent &  aEvent)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 821 of file dialog_color_picker.cpp.

822 {
827 
828  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
829  SetEditVals( ALL_CHANGED, false );
830 
831  drawAll();
832 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Convert current color (stored in RGB) to HSV format.
Definition: color4d.cpp:357
double g
Green component.
Definition: color4d.h:378
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:379
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
double a
Alpha component.
Definition: color4d.h:380
double m_val
the current value (0 ... 1.0)
KIGFX::COLOR4D m_defaultColor
The default color4d.
double r
Red component.
Definition: color4d.h:377

References KIGFX::COLOR4D::a, ALL_CHANGED, KIGFX::COLOR4D::b, drawAll(), KIGFX::COLOR4D::g, m_defaultColor, m_hue, m_newColor4D, m_sat, m_val, KIGFX::COLOR4D::r, SetEditVals(), and KIGFX::COLOR4D::ToHSV().

◆ onRGBMouseClick()

void DIALOG_COLOR_PICKER::onRGBMouseClick ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 573 of file dialog_color_picker.cpp.

574 {
575  m_allowMouseEvents = true;
576  wxPoint mousePos = event.GetPosition();
577 
578  // The cursor position is relative to the m_bitmapHSV wxBitmap center
579  wxSize bmsize = m_bitmapRGB->GetSize();
580  int half_size = std::min( bmsize.x, bmsize.y ) / 2;
581  mousePos.x -= half_size;
582  mousePos.y -= half_size;
583  mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
584 
585  wxPoint dist = m_cursorBitmapRed - mousePos;
586 
587  if( std::abs( dist.x ) <= m_cursorsSize/2 && std::abs( dist.y ) <= m_cursorsSize/2 )
588  {
590  return;
591  }
592 
593  dist = m_cursorBitmapGreen - mousePos;
594 
595  if( std::abs( dist.x ) <= m_cursorsSize/2 && std::abs( dist.y ) <= m_cursorsSize/2 )
596  {
598  return;
599  }
600 
601  dist = m_cursorBitmapBlue - mousePos;
602 
603  if( std::abs( dist.x ) <= m_cursorsSize/2 && std::abs( dist.y ) <= m_cursorsSize/2 )
604  {
606  return;
607  }
608 
609  m_selectedCursor = nullptr;
610 }
wxPoint m_cursorBitmapRed
the red cursor on the RGB bitmap palette.
wxPoint m_cursorBitmapBlue
the blue cursor on the RGB bitmap palette.
wxBitmap * m_bitmapRGB
the basic RGB palette
wxPoint m_cursorBitmapGreen
the green cursor on the RGB bitmap palette.
wxPoint * m_selectedCursor
the ref cursor to the selected cursor, if any, or null.

References m_allowMouseEvents, m_bitmapRGB, m_cursorBitmapBlue, m_cursorBitmapGreen, m_cursorBitmapRed, m_cursorsSize, and m_selectedCursor.

◆ onRGBMouseDrag()

void DIALOG_COLOR_PICKER::onRGBMouseDrag ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 613 of file dialog_color_picker.cpp.

614 {
615  if( !event.Dragging() || !m_allowMouseEvents )
616  {
617  m_selectedCursor = nullptr;
618  return;
619  }
620 
624  {
625  return;
626  }
627 
628  // Adjust the HSV cursor position to follow the mouse cursor
629  // The cursor position is relative to the m_bitmapHSV wxBitmap center
630  wxPoint mousePos = event.GetPosition();
631  wxSize bmsize = m_bitmapRGB->GetSize();
632  int half_size = std::min( bmsize.x, bmsize.y ) / 2;
633  mousePos.x -= half_size;
634  mousePos.y -= half_size;
635  mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
636 
637  half_size -= m_cursorsSize / 2; // the actual half_size of the palette area
638 
639  // Change colors according to the selected cursor:
641  {
642  if( mousePos.y >= 0 && mousePos.y <= half_size )
643  m_newColor4D.r = (double)mousePos.y / half_size;
644  else
645  return;
646  }
647 
649  {
650  mousePos.x = -mousePos.x;
651 
652  if( mousePos.x >= 0 && mousePos.x <= half_size )
653  m_newColor4D.g = (double)mousePos.x / half_size;
654  else
655  return;
656  }
657 
659  {
660  if( mousePos.x >= 0 && mousePos.x <= half_size )
661  m_newColor4D.b = (double)mousePos.x / half_size;
662  else
663  return;
664  }
665 
666  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
667  SetEditVals( ALL_CHANGED, true );
668 
669  drawAll();
670 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Convert current color (stored in RGB) to HSV format.
Definition: color4d.cpp:357
double g
Green component.
Definition: color4d.h:378
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:379
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
double m_val
the current value (0 ... 1.0)
wxPoint m_cursorBitmapRed
the red cursor on the RGB bitmap palette.
wxPoint m_cursorBitmapBlue
the blue cursor on the RGB bitmap palette.
wxBitmap * m_bitmapRGB
the basic RGB palette
double r
Red component.
Definition: color4d.h:377
wxPoint m_cursorBitmapGreen
the green cursor on the RGB bitmap palette.
wxPoint * m_selectedCursor
the ref cursor to the selected cursor, if any, or null.

References ALL_CHANGED, KIGFX::COLOR4D::b, drawAll(), KIGFX::COLOR4D::g, m_allowMouseEvents, m_bitmapRGB, m_cursorBitmapBlue, m_cursorBitmapGreen, m_cursorBitmapRed, m_cursorsSize, m_hue, m_newColor4D, m_sat, m_selectedCursor, m_val, KIGFX::COLOR4D::r, SetEditVals(), and KIGFX::COLOR4D::ToHSV().

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Return a reference to the PROJECT associated with this KIWAY.

Definition at line 36 of file kiway_holder.cpp.

37 {
38  return Kiway().Prj();
39 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:190

References KIWAY_HOLDER::Kiway(), and KIWAY::Prj().

Referenced by PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_LIBRARY_MANAGER::addLibrary(), SYMBOL_EDIT_FRAME::addLibTableEntry(), SCH_EDIT_FRAME::AppendSchematic(), AskSaveBoardFileName(), DIALOG_SYMBOL_REMAP::backupProject(), CVPCB_MAINFRAME::buildEquivalenceList(), CVPCB_MAINFRAME::BuildLibrariesListBox(), SIM_PLOT_FRAME::canCloseWindow(), PANEL_FP_PROPERTIES_3D_MODEL::Cfg3DPath(), KICAD_MANAGER_FRAME::CloseProject(), DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), PCB_BASE_EDIT_FRAME::createNewLibrary(), PCB_BASE_EDIT_FRAME::CreateNewProjectLibrary(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), SCH_EDIT_FRAME::CreateScreens(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_GEN_FOOTPRINT_POSITION::DIALOG_GEN_FOOTPRINT_POSITION(), DIALOG_NETLIST::DIALOG_NETLIST(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), FOOTPRINT_PREVIEW_PANEL::DisplayFootprint(), SYMBOL_VIEWER_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doAutoSave(), PCB_BASE_EDIT_FRAME::doCloseWindow(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), KICAD_MANAGER_CONTROL::Execute(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), BOARD_EDITOR_CONTROL::ExportNetlist(), DIALOG_EXPORT_SVG::ExportSVGFile(), SYMBOL_EDITOR_CONTROL::ExportSymbolAsSVG(), SYMBOL_EDITOR_CONTROL::ExportView(), PCB_EDIT_FRAME::ExportVRML_File(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), DIALOG_GENDRILL::GenDrillAndMapFiles(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), SYMBOL_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), SIM_PLOT_FRAME::getDefaultFilename(), SIM_PLOT_FRAME::getDefaultPath(), PCB_BASE_EDIT_FRAME::GetDesignRulesPath(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), SCH_BASE_FRAME::GetLibSymbol(), DIALOG_PLOT_SCHEMATIC::getOutputPath(), KICAD_MANAGER_FRAME::GetProjectFileName(), SCH_EDIT_FRAME::GetSchematicJunctionSize(), SYMBOL_VIEWER_FRAME::GetSelectedSymbol(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), DIALOG_CONFIG_EQUFILES::Init(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), SCH_EDIT_FRAME::KiwayMailIn(), SYMBOL_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), CVPCB_MAINFRAME::LoadFootprintFiles(), DIALOG_SPICE_MODEL::loadLibrary(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProjectSettings(), PCB_EDIT_FRAME::LoadProjectSettings(), SIM_PLOT_FRAME::LoadSettings(), SCH_EDIT_FRAME::LoadSheetFromFile(), SYMBOL_EDIT_FRAME::LoadSymbolFromCurrentLib(), EDA_BASE_FRAME::LoadWindowState(), SIM_PLOT_FRAME::loadWorkbook(), SIM_PLOT_FRAME::menuSaveWorkbook(), SIM_PLOT_FRAME::menuSaveWorkbookAs(), PANEL_FP_PROPERTIES_3D_MODEL::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), PANEL_FP_PROPERTIES_3D_MODEL::OnAdd3DModel(), DIALOG_BOARD_SETUP::OnAuxiliaryAction(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), TEXT_BUTTON_URL::OnButtonClick(), TEXT_BUTTON_FILE_BROWSER::OnButtonClick(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), DIALOG_EXPORT_STEP::onExportButton(), DIALOG_GENDRILL::OnGenReportFile(), KICAD_MANAGER_FRAME::OnIdle(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), DIALOG_CONFIG_EQUFILES::OnOkClick(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), DIALOG_NETLIST::OnOpenNetlistClick(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_SCHEMATIC_SETUP::OnPageChange(), DIALOG_BOARD_SETUP::OnPageChange(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_TEXT_AND_LABEL_PROPERTIES::onScintillaCharAdded(), PROPERTIES_FRAME::onScintillaCharAdded(), DIALOG_SCH_FIELD_PROPERTIES::onScintillaCharAdded(), DIALOG_SPICE_MODEL::onSelectLibrary(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL(), PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL(), SCH_EDITOR_CONTROL::Paste(), FOOTPRINT_EDITOR_CONTROL::PasteFootprint(), SCH_BASE_FRAME::PickSymbolFromLibTree(), DIALOG_PLOT::Plot(), DIALOG_PLOT_SCHEMATIC::plotOneSheetDXF(), DIALOG_PLOT_SCHEMATIC::plotOneSheetHpgl(), DIALOG_CHOOSE_SYMBOL::PopulateFootprintSelector(), SCH_EDITOR_CONTROL::Print(), EDA_DRAW_FRAME::PrintDrawingSheet(), SCH_EDIT_FRAME::PrintPage(), KICAD_MANAGER_FRAME::PrintPrjInfo(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SYMBOL_VIEWER_FRAME::ReCreateSymbolList(), PANEL_FP_PROPERTIES_3D_MODEL::ReloadModelsFromFootprint(), EDA_3D_VIEWER_FRAME::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), SCH_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), SYMBOL_EDIT_FRAME::saveLibrary(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::SaveProject(), PCB_EDIT_FRAME::SaveProjectSettings(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SCH_EDIT_FRAME::saveSchematicFile(), SIM_PLOT_FRAME::SaveSettings(), EDA_BASE_FRAME::SaveSettings(), SYMBOL_EDIT_FRAME::saveSymbolAs(), SCH_BASE_FRAME::saveSymbolLibTables(), SIM_PLOT_FRAME::saveWorkbook(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), PCB_BASE_FRAME::SelectLibrary(), SYMBOL_EDIT_FRAME::SelectLibraryFromList(), PCB_BASE_EDIT_FRAME::selectLibTable(), SYMBOL_EDIT_FRAME::selectSymLibTable(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), SYMBOL_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), SYMBOL_EDIT_FRAME::SetCurSymbol(), GERBVIEW_FRAME::SetPageSettings(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_SYMBOL::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), SYMBOL_VIEWER_FRAME::ShowModal(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SYMBOL_LIBRARY_MANAGER::symTable(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER_FRAME::takeScreenshot(), PANEL_SETUP_RULES::TransferDataFromWindow(), DIALOG_SHEET_PROPERTIES::TransferDataFromWindow(), NETLIST_DIALOG::TransferDataFromWindow(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), SCH_EDIT_FRAME::updateAutoSaveFile(), DIALOG_PAGES_SETTINGS::UpdateDrawingSheetExample(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), SIM_PLOT_FRAME::updateTitle(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), SCH_EDIT_FRAME::UpdateTitle(), PANEL_FP_PROPERTIES_3D_MODEL::validateModelExists(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), PANEL_FP_PROPERTIES_3D_MODEL::~PANEL_FP_PROPERTIES_3D_MODEL(), and SCH_EDIT_FRAME::~SCH_EDIT_FRAME().

◆ resetSize()

void DIALOG_SHIM::resetSize ( )
protectedinherited

Clear the existing dialog size and position.

This will cause the dialog size to be clear so the next time the dialog is shown the sizers will layout the dialog accordingly. This useful when there are dialog windows that size changes due to layout dependency hidden controls.

Definition at line 287 of file dialog_shim.cpp.

288 {
289  const char* hash_key;
290 
291  if( m_hash_key.size() )
292  {
293  // a special case like EDA_LIST_DIALOG, which has multiple uses.
294  hash_key = m_hash_key.c_str();
295  }
296  else
297  {
298  hash_key = typeid(*this).name();
299  }
300 
301  std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
302 
303  if( it == class_map.end() )
304  return;
305 
306  wxRect rect = it->second;
307  rect.SetSize( wxSize( 0, 0 ) );
308  class_map[ hash_key ] = rect;
309 }
std::string m_hash_key
Definition: dialog_shim.h:199
static std::unordered_map< std::string, wxRect > class_map

References class_map, and DIALOG_SHIM::m_hash_key.

Referenced by DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES().

◆ SetEditVals()

void DIALOG_COLOR_PICKER::SetEditVals ( CHANGED_COLOR  aChanged,
bool  aCheckTransparency 
)
private

Definition at line 492 of file dialog_color_picker.cpp.

493 {
494  if( aCheckTransparency )
495  {
496  // If they've changed the color, they probably don't want it to remain 100% transparent,
497  // and it looks like a bug when changing the color has no effect.
498  if( m_newColor4D.a == 0.0 )
499  m_newColor4D.a = 1.0;
500  }
501 
503 
504  if( aChanged == RED_CHANGED || aChanged == GREEN_CHANGED || aChanged == BLUE_CHANGED )
505  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
506 
507  if( aChanged != RED_CHANGED )
508  m_spinCtrlRed->SetValue( normalizeToInt( m_newColor4D.r ) );
509 
510  if( aChanged != GREEN_CHANGED )
512 
513  if( aChanged != BLUE_CHANGED )
515 
516  if( aChanged != HUE_CHANGED )
517  m_spinCtrlHue->SetValue( (int)m_hue );
518 
519  if( aChanged != SAT_CHANGED )
520  m_spinCtrlSaturation->SetValue( m_sat * 255 );
521 
522  if( aChanged != VAL_CHANGED )
523  m_sliderBrightness->SetValue(normalizeToInt( m_val ) );
524 
525  if( aChanged == HEX_CHANGED )
527  else
528  m_colorValue->ChangeValue( m_newColor4D.ToHexString() );
529 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Convert current color (stored in RGB) to HSV format.
Definition: color4d.cpp:357
int normalizeToInt(double aValue, int aValMax=255)
double g
Green component.
Definition: color4d.h:378
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:379
double a
Alpha component.
Definition: color4d.h:380
#define ALPHA_MAX
double m_val
the current value (0 ... 1.0)
double r
Red component.
Definition: color4d.h:377

References KIGFX::COLOR4D::a, ALPHA_MAX, KIGFX::COLOR4D::b, BLUE_CHANGED, KIGFX::COLOR4D::g, GREEN_CHANGED, HEX_CHANGED, HUE_CHANGED, DIALOG_COLOR_PICKER_BASE::m_colorValue, m_hue, m_newColor4D, m_sat, DIALOG_COLOR_PICKER_BASE::m_sliderBrightness, DIALOG_COLOR_PICKER_BASE::m_sliderTransparency, DIALOG_COLOR_PICKER_BASE::m_spinCtrlBlue, DIALOG_COLOR_PICKER_BASE::m_spinCtrlGreen, DIALOG_COLOR_PICKER_BASE::m_spinCtrlHue, DIALOG_COLOR_PICKER_BASE::m_spinCtrlRed, DIALOG_COLOR_PICKER_BASE::m_spinCtrlSaturation, m_val, normalizeToInt(), KIGFX::COLOR4D::r, RED_CHANGED, SAT_CHANGED, KIGFX::COLOR4D::ToHSV(), and VAL_CHANGED.

Referenced by buttColorClick(), OnChangeAlpha(), OnChangeBrightness(), OnChangeEditBlue(), OnChangeEditGreen(), OnChangeEditHue(), OnChangeEditRed(), OnChangeEditSat(), OnColorValueText(), OnResetButton(), onRGBMouseDrag(), setHSvaluesFromCursor(), and TransferDataToWindow().

◆ setHSvaluesFromCursor()

bool DIALOG_COLOR_PICKER::setHSvaluesFromCursor ( const wxPoint &  aMouseCursor)
private

Manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor.

Parameters
aMouseCursoris the mouse cursor position on the HSV bitmap
Returns
true if the Hue and Saturation can be set from aMouseCursor, if Saturation value computed from aMouseCursor is <= 1.0, and false if aMouseCursor is outside this area.Event handler for defined color buttons

Definition at line 702 of file dialog_color_picker.cpp.

703 {
704  wxPoint mousePos = aMouseCursor;
705  wxSize bmsize = m_bitmapHSV->GetSize();
706  int half_size = std::min( bmsize.x, bmsize.y )/2;
707 
708  // Make the cursor position relative to the m_bitmapHSV wxBitmap center
709  mousePos.x -= half_size;
710  mousePos.y -= half_size;
711  mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
712 
713  // The HS cursor position is restricted to a circle of radius half_size
714  double dist_from_centre = hypot( (double)mousePos.x, (double)mousePos.y );
715 
716  if( dist_from_centre > half_size )
717  {
718  // Saturation cannot be calculated:
719  return false;
720  }
721 
722  m_cursorBitmapHSV = mousePos;
723 
724  // Set saturation and hue from new cursor position:
725  half_size -= m_cursorsSize / 2; // the actual half_size of the palette area
726  m_sat = dist_from_centre / half_size;
727 
728  if( m_sat > 1.0 )
729  m_sat = 1.0;
730 
731  m_hue = atan2( mousePos.y, mousePos.x ) / M_PI * 180.0;
732 
733  if( m_hue < 0 )
734  m_hue += 360.0;
735 
737  SetEditVals( ALL_CHANGED, true );
738 
739  return true;
740 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
KIGFX::COLOR4D m_newColor4D
the current color4d
wxPoint m_cursorBitmapHSV
the cursor on the HSV bitmap palette.
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
wxBitmap * m_bitmapHSV
the basic HUV palette
void FromHSV(double aInH, double aInS, double aInV)
Changes currently used color to the one given by hue, saturation and value parameters.
Definition: color4d.cpp:411
double m_val
the current value (0 ... 1.0)

References ALL_CHANGED, KIGFX::COLOR4D::FromHSV(), m_bitmapHSV, m_cursorBitmapHSV, m_cursorsSize, m_hue, m_newColor4D, m_sat, m_val, and SetEditVals().

Referenced by onHSVMouseClick(), and onHSVMouseDrag().

◆ SetInitialFocus()

void DIALOG_SHIM::SetInitialFocus ( wxWindow *  aWindow)
inlineinherited

Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.

Definition at line 97 of file dialog_shim.h.

98  {
99  m_initialFocusTarget = aWindow;
100  }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:209

References DIALOG_SHIM::m_initialFocusTarget.

Referenced by DIALOG_BOM::DIALOG_BOM(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_FIND::DIALOG_FIND(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LINE_WIRE_BUS_PROPERTIES::DIALOG_LINE_WIRE_BUS_PROPERTIES(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_SCH_FIND::DIALOG_SCH_FIND(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_AND_LABEL_PROPERTIES::DIALOG_TEXT_AND_LABEL_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), EDA_VIEW_SWITCHER::EDA_VIEW_SWITCHER(), HK_PROMPT_DIALOG::HK_PROMPT_DIALOG(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchAllClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchIDClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchRefClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchSelectedClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchValueClicked(), PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE(), PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), SYMBOL_EDIT_FRAME::saveSymbolAs(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow(), DIALOG_RULE_AREA_PROPERTIES::TransferDataToWindow(), DIALOG_COPPER_ZONE::TransferDataToWindow(), and WX_TEXT_ENTRY_DIALOG::WX_TEXT_ENTRY_DIALOG().

◆ SetKiway()

void KIWAY_HOLDER::SetKiway ( wxWindow *  aDest,
KIWAY aKiway 
)
inherited

It is only used for debugging, since "this" is not a wxWindow*.

"this" is a KIWAY_HOLDER mix-in.

Parameters
aDestis the recipient of aKiway pointer.
aKiwayis often from a parent window or from KIFACE::CreateWindow().

Definition at line 43 of file kiway_holder.cpp.

44 {
45 #if defined(DEBUG)
46  // offer a trap point for debugging most any window
47  wxASSERT( aDest );
48  if( !strcmp( typeid(aDest).name(), "DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB" ) )
49  {
50  int breakhere=1;
51  ignore_unused( breakhere );
52  }
53 #endif
54 
55  ignore_unused( aDest );
56 
57  m_kiway = aKiway;
58 }
KIWAY * m_kiway
Definition: kiway_holder.h:75
const char * name
Definition: DXF_plotter.cpp:56
void ignore_unused(const T &)
Definition: ignore.h:24

References ignore_unused(), KIWAY_HOLDER::m_kiway, and name.

Referenced by BM2CMP_FRAME::BM2CMP_FRAME(), PCB::IFACE::CreateWindow(), InvokePcbLibTableEditor(), InvokeSchEditSymbolLibTable(), PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

◆ SetPosition()

void DIALOG_SHIM::SetPosition ( const wxPoint &  aNewPosition)
inherited

Force the position of the dialog to a new position.

Parameters
aNewPositionis the new forced position

Definition at line 190 of file dialog_shim.cpp.

191 {
192  wxDialog::SetPosition( aNewPosition );
193 
194  // Now update the stored position:
195  const char* hash_key;
196 
197  if( m_hash_key.size() )
198  {
199  // a special case like EDA_LIST_DIALOG, which has multiple uses.
200  hash_key = m_hash_key.c_str();
201  }
202  else
203  {
204  hash_key = typeid(*this).name();
205  }
206 
207  std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
208 
209  if( it == class_map.end() )
210  return;
211 
212  wxRect rect = it->second;
213  rect.SetPosition( aNewPosition );
214 
215  class_map[ hash_key ] = rect;
216 }
std::string m_hash_key
Definition: dialog_shim.h:199
static std::unordered_map< std::string, wxRect > class_map
void SetPosition(const wxString &aStr, const wxString &aDefaultMeasurementUnit, int *aX, int *aY, const wxString &aActualConversion)

References class_map, DIALOG_SHIM::m_hash_key, and PCAD2KICAD::SetPosition().

Referenced by PCB_BASE_FRAME::SelectOneLayer().

◆ setSizeInDU()

void DIALOG_SHIM::setSizeInDU ( int  x,
int  y 
)
protectedinherited

Set the dialog to the given dimensions in "dialog units".

These are units equivalent to 4* the average character width and 8* the average character height, allowing a dialog to be sized in a way that scales it with the system font.

Definition at line 162 of file dialog_shim.cpp.

163 {
164  wxSize sz( x, y );
165  SetSize( ConvertDialogToPixels( sz ) );
166 }

Referenced by DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), and HTML_MESSAGE_BOX::SetDialogSizeInDU().

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 219 of file dialog_shim.cpp.

220 {
221  bool ret;
222  const char* hash_key;
223 
224  if( m_hash_key.size() )
225  {
226  // a special case like EDA_LIST_DIALOG, which has multiple uses.
227  hash_key = m_hash_key.c_str();
228  }
229  else
230  {
231  hash_key = typeid(*this).name();
232  }
233 
234  // Show or hide the window. If hiding, save current position and size.
235  // If showing, use previous position and size.
236  if( show )
237  {
238 #ifndef __WINDOWS__
239  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
240 #endif
241  ret = wxDialog::Show( show );
242 
243  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
244  wxRect savedDialogRect = class_map[ hash_key ];
245 
246  if( savedDialogRect.GetSize().x != 0 && savedDialogRect.GetSize().y != 0 )
247  {
248  if( m_useCalculatedSize )
249  {
250  SetSize( savedDialogRect.GetPosition().x, savedDialogRect.GetPosition().y,
251  wxDialog::GetSize().x, wxDialog::GetSize().y, 0 );
252  }
253  else
254  {
255  SetSize( savedDialogRect.GetPosition().x, savedDialogRect.GetPosition().y,
256  std::max( wxDialog::GetSize().x, savedDialogRect.GetSize().x ),
257  std::max( wxDialog::GetSize().y, savedDialogRect.GetSize().y ),
258  0 );
259  }
260  }
261  else if( m_initialSize != wxDefaultSize )
262  SetSize( m_initialSize );
263 
264  // Be sure that the dialog appears in a visible area
265  // (the dialog position might have been stored at the time when it was
266  // shown on another display)
267  if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
268  Centre();
269  }
270  else
271  {
272  // Save the dialog's position & size before hiding, using classname as key
273  class_map[ hash_key ] = wxRect( wxDialog::GetPosition(), wxDialog::GetSize() );
274 
275 #ifdef __WXMAC__
276  if ( m_eventLoop )
277  m_eventLoop->Exit( GetReturnCode() ); // Needed for APP-MODAL dlgs on OSX
278 #endif
279 
280  ret = wxDialog::Show( show );
281  }
282 
283  return ret;
284 }
std::string m_hash_key
Definition: dialog_shim.h:199
static std::unordered_map< std::string, wxRect > class_map
bool m_useCalculatedSize
Definition: dialog_shim.h:203
wxSize m_initialSize
Definition: dialog_shim.h:221

References class_map, DIALOG_SHIM::m_hash_key, DIALOG_SHIM::m_initialSize, and DIALOG_SHIM::m_useCalculatedSize.

Referenced by FOOTPRINT_EDITOR_CONTROL::CheckFootprint(), DRC_TOOL::CrossProbe(), DIALOG_SHIM::EndQuasiModal(), GROUP_TOOL::GroupProperties(), EE_INSPECTION_TOOL::NextMarker(), DRC_TOOL::NextMarker(), SCH_EDIT_FRAME::OnAnnotate(), DIALOG_DRC::OnDRCItemDClick(), DIALOG_ERC::OnERCItemDClick(), DIALOG_CLEANUP_GRAPHICS::OnLeftDClickItem(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnLeftDClickItem(), DIALOG_FOOTPRINT_CHECKER::OnLeftDClickItem(), GROUP_TOOL::PickNewMember(), POSITION_RELATIVE_TOOL::PositionRelative(), EE_INSPECTION_TOOL::PrevMarker(), DRC_TOOL::PrevMarker(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), EDA_VIEW_SWITCHER::Show(), DIALOG_PAD_PROPERTIES::Show(), DRC_TOOL::ShowDRCDialog(), EE_INSPECTION_TOOL::ShowERCDialog(), SCH_EDIT_FRAME::ShowFindReplaceDialog(), HTML_MESSAGE_BOX::ShowModeless(), DIALOG_SHIM::ShowQuasiModal(), DIALOG_POSITION_RELATIVE::UpdateAnchor(), and SCH_EDIT_FRAME::UpdateHierarchyNavigator().

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 423 of file dialog_shim.cpp.

424 {
425  // This is an exception safe way to zero a pointer before returning.
426  // Yes, even though DismissModal() clears this first normally, this is
427  // here in case there's an exception before the dialog is dismissed.
428  struct NULLER
429  {
430  void*& m_what;
431  NULLER( void*& aPtr ) : m_what( aPtr ) {}
432  ~NULLER() { m_what = nullptr; } // indeed, set it to NULL on destruction
433  } clear_this( (void*&) m_qmodal_loop );
434 
435  // release the mouse if it's currently captured as the window having it
436  // will be disabled when this dialog is shown -- but will still keep the
437  // capture making it impossible to do anything in the modal dialog itself
438  wxWindow* win = wxWindow::GetCapture();
439  if( win )
440  win->ReleaseMouse();
441 
442  // Get the optimal parent
443  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
444 
445  wxASSERT_MSG( !m_qmodal_parent_disabler,
446  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
447 
448  // quasi-modal: disable only my "optimal" parent
450 
451  // Apple in its infinite wisdom will raise a disabled window before even passing
452  // us the event, so we have no way to stop it. Instead, we must set an order on
453  // the windows so that the quasi-modal will be pushed in front of the disabled
454  // window when it is raised.
456 
457  Show( true );
458 
459  m_qmodal_showing = true;
460 
461  WX_EVENT_LOOP event_loop;
462 
463  m_qmodal_loop = &event_loop;
464 
465  event_loop.Run();
466 
467  m_qmodal_showing = false;
468 
469  return GetReturnCode();
470 }
bool m_qmodal_showing
Definition: dialog_shim.h:213
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:211
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:214
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:44
void ReparentQuasiModal(wxNonOwnedWindow *aWindow)
Move a window's parent to be the top-level window and force the window to be on top.
Definition: gtk/ui.cpp:65

References DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, KIPLATFORM::UI::ReparentQuasiModal(), DIALOG_SHIM::Show(), and WX_EVENT_LOOP.

Referenced by SCH_EDIT_TOOL::ChangeSymbols(), S3D::Configure3DPaths(), COMMON_CONTROL::ConfigurePaths(), MICROWAVE_TOOL::createFootprint(), MICROWAVE_TOOL::createMicrowaveInductor(), SCH_DRAWING_TOOLS::createNewText(), SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), SCH_EDIT_TOOL::editFieldText(), SCH_EDITOR_CONTROL::EditSymbolFields(), SYMBOL_EDITOR_EDIT_TOOL::editSymbolProperties(), GLOBAL_EDIT_TOOL::EditTracksAndVias(), GLOBAL_EDIT_TOOL::ExchangeFootprints(), InvokeCopperZonesEditor(), InvokeDialogCreateBOM(), InvokeDialogEditSymbolsLibId(), InvokeDialogRescueEach(), InvokeNonCopperZonesEditor(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_TOOL::Properties(), EDIT_TOOL::Properties(), SCH_EDITOR_CONTROL::RemapSymbols(), S3D::Select3DModel(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowDimensionPropertiesDialog(), PCB_EDIT_FRAME::ShowExchangeFootprintsDialog(), PCB_EDIT_FRAME::ShowFootprintPropertiesDialog(), PCB_BASE_EDIT_FRAME::ShowGraphicItemPropertiesDialog(), PCB_BASE_FRAME::ShowPadPropertiesDialog(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), and PCB_BASE_EDIT_FRAME::ShowTextPropertiesDialog().

◆ TransferDataToWindow()

bool DIALOG_COLOR_PICKER::TransferDataToWindow ( )
overrideprivate

Definition at line 128 of file dialog_color_picker.cpp.

129 {
130  // Draw all bitmaps, with colors according to the color 4D
132  SetEditVals( ALL_CHANGED, false );
133  drawAll();
134 
135  // Configure the spin control sizes
141 
142  m_notebook->GetPage( 0 )->Layout();
143  m_notebook->GetPage( 1 )->Layout();
144 
146 
147  return true;
148 }
void configureSpinCtrl(wxSpinCtrl *aCtrl)
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
KIGFX::COLOR4D m_previousColor4D
the initial color4d
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
void updatePreview(wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
Event handler from wxSlider: brightness (value) control.

References ALL_CHANGED, configureSpinCtrl(), drawAll(), DIALOG_SHIM::finishDialogSettings(), DIALOG_COLOR_PICKER_BASE::m_notebook, DIALOG_COLOR_PICKER_BASE::m_OldColorRect, m_previousColor4D, DIALOG_COLOR_PICKER_BASE::m_spinCtrlBlue, DIALOG_COLOR_PICKER_BASE::m_spinCtrlGreen, DIALOG_COLOR_PICKER_BASE::m_spinCtrlHue, DIALOG_COLOR_PICKER_BASE::m_spinCtrlRed, DIALOG_COLOR_PICKER_BASE::m_spinCtrlSaturation, SetEditVals(), and updatePreview().

◆ updatePreview()

void DIALOG_COLOR_PICKER::updatePreview ( wxStaticBitmap *  aStaticBitmap,
KIGFX::COLOR4D aColor4D 
)
private

Event handler from wxSlider: brightness (value) control.

Definition at line 119 of file dialog_color_picker.cpp.

120 {
121  wxBitmap newBm = COLOR_SWATCH::MakeBitmap( aColor4D, COLOR4D::WHITE, aStaticBitmap->GetSize(),
122  ConvertDialogToPixels( CHECKERBOARD_SIZE_DU ),
123  aStaticBitmap->GetParent()->GetBackgroundColour() );
124  aStaticBitmap->SetBitmap( newBm );
125 }
static wxBitmap MakeBitmap(const KIGFX::COLOR4D &aColor, const KIGFX::COLOR4D &aBackground, const wxSize &aSize, const wxSize &aCheckerboardSize, const KIGFX::COLOR4D &aCheckerboardBackground)
Definition: color4d.h:48
static const wxSize CHECKERBOARD_SIZE_DU(3, 3)

References CHECKERBOARD_SIZE_DU(), COLOR_SWATCH::MakeBitmap(), and WHITE.

Referenced by drawAll(), OnChangeAlpha(), and TransferDataToWindow().

◆ vertPixelsFromDU()

int DIALOG_SHIM::vertPixelsFromDU ( int  y) const
protectedinherited

Convert an integer number of dialog units to pixels, vertically.

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 176 of file dialog_shim.cpp.

177 {
178  wxSize sz( 0, y );
179  return ConvertDialogToPixels( sz ).y;
180 }

Referenced by DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

Member Data Documentation

◆ m_allowMouseEvents

bool DIALOG_COLOR_PICKER::m_allowMouseEvents
private

◆ m_allowOpacityCtrl

bool DIALOG_COLOR_PICKER::m_allowOpacityCtrl
private

true to show the widget, false to keep alpha channel = 1.0

Definition at line 108 of file dialog_color_picker.h.

Referenced by DIALOG_COLOR_PICKER().

◆ m_bitmapHSV

wxBitmap* DIALOG_COLOR_PICKER::m_bitmapHSV
private

◆ m_bitmapRGB

wxBitmap* DIALOG_COLOR_PICKER::m_bitmapRGB
private

◆ m_Color4DList

std::vector<KIGFX::COLOR4D> DIALOG_COLOR_PICKER::m_Color4DList
private

the list of color4d ordered by button ID, for predefined colors

Definition at line 115 of file dialog_color_picker.h.

Referenced by buttColorClick(), and initDefinedColors().

◆ m_colorSwatches

std::vector<wxStaticBitmap*> DIALOG_COLOR_PICKER::m_colorSwatches
private

list of defined colors buttons

Definition at line 131 of file dialog_color_picker.h.

Referenced by initDefinedColors(), and ~DIALOG_COLOR_PICKER().

◆ m_colorValue

wxTextCtrl* DIALOG_COLOR_PICKER_BASE::m_colorValue
protectedinherited

◆ m_cursorBitmapBlue

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapBlue
private

the blue cursor on the RGB bitmap palette.

Definition at line 120 of file dialog_color_picker.h.

Referenced by drawRGBPalette(), onRGBMouseClick(), and onRGBMouseDrag().

◆ m_cursorBitmapGreen

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapGreen
private

the green cursor on the RGB bitmap palette.

Definition at line 119 of file dialog_color_picker.h.

Referenced by drawRGBPalette(), onRGBMouseClick(), and onRGBMouseDrag().

◆ m_cursorBitmapHSV

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapHSV
private

the cursor on the HSV bitmap palette.

Definition at line 121 of file dialog_color_picker.h.

Referenced by drawHSVPalette(), and setHSvaluesFromCursor().

◆ m_cursorBitmapRed

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapRed
private

the red cursor on the RGB bitmap palette.

Definition at line 118 of file dialog_color_picker.h.

Referenced by drawRGBPalette(), onRGBMouseClick(), and onRGBMouseDrag().

◆ m_cursorsSize

int DIALOG_COLOR_PICKER::m_cursorsSize
private

◆ m_defaultColor

KIGFX::COLOR4D DIALOG_COLOR_PICKER::m_defaultColor
private

The default color4d.

Definition at line 112 of file dialog_color_picker.h.

Referenced by DIALOG_COLOR_PICKER(), and OnResetButton().

◆ m_fgridColor

wxFlexGridSizer* DIALOG_COLOR_PICKER_BASE::m_fgridColor
protectedinherited

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 208 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_hash_key

◆ m_HsvBitmap

wxStaticBitmap* DIALOG_COLOR_PICKER_BASE::m_HsvBitmap
protectedinherited

◆ m_hue

double DIALOG_COLOR_PICKER::m_hue
private

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 209 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint(), and DIALOG_SHIM::SetInitialFocus().

◆ m_initialSize

wxSize DIALOG_SHIM::m_initialSize
protectedinherited

Definition at line 221 of file dialog_shim.h.

Referenced by DIALOG_SHIM::Show().

◆ m_newColor4D

◆ m_NewColorRect

wxStaticBitmap* DIALOG_COLOR_PICKER_BASE::m_NewColorRect
protectedinherited

◆ m_notebook

wxNotebook* DIALOG_COLOR_PICKER_BASE::m_notebook
protectedinherited

◆ m_OldColorRect

wxStaticBitmap* DIALOG_COLOR_PICKER_BASE::m_OldColorRect
protectedinherited

◆ m_opacityLabel

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_opacityLabel
protectedinherited

◆ m_panelDefinedColors

wxPanel* DIALOG_COLOR_PICKER_BASE::m_panelDefinedColors
protectedinherited

◆ m_panelFreeColors

wxPanel* DIALOG_COLOR_PICKER_BASE::m_panelFreeColors
protectedinherited

◆ m_parentFrame

EDA_BASE_FRAME* DIALOG_SHIM::m_parentFrame
protectedinherited

◆ m_previousColor4D

KIGFX::COLOR4D DIALOG_COLOR_PICKER::m_previousColor4D
private

the initial color4d

Definition at line 110 of file dialog_color_picker.h.

Referenced by DIALOG_COLOR_PICKER(), and TransferDataToWindow().

◆ m_qmodal_loop

WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 211 of file dialog_shim.h.

Referenced by DIALOG_SHIM::EndQuasiModal(), and DIALOG_SHIM::ShowQuasiModal().

◆ m_qmodal_parent_disabler

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited

◆ m_qmodal_showing

bool DIALOG_SHIM::m_qmodal_showing
protectedinherited

Definition at line 213 of file dialog_shim.h.

Referenced by DIALOG_SHIM::IsQuasiModal(), and DIALOG_SHIM::ShowQuasiModal().

◆ m_resetToDefault

wxButton* DIALOG_COLOR_PICKER_BASE::m_resetToDefault
protectedinherited

◆ m_RgbBitmap

wxStaticBitmap* DIALOG_COLOR_PICKER_BASE::m_RgbBitmap
protectedinherited

◆ m_sat

double DIALOG_COLOR_PICKER::m_sat
private

◆ m_sdbSizer

wxStdDialogButtonSizer* DIALOG_COLOR_PICKER_BASE::m_sdbSizer
protectedinherited

◆ m_sdbSizerCancel

wxButton* DIALOG_COLOR_PICKER_BASE::m_sdbSizerCancel
protectedinherited

◆ m_sdbSizerOK

wxButton* DIALOG_COLOR_PICKER_BASE::m_sdbSizerOK
protectedinherited

◆ m_selectedCursor

wxPoint* DIALOG_COLOR_PICKER::m_selectedCursor
private

the ref cursor to the selected cursor, if any, or null.

Definition at line 122 of file dialog_color_picker.h.

Referenced by DIALOG_COLOR_PICKER(), onRGBMouseClick(), and onRGBMouseDrag().

◆ m_SizerDefinedColors

wxBoxSizer* DIALOG_COLOR_PICKER_BASE::m_SizerDefinedColors
protectedinherited

◆ m_SizerTransparency

wxBoxSizer* DIALOG_COLOR_PICKER_BASE::m_SizerTransparency
protectedinherited

◆ m_sliderBrightness

wxSlider* DIALOG_COLOR_PICKER_BASE::m_sliderBrightness
protectedinherited

◆ m_sliderTransparency

wxSlider* DIALOG_COLOR_PICKER_BASE::m_sliderTransparency
protectedinherited

◆ m_spinCtrlBlue

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlBlue
protectedinherited

◆ m_spinCtrlGreen

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlGreen
protectedinherited

◆ m_spinCtrlHue

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlHue
protectedinherited

◆ m_spinCtrlRed

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlRed
protectedinherited

◆ m_spinCtrlSaturation

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlSaturation
protectedinherited

◆ m_staticline

wxStaticLine* DIALOG_COLOR_PICKER_BASE::m_staticline
protectedinherited

◆ m_staticTextB

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextB
protectedinherited

◆ m_staticTextBright

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextBright
protectedinherited

◆ m_staticTextG

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextG
protectedinherited

◆ m_staticTextHue

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextHue
protectedinherited

◆ m_staticTextOldColor

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextOldColor
protectedinherited

◆ m_staticTextR

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextR
protectedinherited

◆ m_staticTextSat

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextSat
protectedinherited

◆ m_tabOrder

◆ m_units

◆ m_useCalculatedSize

bool DIALOG_SHIM::m_useCalculatedSize
protectedinherited

◆ m_val

double DIALOG_COLOR_PICKER::m_val
private

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