24using namespace std::placeholders;
28 std::vector<LAYER_PRESET>* aPresetList ) :
33 m_presets( aPresetList )
35 wxASSERT( aPresetList );
41 nlohmann::json ret = nlohmann::json::array();
46 {
"name", preset.name },
47 {
"activeLayer", preset.activeLayer }
50 nlohmann::json layers = nlohmann::json::array();
53 layers.push_back(
static_cast<int>( layer ) );
55 js[
"layers"] = layers;
57 nlohmann::json renderLayers = nlohmann::json::array();
60 renderLayers.push_back(
static_cast<int>( layer ) );
62 js[
"renderLayers"] = renderLayers;
73 if( aJson.empty() || !aJson.is_array() )
78 for(
const nlohmann::json& preset : aJson )
80 if( preset.contains(
"name" ) )
84 if( preset.contains(
"activeLayer" ) &&
85 preset.at(
"activeLayer" ).is_number_integer() )
87 int active = preset.at(
"activeLayer" ).get<
int>();
93 if( preset.contains(
"layers" ) && preset.at(
"layers" ).is_array() )
97 for(
const nlohmann::json& layer : preset.at(
"layers" ) )
99 if( layer.is_number_integer() )
101 int layerNum = layer.get<
int>();
109 if( preset.contains(
"renderLayers" )
110 && preset.at(
"renderLayers" ).is_array() )
114 for(
const nlohmann::json& layer : preset.at(
"renderLayers" ) )
116 if( layer.is_number_integer() )
118 int layerNum = layer.get<
int>();
138 m_viewports( aViewportList )
140 wxASSERT( aViewportList );
146 nlohmann::json ret = nlohmann::json::array();
150 nlohmann::json js = {
151 {
"name", viewport.name },
152 {
"x", viewport.rect.GetX() },
153 {
"y", viewport.rect.GetY() },
154 {
"w", viewport.rect.GetWidth() },
155 {
"h", viewport.rect.GetHeight() }
167 if( aJson.empty() || !aJson.is_array() )
172 for(
const nlohmann::json& viewport : aJson )
174 if( viewport.contains(
"name" ) )
176 VIEWPORT v( viewport.at(
"name" ).get<wxString>() );
178 if( viewport.contains(
"x" ) )
179 v.
rect.
SetX( viewport.at(
"x" ).get<
double>() );
181 if( viewport.contains(
"y" ) )
182 v.
rect.
SetY( viewport.at(
"y" ).get<
double>() );
184 if( viewport.contains(
"w" ) )
187 if( viewport.contains(
"h" ) )
197 std::vector<VIEWPORT3D>* aViewportList ) :
202 m_viewports( aViewportList )
204 wxASSERT( aViewportList );
210 nlohmann::json ret = nlohmann::json::array();
214 nlohmann::json js = {
215 {
"name", viewport.name },
216 {
"xx", viewport.matrix[0].x },
217 {
"xy", viewport.matrix[0].y },
218 {
"xz", viewport.matrix[0].z },
219 {
"xw", viewport.matrix[0].w },
220 {
"yx", viewport.matrix[1].x },
221 {
"yy", viewport.matrix[1].y },
222 {
"yz", viewport.matrix[1].z },
223 {
"yw", viewport.matrix[1].w },
224 {
"zx", viewport.matrix[2].x },
225 {
"zy", viewport.matrix[2].y },
226 {
"zz", viewport.matrix[2].z },
227 {
"zw", viewport.matrix[2].w },
228 {
"wx", viewport.matrix[3].x },
229 {
"wy", viewport.matrix[3].y },
230 {
"wz", viewport.matrix[3].z },
231 {
"ww", viewport.matrix[3].w }
243 if( aJson.empty() || !aJson.is_array() )
248 for(
const nlohmann::json& viewport : aJson )
250 if( viewport.contains(
"name" ) )
252 VIEWPORT3D v( viewport.at(
"name" ).get<wxString>() );
254 if( viewport.contains(
"xx" ) )
255 v.
matrix[0].x = viewport.at(
"xx" ).get<
double>();
257 if( viewport.contains(
"xy" ) )
258 v.
matrix[0].y = viewport.at(
"xy" ).get<
double>();
260 if( viewport.contains(
"xz" ) )
261 v.
matrix[0].z = viewport.at(
"xz" ).get<
double>();
263 if( viewport.contains(
"xw" ) )
264 v.
matrix[0].w = viewport.at(
"xw" ).get<
double>();
266 if( viewport.contains(
"yx" ) )
267 v.
matrix[1].x = viewport.at(
"yx" ).get<
double>();
269 if( viewport.contains(
"yy" ) )
270 v.
matrix[1].y = viewport.at(
"yy" ).get<
double>();
272 if( viewport.contains(
"yz" ) )
273 v.
matrix[1].z = viewport.at(
"yz" ).get<
double>();
275 if( viewport.contains(
"yw" ) )
276 v.
matrix[1].w = viewport.at(
"yw" ).get<
double>();
278 if( viewport.contains(
"zx" ) )
279 v.
matrix[2].x = viewport.at(
"zx" ).get<
double>();
281 if( viewport.contains(
"zy" ) )
282 v.
matrix[2].y = viewport.at(
"zy" ).get<
double>();
284 if( viewport.contains(
"zz" ) )
285 v.
matrix[2].z = viewport.at(
"zz" ).get<
double>();
287 if( viewport.contains(
"zw" ) )
288 v.
matrix[2].w = viewport.at(
"zw" ).get<
double>();
290 if( viewport.contains(
"wx" ) )
291 v.
matrix[3].x = viewport.at(
"wx" ).get<
double>();
293 if( viewport.contains(
"wy" ) )
294 v.
matrix[3].y = viewport.at(
"wy" ).get<
double>();
296 if( viewport.contains(
"wz" ) )
297 v.
matrix[3].z = viewport.at(
"wz" ).get<
double>();
299 if( viewport.contains(
"ww" ) )
300 v.
matrix[3].w = viewport.at(
"ww" ).get<
double>();
void SetX(coord_type val)
void SetY(coord_type val)
void SetWidth(coord_type val)
void SetHeight(coord_type val)
Like a normal param, but with custom getter and setter functions.
nlohmann::json presetsToJson()
PARAM_LAYER_PRESET(const std::string &aPath, std::vector< LAYER_PRESET > *aPresetList)
std::vector< LAYER_PRESET > * m_presets
void jsonToPresets(const nlohmann::json &aJson)
void jsonToViewports(const nlohmann::json &aJson)
PARAM_VIEWPORT3D(const std::string &aPath, std::vector< VIEWPORT3D > *aViewportList)
nlohmann::json viewportsToJson()
std::vector< VIEWPORT3D > * m_viewports
std::vector< VIEWPORT > * m_viewports
PARAM_VIEWPORT(const std::string &aPath, std::vector< VIEWPORT > *aViewportList)
nlohmann::json viewportsToJson()
void jsonToViewports(const nlohmann::json &aJson)
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.
PCB_LAYER_ID
A quick note on layer IDs:
A saved set of layers that are visible.
GAL_SET renderLayers
Render layers (e.g. object types) that are visible.
LSET layers
Board layers that are visible.
PCB_LAYER_ID activeLayer
Optional layer to set active when this preset is loaded.