KiCad PCB EDA Suite
Loading...
Searching...
No Matches
board_project_settings.h
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 <[email protected]>
5 * Copyright (C) 2020-2022 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#ifndef KICAD_BOARD_PROJECT_SETTINGS_H
22#define KICAD_BOARD_PROJECT_SETTINGS_H
23
24#include <layer_ids.h>
25#include <settings/parameters.h>
26
27// Can be removed by refactoring PARAM_LAYER_PRESET
28#include <nlohmann/json.hpp>
29#include <math/box2.h>
30#include <glm/glm.hpp>
31
43{
46 bool text;
47 bool tracks;
48 bool vias;
49 bool pads;
50 bool graphics;
51 bool zones;
52 bool keepouts;
55
57 {
58 lockedItems = true;
59 footprints = true;
60 text = true;
61 tracks = true;
62 vias = true;
63 pads = true;
64 graphics = true;
65 zones = true;
66 keepouts = true;
67 dimensions = true;
68 otherItems = true;
69 }
70
74 bool Any()
75 {
76 return ( footprints || text || tracks || vias || pads || graphics || zones
78 }
79
83 bool All()
84 {
85 return ( footprints && text && tracks && vias && pads && graphics && zones
87 }
88};
89
94{
95 NORMAL = 0,
96 DIMMED,
97 HIDDEN
98};
99
102{
105
106 // Debug modes
107
110};
111
114{
115 OFF,
116 RATSNEST,
117 ALL
118};
119
122{
123 ALL,
124 VISIBLE
125};
126
131{
132 LAYER_PRESET( const wxString& aName = wxEmptyString ) :
133 name( aName ),
135 {
138 readOnly = false;
139 flipBoard = false;
140 }
141
142 LAYER_PRESET( const wxString& aName, const LSET& aVisibleLayers ) :
143 name( aName ),
144 layers( aVisibleLayers ),
146 {
148 readOnly = false;
149 flipBoard = false;
150 }
151
152 LAYER_PRESET( const wxString& aName, const LSET& aVisibleLayers, const GAL_SET& aVisibleObjects,
153 PCB_LAYER_ID aActiveLayer ) :
154 name( aName ),
155 layers( aVisibleLayers ),
156 renderLayers( aVisibleObjects ),
157 activeLayer( aActiveLayer )
158 {
159 readOnly = false;
160 flipBoard = false;
161 }
162
163 bool LayersMatch( const LAYER_PRESET& aOther )
164 {
165 return aOther.layers == layers && aOther.renderLayers == renderLayers;
166 }
167
168 wxString name;
173 bool readOnly;
174};
175
176
177class PARAM_LAYER_PRESET : public PARAM_LAMBDA<nlohmann::json>
178{
179public:
180 PARAM_LAYER_PRESET( const std::string& aPath, std::vector<LAYER_PRESET>* aPresetList );
181
182private:
183 nlohmann::json presetsToJson();
184
185 void jsonToPresets( const nlohmann::json& aJson );
186
187 std::vector<LAYER_PRESET>* m_presets;
188};
189
190
192{
193 VIEWPORT( const wxString& aName = wxEmptyString ) :
194 name( aName )
195 { }
196
197 VIEWPORT( const wxString& aName, const BOX2D& aRect ) :
198 name( aName ),
199 rect( aRect )
200 { }
201
202 wxString name;
204};
205
206
207class PARAM_VIEWPORT : public PARAM_LAMBDA<nlohmann::json>
208{
209public:
210 PARAM_VIEWPORT( const std::string& aPath, std::vector<VIEWPORT>* aViewportList );
211
212private:
213 nlohmann::json viewportsToJson();
214
215 void jsonToViewports( const nlohmann::json& aJson );
216
217 std::vector<VIEWPORT>* m_viewports;
218};
219
220
222{
223 VIEWPORT3D( const wxString& aName = wxEmptyString ) :
224 name( aName )
225 { }
226
227 VIEWPORT3D( const wxString& aName, glm::mat4 aViewMatrix ) :
228 name( aName ),
229 matrix( aViewMatrix )
230 { }
231
232 wxString name;
233 glm::mat4 matrix;
234};
235
236
237class PARAM_VIEWPORT3D : public PARAM_LAMBDA<nlohmann::json>
238{
239public:
240 PARAM_VIEWPORT3D( const std::string& aPath, std::vector<VIEWPORT3D>* aViewportList );
241
242private:
243 nlohmann::json viewportsToJson();
244
245 void jsonToViewports( const nlohmann::json & aJson );
246
247 std::vector<VIEWPORT3D>* m_viewports;
248};
249
250
251#endif // KICAD_BOARD_PROJECT_SETTINGS_H
HIGH_CONTRAST_MODE
Determine how inactive layers should be displayed.
@ NORMAL
Inactive layers are shown normally (no high-contrast mode)
@ HIDDEN
Inactive layers are hidden.
@ DIMMED
Inactive layers are dimmed (old high-contrast mode)
@ RATSNEST
Net/netclass colors are shown on ratsnest lines only.
@ ALL
Net/netclass colors are shown on all net copper.
@ OFF
Net (and netclass) colors are not shown.
@ VISIBLE
Ratsnest lines are drawn to items on visible layers only.
Helper for storing and iterating over GAL_LAYER_IDs.
Definition: layer_ids.h:300
static GAL_SET DefaultVisible()
Definition: lset.cpp:960
LSET is a set of PCB_LAYER_IDs.
Definition: layer_ids.h:552
static LSET AllLayersMask()
Definition: lset.cpp:808
Like a normal param, but with custom getter and setter functions.
Definition: parameters.h:282
nlohmann::json presetsToJson()
std::vector< LAYER_PRESET > * m_presets
void jsonToPresets(const nlohmann::json &aJson)
void jsonToViewports(const nlohmann::json &aJson)
nlohmann::json viewportsToJson()
std::vector< VIEWPORT3D > * m_viewports
std::vector< VIEWPORT > * m_viewports
nlohmann::json viewportsToJson()
void jsonToViewports(const nlohmann::json &aJson)
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:60
@ UNSELECTED_LAYER
Definition: layer_ids.h:62
A saved set of layers that are visible.
LAYER_PRESET(const wxString &aName=wxEmptyString)
LAYER_PRESET(const wxString &aName, const LSET &aVisibleLayers, const GAL_SET &aVisibleObjects, PCB_LAYER_ID aActiveLayer)
LAYER_PRESET(const wxString &aName, const LSET &aVisibleLayers)
GAL_SET renderLayers
Render layers (e.g. object types) that are visible.
wxString name
A name for this layer set.
bool flipBoard
True if the flip board is enabled.
LSET layers
Board layers that are visible.
bool readOnly
True if this is a read-only (built-in) preset.
bool LayersMatch(const LAYER_PRESET &aOther)
PCB_LAYER_ID activeLayer
Optional layer to set active when this preset is loaded.
This file contains data structures that are saved in the project file or project local settings file ...
bool graphics
Graphic lines, shapes, polygons.
bool text
Text (free or attached to a footprint)
bool lockedItems
Allow selecting locked items.
bool footprints
Allow selecting entire footprints.
bool dimensions
Dimension items.
bool otherItems
Anything not fitting one of the above categories.
VIEWPORT3D(const wxString &aName=wxEmptyString)
VIEWPORT3D(const wxString &aName, glm::mat4 aViewMatrix)
VIEWPORT(const wxString &aName, const BOX2D &aRect)
VIEWPORT(const wxString &aName=wxEmptyString)