KiCad PCB EDA Suite
panel_eeschema_color_settings.cpp
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2020 Jon Evans <jon@craftyjon.com>
5  * Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software: you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by the
9  * Free Software Foundation, either version 3 of the License, or (at your
10  * option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #include <regex>
22 
23 #include <bitmaps.h>
24 #include <eeschema_settings.h>
27 #include <lib_polyline.h>
28 #include <page_info.h>
30 #include <pgm_base.h>
31 #include <sch_bus_entry.h>
32 #include <sch_junction.h>
33 #include <sch_line.h>
34 #include <sch_no_connect.h>
35 #include <sch_painter.h>
36 #include <sch_preview_panel.h>
37 #include <sch_sheet_pin.h>
38 #include <sch_text.h>
42 #include <title_block.h>
43 #include <view/view.h>
45 #include <sch_base_frame.h>
46 #include <widgets/color_swatch.h>
47 
48 
50  wxWindow* aParent ) :
51  PANEL_COLOR_SETTINGS( aParent ),
52  m_frame( aFrame ),
53  m_preview( nullptr ),
54  m_page( nullptr ),
55  m_titleBlock( nullptr ),
56  m_drawingSheet( nullptr ),
57  m_previewItems()
58 {
59  m_colorNamespace = "schematic";
60 
61  SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
62 
63  mgr.ReloadColorSettings();
64 
65  COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
66  EESCHEMA_SETTINGS* app_settings = mgr.GetAppSettings<EESCHEMA_SETTINGS>();
67  COLOR_SETTINGS* current = mgr.GetColorSettings( app_settings->m_ColorTheme );
68 
69  // Saved theme doesn't exist? Reset to default
70  if( current->GetFilename() != app_settings->m_ColorTheme )
71  app_settings->m_ColorTheme = current->GetFilename();
72 
73  createThemeList( app_settings->m_ColorTheme );
74 
75  m_optOverrideColors->SetValue( current->GetOverrideSchItemColors() );
76 
77  m_currentSettings = new COLOR_SETTINGS( *current );
78 
79  for( int id = SCH_LAYER_ID_START; id < SCH_LAYER_ID_END; id++ )
80  m_validLayers.push_back( id );
81 
83 
85 
86  m_galDisplayOptions.ReadConfig( *common_settings, app_settings->m_Window, this );
88 
89  auto type = static_cast<EDA_DRAW_PANEL_GAL::GAL_TYPE>( app_settings->m_Graphics.canvas_type );
90 
91  m_preview = new SCH_PREVIEW_PANEL( this, wxID_ANY, wxDefaultPosition, wxSize( -1, -1 ),
92  m_galDisplayOptions, type );
93  m_preview->SetStealsFocus( false );
94  m_preview->ShowScrollbars( wxSHOW_SB_NEVER, wxSHOW_SB_NEVER );
95  m_preview->GetGAL()->SetAxesEnabled( false );
96 
97  m_colorsMainSizer->Add( 10, 0, 0, wxEXPAND, 5 );
98  m_colorsMainSizer->Add( m_preview, 1, wxALL | wxEXPAND, 5 );
99  m_colorsMainSizer->Add( 10, 0, 0, wxEXPAND, 5 );
100 
102  updatePreview();
103  zoomFitPreview();
104 }
105 
106 
108 {
109  delete m_page;
110  delete m_titleBlock;
111  delete m_drawingSheet;
112  delete m_currentSettings;
113 
114  for( EDA_ITEM* item : m_previewItems )
115  delete item;
116 }
117 
118 
120 {
122 
123  if( !saveCurrentTheme( true ) )
124  return false;
125 
127 
128  SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
129  EESCHEMA_SETTINGS* app_settings = settingsMgr.GetAppSettings<EESCHEMA_SETTINGS>();
130  app_settings->m_ColorTheme = m_currentSettings->GetFilename();
131 
132  return true;
133 }
134 
135 
137 {
138  zoomFitPreview();
139  return true;
140 }
141 
142 
144 {
146 
147  for( SCH_LAYER_ID layer = SCH_LAYER_ID_START; layer < SCH_LAYER_ID_END; ++layer )
148  {
149  if( bgcolor == m_currentSettings->GetColor( layer )
150  && layer != LAYER_SCHEMATIC_BACKGROUND && layer != LAYER_SHEET_BACKGROUND )
151  {
152  wxString msg = _( "Some items have the same color as the background\n"
153  "and they will not be seen on the screen. Are you\n"
154  "sure you want to use these colors?" );
155 
156  if( wxMessageBox( msg, _( "Warning" ), wxYES_NO | wxICON_QUESTION, this ) == wxNO )
157  return false;
158 
159  break;
160  }
161  }
162 
163  return true;
164 }
165 
166 
168 {
169  for( auto layer : m_validLayers )
170  {
172 
173  // Do not allow non-background layers to be completely white.
174  // This ensures the BW printing recognizes that the colors should be printed black.
176  && layer != LAYER_SHEET_BACKGROUND )
177  {
178  color.Darken( 0.01 );
179  }
180 
181  m_currentSettings->SetColor( layer, color );
182  }
183 
184  return PANEL_COLOR_SETTINGS::saveCurrentTheme( aValidate );
185 }
186 
187 
189 {
190  std::vector<SCH_LAYER_ID> layers;
191 
193  layers.push_back( i );
194 
195  std::sort( layers.begin(), layers.end(),
196  []( SCH_LAYER_ID a, SCH_LAYER_ID b )
197  {
198  return LayerName( a ) < LayerName( b );
199  } );
200 
201  for( int layer : layers )
202  {
203  wxString name = LayerName( layer );
204 
205  if( layer == LAYER_SCHEMATIC_GRID_AXES )
206  name += wxS( " " ) + _( "(symbol editor only)" );
207 
208  createSwatch( layer, name );
209  }
210 
211  // Give a minimal width to m_colorsListWindow, in order to always having
212  // a full row shown
213  int min_width = m_colorsGridSizer->GetMinSize().x;
214  const int margin = 20; // A margin around the sizer
215  m_colorsListWindow->SetMinSize( wxSize( min_width + margin, -1 ) );
216 }
217 
218 
220 {
221  updatePreview();
222 }
223 
224 
226 {
227 public:
230  {
232  };
233 };
234 
235 
237 {
238  KIGFX::VIEW* view = m_preview->GetView();
239 
242  m_titleBlock->SetTitle( _( "Color Preview" ) );
243  m_titleBlock->SetDate( wxDateTime::Now().FormatDate() );
244 
245  m_page->SetHeightMils( 5000 );
246  m_page->SetWidthMils( 6000 );
247 
250  view->Add( m_drawingSheet );
251 
252  // NOTE: It would be nice to parse a schematic file here.
253  // This is created from the color_settings.sch file in demos folder
254 
255  auto addItem = [&]( EDA_ITEM* aItem )
256  {
257  view->Add( aItem );
258  m_previewItems.push_back( aItem );
259  };
260 
261  std::vector<std::pair<SCH_LAYER_ID, std::pair<wxPoint, wxPoint>>> lines = {
262  { LAYER_WIRE, { { 1950, 1500 }, { 2325, 1500 } } },
263  { LAYER_WIRE, { { 1950, 2600 }, { 2350, 2600 } } },
264  { LAYER_WIRE, { { 2150, 1700 }, { 2325, 1700 } } },
265  { LAYER_WIRE, { { 2150, 2000 }, { 2150, 1700 } } },
266  { LAYER_WIRE, { { 2925, 1600 }, { 3075, 1600 } } },
267  { LAYER_WIRE, { { 3075, 1600 }, { 3075, 2000 } } },
268  { LAYER_WIRE, { { 3075, 1600 }, { 3250, 1600 } } },
269  { LAYER_WIRE, { { 3075, 2000 }, { 2150, 2000 } } },
270  { LAYER_BUS, { { 1750, 1400 }, { 1850, 1400 } } },
271  { LAYER_BUS, { { 1850, 2500 }, { 1850, 1400 } } },
272  { LAYER_NOTES, { { 2350, 2125 }, { 2350, 2300 } } },
273  { LAYER_NOTES, { { 2350, 2125 }, { 2950, 2125 } } },
274  { LAYER_NOTES, { { 2950, 2125 }, { 2950, 2300 } } },
275  { LAYER_NOTES, { { 2950, 2300 }, { 2350, 2300 } } }
276  };
277 
278  for( const auto& line : lines )
279  {
280  SCH_LINE* wire = new SCH_LINE;
281  wire->SetLayer( line.first );
282  wire->SetStartPoint( wxPoint( Mils2iu( line.second.first.x ),
283  Mils2iu( line.second.first.y ) ) );
284  wire->SetEndPoint( wxPoint( Mils2iu( line.second.second.x ),
285  Mils2iu( line.second.second.y ) ) );
286  addItem( wire );
287  }
288 
289 #define MILS_POINT( x, y ) wxPoint( Mils2iu( x ), Mils2iu( y ) )
290 
291  SCH_NO_CONNECT* nc = new SCH_NO_CONNECT;
292  nc->SetPosition( MILS_POINT( 2525, 1300 ) );
293  addItem( nc );
294 
296  e1->SetPosition( MILS_POINT( 1850, 1400 ) );
297  addItem( e1 );
298 
300  e2->SetPosition( MILS_POINT( 1850, 2500 ) );
301  addItem( e2 );
302 
303  SCH_TEXT* t1 = new SCH_TEXT( MILS_POINT( 2850, 2250 ), wxT( "PLAIN TEXT" ) );
304  t1->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::LEFT );
305  addItem( t1 );
306 
307  SCH_LABEL* t2 = new SCH_LABEL( MILS_POINT( 1975, 1500 ), wxT( "LABEL_{0}" ) );
308  t2->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
309  t2->SetIsDangling( false );
310  addItem( t2 );
311 
312  SCH_LABEL* t3 = new SCH_LABEL( MILS_POINT( 1975, 2600 ), wxT( "LABEL_{1}" ) );
313  t3->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
314  t3->SetIsDangling( false );
315  addItem( t3 );
316 
317  SCH_GLOBALLABEL* t4 = new SCH_GLOBALLABEL( MILS_POINT( 1750, 1400 ), wxT( "GLOBAL[3..0]" ) );
318  t4->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::LEFT );
319  t4->SetIsDangling( false );
320  addItem( t4 );
321 
322  SCH_HIERLABEL* t5 = new SCH_HIERLABEL( MILS_POINT( 3250, 1600 ), wxT( "HIER_LABEL" ) );
323  t5->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
324  t5->SetIsDangling( false );
325  addItem( t5 );
326 
327  SCH_JUNCTION* j = new SCH_JUNCTION( MILS_POINT( 3075, 1600 ) );
328  addItem( j );
329 
330  t2->SetSelected();
331 
332  {
333  LIB_PART* part = new LIB_PART( wxEmptyString );
334  wxPoint p( 2625, -1600 );
335 
336  LIB_FIELD& ref = part->GetReferenceField();
337 
338  ref.SetText( wxT( "U1" ) );
339  ref.SetPosition( MILS_POINT( p.x + 30, p.y + 260 ) );
341 
342  LIB_FIELD& value = part->GetValueField();
343 
344  value.SetText( wxT( "OPA604" ) );
345  value.SetPosition( MILS_POINT( p.x + 30, p.y + 180 ) );
347 
348  part->SetShowPinNames( true );
349  part->SetShowPinNumbers( true );
350  part->SetPinNameOffset( 0 );
351 
352  LIB_POLYLINE* comp_body = new LIB_POLYLINE( part );
353 
354  comp_body->SetUnit( 0 );
355  comp_body->SetConvert( 0 );
356  comp_body->SetWidth( Mils2iu( 10 ) );
358  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
359  comp_body->AddPoint( MILS_POINT( p.x + 200, p.y ) );
360  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y - 200 ) );
361  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
362 
363  addItem( comp_body );
364 
365  LIB_PIN* pin = new LIB_PIN( part );
366 
367  pin->SetPosition( MILS_POINT( p.x - 200, p.y + 100 ) );
368  pin->SetLength( Mils2iu( 100 ) );
369  pin->SetOrientation( PIN_LEFT );
370  pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
371  pin->SetNumber( wxT( "1" ) );
372  pin->SetName( wxT( "-" ) );
373 
374  part->AddDrawItem( pin );
375 
376  pin = new LIB_PIN( part );
377 
378  pin->SetPosition( MILS_POINT( p.x - 200, p.y - 100 ) );
379  pin->SetLength( Mils2iu( 100 ) );
380  pin->SetOrientation( PIN_LEFT );
381  pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
382  pin->SetNumber( wxT( "2" ) );
383  pin->SetName( wxT( "+" ) );
384 
385  part->AddDrawItem( pin );
386 
387  pin = new LIB_PIN( part );
388 
389  pin->SetPosition( MILS_POINT( p.x + 200, p.y ) );
390  pin->SetLength( Mils2iu( 100 ) );
391  pin->SetOrientation( PIN_RIGHT );
393  pin->SetNumber( wxT( "3" ) );
394  pin->SetName( wxT( "OUT" ) );
395 
396  part->AddDrawItem( pin );
397 
398  addItem( part );
399  }
400 
401  SCH_SHEET* s = new SCH_SHEET( nullptr, MILS_POINT( 4000, 1300 ) );
402  s->SetSize( wxSize( Mils2iu( 800 ), Mils2iu( 1300 ) ) );
403  s->GetFields().at( SHEETNAME ).SetText( wxT( "SHEET" ) );
404  s->GetFields().at( SHEETFILENAME ).SetText( _( "/path/to/sheet" ) );
405  s->AutoplaceFields( nullptr, false );
406  addItem( s );
407 
408  SCH_SHEET_PIN* sp = new SCH_SHEET_PIN( s, MILS_POINT( 4500, 1500 ), wxT( "SHEET PIN" ) );
409  addItem( sp );
410 
411  zoomFitPreview();
412 }
413 
414 
416 {
417  updatePreview();
418 }
419 
420 
422 {
424  updatePreview();
425 }
426 
427 
429 {
430  if( !m_preview )
431  return;
432 
433  KIGFX::VIEW* view = m_preview->GetView();
434  auto settings = static_cast<KIGFX::SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
435  settings->LoadColors( m_currentSettings );
436 
437  m_preview->GetGAL()->SetClearColor( settings->GetBackgroundColor() );
438 
439  view->UpdateAllItems( KIGFX::COLOR );
440  auto rect = m_preview->GetScreenRect();
441  m_preview->Refresh( true, &rect );
442 }
443 
444 
446 {
447  auto view = m_preview->GetView();
448 
449  view->SetScale( 1.0 );
450  VECTOR2D screenSize = view->ToWorld( m_preview->GetClientSize(), false );
451 
452  VECTOR2I psize( m_page->GetWidthIU(), m_page->GetHeightIU() );
453  double scale = view->GetScale() / std::max( fabs( psize.x / screenSize.x ),
454  fabs( psize.y / screenSize.y ) );
455 
456  view->SetScale( scale * 1.1 );
457  view->SetCenter( m_drawingSheet->ViewBBox().Centre() );
459 }
460 
461 
462 void PANEL_EESCHEMA_COLOR_SETTINGS::OnSize( wxSizeEvent& aEvent )
463 {
464  zoomFitPreview();
465  aEvent.Skip();
466 }
467 
468 
470 {
472 
473  // If the theme is not overriding individual item colors then don't show them so that
474  // the user doesn't get seduced into thinking they'll have some effect.
477 
480 
481  m_colorsGridSizer->Layout();
482  m_colorsListWindow->Layout();
483 }
void ResetPanel() override
Reset the contents of this panel.
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void SetClearColor(const COLOR4D &aColor)
void ForceRefresh()
Force a redraw.
virtual bool saveCurrentTheme(bool aValidate)
void SetColorLayer(int aLayerId)
Can be used to override which layer ID is used for worksheet item colors.
virtual void ResetPanel() override
Reset the contents of this panel.
wxString GetFilename() const
Definition: json_settings.h:66
int color
Definition: DXF_plotter.cpp:60
Field object used in symbol libraries.
Definition: lib_field.h:59
std::map< int, wxStaticText * > m_labels
void SetFillMode(FILL_TYPE aFillMode)
Definition: lib_item.h:265
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
Definition: view.cpp:1415
void SetPosition(const wxPoint &aPosition) override
LIB_FIELD & GetValueField()
Return reference to the value field.
Definition: lib_symbol.cpp:979
void SetDate(const wxString &aDate)
Set the date field, and defaults to the current time and date.
Definition: title_block.h:71
static const wxChar Custom[]
"User" defined page type
Definition: page_info.h:77
std::map< int, COLOR_SWATCH * > m_swatches
bool m_forceDisplayCursor
The pixel scale factor (>1 for hi-DPI scaled displays)
Color has changed.
Definition: view_item.h:53
void SetIsDangling(bool aIsDangling)
Definition: sch_text.h:285
void OnSize(wxSizeEvent &aEvent) override
void SetWidth(int aWidth) override
Definition: lib_polyline.h:97
bool validateSave(bool aQuiet=false) override
Performs a pre-save validation of the current color theme.
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:40
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:207
void SetEndPoint(const wxPoint &aPosition)
Definition: sch_line.h:94
std::string m_colorNamespace
A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings.
bool saveCurrentTheme(bool aValidate) override
void onNewThemeSelected() override
Event fired when a new theme is selected that can be overridden in children.
std::vector< SCH_FIELD > & GetFields()
Definition: sch_sheet.h:88
#define MILS_POINT(x, y)
LIB_FIELD & GetReferenceField()
Return reference to the reference designator field.
Definition: lib_symbol.cpp:987
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:121
void SetSelected()
Definition: eda_item.h:179
void onColorChanged() override
Event fired when the user changes any color.
void SetPosition(const wxPoint &aPosition) override
PANEL_EESCHEMA_COLOR_SETTINGS(SCH_BASE_FRAME *aFrame, wxWindow *aParent)
void AddDrawItem(LIB_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
Definition: lib_symbol.cpp:655
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:53
void createThemeList(const wxString &aCurrent)
Builds the theme listbox and sets the selection to the current theme.
COLOR_SETTINGS * m_currentSettings
void SetStartPoint(const wxPoint &aPosition)
Definition: sch_line.h:91
void SetLayer(SCH_LAYER_ID aLayer)
Set the layer this item is on.
Definition: sch_item.h:279
void SetOverrideSchItemColors(bool aFlag)
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void SetStealsFocus(bool aStealsFocus)
Set whether focus is taken on certain events (mouseover, keys, etc).
Define a library symbol object.
Definition: lib_symbol.h:93
bool m_isDanglingStart
void SetLabelSpinStyle(LABEL_SPIN_STYLE aSpinStyle) override
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:1399
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
AppSettings * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition: layer_id.cpp:27
SCH_LAYER_ID
Eeschema drawing layers.
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet_pin.h:65
void AddPoint(const wxPoint &aPoint)
void SetTitle(const wxString &aTitle)
Definition: title_block.h:58
void SetAxesEnabled(bool aAxesEnabled)
Enable drawing the axes.
void SetHeightMils(int aHeightInMils)
Definition: page_info.cpp:257
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:54
void SetSize(const wxSize &aSize)
Definition: sch_sheet.h:106
void SetConvert(int aConvert)
Definition: lib_item.h:262
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:554
void OnOverrideItemColorsClicked(wxCommandEvent &aEvent) override
Definition: color4d.h:48
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieves a color settings object that applications can read colors from.
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
void SetUnit(int aUnit)
Definition: lib_item.h:259
COLOR4D GetColor(int aLayer) const
WINDOW_SETTINGS m_Window
Definition: app_settings.h:181
void ReloadColorSettings()
Re-scans the color themes directory, reloading any changes it finds.
const int scale
see class PGM_BASE
const BOX2I ViewBBox() const override
Board layer functions and definitions.
Vec Centre() const
Definition: box2.h:79
const char * name
Definition: DXF_plotter.cpp:59
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:37
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
Definition: lib_symbol.h:572
void SetHorizJustify(EDA_TEXT_HJUSTIFY_T aType)
Definition: eda_text.h:208
#define _(s)
Definition: 3d_actions.cpp:33
usual pin input: must be connected
void SetWidthMils(int aWidthInMils)
Definition: page_info.cpp:243
bool m_isDanglingEnd
void ReadConfig(COMMON_SETTINGS &aCommonConfig, WINDOW_SETTINGS &aWindowConfig, wxWindow *aWindow)
Read application and common configs.
#define IU_PER_MILS
Definition: plotter.cpp:137
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:150
Class for a wire to bus entry.
Color settings are a bit different than most of the settings objects in that there can be more than o...
void SetPosition(const wxPoint &aPosition) override
Definition: lib_item.h:213
bool GetOverrideSchItemColors() const
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:322
void SetLabelSpinStyle(LABEL_SPIN_STYLE aSpinStyle) override
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:948
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual) override
Definition: sch_sheet.cpp:515
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:67
virtual void SetLabelSpinStyle(LABEL_SPIN_STYLE aSpinStyle)
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:248
void Refresh(bool aEraseBackground, const wxRect *aRect) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
virtual void LoadColors(const COLOR_SETTINGS *aSettings)
void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
Definition: lib_symbol.h:564
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
Definition: lib_symbol.h:556
void createSwatch(int aLayer, const wxString &aName)
KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
SCH_BUS_WIRE_ENTRY_PREVIEW_ITEM()
void SetColor(int aLayer, COLOR4D aColor)
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:184
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:98