KiCad PCB EDA Suite
Loading...
Searching...
No Matches
api_pcb_enums.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) 2024 Jon Evans <[email protected]>
5 * Copyright The 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
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#include <import_export.h>
22#include <api/api_enums.h>
23#include <api/board/board.pb.h>
24#include <api/board/board_rules.pb.h>
25#include <api/board/board_types.pb.h>
26#include <api/board/board_commands.pb.h>
27#include <api/board/board_jobs.pb.h>
28#include <api/common/types/enums.pb.h>
29#include <wx/wx.h>
31
34#include <drc/drc_item.h>
35#include <padstack.h>
36#include <pcb_dimension.h>
37#include <pcb_track.h>
50#include <jobs/job_pcb_render.h>
51#include <drc/drc_rule.h>
52#include <plotprint_opts.h>
53#include <zones.h>
54#include <zone_settings.h>
59
60// Adding something new here? Add it to test_api_enums.cpp!
61
62using namespace kiapi::board;
63using namespace kiapi::board::commands;
64using namespace kiapi::board::jobs;
65
66template<>
67types::PadType ToProtoEnum( PAD_ATTRIB aValue )
68{
69 switch( aValue )
70 {
71 case PAD_ATTRIB::PTH: return types::PadType::PT_PTH;
72 case PAD_ATTRIB::SMD: return types::PadType::PT_SMD;
73 case PAD_ATTRIB::CONN: return types::PadType::PT_EDGE_CONNECTOR;
74 case PAD_ATTRIB::NPTH: return types::PadType::PT_NPTH;
75
76 default:
77 wxCHECK_MSG( false, types::PadType::PT_UNKNOWN,
78 "Unhandled case in ToProtoEnum<PAD_ATTRIB>");
79 }
80}
81
82
83template<>
84PAD_ATTRIB FromProtoEnum( types::PadType aValue )
85{
86 switch( aValue )
87 {
88 case types::PadType::PT_UNKNOWN:
89 case types::PadType::PT_PTH: return PAD_ATTRIB::PTH;
90 case types::PadType::PT_SMD: return PAD_ATTRIB::SMD;
91 case types::PadType::PT_EDGE_CONNECTOR: return PAD_ATTRIB::CONN;
92 case types::PadType::PT_NPTH: return PAD_ATTRIB::NPTH;
93
94 default:
95 wxCHECK_MSG( false, PAD_ATTRIB::PTH,
96 "Unhandled case in FromProtoEnum<types::PadType>" );
97 }
98}
99
100template<>
101types::DrillShape ToProtoEnum( PAD_DRILL_SHAPE aValue )
102{
103 switch( aValue )
104 {
105 case PAD_DRILL_SHAPE::CIRCLE: return types::DrillShape::DS_CIRCLE;
106 case PAD_DRILL_SHAPE::OBLONG: return types::DrillShape::DS_OBLONG;
107 case PAD_DRILL_SHAPE::UNDEFINED: return types::DrillShape::DS_UNDEFINED;
108 default:
109 wxCHECK_MSG( false, types::DrillShape::DS_UNKNOWN,
110 "Unhandled case in ToProtoEnum<PAD_DRILL_SHAPE>");
111 }
112}
113
114template<>
115PAD_DRILL_SHAPE FromProtoEnum( types::DrillShape aValue )
116{
117 switch( aValue )
118 {
119 case types::DrillShape::DS_CIRCLE: return PAD_DRILL_SHAPE::CIRCLE;
120 case types::DrillShape::DS_OBLONG: return PAD_DRILL_SHAPE::OBLONG;
121 case types::DrillShape::DS_UNKNOWN:
122 case types::DrillShape::DS_UNDEFINED: return PAD_DRILL_SHAPE::UNDEFINED;
123 default:
124 wxCHECK_MSG( false, PAD_DRILL_SHAPE::UNDEFINED,
125 "Unhandled case in FromProtoEnum<types::DrillShape>" );
126 }
127}
128
129template<>
130types::PadStackShape ToProtoEnum( PAD_SHAPE aValue )
131{
132 switch( aValue )
133 {
134 case PAD_SHAPE::CIRCLE: return types::PadStackShape::PSS_CIRCLE;
135 case PAD_SHAPE::RECTANGLE: return types::PadStackShape::PSS_RECTANGLE;
136 case PAD_SHAPE::OVAL: return types::PadStackShape::PSS_OVAL;
137 case PAD_SHAPE::TRAPEZOID: return types::PadStackShape::PSS_TRAPEZOID;
138 case PAD_SHAPE::ROUNDRECT: return types::PadStackShape::PSS_ROUNDRECT;
139 case PAD_SHAPE::CHAMFERED_RECT: return types::PadStackShape::PSS_CHAMFEREDRECT;
140 case PAD_SHAPE::CUSTOM: return types::PadStackShape::PSS_CUSTOM;
141
142 default:
143 wxCHECK_MSG( false, types::PadStackShape::PSS_UNKNOWN,
144 "Unhandled case in ToProtoEnum<PAD_SHAPE>");
145 }
146}
147
148
149template<>
150PAD_SHAPE FromProtoEnum( types::PadStackShape aValue )
151{
152 switch( aValue )
153 {
154 case types::PadStackShape::PSS_UNKNOWN:
155 case types::PadStackShape::PSS_CIRCLE: return PAD_SHAPE::CIRCLE;
156 case types::PadStackShape::PSS_RECTANGLE: return PAD_SHAPE::RECTANGLE;
157 case types::PadStackShape::PSS_OVAL: return PAD_SHAPE::OVAL;
158 case types::PadStackShape::PSS_TRAPEZOID: return PAD_SHAPE::TRAPEZOID;
159 case types::PadStackShape::PSS_ROUNDRECT: return PAD_SHAPE::ROUNDRECT;
160 case types::PadStackShape::PSS_CHAMFEREDRECT: return PAD_SHAPE::CHAMFERED_RECT;
161 case types::PadStackShape::PSS_CUSTOM: return PAD_SHAPE::CUSTOM;
162
163 default:
164 wxCHECK_MSG( false, PAD_SHAPE::CIRCLE,
165 "Unhandled case in FromProtoEnum<types::PadStackShape>" );
166 }
167}
168
169
170template<>
171types::PadStackType ToProtoEnum( PADSTACK::MODE aValue )
172{
173 switch( aValue )
174 {
175 case PADSTACK::MODE::NORMAL: return types::PadStackType::PST_NORMAL;
176 case PADSTACK::MODE::FRONT_INNER_BACK: return types::PadStackType::PST_FRONT_INNER_BACK;
177 case PADSTACK::MODE::CUSTOM: return types::PadStackType::PST_CUSTOM;
178
179 default:
180 wxCHECK_MSG( false, types::PadStackType::PST_UNKNOWN,
181 "Unhandled case in ToProtoEnum<PADSTACK::MODE>");
182 }
183}
184
185
186template<>
187PADSTACK::MODE FromProtoEnum( types::PadStackType aValue )
188{
189 switch( aValue )
190 {
191 case types::PadStackType::PST_UNKNOWN:
192 case types::PadStackType::PST_NORMAL: return PADSTACK::MODE::NORMAL;
193 case types::PadStackType::PST_FRONT_INNER_BACK: return PADSTACK::MODE::FRONT_INNER_BACK;
194 case types::PadStackType::PST_CUSTOM: return PADSTACK::MODE::CUSTOM;
195
196 default:
197 wxCHECK_MSG( false, PADSTACK::MODE::NORMAL,
198 "Unhandled case in FromProtoEnum<types::PadStackType>" );
199 }
200}
201
202
203template<>
204PAD_PROP FromProtoEnum( types::PadFabricationProperty aValue )
205{
206 switch( aValue )
207 {
208 case types::PadFabricationProperty::PFP_UNKNOWN:
209 case types::PadFabricationProperty::PFP_NONE: return PAD_PROP::NONE;
210 case types::PadFabricationProperty::PFP_BGA: return PAD_PROP::BGA;
211 case types::PadFabricationProperty::PFP_FIDUCIAL_GLOBAL: return PAD_PROP::FIDUCIAL_GLBL;
212 case types::PadFabricationProperty::PFP_FIDUCIAL_LOCAL: return PAD_PROP::FIDUCIAL_LOCAL;
213 case types::PadFabricationProperty::PFP_TESTPOINT: return PAD_PROP::TESTPOINT;
214 case types::PadFabricationProperty::PFP_HEATSINK: return PAD_PROP::HEATSINK;
215 case types::PadFabricationProperty::PFP_CASTELLATED: return PAD_PROP::CASTELLATED;
216 case types::PadFabricationProperty::PFP_MECHANICAL: return PAD_PROP::MECHANICAL;
217 case types::PadFabricationProperty::PFP_PRESSFIT: return PAD_PROP::PRESSFIT;
218
219 default:
220 wxCHECK_MSG( false, PAD_PROP::NONE,
221 "Unhandled case in FromProtoEnum<types::PadFabricationProperty>" );
222 }
223}
224
225
226template<>
227types::PadFabricationProperty ToProtoEnum( PAD_PROP aValue )
228{
229 switch( aValue )
230 {
231 case PAD_PROP::NONE: return types::PadFabricationProperty::PFP_NONE;
232 case PAD_PROP::BGA: return types::PadFabricationProperty::PFP_BGA;
233 case PAD_PROP::FIDUCIAL_GLBL: return types::PadFabricationProperty::PFP_FIDUCIAL_GLOBAL;
234 case PAD_PROP::FIDUCIAL_LOCAL: return types::PadFabricationProperty::PFP_FIDUCIAL_LOCAL;
235 case PAD_PROP::TESTPOINT: return types::PadFabricationProperty::PFP_TESTPOINT;
236 case PAD_PROP::HEATSINK: return types::PadFabricationProperty::PFP_HEATSINK;
237 case PAD_PROP::CASTELLATED: return types::PadFabricationProperty::PFP_CASTELLATED;
238 case PAD_PROP::MECHANICAL: return types::PadFabricationProperty::PFP_MECHANICAL;
239 case PAD_PROP::PRESSFIT: return types::PadFabricationProperty::PFP_PRESSFIT;
240
241 default:
242 wxCHECK_MSG( false, types::PadFabricationProperty::PFP_UNKNOWN,
243 "Unhandled case in ToProtoEnum<PAD_PROP>" );
244 }
245}
246
247
248template<>
249types::ViaType ToProtoEnum( VIATYPE aValue )
250{
251 switch( aValue )
252 {
253 case VIATYPE::THROUGH: return types::ViaType::VT_THROUGH;
254 case VIATYPE::BLIND: return types::ViaType::VT_BLIND; // Since V10
255 case VIATYPE::BURIED: return types::ViaType::VT_BURIED;
256 case VIATYPE::MICROVIA: return types::ViaType::VT_MICRO;
257
258 default:
259 wxCHECK_MSG( false, types::ViaType::VT_UNKNOWN,
260 "Unhandled case in ToProtoEnum<VIATYPE>");
261 }
262}
263
264
265template<>
266VIATYPE FromProtoEnum( types::ViaType aValue )
267{
268 switch( aValue )
269 {
270 case types::ViaType::VT_UNKNOWN:
271 case types::ViaType::VT_THROUGH: return VIATYPE::THROUGH;
272 case types::ViaType::VT_BLIND_BURIED: return VIATYPE::BLIND;
273 case types::ViaType::VT_BLIND: return VIATYPE::BLIND; // Since V10
274 case types::ViaType::VT_BURIED: return VIATYPE::BURIED;
275 case types::ViaType::VT_MICRO: return VIATYPE::MICROVIA;
276
277 default:
278 wxCHECK_MSG( false, VIATYPE::THROUGH,
279 "Unhandled case in FromProtoEnum<types::ViaType>" );
280 }
281}
282
283
284template<>
285types::ZoneConnectionStyle ToProtoEnum( ZONE_CONNECTION aValue )
286{
287 switch( aValue )
288 {
289 case ZONE_CONNECTION::INHERITED: return types::ZoneConnectionStyle::ZCS_INHERITED;
290 case ZONE_CONNECTION::NONE: return types::ZoneConnectionStyle::ZCS_NONE;
291 case ZONE_CONNECTION::THERMAL: return types::ZoneConnectionStyle::ZCS_THERMAL;
292 case ZONE_CONNECTION::FULL: return types::ZoneConnectionStyle::ZCS_FULL;
293 case ZONE_CONNECTION::THT_THERMAL: return types::ZoneConnectionStyle::ZCS_PTH_THERMAL;
294
295 default:
296 wxCHECK_MSG( false, types::ZoneConnectionStyle::ZCS_UNKNOWN,
297 "Unhandled case in ToProtoEnum<ZONE_CONNECTION>");
298 }
299}
300
301
302template<>
303ZONE_CONNECTION FromProtoEnum( types::ZoneConnectionStyle aValue )
304{
305 switch( aValue )
306 {
307 case types::ZoneConnectionStyle::ZCS_UNKNOWN: return ZONE_CONNECTION::INHERITED;
308 case types::ZoneConnectionStyle::ZCS_INHERITED: return ZONE_CONNECTION::INHERITED;
309 case types::ZoneConnectionStyle::ZCS_NONE: return ZONE_CONNECTION::NONE;
310 case types::ZoneConnectionStyle::ZCS_THERMAL: return ZONE_CONNECTION::THERMAL;
311 case types::ZoneConnectionStyle::ZCS_FULL: return ZONE_CONNECTION::FULL;
312 case types::ZoneConnectionStyle::ZCS_PTH_THERMAL: return ZONE_CONNECTION::THT_THERMAL;
313
314 default:
315 wxCHECK_MSG( false, ZONE_CONNECTION::INHERITED,
316 "Unhandled case in FromProtoEnum<types::ZoneConnectionStyle>" );
317 }
318}
319
320
321template<>
322CustomRuleConstraintType ToProtoEnum( DRC_CONSTRAINT_T aValue )
323{
324 switch( aValue )
325 {
326 case NULL_CONSTRAINT: return CustomRuleConstraintType::CRCT_UNKNOWN;
327 case CLEARANCE_CONSTRAINT: return CustomRuleConstraintType::CRCT_CLEARANCE;
328 case CREEPAGE_CONSTRAINT: return CustomRuleConstraintType::CRCT_CREEPAGE;
329 case HOLE_CLEARANCE_CONSTRAINT: return CustomRuleConstraintType::CRCT_HOLE_CLEARANCE;
330 case HOLE_TO_HOLE_CONSTRAINT: return CustomRuleConstraintType::CRCT_HOLE_TO_HOLE;
331 case EDGE_CLEARANCE_CONSTRAINT: return CustomRuleConstraintType::CRCT_EDGE_CLEARANCE;
332 case HOLE_SIZE_CONSTRAINT: return CustomRuleConstraintType::CRCT_HOLE_SIZE;
333 case COURTYARD_CLEARANCE_CONSTRAINT: return CustomRuleConstraintType::CRCT_COURTYARD_CLEARANCE;
334 case SILK_CLEARANCE_CONSTRAINT: return CustomRuleConstraintType::CRCT_SILK_CLEARANCE;
335 case TEXT_HEIGHT_CONSTRAINT: return CustomRuleConstraintType::CRCT_TEXT_HEIGHT;
336 case TEXT_THICKNESS_CONSTRAINT: return CustomRuleConstraintType::CRCT_TEXT_THICKNESS;
337 case TRACK_WIDTH_CONSTRAINT: return CustomRuleConstraintType::CRCT_TRACK_WIDTH;
338 case TRACK_SEGMENT_LENGTH_CONSTRAINT: return CustomRuleConstraintType::CRCT_TRACK_SEGMENT_LENGTH;
339 case ANNULAR_WIDTH_CONSTRAINT: return CustomRuleConstraintType::CRCT_ANNULAR_WIDTH;
340 case ZONE_CONNECTION_CONSTRAINT: return CustomRuleConstraintType::CRCT_ZONE_CONNECTION;
341 case THERMAL_RELIEF_GAP_CONSTRAINT: return CustomRuleConstraintType::CRCT_THERMAL_RELIEF_GAP;
342 case THERMAL_SPOKE_WIDTH_CONSTRAINT: return CustomRuleConstraintType::CRCT_THERMAL_SPOKE_WIDTH;
343 case MIN_RESOLVED_SPOKES_CONSTRAINT: return CustomRuleConstraintType::CRCT_MIN_RESOLVED_SPOKES;
344 case MICROVIA_STACK_DEPTH_CONSTRAINT: return CustomRuleConstraintType::CRCT_MICROVIA_STACK_DEPTH;
345 case MICROVIA_ASPECT_RATIO_CONSTRAINT: return CustomRuleConstraintType::CRCT_MICROVIA_ASPECT_RATIO;
346 case SOLDER_MASK_EXPANSION_CONSTRAINT:return CustomRuleConstraintType::CRCT_SOLDER_MASK_EXPANSION;
347 case SOLDER_PASTE_ABS_MARGIN_CONSTRAINT:return CustomRuleConstraintType::CRCT_SOLDER_PASTE_ABS_MARGIN;
348 case SOLDER_PASTE_REL_MARGIN_CONSTRAINT:return CustomRuleConstraintType::CRCT_SOLDER_PASTE_REL_MARGIN;
349 case DISALLOW_CONSTRAINT: return CustomRuleConstraintType::CRCT_DISALLOW;
350 case VIA_DIAMETER_CONSTRAINT: return CustomRuleConstraintType::CRCT_VIA_DIAMETER;
351 case LENGTH_CONSTRAINT: return CustomRuleConstraintType::CRCT_LENGTH;
352 case SKEW_CONSTRAINT: return CustomRuleConstraintType::CRCT_SKEW;
353 case DIFF_PAIR_GAP_CONSTRAINT: return CustomRuleConstraintType::CRCT_DIFF_PAIR_GAP;
354 case MAX_UNCOUPLED_CONSTRAINT: return CustomRuleConstraintType::CRCT_MAX_UNCOUPLED;
355 case DIFF_PAIR_INTRA_SKEW_CONSTRAINT: return CustomRuleConstraintType::CRCT_DIFF_PAIR_INTRA_SKEW;
356 case VIA_COUNT_CONSTRAINT: return CustomRuleConstraintType::CRCT_VIA_COUNT;
357 case PHYSICAL_CLEARANCE_CONSTRAINT: return CustomRuleConstraintType::CRCT_PHYSICAL_CLEARANCE;
358 case PHYSICAL_HOLE_CLEARANCE_CONSTRAINT:return CustomRuleConstraintType::CRCT_PHYSICAL_HOLE_CLEARANCE;
359 case ASSERTION_CONSTRAINT: return CustomRuleConstraintType::CRCT_ASSERTION;
360 case CONNECTION_WIDTH_CONSTRAINT: return CustomRuleConstraintType::CRCT_CONNECTION_WIDTH;
361 case TRACK_ANGLE_CONSTRAINT: return CustomRuleConstraintType::CRCT_TRACK_ANGLE;
362 case VIA_DANGLING_CONSTRAINT: return CustomRuleConstraintType::CRCT_VIA_DANGLING;
363 case BRIDGED_MASK_CONSTRAINT: return CustomRuleConstraintType::CRCT_BRIDGED_MASK;
364 case SOLDER_MASK_SLIVER_CONSTRAINT: return CustomRuleConstraintType::CRCT_SOLDER_MASK_SLIVER;
365 case NET_CHAIN_LENGTH_CONSTRAINT: return CustomRuleConstraintType::CRCT_NET_CHAIN_LENGTH;
367 return CustomRuleConstraintType::CRCT_NET_CHAIN_STUB_LENGTH;
369 return CustomRuleConstraintType::CRCT_NET_CHAIN_RETURN_PATH;
370
371 default:
372 wxCHECK_MSG( false, CustomRuleConstraintType::CRCT_UNKNOWN,
373 "Unhandled case in ToProtoEnum<DRC_CONSTRAINT_T>" );
374 }
375}
376
377
378template<>
379DRC_CONSTRAINT_T FromProtoEnum( CustomRuleConstraintType aValue )
380{
381 switch( aValue )
382 {
383 case CustomRuleConstraintType::CRCT_UNKNOWN: return NULL_CONSTRAINT;
384 case CustomRuleConstraintType::CRCT_CLEARANCE: return CLEARANCE_CONSTRAINT;
385 case CustomRuleConstraintType::CRCT_CREEPAGE: return CREEPAGE_CONSTRAINT;
386 case CustomRuleConstraintType::CRCT_HOLE_CLEARANCE: return HOLE_CLEARANCE_CONSTRAINT;
387 case CustomRuleConstraintType::CRCT_HOLE_TO_HOLE: return HOLE_TO_HOLE_CONSTRAINT;
388 case CustomRuleConstraintType::CRCT_EDGE_CLEARANCE: return EDGE_CLEARANCE_CONSTRAINT;
389 case CustomRuleConstraintType::CRCT_HOLE_SIZE: return HOLE_SIZE_CONSTRAINT;
390 case CustomRuleConstraintType::CRCT_COURTYARD_CLEARANCE: return COURTYARD_CLEARANCE_CONSTRAINT;
391 case CustomRuleConstraintType::CRCT_SILK_CLEARANCE: return SILK_CLEARANCE_CONSTRAINT;
392 case CustomRuleConstraintType::CRCT_TEXT_HEIGHT: return TEXT_HEIGHT_CONSTRAINT;
393 case CustomRuleConstraintType::CRCT_TEXT_THICKNESS: return TEXT_THICKNESS_CONSTRAINT;
394 case CustomRuleConstraintType::CRCT_TRACK_WIDTH: return TRACK_WIDTH_CONSTRAINT;
395 case CustomRuleConstraintType::CRCT_TRACK_SEGMENT_LENGTH: return TRACK_SEGMENT_LENGTH_CONSTRAINT;
396 case CustomRuleConstraintType::CRCT_ANNULAR_WIDTH: return ANNULAR_WIDTH_CONSTRAINT;
397 case CustomRuleConstraintType::CRCT_ZONE_CONNECTION: return ZONE_CONNECTION_CONSTRAINT;
398 case CustomRuleConstraintType::CRCT_THERMAL_RELIEF_GAP: return THERMAL_RELIEF_GAP_CONSTRAINT;
399 case CustomRuleConstraintType::CRCT_THERMAL_SPOKE_WIDTH: return THERMAL_SPOKE_WIDTH_CONSTRAINT;
400 case CustomRuleConstraintType::CRCT_MIN_RESOLVED_SPOKES: return MIN_RESOLVED_SPOKES_CONSTRAINT;
401 case CustomRuleConstraintType::CRCT_MICROVIA_STACK_DEPTH: return MICROVIA_STACK_DEPTH_CONSTRAINT;
402 case CustomRuleConstraintType::CRCT_MICROVIA_ASPECT_RATIO: return MICROVIA_ASPECT_RATIO_CONSTRAINT;
403 case CustomRuleConstraintType::CRCT_SOLDER_MASK_EXPANSION: return SOLDER_MASK_EXPANSION_CONSTRAINT;
404 case CustomRuleConstraintType::CRCT_SOLDER_PASTE_ABS_MARGIN:return SOLDER_PASTE_ABS_MARGIN_CONSTRAINT;
405 case CustomRuleConstraintType::CRCT_SOLDER_PASTE_REL_MARGIN:return SOLDER_PASTE_REL_MARGIN_CONSTRAINT;
406 case CustomRuleConstraintType::CRCT_DISALLOW: return DISALLOW_CONSTRAINT;
407 case CustomRuleConstraintType::CRCT_VIA_DIAMETER: return VIA_DIAMETER_CONSTRAINT;
408 case CustomRuleConstraintType::CRCT_LENGTH: return LENGTH_CONSTRAINT;
409 case CustomRuleConstraintType::CRCT_SKEW: return SKEW_CONSTRAINT;
410 case CustomRuleConstraintType::CRCT_DIFF_PAIR_GAP: return DIFF_PAIR_GAP_CONSTRAINT;
411 case CustomRuleConstraintType::CRCT_MAX_UNCOUPLED: return MAX_UNCOUPLED_CONSTRAINT;
412 case CustomRuleConstraintType::CRCT_DIFF_PAIR_INTRA_SKEW: return DIFF_PAIR_INTRA_SKEW_CONSTRAINT;
413 case CustomRuleConstraintType::CRCT_VIA_COUNT: return VIA_COUNT_CONSTRAINT;
414 case CustomRuleConstraintType::CRCT_PHYSICAL_CLEARANCE: return PHYSICAL_CLEARANCE_CONSTRAINT;
415 case CustomRuleConstraintType::CRCT_PHYSICAL_HOLE_CLEARANCE:return PHYSICAL_HOLE_CLEARANCE_CONSTRAINT;
416 case CustomRuleConstraintType::CRCT_ASSERTION: return ASSERTION_CONSTRAINT;
417 case CustomRuleConstraintType::CRCT_CONNECTION_WIDTH: return CONNECTION_WIDTH_CONSTRAINT;
418 case CustomRuleConstraintType::CRCT_TRACK_ANGLE: return TRACK_ANGLE_CONSTRAINT;
419 case CustomRuleConstraintType::CRCT_VIA_DANGLING: return VIA_DANGLING_CONSTRAINT;
420 case CustomRuleConstraintType::CRCT_BRIDGED_MASK: return BRIDGED_MASK_CONSTRAINT;
421 case CustomRuleConstraintType::CRCT_SOLDER_MASK_SLIVER: return SOLDER_MASK_SLIVER_CONSTRAINT;
422 case CustomRuleConstraintType::CRCT_NET_CHAIN_LENGTH: return NET_CHAIN_LENGTH_CONSTRAINT;
423 case CustomRuleConstraintType::CRCT_NET_CHAIN_STUB_LENGTH: return NET_CHAIN_STUB_LENGTH_CONSTRAINT;
424 case CustomRuleConstraintType::CRCT_NET_CHAIN_RETURN_PATH: return NET_CHAIN_RETURN_PATH_CONSTRAINT;
425
426 default:
427 wxCHECK_MSG( false, NULL_CONSTRAINT,
428 "Unhandled case in FromProtoEnum<CustomRuleConstraintType>" );
429 }
430}
431
432
433template<>
434CustomRuleConstraintOption ToProtoEnum( DRC_CONSTRAINT::OPTIONS aValue )
435{
436 switch( aValue )
437 {
438 case DRC_CONSTRAINT::OPTIONS::SKEW_WITHIN_DIFF_PAIRS: return CustomRuleConstraintOption::CRCO_SKEW_WITHIN_DIFF_PAIRS;
439 case DRC_CONSTRAINT::OPTIONS::SPACE_DOMAIN: return CustomRuleConstraintOption::CRCO_SPACE_DOMAIN;
440 case DRC_CONSTRAINT::OPTIONS::TIME_DOMAIN: return CustomRuleConstraintOption::CRCO_TIME_DOMAIN;
441
442 default:
443 wxCHECK_MSG( false, CustomRuleConstraintOption::CRCO_UNKNOWN,
444 "Unhandled case in ToProtoEnum<DRC_CONSTRAINT::OPTIONS>" );
445 }
446}
447
448
449template<>
450DRC_CONSTRAINT::OPTIONS FromProtoEnum( CustomRuleConstraintOption aValue )
451{
452 switch( aValue )
453 {
454 case CustomRuleConstraintOption::CRCO_SKEW_WITHIN_DIFF_PAIRS:
456
457 case CustomRuleConstraintOption::CRCO_SPACE_DOMAIN:
459
460 case CustomRuleConstraintOption::CRCO_TIME_DOMAIN:
462
463 case CustomRuleConstraintOption::CRCO_UNKNOWN:
464 default:
466 "Unhandled case in FromProtoEnum<CustomRuleConstraintOption>" );
467 }
468}
469
470
471template<>
472CustomRuleDisallowType ToProtoEnum( DRC_DISALLOW_T aValue )
473{
474 switch( aValue )
475 {
476 case DRC_DISALLOW_THROUGH_VIAS: return CustomRuleDisallowType::CRDT_THROUGH_VIAS;
477 case DRC_DISALLOW_MICRO_VIAS: return CustomRuleDisallowType::CRDT_MICRO_VIAS;
478 case DRC_DISALLOW_BLIND_VIAS: return CustomRuleDisallowType::CRDT_BLIND_VIAS;
479 case DRC_DISALLOW_BURIED_VIAS: return CustomRuleDisallowType::CRDT_BURIED_VIAS;
480 case DRC_DISALLOW_TRACKS: return CustomRuleDisallowType::CRDT_TRACKS;
481 case DRC_DISALLOW_PADS: return CustomRuleDisallowType::CRDT_PADS;
482 case DRC_DISALLOW_ZONES: return CustomRuleDisallowType::CRDT_ZONES;
483 case DRC_DISALLOW_TEXTS: return CustomRuleDisallowType::CRDT_TEXTS;
484 case DRC_DISALLOW_GRAPHICS: return CustomRuleDisallowType::CRDT_GRAPHICS;
485 case DRC_DISALLOW_HOLES: return CustomRuleDisallowType::CRDT_HOLES;
486 case DRC_DISALLOW_FOOTPRINTS: return CustomRuleDisallowType::CRDT_FOOTPRINTS;
487
488 default:
489 wxCHECK_MSG( false, CustomRuleDisallowType::CRDT_UNKNOWN,
490 "Unhandled case in ToProtoEnum<DRC_DISALLOW_T>" );
491 }
492}
493
494
495template<>
496DRC_DISALLOW_T FromProtoEnum( CustomRuleDisallowType aValue )
497{
498 switch( aValue )
499 {
500 case CustomRuleDisallowType::CRDT_THROUGH_VIAS: return DRC_DISALLOW_THROUGH_VIAS;
501 case CustomRuleDisallowType::CRDT_MICRO_VIAS: return DRC_DISALLOW_MICRO_VIAS;
502 case CustomRuleDisallowType::CRDT_BLIND_VIAS: return DRC_DISALLOW_BLIND_VIAS;
503 case CustomRuleDisallowType::CRDT_BURIED_VIAS: return DRC_DISALLOW_BURIED_VIAS;
504 case CustomRuleDisallowType::CRDT_TRACKS: return DRC_DISALLOW_TRACKS;
505 case CustomRuleDisallowType::CRDT_PADS: return DRC_DISALLOW_PADS;
506 case CustomRuleDisallowType::CRDT_ZONES: return DRC_DISALLOW_ZONES;
507 case CustomRuleDisallowType::CRDT_TEXTS: return DRC_DISALLOW_TEXTS;
508 case CustomRuleDisallowType::CRDT_GRAPHICS: return DRC_DISALLOW_GRAPHICS;
509 case CustomRuleDisallowType::CRDT_HOLES: return DRC_DISALLOW_HOLES;
510 case CustomRuleDisallowType::CRDT_FOOTPRINTS: return DRC_DISALLOW_FOOTPRINTS;
511
512 case CustomRuleDisallowType::CRDT_UNKNOWN:
513 default:
514 wxCHECK_MSG( false, DRC_DISALLOW_THROUGH_VIAS,
515 "Unhandled case in FromProtoEnum<CustomRuleDisallowType>" );
516 }
517}
518
519
520template<>
521types::UnconnectedLayerRemoval ToProtoEnum( UNCONNECTED_LAYER_MODE aValue )
522{
523 switch( aValue )
524 {
526 return types::UnconnectedLayerRemoval::ULR_KEEP;
527
529 return types::UnconnectedLayerRemoval::ULR_REMOVE;
530
532 return types::UnconnectedLayerRemoval::ULR_REMOVE_EXCEPT_START_AND_END;
533
535 return types::UnconnectedLayerRemoval::ULR_START_END_ONLY;
536
537 default:
538 wxCHECK_MSG( false, types::UnconnectedLayerRemoval::ULR_UNKNOWN,
539 "Unhandled case in ToProtoEnum<PADSTACK::UNCONNECTED_LAYER_MODE>");
540 }
541}
542
543
544template<>
545UNCONNECTED_LAYER_MODE FromProtoEnum( types::UnconnectedLayerRemoval aValue )
546{
547 switch( aValue )
548 {
549 case types::UnconnectedLayerRemoval::ULR_UNKNOWN:
550 case types::UnconnectedLayerRemoval::ULR_KEEP:
552
553 case types::UnconnectedLayerRemoval::ULR_REMOVE:
555
556 case types::UnconnectedLayerRemoval::ULR_REMOVE_EXCEPT_START_AND_END:
558
559 case types::UnconnectedLayerRemoval::ULR_START_END_ONLY:
561
562 default:
563 wxCHECK_MSG( false, UNCONNECTED_LAYER_MODE::KEEP_ALL,
564 "Unhandled case in FromProtoEnum<types::UnconnectedLayerRemoval>");
565 }
566}
567
568
569template<>
570types::IslandRemovalMode ToProtoEnum( ISLAND_REMOVAL_MODE aValue )
571{
572 switch( aValue )
573 {
574 case ISLAND_REMOVAL_MODE::ALWAYS: return types::IslandRemovalMode::IRM_ALWAYS;
575 case ISLAND_REMOVAL_MODE::NEVER: return types::IslandRemovalMode::IRM_NEVER;
576 case ISLAND_REMOVAL_MODE::AREA: return types::IslandRemovalMode::IRM_AREA;
577
578 default:
579 wxCHECK_MSG( false, types::IslandRemovalMode::IRM_UNKNOWN,
580 "Unhandled case in ToProtoEnum<ISLAND_REMOVAL_MODE>");
581 }
582}
583
584
585template<>
586ISLAND_REMOVAL_MODE FromProtoEnum( types::IslandRemovalMode aValue )
587{
588 switch( aValue )
589 {
590 case types::IslandRemovalMode::IRM_UNKNOWN:
591 case types::IslandRemovalMode::IRM_ALWAYS: return ISLAND_REMOVAL_MODE::ALWAYS;
592 case types::IslandRemovalMode::IRM_NEVER: return ISLAND_REMOVAL_MODE::NEVER;
593 case types::IslandRemovalMode::IRM_AREA: return ISLAND_REMOVAL_MODE::AREA;
594
595 default:
596 wxCHECK_MSG( false, ISLAND_REMOVAL_MODE::ALWAYS,
597 "Unhandled case in FromProtoEnum<types::IslandRemovalMode>" );
598 }
599}
600
601
602template<>
603types::ZoneFillMode ToProtoEnum( ZONE_FILL_MODE aValue )
604{
605 switch( aValue )
606 {
607 case ZONE_FILL_MODE::POLYGONS: return types::ZoneFillMode::ZFM_SOLID;
608 case ZONE_FILL_MODE::HATCH_PATTERN: return types::ZoneFillMode::ZFM_HATCHED;
609 case ZONE_FILL_MODE::COPPER_THIEVING: return types::ZoneFillMode::ZFM_COPPER_THIEVING;
610
611 default:
612 wxCHECK_MSG( false, types::ZoneFillMode::ZFM_UNKNOWN,
613 "Unhandled case in ToProtoEnum<ZONE_FILL_MODE>");
614 }
615}
616
617
618template<>
619ZONE_FILL_MODE FromProtoEnum( types::ZoneFillMode aValue )
620{
621 switch( aValue )
622 {
623 case types::ZoneFillMode::ZFM_UNKNOWN:
624 case types::ZoneFillMode::ZFM_SOLID: return ZONE_FILL_MODE::POLYGONS;
625 case types::ZoneFillMode::ZFM_HATCHED: return ZONE_FILL_MODE::HATCH_PATTERN;
626 case types::ZoneFillMode::ZFM_COPPER_THIEVING: return ZONE_FILL_MODE::COPPER_THIEVING;
627
628 default:
629 wxCHECK_MSG( false, ZONE_FILL_MODE::POLYGONS,
630 "Unhandled case in FromProtoEnum<types::ZoneFillMode>" );
631 }
632}
633
634
635template<>
636types::ZoneCornerSmoothingMode ToProtoEnum( ZONE_SETTINGS::CORNER_SMOOTHING aValue )
637{
638 switch( aValue )
639 {
640 case ZONE_SETTINGS::CORNER_SMOOTHING::NO_SMOOTHING: return types::ZoneCornerSmoothingMode::ZCSM_NONE;
641 case ZONE_SETTINGS::CORNER_SMOOTHING::CHAMFER: return types::ZoneCornerSmoothingMode::ZCSM_CHAMFER;
642 case ZONE_SETTINGS::CORNER_SMOOTHING::FILLET: return types::ZoneCornerSmoothingMode::ZCSM_FILLET;
643
644 default:
645 wxCHECK_MSG( false, types::ZoneCornerSmoothingMode::ZCSM_UNKNOWN,
646 "Unhandled case in ToProtoEnum<ZONE_SETTINGS::CORNER_SMOOTHING>" );
647 }
648}
649
650
651template<>
652ZONE_SETTINGS::CORNER_SMOOTHING FromProtoEnum( types::ZoneCornerSmoothingMode aValue )
653{
654 switch( aValue )
655 {
656 case types::ZoneCornerSmoothingMode::ZCSM_UNKNOWN:
657 case types::ZoneCornerSmoothingMode::ZCSM_NONE: return ZONE_SETTINGS::CORNER_SMOOTHING::NO_SMOOTHING;
658 case types::ZoneCornerSmoothingMode::ZCSM_CHAMFER: return ZONE_SETTINGS::CORNER_SMOOTHING::CHAMFER;
659 case types::ZoneCornerSmoothingMode::ZCSM_FILLET: return ZONE_SETTINGS::CORNER_SMOOTHING::FILLET;
660
661 default:
663 "Unhandled case in FromProtoEnum<ZoneCornerSmoothingMode>" );
664 }
665}
666
667
668template<>
669types::ThievingPattern ToProtoEnum( THIEVING_PATTERN aValue )
670{
671 switch( aValue )
672 {
673 case THIEVING_PATTERN::DOTS: return types::ThievingPattern::TP_DOTS;
674 case THIEVING_PATTERN::SQUARES: return types::ThievingPattern::TP_SQUARES;
675 case THIEVING_PATTERN::HATCH: return types::ThievingPattern::TP_CROSSHATCH;
676
677 default:
678 wxCHECK_MSG( false, types::ThievingPattern::TP_UNKNOWN,
679 "Unhandled case in ToProtoEnum<THIEVING_PATTERN>" );
680 }
681}
682
683
684template<>
685THIEVING_PATTERN FromProtoEnum( types::ThievingPattern aValue )
686{
687 switch( aValue )
688 {
689 case types::ThievingPattern::TP_UNKNOWN:
690 case types::ThievingPattern::TP_DOTS: return THIEVING_PATTERN::DOTS;
691 case types::ThievingPattern::TP_SQUARES: return THIEVING_PATTERN::SQUARES;
692 case types::ThievingPattern::TP_CROSSHATCH: return THIEVING_PATTERN::HATCH;
693
694 default:
695 wxCHECK_MSG( false, THIEVING_PATTERN::DOTS,
696 "Unhandled case in FromProtoEnum<types::ThievingPattern>" );
697 }
698}
699
700
701template<>
702types::ZoneBorderStyle ToProtoEnum( ZONE_BORDER_DISPLAY_STYLE aValue )
703{
704 switch( aValue )
705 {
706 case ZONE_BORDER_DISPLAY_STYLE::NO_HATCH: return types::ZoneBorderStyle::ZBS_SOLID;
707 case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL: return types::ZoneBorderStyle::ZBS_DIAGONAL_FULL;
708 case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE: return types::ZoneBorderStyle::ZBS_DIAGONAL_EDGE;
709 case ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER: return types::ZoneBorderStyle::ZBS_INVISIBLE;
710
711 default:
712 wxCHECK_MSG( false, types::ZoneBorderStyle::ZBS_UNKNOWN,
713 "Unhandled case in ToProtoEnum<ZONE_BORDER_DISPLAY_STYLE>");
714 }
715}
716
717
718template<>
719ZONE_BORDER_DISPLAY_STYLE FromProtoEnum( types::ZoneBorderStyle aValue )
720{
721 switch( aValue )
722 {
723 case types::ZoneBorderStyle::ZBS_SOLID: return ZONE_BORDER_DISPLAY_STYLE::NO_HATCH;
724 case types::ZoneBorderStyle::ZBS_DIAGONAL_FULL: return ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL;
725 case types::ZoneBorderStyle::ZBS_UNKNOWN:
726 case types::ZoneBorderStyle::ZBS_DIAGONAL_EDGE: return ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE;
727 case types::ZoneBorderStyle::ZBS_INVISIBLE: return ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER;
728
729 default:
731 "Unhandled case in FromProtoEnum<types::ZoneHatchBorderMode>" );
732 }
733}
734
735
736template<>
737types::PlacementRuleSourceType ToProtoEnum( PLACEMENT_SOURCE_T aValue )
738{
739 switch( aValue )
740 {
742 return types::PlacementRuleSourceType::PRST_SHEET_NAME;
743
745 return types::PlacementRuleSourceType::PRST_COMPONENT_CLASS;
746
748 return types::PlacementRuleSourceType::PRST_GROUP;
749
751 return types::PlacementRuleSourceType::PRST_DESIGN_BLOCK;
752
753 default:
754 wxCHECK_MSG( false, types::PlacementRuleSourceType::PRST_UNKNOWN,
755 "Unhandled case in ToProtoEnum<PLACEMENT_SOURCE_T>");
756 }
757}
758
759
760template<>
761PLACEMENT_SOURCE_T FromProtoEnum( types::PlacementRuleSourceType aValue )
762{
763 switch( aValue )
764 {
765 case types::PlacementRuleSourceType::PRST_UNKNOWN:
766 case types::PlacementRuleSourceType::PRST_SHEET_NAME:
768
769 case types::PlacementRuleSourceType::PRST_COMPONENT_CLASS:
771
772 case types::PlacementRuleSourceType::PRST_GROUP:
774
775 case types::PlacementRuleSourceType::PRST_DESIGN_BLOCK:
777
778 default:
779 wxCHECK_MSG( false, PLACEMENT_SOURCE_T::SHEETNAME,
780 "Unhandled case in FromProtoEnum<types::PlacementRuleSourceType>" );
781 }
782}
783
784
785template<>
786types::ZoneTeardropType ToProtoEnum( TEARDROP_TYPE aValue )
787{
788 switch( aValue )
789 {
790 case TEARDROP_TYPE::TD_NONE: return types::ZoneTeardropType::ZTDT_NONE;
791 case TEARDROP_TYPE::TD_UNSPECIFIED: return types::ZoneTeardropType::ZTDT_UNSPECIFIED;
792 case TEARDROP_TYPE::TD_VIAPAD: return types::ZoneTeardropType::ZTDT_VIA_PAD;
793 case TEARDROP_TYPE::TD_TRACKEND: return types::ZoneTeardropType::ZTDT_TRACK_END;
794
795 default:
796 wxCHECK_MSG( false, types::ZoneTeardropType::ZTDT_UNKNOWN,
797 "Unhandled case in ToProtoEnum<TEARDROP_TYPE>");
798 }
799}
800
801
802template<>
803TEARDROP_TYPE FromProtoEnum( types::ZoneTeardropType aValue )
804{
805 switch( aValue )
806 {
807 case types::ZoneTeardropType::ZTDT_UNKNOWN:
808 case types::ZoneTeardropType::ZTDT_NONE: return TEARDROP_TYPE::TD_NONE;
809 case types::ZoneTeardropType::ZTDT_UNSPECIFIED: return TEARDROP_TYPE::TD_UNSPECIFIED;
810 case types::ZoneTeardropType::ZTDT_VIA_PAD: return TEARDROP_TYPE::TD_VIAPAD;
811 case types::ZoneTeardropType::ZTDT_TRACK_END: return TEARDROP_TYPE::TD_TRACKEND;
812
813 default:
814 wxCHECK_MSG( false, TEARDROP_TYPE::TD_NONE,
815 "Unhandled case in FromProtoEnum<types::ZoneTeardropType>" );
816 }
817}
818
819
820template<>
821kiapi::board::TeardropTarget ToProtoEnum( TARGET_TD aValue )
822{
823 switch( aValue )
824 {
825 case TARGET_ROUND: return kiapi::board::TeardropTarget::TDT_ROUND;
826 case TARGET_RECT: return kiapi::board::TeardropTarget::TDT_RECT;
827 case TARGET_TRACK: return kiapi::board::TeardropTarget::TDT_TRACK;
828
829 default:
830 wxCHECK_MSG( false, kiapi::board::TeardropTarget::TDT_UNKNOWN,
831 "Unhandled case in ToProtoEnum<TARGET_TD>" );
832 }
833}
834
835
836template<>
837TARGET_TD FromProtoEnum( kiapi::board::TeardropTarget aValue )
838{
839 switch( aValue )
840 {
841 case kiapi::board::TeardropTarget::TDT_ROUND: return TARGET_ROUND;
842 case kiapi::board::TeardropTarget::TDT_RECT: return TARGET_RECT;
843 case kiapi::board::TeardropTarget::TDT_TRACK: return TARGET_TRACK;
844
845 case kiapi::board::TeardropTarget::TDT_UNKNOWN:
846 default:
847 return TARGET_UNKNOWN;
848 }
849}
850
851
852template<>
853types::DimensionTextBorderStyle ToProtoEnum( DIM_TEXT_BORDER aValue )
854{
855 switch( aValue )
856 {
857 case DIM_TEXT_BORDER::NONE: return types::DimensionTextBorderStyle::DTBS_NONE;
858 case DIM_TEXT_BORDER::RECTANGLE: return types::DimensionTextBorderStyle::DTBS_RECTANGLE;
859 case DIM_TEXT_BORDER::CIRCLE: return types::DimensionTextBorderStyle::DTBS_CIRCLE;
860 case DIM_TEXT_BORDER::ROUNDRECT: return types::DimensionTextBorderStyle::DTBS_ROUNDRECT;
861
862 default:
863 wxCHECK_MSG( false, types::DimensionTextBorderStyle::DTBS_UNKNOWN,
864 "Unhandled case in ToProtoEnum<DIM_TEXT_BORDER>");
865 }
866}
867
868
869template<>
870DIM_TEXT_BORDER FromProtoEnum( types::DimensionTextBorderStyle aValue )
871{
872 switch( aValue )
873 {
874 case types::DimensionTextBorderStyle::DTBS_UNKNOWN:
875 case types::DimensionTextBorderStyle::DTBS_NONE: return DIM_TEXT_BORDER::NONE;
876 case types::DimensionTextBorderStyle::DTBS_RECTANGLE: return DIM_TEXT_BORDER::RECTANGLE;
877 case types::DimensionTextBorderStyle::DTBS_CIRCLE: return DIM_TEXT_BORDER::CIRCLE;
878 case types::DimensionTextBorderStyle::DTBS_ROUNDRECT: return DIM_TEXT_BORDER::ROUNDRECT;
879
880 default:
881 wxCHECK_MSG( false, DIM_TEXT_BORDER::NONE,
882 "Unhandled case in FromProtoEnum<types::DimensionTextBorderStyle>" );
883 }
884}
885
886
887template<>
888types::DimensionUnitFormat ToProtoEnum( DIM_UNITS_FORMAT aValue )
889{
890 switch( aValue )
891 {
892 case DIM_UNITS_FORMAT::NO_SUFFIX: return types::DimensionUnitFormat::DUF_NO_SUFFIX;
893 case DIM_UNITS_FORMAT::BARE_SUFFIX: return types::DimensionUnitFormat::DUF_BARE_SUFFIX;
894 case DIM_UNITS_FORMAT::PAREN_SUFFIX: return types::DimensionUnitFormat::DUF_PAREN_SUFFIX;
895
896 default:
897 wxCHECK_MSG( false, types::DimensionUnitFormat::DUF_UNKNOWN,
898 "Unhandled case in ToProtoEnum<DIM_UNITS_FORMAT>");
899 }
900}
901
902
903template<>
904DIM_UNITS_FORMAT FromProtoEnum( types::DimensionUnitFormat aValue )
905{
906 switch( aValue )
907 {
908 case types::DimensionUnitFormat::DUF_UNKNOWN:
909 case types::DimensionUnitFormat::DUF_NO_SUFFIX: return DIM_UNITS_FORMAT::NO_SUFFIX;
910 case types::DimensionUnitFormat::DUF_BARE_SUFFIX: return DIM_UNITS_FORMAT::BARE_SUFFIX;
911 case types::DimensionUnitFormat::DUF_PAREN_SUFFIX: return DIM_UNITS_FORMAT::PAREN_SUFFIX;
912
913 default:
914 wxCHECK_MSG( false, DIM_UNITS_FORMAT::NO_SUFFIX,
915 "Unhandled case in FromProtoEnum<types::DimensionUnitFormat>" );
916 }
917}
918
919
920template<>
921types::DimensionArrowDirection ToProtoEnum( DIM_ARROW_DIRECTION aValue )
922{
923 switch( aValue )
924 {
925 case DIM_ARROW_DIRECTION::INWARD: return types::DimensionArrowDirection::DAD_INWARD;
926 case DIM_ARROW_DIRECTION::OUTWARD: return types::DimensionArrowDirection::DAD_OUTWARD;
927
928 default:
929 wxCHECK_MSG( false, types::DimensionArrowDirection::DAD_UNKNOWN,
930 "Unhandled case in ToProtoEnum<DIM_ARROW_DIRECTION>");
931 }
932}
933
934
935template<>
936DIM_ARROW_DIRECTION FromProtoEnum( types::DimensionArrowDirection aValue )
937{
938 switch( aValue )
939 {
940 case types::DimensionArrowDirection::DAD_INWARD: return DIM_ARROW_DIRECTION::INWARD;
941 case types::DimensionArrowDirection::DAD_UNKNOWN:
942 case types::DimensionArrowDirection::DAD_OUTWARD: return DIM_ARROW_DIRECTION::OUTWARD;
943
944 default:
945 wxCHECK_MSG( false, DIM_ARROW_DIRECTION::OUTWARD,
946 "Unhandled case in FromProtoEnum<types::DimensionArrowDirection>" );
947 }
948}
949
950
951template<>
952types::DimensionPrecision ToProtoEnum( DIM_PRECISION aValue )
953{
954 switch( aValue )
955 {
956 case DIM_PRECISION::X: return types::DimensionPrecision::DP_FIXED_0;
957 case DIM_PRECISION::X_X: return types::DimensionPrecision::DP_FIXED_1;
958 case DIM_PRECISION::X_XX: return types::DimensionPrecision::DP_FIXED_2;
959 case DIM_PRECISION::X_XXX: return types::DimensionPrecision::DP_FIXED_3;
960 case DIM_PRECISION::X_XXXX: return types::DimensionPrecision::DP_FIXED_4;
961 case DIM_PRECISION::X_XXXXX: return types::DimensionPrecision::DP_FIXED_5;
962 case DIM_PRECISION::V_VV: return types::DimensionPrecision::DP_SCALED_IN_2;
963 case DIM_PRECISION::V_VVV: return types::DimensionPrecision::DP_SCALED_IN_3;
964 case DIM_PRECISION::V_VVVV: return types::DimensionPrecision::DP_SCALED_IN_4;
965 case DIM_PRECISION::V_VVVVV: return types::DimensionPrecision::DP_SCALED_IN_5;
966
967 default:
968 wxCHECK_MSG( false, types::DimensionPrecision::DP_UNKNOWN,
969 "Unhandled case in ToProtoEnum<DIM_PRECISION>");
970 }
971}
972
973
974template<>
975DIM_PRECISION FromProtoEnum( types::DimensionPrecision aValue )
976{
977 switch( aValue )
978 {
979 case types::DimensionPrecision::DP_FIXED_0: return DIM_PRECISION::X;
980 case types::DimensionPrecision::DP_FIXED_1: return DIM_PRECISION::X_X;
981 case types::DimensionPrecision::DP_FIXED_2: return DIM_PRECISION::X_XX;
982 case types::DimensionPrecision::DP_FIXED_3: return DIM_PRECISION::X_XXX;
983 case types::DimensionPrecision::DP_FIXED_4: return DIM_PRECISION::X_XXXX;
984 case types::DimensionPrecision::DP_FIXED_5: return DIM_PRECISION::X_XXXXX;
985 case types::DimensionPrecision::DP_UNKNOWN:
986 case types::DimensionPrecision::DP_SCALED_IN_2: return DIM_PRECISION::V_VV;
987 case types::DimensionPrecision::DP_SCALED_IN_3: return DIM_PRECISION::V_VVV;
988 case types::DimensionPrecision::DP_SCALED_IN_4: return DIM_PRECISION::V_VVVV;
989 case types::DimensionPrecision::DP_SCALED_IN_5: return DIM_PRECISION::V_VVVVV;
990
991 default:
992 wxCHECK_MSG( false, DIM_PRECISION::V_VV,
993 "Unhandled case in FromProtoEnum<types::DimensionPrecision>" );
994 }
995}
996
997
998template<>
999types::DimensionTextPosition ToProtoEnum( DIM_TEXT_POSITION aValue )
1000{
1001 switch( aValue )
1002 {
1003 case DIM_TEXT_POSITION::OUTSIDE: return types::DimensionTextPosition::DTP_OUTSIDE;
1004 case DIM_TEXT_POSITION::INLINE: return types::DimensionTextPosition::DTP_INLINE;
1005 case DIM_TEXT_POSITION::MANUAL: return types::DimensionTextPosition::DTP_MANUAL;
1006
1007 default:
1008 wxCHECK_MSG( false, types::DimensionTextPosition::DTP_UNKNOWN,
1009 "Unhandled case in ToProtoEnum<DIM_TEXT_POSITION>");
1010 }
1011}
1012
1013
1014template<>
1015DIM_TEXT_POSITION FromProtoEnum( types::DimensionTextPosition aValue )
1016{
1017 switch( aValue )
1018 {
1019 case types::DimensionTextPosition::DTP_UNKNOWN:
1020 case types::DimensionTextPosition::DTP_OUTSIDE: return DIM_TEXT_POSITION::OUTSIDE;
1021 case types::DimensionTextPosition::DTP_INLINE: return DIM_TEXT_POSITION::INLINE;
1022 case types::DimensionTextPosition::DTP_MANUAL: return DIM_TEXT_POSITION::MANUAL;
1023
1024 default:
1025 wxCHECK_MSG( false, DIM_TEXT_POSITION::OUTSIDE,
1026 "Unhandled case in FromProtoEnum<types::DimensionTextPosition>" );
1027 }
1028}
1029
1030
1031template<>
1032types::DimensionUnit ToProtoEnum( DIM_UNITS_MODE aValue )
1033{
1034 switch( aValue )
1035 {
1036 case DIM_UNITS_MODE::INCH: return types::DimensionUnit::DU_INCHES;
1037 case DIM_UNITS_MODE::MILS: return types::DimensionUnit::DU_MILS;
1038 case DIM_UNITS_MODE::MM: return types::DimensionUnit::DU_MILLIMETERS;
1039 case DIM_UNITS_MODE::AUTOMATIC: return types::DimensionUnit::DU_AUTOMATIC;
1040
1041 default:
1042 wxCHECK_MSG( false, types::DimensionUnit::DU_UNKNOWN,
1043 "Unhandled case in ToProtoEnum<DIM_UNITS_MODE>");
1044 }
1045}
1046
1047
1048template<>
1049DIM_UNITS_MODE FromProtoEnum( types::DimensionUnit aValue )
1050{
1051 switch( aValue )
1052 {
1053 case types::DimensionUnit::DU_INCHES: return DIM_UNITS_MODE::INCH;
1054 case types::DimensionUnit::DU_MILS: return DIM_UNITS_MODE::MILS;
1055 case types::DimensionUnit::DU_MILLIMETERS: return DIM_UNITS_MODE::MM;
1056 case types::DimensionUnit::DU_UNKNOWN:
1057 case types::DimensionUnit::DU_AUTOMATIC: return DIM_UNITS_MODE::AUTOMATIC;
1058
1059 default:
1060 wxCHECK_MSG( false, DIM_UNITS_MODE::AUTOMATIC,
1061 "Unhandled case in FromProtoEnum<types::DimensionUnit>" );
1062 }
1063}
1064
1065
1066template<>
1067commands::InactiveLayerDisplayMode ToProtoEnum( HIGH_CONTRAST_MODE aValue )
1068{
1069 switch( aValue )
1070 {
1071 case HIGH_CONTRAST_MODE::NORMAL: return commands::InactiveLayerDisplayMode::ILDM_NORMAL;
1072 case HIGH_CONTRAST_MODE::DIMMED: return commands::InactiveLayerDisplayMode::ILDM_DIMMED;
1073 case HIGH_CONTRAST_MODE::HIDDEN: return commands::InactiveLayerDisplayMode::ILDM_HIDDEN;
1074
1075 default:
1076 wxCHECK_MSG( false, commands::InactiveLayerDisplayMode::ILDM_NORMAL,
1077 "Unhandled case in ToProtoEnum<HIGH_CONTRAST_MODE>");
1078 }
1079}
1080
1081
1082template<>
1083HIGH_CONTRAST_MODE FromProtoEnum( commands::InactiveLayerDisplayMode aValue )
1084{
1085 switch( aValue )
1086 {
1087 case commands::InactiveLayerDisplayMode::ILDM_DIMMED: return HIGH_CONTRAST_MODE::DIMMED;
1088 case commands::InactiveLayerDisplayMode::ILDM_HIDDEN: return HIGH_CONTRAST_MODE::HIDDEN;
1089 case commands::InactiveLayerDisplayMode::ILDM_UNKNOWN:
1090 case commands::InactiveLayerDisplayMode::ILDM_NORMAL: return HIGH_CONTRAST_MODE::NORMAL;
1091
1092 default:
1093 wxCHECK_MSG( false, HIGH_CONTRAST_MODE::NORMAL,
1094 "Unhandled case in FromProtoEnum<commands::InactiveLayerDisplayMode>" );
1095 }
1096}
1097
1098
1099template<>
1100commands::NetColorDisplayMode ToProtoEnum( NET_COLOR_MODE aValue )
1101{
1102 switch( aValue )
1103 {
1104 case NET_COLOR_MODE::ALL: return commands::NetColorDisplayMode::NCDM_ALL;
1105 case NET_COLOR_MODE::RATSNEST: return commands::NetColorDisplayMode::NCDM_RATSNEST;
1106 case NET_COLOR_MODE::OFF: return commands::NetColorDisplayMode::NCDM_OFF;
1107
1108 default:
1109 wxCHECK_MSG( false, commands::NetColorDisplayMode::NCDM_UNKNOWN,
1110 "Unhandled case in ToProtoEnum<NET_COLOR_MODE>");
1111 }
1112}
1113
1114
1115template<>
1116NET_COLOR_MODE FromProtoEnum( commands::NetColorDisplayMode aValue )
1117{
1118 switch( aValue )
1119 {
1120 case commands::NetColorDisplayMode::NCDM_ALL: return NET_COLOR_MODE::ALL;
1121 case commands::NetColorDisplayMode::NCDM_OFF: return NET_COLOR_MODE::OFF;
1122 case commands::NetColorDisplayMode::NCDM_UNKNOWN:
1123 case commands::NetColorDisplayMode::NCDM_RATSNEST: return NET_COLOR_MODE::RATSNEST;
1124
1125 default:
1126 wxCHECK_MSG( false, NET_COLOR_MODE::RATSNEST,
1127 "Unhandled case in FromProtoEnum<commands::NetColorDisplayMode>" );
1128 }
1129}
1130
1131
1132template<>
1133commands::RatsnestDisplayMode ToProtoEnum( RATSNEST_MODE aValue )
1134{
1135 switch( aValue )
1136 {
1137 case RATSNEST_MODE::ALL: return commands::RatsnestDisplayMode::RDM_ALL_LAYERS;
1138 case RATSNEST_MODE::VISIBLE: return commands::RatsnestDisplayMode::RDM_VISIBLE_LAYERS;
1139
1140 default:
1141 wxCHECK_MSG( false, commands::RatsnestDisplayMode::RDM_UNKNOWN,
1142 "Unhandled case in ToProtoEnum<RATSNEST_MODE>");
1143 }
1144}
1145
1146
1147template<>
1148RATSNEST_MODE FromProtoEnum( commands::RatsnestDisplayMode aValue )
1149{
1150 switch( aValue )
1151 {
1152 case commands::RatsnestDisplayMode::RDM_VISIBLE_LAYERS: return RATSNEST_MODE::VISIBLE;
1153 case commands::RatsnestDisplayMode::RDM_UNKNOWN:
1154 case commands::RatsnestDisplayMode::RDM_ALL_LAYERS: return RATSNEST_MODE::ALL;
1155
1156 default:
1157 wxCHECK_MSG( false, RATSNEST_MODE::ALL,
1158 "Unhandled case in FromProtoEnum<commands::RatsnestDisplayMode>" );
1159 }
1160}
1161
1162
1163template<>
1164BoardStackupLayerType ToProtoEnum( BOARD_STACKUP_ITEM_TYPE aValue )
1165{
1166 switch( aValue )
1167 {
1168 case BS_ITEM_TYPE_UNDEFINED: return BoardStackupLayerType::BSLT_UNDEFINED;
1169 case BS_ITEM_TYPE_COPPER: return BoardStackupLayerType::BSLT_COPPER;
1170 case BS_ITEM_TYPE_DIELECTRIC: return BoardStackupLayerType::BSLT_DIELECTRIC;
1171 case BS_ITEM_TYPE_SOLDERPASTE: return BoardStackupLayerType::BSLT_SOLDERPASTE;
1172 case BS_ITEM_TYPE_SOLDERMASK: return BoardStackupLayerType::BSLT_SOLDERMASK;
1173 case BS_ITEM_TYPE_SILKSCREEN: return BoardStackupLayerType::BSLT_SILKSCREEN;
1174
1175 default:
1176 wxCHECK_MSG( false, BoardStackupLayerType::BSLT_UNKNOWN,
1177 "Unhandled case in ToProtoEnum<BOARD_STACKUP_ITEM_TYPE>");
1178 }
1179}
1180
1181
1182template<>
1183BOARD_STACKUP_ITEM_TYPE FromProtoEnum( BoardStackupLayerType aValue )
1184{
1185 switch( aValue )
1186 {
1187 case BoardStackupLayerType::BSLT_UNDEFINED: return BS_ITEM_TYPE_UNDEFINED;
1188 case BoardStackupLayerType::BSLT_COPPER: return BS_ITEM_TYPE_COPPER;
1189 case BoardStackupLayerType::BSLT_DIELECTRIC: return BS_ITEM_TYPE_DIELECTRIC;
1190 case BoardStackupLayerType::BSLT_SOLDERPASTE: return BS_ITEM_TYPE_SOLDERPASTE;
1191 case BoardStackupLayerType::BSLT_SOLDERMASK: return BS_ITEM_TYPE_SOLDERMASK;
1192 case BoardStackupLayerType::BSLT_SILKSCREEN: return BS_ITEM_TYPE_SILKSCREEN;
1193
1194 default:
1195 wxCHECK_MSG( false, BS_ITEM_TYPE_UNDEFINED,
1196 "Unhandled case in FromProtoEnum<BoardStackupLayerType>" );
1197 }
1198}
1199
1200
1201template<>
1202DielectricModel ToProtoEnum( DIELECTRIC_MODEL aValue )
1203{
1204 switch( aValue )
1205 {
1206 case DIELECTRIC_MODEL::CONSTANT: return DielectricModel::DM_CONSTANT;
1207 case DIELECTRIC_MODEL::DJORDJEVIC_SARKAR: return DielectricModel::DM_DJORDJEVIC_SARKAR;
1208
1209 default:
1210 wxCHECK_MSG( false, DielectricModel::DM_UNKNOWN,
1211 "Unhandled case in ToProtoEnum<DIELECTRIC_MODEL>" );
1212 }
1213}
1214
1215
1216template<>
1217DIELECTRIC_MODEL FromProtoEnum( DielectricModel aValue )
1218{
1219 switch( aValue )
1220 {
1221 case DielectricModel::DM_CONSTANT: return DIELECTRIC_MODEL::CONSTANT;
1222 case DielectricModel::DM_DJORDJEVIC_SARKAR: return DIELECTRIC_MODEL::DJORDJEVIC_SARKAR;
1223
1224 default:
1225 wxCHECK_MSG( false, DIELECTRIC_MODEL::CONSTANT,
1226 "Unhandled case in FromProtoEnum<DielectricModel>" );
1227 }
1228}
1229
1230
1231template<>
1232BoardEdgeConnectorType ToProtoEnum( BS_EDGE_CONNECTOR_CONSTRAINTS aValue )
1233{
1234 switch( aValue )
1235 {
1236 case BS_EDGE_CONNECTOR_NONE: return BoardEdgeConnectorType::BECT_NONE;
1237 case BS_EDGE_CONNECTOR_IN_USE: return BoardEdgeConnectorType::BECT_PLAIN;
1238 case BS_EDGE_CONNECTOR_BEVELLED: return BoardEdgeConnectorType::BECT_BEVELED;
1239
1240 default:
1241 wxCHECK_MSG( false, BoardEdgeConnectorType::BECT_UNKNOWN,
1242 "Unhandled case in ToProtoEnum<BS_EDGE_CONNECTOR_CONSTRAINTS>" );
1243 }
1244}
1245
1246
1247template<>
1248BS_EDGE_CONNECTOR_CONSTRAINTS FromProtoEnum( BoardEdgeConnectorType aValue )
1249{
1250 switch( aValue )
1251 {
1252 case BoardEdgeConnectorType::BECT_NONE: return BS_EDGE_CONNECTOR_NONE;
1253 case BoardEdgeConnectorType::BECT_PLAIN: return BS_EDGE_CONNECTOR_IN_USE;
1254 case BoardEdgeConnectorType::BECT_BEVELED: return BS_EDGE_CONNECTOR_BEVELLED;
1255
1256 default:
1257 wxCHECK_MSG( false, BS_EDGE_CONNECTOR_NONE,
1258 "Unhandled case in FromProtoEnum<BoardEdgeConnectorType>" );
1259 }
1260}
1261
1262
1263template<>
1264DrcSeverity ToProtoEnum( SEVERITY aValue )
1265{
1266 switch( aValue )
1267 {
1268 case RPT_SEVERITY_WARNING: return DrcSeverity::DRS_WARNING;
1269 case RPT_SEVERITY_ERROR: return DrcSeverity::DRS_ERROR;
1270 case RPT_SEVERITY_EXCLUSION: return DrcSeverity::DRS_EXCLUSION;
1271 case RPT_SEVERITY_IGNORE: return DrcSeverity::DRS_IGNORE;
1272 case RPT_SEVERITY_INFO: return DrcSeverity::DRS_INFO;
1273 case RPT_SEVERITY_ACTION: return DrcSeverity::DRS_ACTION;
1274 case RPT_SEVERITY_DEBUG: return DrcSeverity::DRS_DEBUG;
1275 case RPT_SEVERITY_UNDEFINED: return DrcSeverity::DRS_UNDEFINED;
1276 default:
1277 wxCHECK_MSG( false, DrcSeverity::DRS_UNDEFINED,
1278 "Unhandled case in ToProtoEnum<SEVERITY>");
1279 }
1280}
1281
1282
1283template<>
1284SEVERITY FromProtoEnum( DrcSeverity aValue )
1285{
1286 switch( aValue )
1287 {
1288 case DrcSeverity::DRS_WARNING: return RPT_SEVERITY_WARNING;
1289 case DrcSeverity::DRS_ERROR: return RPT_SEVERITY_ERROR;
1290 case DrcSeverity::DRS_EXCLUSION: return RPT_SEVERITY_EXCLUSION;
1291 case DrcSeverity::DRS_IGNORE: return RPT_SEVERITY_IGNORE;
1292 case DrcSeverity::DRS_INFO: return RPT_SEVERITY_INFO;
1293 case DrcSeverity::DRS_ACTION: return RPT_SEVERITY_ACTION;
1294 case DrcSeverity::DRS_DEBUG: return RPT_SEVERITY_DEBUG;
1295 case DrcSeverity::DRS_UNKNOWN:
1296 default:
1298 }
1299}
1300
1301
1302template<>
1303PlotDrillMarks ToProtoEnum( DRILL_MARKS aValue )
1304{
1305 switch( aValue )
1306 {
1307 case DRILL_MARKS::NO_DRILL_SHAPE: return PlotDrillMarks::PDM_NONE;
1308 case DRILL_MARKS::SMALL_DRILL_SHAPE: return PlotDrillMarks::PDM_SMALL;
1309 case DRILL_MARKS::FULL_DRILL_SHAPE: return PlotDrillMarks::PDM_FULL;
1310 default:
1311 wxCHECK_MSG( false, PlotDrillMarks::PDM_UNKNOWN,
1312 "Unhandled case in ToProtoEnum<DRILL_MARKS>" );
1313 }
1314}
1315
1316
1317template<>
1318DRILL_MARKS FromProtoEnum( PlotDrillMarks aValue )
1319{
1320 switch( aValue )
1321 {
1322 case PlotDrillMarks::PDM_NONE: return DRILL_MARKS::NO_DRILL_SHAPE;
1323 case PlotDrillMarks::PDM_SMALL: return DRILL_MARKS::SMALL_DRILL_SHAPE;
1324 case PlotDrillMarks::PDM_FULL: return DRILL_MARKS::FULL_DRILL_SHAPE;
1325 case PlotDrillMarks::PDM_UNKNOWN:
1326 default:
1328 }
1329}
1330
1331
1332template<>
1334{
1335 switch( aValue )
1336 {
1337 case JOB_EXPORT_PCB_3D::FORMAT::STEP: return Board3DFormat::B3D_STEP;
1338 case JOB_EXPORT_PCB_3D::FORMAT::STEPZ: return Board3DFormat::B3D_STEPZ;
1339 case JOB_EXPORT_PCB_3D::FORMAT::BREP: return Board3DFormat::B3D_BREP;
1340 case JOB_EXPORT_PCB_3D::FORMAT::XAO: return Board3DFormat::B3D_XAO;
1341 case JOB_EXPORT_PCB_3D::FORMAT::GLB: return Board3DFormat::B3D_GLB;
1342 case JOB_EXPORT_PCB_3D::FORMAT::VRML: return Board3DFormat::B3D_VRML;
1343 case JOB_EXPORT_PCB_3D::FORMAT::PLY: return Board3DFormat::B3D_PLY;
1344 case JOB_EXPORT_PCB_3D::FORMAT::STL: return Board3DFormat::B3D_STL;
1345 case JOB_EXPORT_PCB_3D::FORMAT::U3D: return Board3DFormat::B3D_U3D;
1346 case JOB_EXPORT_PCB_3D::FORMAT::PDF: return Board3DFormat::B3D_PDF;
1347 default:
1348 wxCHECK_MSG( false, Board3DFormat::B3D_UNKNOWN,
1349 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_3D::FORMAT>" );
1350 }
1351}
1352
1353
1354template<>
1356{
1357 switch( aValue )
1358 {
1359 case Board3DFormat::B3D_STEP: return JOB_EXPORT_PCB_3D::FORMAT::STEP;
1360 case Board3DFormat::B3D_STEPZ: return JOB_EXPORT_PCB_3D::FORMAT::STEPZ;
1361 case Board3DFormat::B3D_BREP: return JOB_EXPORT_PCB_3D::FORMAT::BREP;
1362 case Board3DFormat::B3D_XAO: return JOB_EXPORT_PCB_3D::FORMAT::XAO;
1363 case Board3DFormat::B3D_GLB: return JOB_EXPORT_PCB_3D::FORMAT::GLB;
1364 case Board3DFormat::B3D_VRML: return JOB_EXPORT_PCB_3D::FORMAT::VRML;
1365 case Board3DFormat::B3D_PLY: return JOB_EXPORT_PCB_3D::FORMAT::PLY;
1366 case Board3DFormat::B3D_STL: return JOB_EXPORT_PCB_3D::FORMAT::STL;
1367 case Board3DFormat::B3D_U3D: return JOB_EXPORT_PCB_3D::FORMAT::U3D;
1368 case Board3DFormat::B3D_PDF: return JOB_EXPORT_PCB_3D::FORMAT::PDF;
1369 case Board3DFormat::B3D_UNKNOWN:
1370 default:
1372 }
1373}
1374
1375
1376template<>
1377kiapi::common::types::Units ToProtoEnum( JOB_EXPORT_PCB_3D::VRML_UNITS aValue )
1378{
1379 switch( aValue )
1380 {
1381 case JOB_EXPORT_PCB_3D::VRML_UNITS::INCH: return kiapi::common::types::Units::U_INCH;
1382 case JOB_EXPORT_PCB_3D::VRML_UNITS::MM: return kiapi::common::types::Units::U_MM;
1383 case JOB_EXPORT_PCB_3D::VRML_UNITS::METERS: return kiapi::common::types::Units::U_METERS;
1384 case JOB_EXPORT_PCB_3D::VRML_UNITS::TENTHS: return kiapi::common::types::Units::U_TENTHS;
1385 default:
1386 wxCHECK_MSG( false, kiapi::common::types::Units::U_UNKNOWN,
1387 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_3D::VRML_UNITS>" );
1388 }
1389}
1390
1391
1392template<>
1393JOB_EXPORT_PCB_3D::VRML_UNITS FromProtoEnum( kiapi::common::types::Units aValue )
1394{
1395 switch( aValue )
1396 {
1397 case kiapi::common::types::Units::U_INCH: return JOB_EXPORT_PCB_3D::VRML_UNITS::INCH;
1398 case kiapi::common::types::Units::U_MM: return JOB_EXPORT_PCB_3D::VRML_UNITS::MM;
1399 case kiapi::common::types::Units::U_METERS: return JOB_EXPORT_PCB_3D::VRML_UNITS::METERS;
1400 case kiapi::common::types::Units::U_TENTHS: return JOB_EXPORT_PCB_3D::VRML_UNITS::TENTHS;
1401 case kiapi::common::types::Units::U_UNKNOWN:
1402 default:
1404 }
1405}
1406
1407
1408template<>
1410{
1411 switch( aValue )
1412 {
1413 case JOB_PCB_RENDER::FORMAT::PNG: return RenderFormat::RF_PNG;
1414 case JOB_PCB_RENDER::FORMAT::JPEG: return RenderFormat::RF_JPEG;
1415 default:
1416 wxCHECK_MSG( false, RenderFormat::RF_UNKNOWN,
1417 "Unhandled case in ToProtoEnum<JOB_PCB_RENDER::FORMAT>" );
1418 }
1419}
1420
1421
1422template<>
1424{
1425 switch( aValue )
1426 {
1427 case RenderFormat::RF_PNG: return JOB_PCB_RENDER::FORMAT::PNG;
1428 case RenderFormat::RF_JPEG:return JOB_PCB_RENDER::FORMAT::JPEG;
1429 case RenderFormat::RF_UNKNOWN:
1430 default:
1432 }
1433}
1434
1435
1436template<>
1438{
1439 switch( aValue )
1440 {
1441 case JOB_PCB_RENDER::QUALITY::BASIC: return RenderQuality::RQ_BASIC;
1442 case JOB_PCB_RENDER::QUALITY::HIGH: return RenderQuality::RQ_HIGH;
1443 case JOB_PCB_RENDER::QUALITY::USER: return RenderQuality::RQ_USER;
1444 case JOB_PCB_RENDER::QUALITY::JOB_SETTINGS: return RenderQuality::RQ_JOB_SETTINGS;
1445 default:
1446 wxCHECK_MSG( false, RenderQuality::RQ_UNKNOWN,
1447 "Unhandled case in ToProtoEnum<JOB_PCB_RENDER::QUALITY>" );
1448 }
1449}
1450
1451
1452template<>
1454{
1455 switch( aValue )
1456 {
1457 case RenderQuality::RQ_BASIC: return JOB_PCB_RENDER::QUALITY::BASIC;
1458 case RenderQuality::RQ_HIGH: return JOB_PCB_RENDER::QUALITY::HIGH;
1459 case RenderQuality::RQ_USER: return JOB_PCB_RENDER::QUALITY::USER;
1460 case RenderQuality::RQ_JOB_SETTINGS: return JOB_PCB_RENDER::QUALITY::JOB_SETTINGS;
1461 case RenderQuality::RQ_UNKNOWN:
1462 default:
1464 }
1465}
1466
1467
1468template<>
1469RenderBackgroundStyle ToProtoEnum( JOB_PCB_RENDER::BG_STYLE aValue )
1470{
1471 switch( aValue )
1472 {
1473 case JOB_PCB_RENDER::BG_STYLE::DEFAULT: return RenderBackgroundStyle::RBS_DEFAULT;
1474 case JOB_PCB_RENDER::BG_STYLE::TRANSPARENT: return RenderBackgroundStyle::RBS_TRANSPARENT;
1475 case JOB_PCB_RENDER::BG_STYLE::OPAQUE: return RenderBackgroundStyle::RBS_OPAQUE;
1476 default:
1477 wxCHECK_MSG( false, RenderBackgroundStyle::RBS_UNKNOWN,
1478 "Unhandled case in ToProtoEnum<JOB_PCB_RENDER::BG_STYLE>" );
1479 }
1480}
1481
1482
1483template<>
1484JOB_PCB_RENDER::BG_STYLE FromProtoEnum( RenderBackgroundStyle aValue )
1485{
1486 switch( aValue )
1487 {
1488 case RenderBackgroundStyle::RBS_DEFAULT: return JOB_PCB_RENDER::BG_STYLE::DEFAULT;
1489 case RenderBackgroundStyle::RBS_TRANSPARENT: return JOB_PCB_RENDER::BG_STYLE::TRANSPARENT;
1490 case RenderBackgroundStyle::RBS_OPAQUE: return JOB_PCB_RENDER::BG_STYLE::OPAQUE;
1491 case RenderBackgroundStyle::RBS_UNKNOWN:
1492 default:
1494 }
1495}
1496
1497
1498template<>
1500{
1501 switch( aValue )
1502 {
1503 case JOB_PCB_RENDER::SIDE::TOP: return RenderSide::RS_TOP;
1504 case JOB_PCB_RENDER::SIDE::BOTTOM: return RenderSide::RS_BOTTOM;
1505 case JOB_PCB_RENDER::SIDE::LEFT: return RenderSide::RS_LEFT;
1506 case JOB_PCB_RENDER::SIDE::RIGHT: return RenderSide::RS_RIGHT;
1507 case JOB_PCB_RENDER::SIDE::FRONT: return RenderSide::RS_FRONT;
1508 case JOB_PCB_RENDER::SIDE::BACK: return RenderSide::RS_BACK;
1509 default:
1510 wxCHECK_MSG( false, RenderSide::RS_UNKNOWN,
1511 "Unhandled case in ToProtoEnum<JOB_PCB_RENDER::SIDE>" );
1512 }
1513}
1514
1515
1516template<>
1518{
1519 switch( aValue )
1520 {
1521 case RenderSide::RS_TOP: return JOB_PCB_RENDER::SIDE::TOP;
1522 case RenderSide::RS_BOTTOM: return JOB_PCB_RENDER::SIDE::BOTTOM;
1523 case RenderSide::RS_LEFT: return JOB_PCB_RENDER::SIDE::LEFT;
1524 case RenderSide::RS_RIGHT: return JOB_PCB_RENDER::SIDE::RIGHT;
1525 case RenderSide::RS_FRONT: return JOB_PCB_RENDER::SIDE::FRONT;
1526 case RenderSide::RS_BACK: return JOB_PCB_RENDER::SIDE::BACK;
1527 case RenderSide::RS_UNKNOWN:
1528 default:
1530 }
1531}
1532
1533
1534template<>
1535BoardJobPaginationMode ToProtoEnum( JOB_EXPORT_PCB_SVG::GEN_MODE aValue )
1536{
1537 switch( aValue )
1538 {
1539 case JOB_EXPORT_PCB_SVG::GEN_MODE::SINGLE: return BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE;
1540 case JOB_EXPORT_PCB_SVG::GEN_MODE::MULTI: return BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE;
1541 default:
1542 wxCHECK_MSG( false, BoardJobPaginationMode::BJPM_UNKNOWN,
1543 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_SVG::GEN_MODE>" );
1544 }
1545}
1546
1547
1548template<>
1549JOB_EXPORT_PCB_SVG::GEN_MODE FromProtoEnum( BoardJobPaginationMode aValue )
1550{
1551 switch( aValue )
1552 {
1553 case BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE:
1555 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE:
1557 case BoardJobPaginationMode::BJPM_UNKNOWN:
1558 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_PAGE:
1559 default:
1561 }
1562}
1563
1564
1565template<>
1566BoardJobPaginationMode ToProtoEnum( JOB_EXPORT_PCB_DXF::GEN_MODE aValue )
1567{
1568 switch( aValue )
1569 {
1570 case JOB_EXPORT_PCB_DXF::GEN_MODE::SINGLE: return BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE;
1571 case JOB_EXPORT_PCB_DXF::GEN_MODE::MULTI: return BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE;
1572 default:
1573 wxCHECK_MSG( false, BoardJobPaginationMode::BJPM_UNKNOWN,
1574 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_DXF::GEN_MODE>" );
1575 }
1576}
1577
1578
1579template<>
1580JOB_EXPORT_PCB_DXF::GEN_MODE FromProtoEnum( BoardJobPaginationMode aValue )
1581{
1582 switch( aValue )
1583 {
1584 case BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE:
1586 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE:
1588 case BoardJobPaginationMode::BJPM_UNKNOWN:
1589 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_PAGE:
1590 default:
1592 }
1593}
1594
1595
1596template<>
1597BoardJobPaginationMode ToProtoEnum( JOB_EXPORT_PCB_PDF::GEN_MODE aValue )
1598{
1599 switch( aValue )
1600 {
1602 return BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE;
1604 return BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_PAGE;
1606 return BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE;
1607 default:
1608 wxCHECK_MSG( false, BoardJobPaginationMode::BJPM_UNKNOWN,
1609 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_PDF::GEN_MODE>" );
1610 }
1611}
1612
1613
1614template<>
1615JOB_EXPORT_PCB_PDF::GEN_MODE FromProtoEnum( BoardJobPaginationMode aValue )
1616{
1617 switch( aValue )
1618 {
1619 case BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE:
1621 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_PAGE:
1623 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE:
1625 case BoardJobPaginationMode::BJPM_UNKNOWN:
1626 default:
1628 }
1629}
1630
1631
1632template<>
1633BoardJobPaginationMode ToProtoEnum( JOB_EXPORT_PCB_PS::GEN_MODE aValue )
1634{
1635 switch( aValue )
1636 {
1637 case JOB_EXPORT_PCB_PS::GEN_MODE::SINGLE: return BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE;
1638 case JOB_EXPORT_PCB_PS::GEN_MODE::MULTI: return BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE;
1639 default:
1640 wxCHECK_MSG( false, BoardJobPaginationMode::BJPM_UNKNOWN,
1641 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_PS::GEN_MODE>" );
1642 }
1643}
1644
1645
1646template<>
1647JOB_EXPORT_PCB_PS::GEN_MODE FromProtoEnum( BoardJobPaginationMode aValue )
1648{
1649 switch( aValue )
1650 {
1651 case BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE:
1653 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE:
1655 case BoardJobPaginationMode::BJPM_UNKNOWN:
1656 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_PAGE:
1657 default:
1659 }
1660}
1661
1662
1663template<>
1664BoardJobPaginationMode ToProtoEnum( JOB_EXPORT_PCB_PNG::GEN_MODE aValue )
1665{
1666 switch( aValue )
1667 {
1668 case JOB_EXPORT_PCB_PNG::GEN_MODE::SINGLE: return BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE;
1669 case JOB_EXPORT_PCB_PNG::GEN_MODE::MULTI: return BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE;
1670 default:
1671 wxCHECK_MSG( false, BoardJobPaginationMode::BJPM_UNKNOWN,
1672 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_PNG::GEN_MODE>" );
1673 }
1674}
1675
1676
1677template<>
1678JOB_EXPORT_PCB_PNG::GEN_MODE FromProtoEnum( BoardJobPaginationMode aValue )
1679{
1680 switch( aValue )
1681 {
1682 case BoardJobPaginationMode::BJPM_ALL_LAYERS_ONE_PAGE:
1684 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_FILE:
1686 case BoardJobPaginationMode::BJPM_UNKNOWN:
1687 case BoardJobPaginationMode::BJPM_EACH_LAYER_OWN_PAGE:
1688 default:
1690 }
1691}
1692
1693
1694template<>
1696{
1697 switch( aValue )
1698 {
1699 case JOB_EXPORT_PCB_DRILL::DRILL_FORMAT::EXCELLON: return DrillFormat::DF_EXCELLON;
1700 case JOB_EXPORT_PCB_DRILL::DRILL_FORMAT::GERBER: return DrillFormat::DF_GERBER;
1701 default:
1702 wxCHECK_MSG( false, DrillFormat::DF_UNKNOWN,
1703 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_DRILL::DRILL_FORMAT>" );
1704 }
1705}
1706
1707
1708template<>
1710{
1711 switch( aValue )
1712 {
1713 case DrillFormat::DF_EXCELLON: return JOB_EXPORT_PCB_DRILL::DRILL_FORMAT::EXCELLON;
1714 case DrillFormat::DF_GERBER: return JOB_EXPORT_PCB_DRILL::DRILL_FORMAT::GERBER;
1715 case DrillFormat::DF_UNKNOWN:
1716 default:
1718 }
1719}
1720
1721
1722template<>
1724{
1725 switch( aValue )
1726 {
1727 case JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN::ABS: return DrillOrigin::DO_ABSOLUTE;
1728 case JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN::PLOT: return DrillOrigin::DO_PLOT;
1729 default:
1730 wxCHECK_MSG( false, DrillOrigin::DO_UNKNOWN,
1731 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN>" );
1732 }
1733}
1734
1735
1736template<>
1738{
1739 switch( aValue )
1740 {
1741 case DrillOrigin::DO_ABSOLUTE: return JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN::ABS;
1742 case DrillOrigin::DO_PLOT: return JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN::PLOT;
1743 case DrillOrigin::DO_UNKNOWN:
1744 default:
1746 }
1747}
1748
1749
1750template<>
1752{
1753 switch( aValue )
1754 {
1756 return DrillZerosFormat::DZF_DECIMAL;
1758 return DrillZerosFormat::DZF_SUPPRESS_LEADING;
1760 return DrillZerosFormat::DZF_SUPPRESS_TRAILING;
1762 return DrillZerosFormat::DZF_KEEP_ZEROS;
1763 default:
1764 wxCHECK_MSG( false, DrillZerosFormat::DZF_UNKNOWN,
1765 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_DRILL::ZEROS_FORMAT>" );
1766 }
1767}
1768
1769
1770template<>
1772{
1773 switch( aValue )
1774 {
1775 case DrillZerosFormat::DZF_DECIMAL:
1777 case DrillZerosFormat::DZF_SUPPRESS_LEADING:
1779 case DrillZerosFormat::DZF_SUPPRESS_TRAILING:
1781 case DrillZerosFormat::DZF_KEEP_ZEROS:
1783 case DrillZerosFormat::DZF_UNKNOWN:
1784 default:
1786 }
1787}
1788
1789
1790template<>
1792{
1793 switch( aValue )
1794 {
1796 return DrillMapFormat::DMF_POSTSCRIPT;
1798 return DrillMapFormat::DMF_GERBER_X2;
1800 return DrillMapFormat::DMF_DXF;
1802 return DrillMapFormat::DMF_SVG;
1804 return DrillMapFormat::DMF_PDF;
1805 default:
1806 wxCHECK_MSG( false, DrillMapFormat::DMF_UNKNOWN,
1807 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_DRILL::MAP_FORMAT>" );
1808 }
1809}
1810
1811
1812template<>
1814{
1815 switch( aValue )
1816 {
1817 case DrillMapFormat::DMF_POSTSCRIPT:
1819 case DrillMapFormat::DMF_GERBER_X2:
1821 case DrillMapFormat::DMF_DXF:
1823 case DrillMapFormat::DMF_SVG:
1825 case DrillMapFormat::DMF_PDF:
1827 case DrillMapFormat::DMF_UNKNOWN:
1828 default:
1830 }
1831}
1832
1833
1834template<>
1835kiapi::common::types::Units ToProtoEnum( JOB_EXPORT_PCB_DRILL::DRILL_UNITS aValue )
1836{
1837 switch( aValue )
1838 {
1839 case JOB_EXPORT_PCB_DRILL::DRILL_UNITS::INCH: return kiapi::common::types::Units::U_INCH;
1840 case JOB_EXPORT_PCB_DRILL::DRILL_UNITS::MM: return kiapi::common::types::Units::U_MM;
1841 default:
1842 wxCHECK_MSG( false, kiapi::common::types::Units::U_UNKNOWN,
1843 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_DRILL::DRILL_UNITS>" );
1844 }
1845}
1846
1847
1848template<>
1849JOB_EXPORT_PCB_DRILL::DRILL_UNITS FromProtoEnum( kiapi::common::types::Units aValue )
1850{
1851 switch( aValue )
1852 {
1853 case kiapi::common::types::Units::U_INCH: return JOB_EXPORT_PCB_DRILL::DRILL_UNITS::INCH;
1854 case kiapi::common::types::Units::U_MM: return JOB_EXPORT_PCB_DRILL::DRILL_UNITS::MM;
1855 case kiapi::common::types::Units::U_UNKNOWN:
1856 case kiapi::common::types::Units::U_METERS:
1857 case kiapi::common::types::Units::U_TENTHS:
1858 default:
1860 }
1861}
1862
1863
1864template<>
1866{
1867 switch( aValue )
1868 {
1869 case JOB_EXPORT_PCB_POS::SIDE::FRONT: return PositionSide::PS_FRONT;
1870 case JOB_EXPORT_PCB_POS::SIDE::BACK: return PositionSide::PS_BACK;
1871 case JOB_EXPORT_PCB_POS::SIDE::BOTH: return PositionSide::PS_BOTH;
1872 default:
1873 wxCHECK_MSG( false, PositionSide::PS_UNKNOWN,
1874 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_POS::SIDE>" );
1875 }
1876}
1877
1878
1879template<>
1881{
1882 switch( aValue )
1883 {
1884 case PositionSide::PS_FRONT: return JOB_EXPORT_PCB_POS::SIDE::FRONT;
1885 case PositionSide::PS_BACK: return JOB_EXPORT_PCB_POS::SIDE::BACK;
1886 case PositionSide::PS_BOTH: return JOB_EXPORT_PCB_POS::SIDE::BOTH;
1887 case PositionSide::PS_UNKNOWN:
1888 default:
1890 }
1891}
1892
1893
1894template<>
1896{
1897 switch( aValue )
1898 {
1899 case JOB_EXPORT_PCB_POS::FORMAT::ASCII: return PositionFormat::PF_ASCII;
1900 case JOB_EXPORT_PCB_POS::FORMAT::CSV: return PositionFormat::PF_CSV;
1901 case JOB_EXPORT_PCB_POS::FORMAT::GERBER: return PositionFormat::PF_GERBER;
1902 default:
1903 wxCHECK_MSG( false, PositionFormat::PF_UNKNOWN,
1904 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_POS::FORMAT>" );
1905 }
1906}
1907
1908
1909template<>
1911{
1912 switch( aValue )
1913 {
1914 case PositionFormat::PF_ASCII: return JOB_EXPORT_PCB_POS::FORMAT::ASCII;
1915 case PositionFormat::PF_CSV: return JOB_EXPORT_PCB_POS::FORMAT::CSV;
1916 case PositionFormat::PF_GERBER: return JOB_EXPORT_PCB_POS::FORMAT::GERBER;
1917 case PositionFormat::PF_UNKNOWN:
1918 default:
1920 }
1921}
1922
1923
1924template<>
1926{
1927 switch( aValue )
1928 {
1929 case JOB_EXPORT_PCB_IPC2581::IPC2581_VERSION::B: return Ipc2581Version::IPC2581V_B;
1930 case JOB_EXPORT_PCB_IPC2581::IPC2581_VERSION::C: return Ipc2581Version::IPC2581V_C;
1931 default:
1932 wxCHECK_MSG( false, Ipc2581Version::IPC2581V_UNKNOWN,
1933 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_IPC2581::IPC2581_VERSION>" );
1934 }
1935}
1936
1937
1938template<>
1940{
1941 switch( aValue )
1942 {
1943 case Ipc2581Version::IPC2581V_B: return JOB_EXPORT_PCB_IPC2581::IPC2581_VERSION::B;
1944 case Ipc2581Version::IPC2581V_C: return JOB_EXPORT_PCB_IPC2581::IPC2581_VERSION::C;
1945 case Ipc2581Version::IPC2581V_UNKNOWN:
1946 default:
1948 }
1949}
1950
1951
1952template<>
1954{
1955 switch( aValue )
1956 {
1957 case JOB_EXPORT_PCB_ODB::ODB_COMPRESSION::NONE: return OdbCompression::ODBC_NONE;
1958 case JOB_EXPORT_PCB_ODB::ODB_COMPRESSION::ZIP: return OdbCompression::ODBC_ZIP;
1959 case JOB_EXPORT_PCB_ODB::ODB_COMPRESSION::TGZ: return OdbCompression::ODBC_TGZ;
1960 default:
1961 wxCHECK_MSG( false, OdbCompression::ODBC_UNKNOWN,
1962 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_ODB::ODB_COMPRESSION>" );
1963 }
1964}
1965
1966
1967template<>
1969{
1970 switch( aValue )
1971 {
1972 case OdbCompression::ODBC_NONE: return JOB_EXPORT_PCB_ODB::ODB_COMPRESSION::NONE;
1973 case OdbCompression::ODBC_ZIP: return JOB_EXPORT_PCB_ODB::ODB_COMPRESSION::ZIP;
1974 case OdbCompression::ODBC_TGZ: return JOB_EXPORT_PCB_ODB::ODB_COMPRESSION::TGZ;
1975 case OdbCompression::ODBC_UNKNOWN:
1976 default:
1978 }
1979}
1980
1981
1982template<>
1984{
1985 switch( aValue )
1986 {
1987 case JOB_EXPORT_PCB_ODB::VARIANT_PACKAGING::SEPARATE: return OdbVariantPackaging::ODBVP_SEPARATE;
1988 case JOB_EXPORT_PCB_ODB::VARIANT_PACKAGING::COMBINED: return OdbVariantPackaging::ODBVP_COMBINED;
1989 default:
1990 wxCHECK_MSG( false, OdbVariantPackaging::ODBVP_UNKNOWN,
1991 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_ODB::VARIANT_PACKAGING>" );
1992 }
1993}
1994
1995
1996template <>
1998{
1999 switch( aValue )
2000 {
2001 case JOB_EXPORT_PCB_ODB::ORIGIN::ABSOLUTE_COORDS: return OdbOrigin::ODBO_ABSOLUTE;
2002 case JOB_EXPORT_PCB_ODB::ORIGIN::AUX: return OdbOrigin::ODBO_AUX;
2003 case JOB_EXPORT_PCB_ODB::ORIGIN::GRID: return OdbOrigin::ODBO_GRID;
2004 default: wxCHECK_MSG( false, OdbOrigin::ODBO_UNKNOWN, "Unhandled ODB++ origin" );
2005 }
2006}
2007
2008
2009template <>
2011{
2012 switch( aValue )
2013 {
2014 case OdbOrigin::ODBO_AUX: return JOB_EXPORT_PCB_ODB::ORIGIN::AUX;
2015 case OdbOrigin::ODBO_GRID: return JOB_EXPORT_PCB_ODB::ORIGIN::GRID;
2016 case OdbOrigin::ODBO_ABSOLUTE:
2017 case OdbOrigin::ODBO_UNKNOWN:
2019 }
2020}
2021
2022
2023template <>
2025{
2026 switch( aValue )
2027 {
2028 case JOB_EXPORT_PCB_FAB::DATA_SET::USERDEF: return FabDataSet::FDS_USERDEF;
2029 case JOB_EXPORT_PCB_FAB::DATA_SET::BOM: return FabDataSet::FDS_BOM;
2030 case JOB_EXPORT_PCB_FAB::DATA_SET::STACKUP: return FabDataSet::FDS_STACKUP;
2031 case JOB_EXPORT_PCB_FAB::DATA_SET::FABRICATION: return FabDataSet::FDS_FABRICATION;
2032 case JOB_EXPORT_PCB_FAB::DATA_SET::ASSEMBLY: return FabDataSet::FDS_ASSEMBLY;
2033 case JOB_EXPORT_PCB_FAB::DATA_SET::TEST: return FabDataSet::FDS_TEST;
2034 case JOB_EXPORT_PCB_FAB::DATA_SET::STENCIL: return FabDataSet::FDS_STENCIL;
2035 case JOB_EXPORT_PCB_FAB::DATA_SET::DFX: return FabDataSet::FDS_DFX;
2036 default: wxCHECK_MSG( false, FabDataSet::FDS_UNKNOWN, "Unhandled fabrication data set" );
2037 }
2038}
2039
2040
2041template <>
2043{
2044 switch( aValue )
2045 {
2046 case FabDataSet::FDS_BOM: return JOB_EXPORT_PCB_FAB::DATA_SET::BOM;
2047 case FabDataSet::FDS_STACKUP: return JOB_EXPORT_PCB_FAB::DATA_SET::STACKUP;
2048 case FabDataSet::FDS_FABRICATION: return JOB_EXPORT_PCB_FAB::DATA_SET::FABRICATION;
2049 case FabDataSet::FDS_ASSEMBLY: return JOB_EXPORT_PCB_FAB::DATA_SET::ASSEMBLY;
2050 case FabDataSet::FDS_TEST: return JOB_EXPORT_PCB_FAB::DATA_SET::TEST;
2051 case FabDataSet::FDS_STENCIL: return JOB_EXPORT_PCB_FAB::DATA_SET::STENCIL;
2052 case FabDataSet::FDS_DFX: return JOB_EXPORT_PCB_FAB::DATA_SET::DFX;
2053 case FabDataSet::FDS_USERDEF:
2054 case FabDataSet::FDS_UNKNOWN: return JOB_EXPORT_PCB_FAB::DATA_SET::USERDEF;
2055
2056 // A value from a newer client must not turn into the broadest data set
2058 }
2059}
2060
2061
2062template <>
2064{
2065 switch( aValue )
2066 {
2067 case JOB_EXPORT_PCB_FAB::NET_NAMES::INCLUDE: return FabNetNamePolicy::FNNP_INCLUDE;
2068 case JOB_EXPORT_PCB_FAB::NET_NAMES::ANONYMIZE: return FabNetNamePolicy::FNNP_ANONYMIZE;
2069 default: wxCHECK_MSG( false, FabNetNamePolicy::FNNP_UNKNOWN, "Unhandled net name policy" );
2070 }
2071}
2072
2073
2074template <>
2076{
2077 switch( aValue )
2078 {
2079 case FabNetNamePolicy::FNNP_ANONYMIZE: return JOB_EXPORT_PCB_FAB::NET_NAMES::ANONYMIZE;
2080 case FabNetNamePolicy::FNNP_INCLUDE:
2081 case FabNetNamePolicy::FNNP_UNKNOWN:
2083 }
2084}
2085
2086
2087template <>
2089{
2090 switch( aValue )
2091 {
2092 case JOB_EXPORT_PCB_IPC2581::REF_DES::INCLUDE: return Ipc2581RefDes::IPC2581RD_INCLUDE;
2093 case JOB_EXPORT_PCB_IPC2581::REF_DES::OMIT: return Ipc2581RefDes::IPC2581RD_OMIT;
2094 default: wxCHECK_MSG( false, Ipc2581RefDes::IPC2581RD_UNKNOWN, "Unhandled reference designator policy" );
2095 }
2096}
2097
2098
2099template <>
2101{
2102 switch( aValue )
2103 {
2104 case Ipc2581RefDes::IPC2581RD_OMIT: return JOB_EXPORT_PCB_IPC2581::REF_DES::OMIT;
2105 case Ipc2581RefDes::IPC2581RD_INCLUDE:
2106 case Ipc2581RefDes::IPC2581RD_UNKNOWN:
2108 }
2109}
2110
2111
2112template<>
2114{
2115 switch( aValue )
2116 {
2117 case OdbVariantPackaging::ODBVP_COMBINED: return JOB_EXPORT_PCB_ODB::VARIANT_PACKAGING::COMBINED;
2118 case OdbVariantPackaging::ODBVP_SEPARATE:
2119 case OdbVariantPackaging::ODBVP_UNKNOWN:
2120 default:
2122 }
2123}
2124
2125
2126template<>
2128{
2129 switch( aValue )
2130 {
2131 case JOB_EXPORT_PCB_STATS::OUTPUT_FORMAT::REPORT: return StatsOutputFormat::SOF_REPORT;
2132 case JOB_EXPORT_PCB_STATS::OUTPUT_FORMAT::JSON: return StatsOutputFormat::SOF_JSON;
2133 default:
2134 wxCHECK_MSG( false, StatsOutputFormat::SOF_UNKNOWN,
2135 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_STATS::OUTPUT_FORMAT>" );
2136 }
2137}
2138
2139
2140template<>
2142{
2143 switch( aValue )
2144 {
2145 case StatsOutputFormat::SOF_REPORT: return JOB_EXPORT_PCB_STATS::OUTPUT_FORMAT::REPORT;
2146 case StatsOutputFormat::SOF_JSON: return JOB_EXPORT_PCB_STATS::OUTPUT_FORMAT::JSON;
2147 case StatsOutputFormat::SOF_UNKNOWN:
2148 default:
2150 }
2151}
2152
2153
2154template<>
2155kiapi::common::types::Units ToProtoEnum( JOB_EXPORT_PCB_DXF::DXF_UNITS aValue )
2156{
2157 switch( aValue )
2158 {
2159 case JOB_EXPORT_PCB_DXF::DXF_UNITS::INCH: return kiapi::common::types::Units::U_INCH;
2160 case JOB_EXPORT_PCB_DXF::DXF_UNITS::MM: return kiapi::common::types::Units::U_MM;
2161 default:
2162 wxCHECK_MSG( false, kiapi::common::types::Units::U_UNKNOWN,
2163 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_DXF::DXF_UNITS>" );
2164 }
2165}
2166
2167
2168template<>
2169JOB_EXPORT_PCB_DXF::DXF_UNITS FromProtoEnum( kiapi::common::types::Units aValue )
2170{
2171 switch( aValue )
2172 {
2173 case kiapi::common::types::Units::U_INCH: return JOB_EXPORT_PCB_DXF::DXF_UNITS::INCH;
2174 case kiapi::common::types::Units::U_MM: return JOB_EXPORT_PCB_DXF::DXF_UNITS::MM;
2175 case kiapi::common::types::Units::U_UNKNOWN:
2176 case kiapi::common::types::Units::U_METERS:
2177 case kiapi::common::types::Units::U_TENTHS:
2178 default:
2180 }
2181}
2182
2183
2184template<>
2185kiapi::common::types::Units ToProtoEnum( JOB_EXPORT_PCB_POS::UNITS aValue )
2186{
2187 switch( aValue )
2188 {
2189 case JOB_EXPORT_PCB_POS::UNITS::INCH: return kiapi::common::types::Units::U_INCH;
2190 case JOB_EXPORT_PCB_POS::UNITS::MM: return kiapi::common::types::Units::U_MM;
2191 default:
2192 wxCHECK_MSG( false, kiapi::common::types::Units::U_UNKNOWN,
2193 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_POS::UNITS>" );
2194 }
2195}
2196
2197
2198template<>
2199JOB_EXPORT_PCB_POS::UNITS FromProtoEnum( kiapi::common::types::Units aValue )
2200{
2201 switch( aValue )
2202 {
2203 case kiapi::common::types::Units::U_INCH: return JOB_EXPORT_PCB_POS::UNITS::INCH;
2204 case kiapi::common::types::Units::U_MM: return JOB_EXPORT_PCB_POS::UNITS::MM;
2205 case kiapi::common::types::Units::U_UNKNOWN:
2206 case kiapi::common::types::Units::U_METERS:
2207 case kiapi::common::types::Units::U_TENTHS:
2208 default:
2210 }
2211}
2212
2213
2214template<>
2215kiapi::common::types::Units ToProtoEnum( JOB_EXPORT_PCB_FAB::UNITS aValue )
2216{
2217 switch( aValue )
2218 {
2219 case JOB_EXPORT_PCB_FAB::UNITS::INCH: return kiapi::common::types::Units::U_INCH;
2220 case JOB_EXPORT_PCB_FAB::UNITS::MM: return kiapi::common::types::Units::U_MM;
2221 default:
2222 wxCHECK_MSG( false, kiapi::common::types::Units::U_UNKNOWN,
2223 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_FAB::UNITS>" );
2224 }
2225}
2226
2227
2228template<>
2229JOB_EXPORT_PCB_FAB::UNITS FromProtoEnum( kiapi::common::types::Units aValue )
2230{
2231 switch( aValue )
2232 {
2233 case kiapi::common::types::Units::U_INCH: return JOB_EXPORT_PCB_FAB::UNITS::INCH;
2234 case kiapi::common::types::Units::U_MM: return JOB_EXPORT_PCB_FAB::UNITS::MM;
2235 case kiapi::common::types::Units::U_UNKNOWN:
2236 case kiapi::common::types::Units::U_METERS:
2237 case kiapi::common::types::Units::U_TENTHS:
2238 default:
2240 }
2241}
2242
2243
2244template<>
2245kiapi::common::types::Units ToProtoEnum( IDF_SETTINGS::UNITS aValue )
2246{
2247 switch( aValue )
2248 {
2249 case IDF_SETTINGS::UNITS::MILS: return kiapi::common::types::Units::U_MILS;
2250 case IDF_SETTINGS::UNITS::MM: return kiapi::common::types::Units::U_MM;
2251 default:
2252 wxCHECK_MSG( false, kiapi::common::types::Units::U_UNKNOWN,
2253 "Unhandled case in ToProtoEnum<IDF_SETTINGS::UNITS>" );
2254 }
2255}
2256
2257
2258template<>
2259IDF_SETTINGS::UNITS FromProtoEnum( kiapi::common::types::Units aValue )
2260{
2261 switch( aValue )
2262 {
2263 case kiapi::common::types::Units::U_MILS: return IDF_SETTINGS::UNITS::MILS;
2264 case kiapi::common::types::Units::U_MM: return IDF_SETTINGS::UNITS::MM;
2265 case kiapi::common::types::Units::U_UNKNOWN:
2266 case kiapi::common::types::Units::U_INCH:
2267 case kiapi::common::types::Units::U_METERS:
2268 case kiapi::common::types::Units::U_TENTHS:
2269 default:
2271 }
2272}
2273
2274
2275template<>
2277{
2278 switch( aValue )
2279 {
2280 case IDF_SETTINGS::COORD_ORIGIN::CENTER: return IdfOriginMode::IOM_BOARD_CENTER;
2281 case IDF_SETTINGS::COORD_ORIGIN::GRID: return IdfOriginMode::IOM_GRID_ORIGIN;
2282 case IDF_SETTINGS::COORD_ORIGIN::DRILL: return IdfOriginMode::IOM_DRILL_ORIGIN;
2283 case IDF_SETTINGS::COORD_ORIGIN::USER: return IdfOriginMode::IOM_USER;
2284 default:
2285 wxCHECK_MSG( false, IdfOriginMode::IOM_UNKNOWN,
2286 "Unhandled case in ToProtoEnum<IDF_SETTINGS::COORD_ORIGIN>" );
2287 }
2288}
2289
2290
2291template<>
2293{
2294 switch( aValue )
2295 {
2296 case IdfOriginMode::IOM_BOARD_CENTER: return IDF_SETTINGS::COORD_ORIGIN::CENTER;
2297 case IdfOriginMode::IOM_GRID_ORIGIN: return IDF_SETTINGS::COORD_ORIGIN::GRID;
2298 case IdfOriginMode::IOM_DRILL_ORIGIN: return IDF_SETTINGS::COORD_ORIGIN::DRILL;
2299 case IdfOriginMode::IOM_USER: return IDF_SETTINGS::COORD_ORIGIN::USER;
2300 case IdfOriginMode::IOM_UNKNOWN:
2301 default:
2303 }
2304}
2305
2306
2307template<>
2308kiapi::common::types::Units ToProtoEnum( JOB_EXPORT_PCB_STATS::UNITS aValue )
2309{
2310 switch( aValue )
2311 {
2312 case JOB_EXPORT_PCB_STATS::UNITS::INCH: return kiapi::common::types::Units::U_INCH;
2313 case JOB_EXPORT_PCB_STATS::UNITS::MM: return kiapi::common::types::Units::U_MM;
2314 default:
2315 wxCHECK_MSG( false, kiapi::common::types::Units::U_UNKNOWN,
2316 "Unhandled case in ToProtoEnum<JOB_EXPORT_PCB_STATS::UNITS>" );
2317 }
2318}
2319
2320
2321template<>
2322JOB_EXPORT_PCB_STATS::UNITS FromProtoEnum( kiapi::common::types::Units aValue )
2323{
2324 switch( aValue )
2325 {
2326 case kiapi::common::types::Units::U_INCH: return JOB_EXPORT_PCB_STATS::UNITS::INCH;
2327 case kiapi::common::types::Units::U_MM: return JOB_EXPORT_PCB_STATS::UNITS::MM;
2328 case kiapi::common::types::Units::U_UNKNOWN:
2329 case kiapi::common::types::Units::U_METERS:
2330 case kiapi::common::types::Units::U_TENTHS:
2331 default:
2333 }
2334}
2335
2336
2337template<>
2338DrcErrorType ToProtoEnum( PCB_DRC_CODE aValue )
2339{
2340 switch( aValue )
2341 {
2342 case DRCE_UNCONNECTED_ITEMS: return DrcErrorType::DRCET_UNCONNECTED_ITEMS;
2343 case DRCE_SHORTING_ITEMS: return DrcErrorType::DRCET_SHORTING_ITEMS;
2344 case DRCE_ALLOWED_ITEMS: return DrcErrorType::DRCET_ALLOWED_ITEMS;
2345 case DRCE_TEXT_ON_EDGECUTS: return DrcErrorType::DRCET_TEXT_ON_EDGECUTS;
2346 case DRCE_CLEARANCE: return DrcErrorType::DRCET_CLEARANCE;
2347 case DRCE_CREEPAGE: return DrcErrorType::DRCET_CREEPAGE;
2348 case DRCE_TRACKS_CROSSING: return DrcErrorType::DRCET_TRACKS_CROSSING;
2349 case DRCE_EDGE_CLEARANCE: return DrcErrorType::DRCET_EDGE_CLEARANCE;
2350 case DRCE_ZONES_INTERSECT: return DrcErrorType::DRCET_ZONES_INTERSECT;
2351 case DRCE_ISOLATED_COPPER: return DrcErrorType::DRCET_ISOLATED_COPPER;
2352 case DRCE_STARVED_THERMAL: return DrcErrorType::DRCET_STARVED_THERMAL;
2353 case DRCE_DANGLING_VIA: return DrcErrorType::DRCET_DANGLING_VIA;
2354 case DRCE_DANGLING_TRACK: return DrcErrorType::DRCET_DANGLING_TRACK;
2355 case DRCE_DRILLED_HOLES_TOO_CLOSE: return DrcErrorType::DRCET_DRILLED_HOLES_TOO_CLOSE;
2356 case DRCE_DRILLED_HOLES_COLOCATED: return DrcErrorType::DRCET_DRILLED_HOLES_COLOCATED;
2357 case DRCE_HOLE_CLEARANCE: return DrcErrorType::DRCET_HOLE_CLEARANCE;
2358 case DRCE_CONNECTION_WIDTH: return DrcErrorType::DRCET_CONNECTION_WIDTH;
2359 case DRCE_TRACK_WIDTH: return DrcErrorType::DRCET_TRACK_WIDTH;
2360 case DRCE_TRACK_ANGLE: return DrcErrorType::DRCET_TRACK_ANGLE;
2361 case DRCE_TRACK_SEGMENT_LENGTH: return DrcErrorType::DRCET_TRACK_SEGMENT_LENGTH;
2362 case DRCE_ANNULAR_WIDTH: return DrcErrorType::DRCET_ANNULAR_WIDTH;
2363 case DRCE_DRILL_OUT_OF_RANGE: return DrcErrorType::DRCET_DRILL_OUT_OF_RANGE;
2364 case DRCE_VIA_DIAMETER: return DrcErrorType::DRCET_VIA_DIAMETER;
2365 case DRCE_PADSTACK: return DrcErrorType::DRCET_PADSTACK;
2366 case DRCE_PADSTACK_INVALID: return DrcErrorType::DRCET_PADSTACK_INVALID;
2367 case DRCE_MICROVIA_DRILL_OUT_OF_RANGE: return DrcErrorType::DRCET_MICROVIA_DRILL_OUT_OF_RANGE;
2368 case DRCE_MALFORMED_MICROVIA_STACK_SPAN: return DrcErrorType::DRCET_MALFORMED_MICROVIA_STACK_SPAN;
2369 case DRCE_MICROVIA_STACK_NOT_FILLED: return DrcErrorType::DRCET_MICROVIA_STACK_NOT_FILLED;
2370 case DRCE_MICROVIA_STACK_DEPTH: return DrcErrorType::DRCET_MICROVIA_STACK_DEPTH;
2371 case DRCE_MICROVIA_ASPECT_RATIO: return DrcErrorType::DRCET_MICROVIA_ASPECT_RATIO;
2372 case DRCE_MICROVIA_CROSSES_CORE: return DrcErrorType::DRCET_MICROVIA_CROSSES_CORE;
2373 case DRCE_OVERLAPPING_FOOTPRINTS: return DrcErrorType::DRCET_OVERLAPPING_FOOTPRINTS;
2374 case DRCE_MISSING_COURTYARD: return DrcErrorType::DRCET_MISSING_COURTYARD;
2375 case DRCE_MALFORMED_COURTYARD: return DrcErrorType::DRCET_MALFORMED_COURTYARD;
2376 case DRCE_PTH_IN_COURTYARD: return DrcErrorType::DRCET_PTH_IN_COURTYARD;
2377 case DRCE_NPTH_IN_COURTYARD: return DrcErrorType::DRCET_NPTH_IN_COURTYARD;
2378 case DRCE_DISABLED_LAYER_ITEM: return DrcErrorType::DRCET_DISABLED_LAYER_ITEM;
2379 case DRCE_INVALID_OUTLINE: return DrcErrorType::DRCET_INVALID_OUTLINE;
2380 case DRCE_MISSING_FOOTPRINT: return DrcErrorType::DRCET_MISSING_FOOTPRINT;
2381 case DRCE_DUPLICATE_FOOTPRINT: return DrcErrorType::DRCET_DUPLICATE_FOOTPRINT;
2382 case DRCE_NET_CONFLICT: return DrcErrorType::DRCET_NET_CONFLICT;
2383 case DRCE_EXTRA_FOOTPRINT: return DrcErrorType::DRCET_EXTRA_FOOTPRINT;
2384 case DRCE_SCHEMATIC_PARITY: return DrcErrorType::DRCET_SCHEMATIC_PARITY;
2385 case DRCE_SCHEMATIC_FIELDS_PARITY: return DrcErrorType::DRCET_SCHEMATIC_FIELDS_PARITY;
2386 case DRCE_FOOTPRINT_FILTERS: return DrcErrorType::DRCET_FOOTPRINT_FILTERS;
2387 case DRCE_LIB_FOOTPRINT_ISSUES: return DrcErrorType::DRCET_LIB_FOOTPRINT_ISSUES;
2388 case DRCE_LIB_FOOTPRINT_MISMATCH: return DrcErrorType::DRCET_LIB_FOOTPRINT_MISMATCH;
2389 case DRCE_UNRESOLVED_VARIABLE: return DrcErrorType::DRCET_UNRESOLVED_VARIABLE;
2390 case DRCE_ASSERTION_FAILURE: return DrcErrorType::DRCET_ASSERTION_FAILURE;
2391 case DRCE_GENERIC_WARNING: return DrcErrorType::DRCET_GENERIC_WARNING;
2392 case DRCE_GENERIC_ERROR: return DrcErrorType::DRCET_GENERIC_ERROR;
2393 case DRCE_COPPER_SLIVER: return DrcErrorType::DRCET_COPPER_SLIVER;
2394 case DRCE_SILK_CLEARANCE: return DrcErrorType::DRCET_SILK_CLEARANCE;
2395 case DRCE_SILK_MASK_CLEARANCE: return DrcErrorType::DRCET_SILK_MASK_CLEARANCE;
2396 case DRCE_SILK_EDGE_CLEARANCE: return DrcErrorType::DRCET_SILK_EDGE_CLEARANCE;
2397 case DRCE_SOLDERMASK_BRIDGE: return DrcErrorType::DRCET_SOLDERMASK_BRIDGE;
2398 case DRCE_TEXT_HEIGHT: return DrcErrorType::DRCET_TEXT_HEIGHT;
2399 case DRCE_TEXT_THICKNESS: return DrcErrorType::DRCET_TEXT_THICKNESS;
2400 case DRCE_LENGTH_OUT_OF_RANGE: return DrcErrorType::DRCET_LENGTH_OUT_OF_RANGE;
2401 case DRCE_SKEW_OUT_OF_RANGE: return DrcErrorType::DRCET_SKEW_OUT_OF_RANGE;
2402 case DRCE_NET_CHAIN_STUB_TOO_LONG: return DrcErrorType::DRCET_NET_CHAIN_STUB_TOO_LONG;
2403 case DRCE_NET_CHAIN_RETURN_PATH_BREAK: return DrcErrorType::DRCET_NET_CHAIN_RETURN_PATH_BREAK;
2404 case DRCE_NET_CHAIN_TUNING_PROFILES: return DrcErrorType::DRCET_NET_CHAIN_TUNING_PROFILES;
2405 case DRCE_VIA_COUNT_OUT_OF_RANGE: return DrcErrorType::DRCET_VIA_COUNT_OUT_OF_RANGE;
2406 case DRCE_DP_GAP_OUT_OF_RANGE: return DrcErrorType::DRCET_DIFF_PAIR_GAP_OUT_OF_RANGE;
2407 case DRCE_DP_UNCOUPLED_LENGTH_TOO_LONG: return DrcErrorType::DRCET_DIFF_PAIR_UNCOUPLED_LENGTH_TOO_LONG;
2408 case DRCE_FOOTPRINT: return DrcErrorType::DRCET_FOOTPRINT;
2409 case DRCE_FOOTPRINT_SCALED_WITH_PADS: return DrcErrorType::DRCET_FOOTPRINT_SCALED_WITH_PADS;
2410 case DRCE_FOOTPRINT_TYPE_MISMATCH: return DrcErrorType::DRCET_FOOTPRINT_TYPE_MISMATCH;
2411 case DRCE_PAD_TH_WITH_NO_HOLE: return DrcErrorType::DRCET_PAD_TH_WITH_NO_HOLE;
2412 case DRCE_MIRRORED_TEXT_ON_FRONT_LAYER: return DrcErrorType::DRCET_MIRRORED_TEXT_ON_FRONT_LAYER;
2413 case DRCE_UNMIRRORED_TEXT_ON_BACK_LAYER: return DrcErrorType::DRCET_NONMIRRORED_TEXT_ON_BACK_LAYER;
2414 case DRCE_MISSING_TUNING_PROFILE: return DrcErrorType::DRCET_MISSING_TUNING_PROFILE;
2415 case DRCE_TUNING_PROFILE_IMPLICIT_RULES: return DrcErrorType::DRCET_TUNING_PROFILE_IMPLICIT_RULES;
2416 case DRCE_TRACK_ON_POST_MACHINED_LAYER: return DrcErrorType::DRCET_TRACK_ON_POST_MACHINED_LAYER;
2417 case DRCE_TRACK_NOT_CENTERED_ON_VIA: return DrcErrorType::DRCET_TRACK_NOT_CENTERED_ON_VIA;
2418 default:
2419 return DrcErrorType::DRCET_UNKNOWN;
2420 }
2421}
2422
2423
2424template<>
2425PCB_DRC_CODE FromProtoEnum( DrcErrorType aValue )
2426{
2427 switch( aValue )
2428 {
2429 case DrcErrorType::DRCET_UNCONNECTED_ITEMS: return DRCE_UNCONNECTED_ITEMS;
2430 case DrcErrorType::DRCET_SHORTING_ITEMS: return DRCE_SHORTING_ITEMS;
2431 case DrcErrorType::DRCET_ALLOWED_ITEMS: return DRCE_ALLOWED_ITEMS;
2432 case DrcErrorType::DRCET_TEXT_ON_EDGECUTS: return DRCE_TEXT_ON_EDGECUTS;
2433 case DrcErrorType::DRCET_CLEARANCE: return DRCE_CLEARANCE;
2434 case DrcErrorType::DRCET_CREEPAGE: return DRCE_CREEPAGE;
2435 case DrcErrorType::DRCET_TRACKS_CROSSING: return DRCE_TRACKS_CROSSING;
2436 case DrcErrorType::DRCET_EDGE_CLEARANCE: return DRCE_EDGE_CLEARANCE;
2437 case DrcErrorType::DRCET_ZONES_INTERSECT: return DRCE_ZONES_INTERSECT;
2438 case DrcErrorType::DRCET_ISOLATED_COPPER: return DRCE_ISOLATED_COPPER;
2439 case DrcErrorType::DRCET_STARVED_THERMAL: return DRCE_STARVED_THERMAL;
2440 case DrcErrorType::DRCET_DANGLING_VIA: return DRCE_DANGLING_VIA;
2441 case DrcErrorType::DRCET_DANGLING_TRACK: return DRCE_DANGLING_TRACK;
2442 case DrcErrorType::DRCET_DRILLED_HOLES_TOO_CLOSE: return DRCE_DRILLED_HOLES_TOO_CLOSE;
2443 case DrcErrorType::DRCET_DRILLED_HOLES_COLOCATED: return DRCE_DRILLED_HOLES_COLOCATED;
2444 case DrcErrorType::DRCET_HOLE_CLEARANCE: return DRCE_HOLE_CLEARANCE;
2445 case DrcErrorType::DRCET_CONNECTION_WIDTH: return DRCE_CONNECTION_WIDTH;
2446 case DrcErrorType::DRCET_TRACK_WIDTH: return DRCE_TRACK_WIDTH;
2447 case DrcErrorType::DRCET_TRACK_ANGLE: return DRCE_TRACK_ANGLE;
2448 case DrcErrorType::DRCET_TRACK_SEGMENT_LENGTH: return DRCE_TRACK_SEGMENT_LENGTH;
2449 case DrcErrorType::DRCET_ANNULAR_WIDTH: return DRCE_ANNULAR_WIDTH;
2450 case DrcErrorType::DRCET_DRILL_OUT_OF_RANGE: return DRCE_DRILL_OUT_OF_RANGE;
2451 case DrcErrorType::DRCET_VIA_DIAMETER: return DRCE_VIA_DIAMETER;
2452 case DrcErrorType::DRCET_PADSTACK: return DRCE_PADSTACK;
2453 case DrcErrorType::DRCET_PADSTACK_INVALID: return DRCE_PADSTACK_INVALID;
2454 case DrcErrorType::DRCET_MICROVIA_DRILL_OUT_OF_RANGE: return DRCE_MICROVIA_DRILL_OUT_OF_RANGE;
2455 case DrcErrorType::DRCET_MALFORMED_MICROVIA_STACK_SPAN: return DRCE_MALFORMED_MICROVIA_STACK_SPAN;
2456 case DrcErrorType::DRCET_MICROVIA_STACK_NOT_FILLED: return DRCE_MICROVIA_STACK_NOT_FILLED;
2457 case DrcErrorType::DRCET_MICROVIA_STACK_DEPTH: return DRCE_MICROVIA_STACK_DEPTH;
2458 case DrcErrorType::DRCET_MICROVIA_ASPECT_RATIO: return DRCE_MICROVIA_ASPECT_RATIO;
2459 case DrcErrorType::DRCET_MICROVIA_CROSSES_CORE: return DRCE_MICROVIA_CROSSES_CORE;
2460 case DrcErrorType::DRCET_OVERLAPPING_FOOTPRINTS: return DRCE_OVERLAPPING_FOOTPRINTS;
2461 case DrcErrorType::DRCET_MISSING_COURTYARD: return DRCE_MISSING_COURTYARD;
2462 case DrcErrorType::DRCET_MALFORMED_COURTYARD: return DRCE_MALFORMED_COURTYARD;
2463 case DrcErrorType::DRCET_PTH_IN_COURTYARD: return DRCE_PTH_IN_COURTYARD;
2464 case DrcErrorType::DRCET_NPTH_IN_COURTYARD: return DRCE_NPTH_IN_COURTYARD;
2465 case DrcErrorType::DRCET_DISABLED_LAYER_ITEM: return DRCE_DISABLED_LAYER_ITEM;
2466 case DrcErrorType::DRCET_INVALID_OUTLINE: return DRCE_INVALID_OUTLINE;
2467 case DrcErrorType::DRCET_MISSING_FOOTPRINT: return DRCE_MISSING_FOOTPRINT;
2468 case DrcErrorType::DRCET_DUPLICATE_FOOTPRINT: return DRCE_DUPLICATE_FOOTPRINT;
2469 case DrcErrorType::DRCET_NET_CONFLICT: return DRCE_NET_CONFLICT;
2470 case DrcErrorType::DRCET_EXTRA_FOOTPRINT: return DRCE_EXTRA_FOOTPRINT;
2471 case DrcErrorType::DRCET_SCHEMATIC_PARITY: return DRCE_SCHEMATIC_PARITY;
2472 case DrcErrorType::DRCET_SCHEMATIC_FIELDS_PARITY: return DRCE_SCHEMATIC_FIELDS_PARITY;
2473 case DrcErrorType::DRCET_FOOTPRINT_FILTERS: return DRCE_FOOTPRINT_FILTERS;
2474 case DrcErrorType::DRCET_LIB_FOOTPRINT_ISSUES: return DRCE_LIB_FOOTPRINT_ISSUES;
2475 case DrcErrorType::DRCET_LIB_FOOTPRINT_MISMATCH: return DRCE_LIB_FOOTPRINT_MISMATCH;
2476 case DrcErrorType::DRCET_UNRESOLVED_VARIABLE: return DRCE_UNRESOLVED_VARIABLE;
2477 case DrcErrorType::DRCET_ASSERTION_FAILURE: return DRCE_ASSERTION_FAILURE;
2478 case DrcErrorType::DRCET_GENERIC_WARNING: return DRCE_GENERIC_WARNING;
2479 case DrcErrorType::DRCET_GENERIC_ERROR: return DRCE_GENERIC_ERROR;
2480 case DrcErrorType::DRCET_COPPER_SLIVER: return DRCE_COPPER_SLIVER;
2481 case DrcErrorType::DRCET_SILK_CLEARANCE: return DRCE_SILK_CLEARANCE;
2482 case DrcErrorType::DRCET_SILK_MASK_CLEARANCE: return DRCE_SILK_MASK_CLEARANCE;
2483 case DrcErrorType::DRCET_SILK_EDGE_CLEARANCE: return DRCE_SILK_EDGE_CLEARANCE;
2484 case DrcErrorType::DRCET_SOLDERMASK_BRIDGE: return DRCE_SOLDERMASK_BRIDGE;
2485 case DrcErrorType::DRCET_TEXT_HEIGHT: return DRCE_TEXT_HEIGHT;
2486 case DrcErrorType::DRCET_TEXT_THICKNESS: return DRCE_TEXT_THICKNESS;
2487 case DrcErrorType::DRCET_LENGTH_OUT_OF_RANGE: return DRCE_LENGTH_OUT_OF_RANGE;
2488 case DrcErrorType::DRCET_NET_CHAIN_STUB_TOO_LONG: return DRCE_NET_CHAIN_STUB_TOO_LONG;
2489 case DrcErrorType::DRCET_NET_CHAIN_RETURN_PATH_BREAK: return DRCE_NET_CHAIN_RETURN_PATH_BREAK;
2490 case DrcErrorType::DRCET_NET_CHAIN_TUNING_PROFILES: return DRCE_NET_CHAIN_TUNING_PROFILES;
2491 case DrcErrorType::DRCET_SKEW_OUT_OF_RANGE: return DRCE_SKEW_OUT_OF_RANGE;
2492 case DrcErrorType::DRCET_VIA_COUNT_OUT_OF_RANGE: return DRCE_VIA_COUNT_OUT_OF_RANGE;
2493 case DrcErrorType::DRCET_DIFF_PAIR_GAP_OUT_OF_RANGE: return DRCE_DP_GAP_OUT_OF_RANGE;
2494 case DrcErrorType::DRCET_DIFF_PAIR_UNCOUPLED_LENGTH_TOO_LONG: return DRCE_DP_UNCOUPLED_LENGTH_TOO_LONG;
2495 case DrcErrorType::DRCET_FOOTPRINT_SCALED_WITH_PADS: return DRCE_FOOTPRINT_SCALED_WITH_PADS;
2496 case DrcErrorType::DRCET_FOOTPRINT: return DRCE_FOOTPRINT;
2497 case DrcErrorType::DRCET_FOOTPRINT_TYPE_MISMATCH: return DRCE_FOOTPRINT_TYPE_MISMATCH;
2498 case DrcErrorType::DRCET_PAD_TH_WITH_NO_HOLE: return DRCE_PAD_TH_WITH_NO_HOLE;
2499 case DrcErrorType::DRCET_MIRRORED_TEXT_ON_FRONT_LAYER: return DRCE_MIRRORED_TEXT_ON_FRONT_LAYER;
2500 case DrcErrorType::DRCET_NONMIRRORED_TEXT_ON_BACK_LAYER: return DRCE_UNMIRRORED_TEXT_ON_BACK_LAYER;
2501 case DrcErrorType::DRCET_MISSING_TUNING_PROFILE: return DRCE_MISSING_TUNING_PROFILE;
2502 case DrcErrorType::DRCET_TUNING_PROFILE_IMPLICIT_RULES: return DRCE_TUNING_PROFILE_IMPLICIT_RULES;
2503 case DrcErrorType::DRCET_TRACK_ON_POST_MACHINED_LAYER: return DRCE_TRACK_ON_POST_MACHINED_LAYER;
2504 case DrcErrorType::DRCET_TRACK_NOT_CENTERED_ON_VIA: return DRCE_TRACK_NOT_CENTERED_ON_VIA;
2505
2506 case DrcErrorType::DRCET_UNKNOWN:
2507 default:
2508 return static_cast<PCB_DRC_CODE>( 0 );
2509 }
2510}
2511
2512
2513template<>
2514types::ConstraintType ToProtoEnum( PCB_CONSTRAINT_TYPE aValue )
2515{
2516 switch( aValue )
2517 {
2518 case PCB_CONSTRAINT_TYPE::COINCIDENT: return types::ConstraintType::CT_COINCIDENT;
2519 case PCB_CONSTRAINT_TYPE::HORIZONTAL: return types::ConstraintType::CT_HORIZONTAL;
2520 case PCB_CONSTRAINT_TYPE::VERTICAL: return types::ConstraintType::CT_VERTICAL;
2521 case PCB_CONSTRAINT_TYPE::PARALLEL: return types::ConstraintType::CT_PARALLEL;
2522 case PCB_CONSTRAINT_TYPE::PERPENDICULAR: return types::ConstraintType::CT_PERPENDICULAR;
2523 case PCB_CONSTRAINT_TYPE::COLLINEAR: return types::ConstraintType::CT_COLLINEAR;
2524 case PCB_CONSTRAINT_TYPE::SYMMETRIC: return types::ConstraintType::CT_SYMMETRIC;
2525 case PCB_CONSTRAINT_TYPE::EQUAL_LENGTH: return types::ConstraintType::CT_EQUAL_LENGTH;
2526 case PCB_CONSTRAINT_TYPE::EQUAL_RADIUS: return types::ConstraintType::CT_EQUAL_RADIUS;
2527 case PCB_CONSTRAINT_TYPE::POINT_ON_LINE: return types::ConstraintType::CT_POINT_ON_LINE;
2528 case PCB_CONSTRAINT_TYPE::MIDPOINT: return types::ConstraintType::CT_MIDPOINT;
2529 case PCB_CONSTRAINT_TYPE::FIXED_POSITION: return types::ConstraintType::CT_FIXED_POSITION;
2530 case PCB_CONSTRAINT_TYPE::FIXED_LENGTH: return types::ConstraintType::CT_FIXED_LENGTH;
2531 case PCB_CONSTRAINT_TYPE::CONCENTRIC: return types::ConstraintType::CT_CONCENTRIC;
2532 case PCB_CONSTRAINT_TYPE::FIXED_RADIUS: return types::ConstraintType::CT_FIXED_RADIUS;
2533 case PCB_CONSTRAINT_TYPE::ANGULAR_DIMENSION: return types::ConstraintType::CT_ANGULAR_DIMENSION;
2534 case PCB_CONSTRAINT_TYPE::TANGENT: return types::ConstraintType::CT_TANGENT;
2535 case PCB_CONSTRAINT_TYPE::ARC_ANGLE: return types::ConstraintType::CT_ARC_ANGLE;
2536
2538 default:
2539 wxCHECK_MSG( false, types::ConstraintType::CT_UNKNOWN,
2540 "Unhandled case in ToProtoEnum<PCB_CONSTRAINT_TYPE>" );
2541 }
2542}
2543
2544
2545template<>
2546PCB_CONSTRAINT_TYPE FromProtoEnum( types::ConstraintType aValue )
2547{
2548 switch( aValue )
2549 {
2550 case types::ConstraintType::CT_UNKNOWN: return PCB_CONSTRAINT_TYPE::UNDEFINED;
2551 case types::ConstraintType::CT_COINCIDENT: return PCB_CONSTRAINT_TYPE::COINCIDENT;
2552 case types::ConstraintType::CT_HORIZONTAL: return PCB_CONSTRAINT_TYPE::HORIZONTAL;
2553 case types::ConstraintType::CT_VERTICAL: return PCB_CONSTRAINT_TYPE::VERTICAL;
2554 case types::ConstraintType::CT_PARALLEL: return PCB_CONSTRAINT_TYPE::PARALLEL;
2555 case types::ConstraintType::CT_PERPENDICULAR: return PCB_CONSTRAINT_TYPE::PERPENDICULAR;
2556 case types::ConstraintType::CT_COLLINEAR: return PCB_CONSTRAINT_TYPE::COLLINEAR;
2557 case types::ConstraintType::CT_SYMMETRIC: return PCB_CONSTRAINT_TYPE::SYMMETRIC;
2558 case types::ConstraintType::CT_EQUAL_LENGTH: return PCB_CONSTRAINT_TYPE::EQUAL_LENGTH;
2559 case types::ConstraintType::CT_EQUAL_RADIUS: return PCB_CONSTRAINT_TYPE::EQUAL_RADIUS;
2560 case types::ConstraintType::CT_POINT_ON_LINE: return PCB_CONSTRAINT_TYPE::POINT_ON_LINE;
2561 case types::ConstraintType::CT_MIDPOINT: return PCB_CONSTRAINT_TYPE::MIDPOINT;
2562 case types::ConstraintType::CT_FIXED_POSITION: return PCB_CONSTRAINT_TYPE::FIXED_POSITION;
2563 case types::ConstraintType::CT_FIXED_LENGTH: return PCB_CONSTRAINT_TYPE::FIXED_LENGTH;
2564 case types::ConstraintType::CT_CONCENTRIC: return PCB_CONSTRAINT_TYPE::CONCENTRIC;
2565 case types::ConstraintType::CT_FIXED_RADIUS: return PCB_CONSTRAINT_TYPE::FIXED_RADIUS;
2566 case types::ConstraintType::CT_ANGULAR_DIMENSION: return PCB_CONSTRAINT_TYPE::ANGULAR_DIMENSION;
2567 case types::ConstraintType::CT_TANGENT: return PCB_CONSTRAINT_TYPE::TANGENT;
2568 case types::ConstraintType::CT_ARC_ANGLE: return PCB_CONSTRAINT_TYPE::ARC_ANGLE;
2569
2570 default:
2571 wxCHECK_MSG( false, PCB_CONSTRAINT_TYPE::UNDEFINED,
2572 "Unhandled case in FromProtoEnum<types::ConstraintType>" );
2573 }
2574}
2575
2576
2577template<>
2578types::ConstraintAnchor ToProtoEnum( CONSTRAINT_ANCHOR aValue )
2579{
2580 switch( aValue )
2581 {
2582 case CONSTRAINT_ANCHOR::WHOLE: return types::ConstraintAnchor::CA_WHOLE;
2583 case CONSTRAINT_ANCHOR::START: return types::ConstraintAnchor::CA_START;
2584 case CONSTRAINT_ANCHOR::END: return types::ConstraintAnchor::CA_END;
2585 case CONSTRAINT_ANCHOR::MID: return types::ConstraintAnchor::CA_MID;
2586 case CONSTRAINT_ANCHOR::CENTER: return types::ConstraintAnchor::CA_CENTER;
2587 case CONSTRAINT_ANCHOR::RADIUS: return types::ConstraintAnchor::CA_RADIUS;
2588 case CONSTRAINT_ANCHOR::VERTEX: return types::ConstraintAnchor::CA_VERTEX;
2589
2590 default:
2591 wxCHECK_MSG( false, types::ConstraintAnchor::CA_UNKNOWN,
2592 "Unhandled case in ToProtoEnum<CONSTRAINT_ANCHOR>" );
2593 }
2594}
2595
2596
2597template<>
2598CONSTRAINT_ANCHOR FromProtoEnum( types::ConstraintAnchor aValue )
2599{
2600 switch( aValue )
2601 {
2602 case types::ConstraintAnchor::CA_UNKNOWN:
2603 case types::ConstraintAnchor::CA_WHOLE: return CONSTRAINT_ANCHOR::WHOLE;
2604 case types::ConstraintAnchor::CA_START: return CONSTRAINT_ANCHOR::START;
2605 case types::ConstraintAnchor::CA_END: return CONSTRAINT_ANCHOR::END;
2606 case types::ConstraintAnchor::CA_MID: return CONSTRAINT_ANCHOR::MID;
2607 case types::ConstraintAnchor::CA_CENTER: return CONSTRAINT_ANCHOR::CENTER;
2608 case types::ConstraintAnchor::CA_RADIUS: return CONSTRAINT_ANCHOR::RADIUS;
2609 case types::ConstraintAnchor::CA_VERTEX: return CONSTRAINT_ANCHOR::VERTEX;
2610
2611 default:
2612 wxCHECK_MSG( false, CONSTRAINT_ANCHOR::WHOLE,
2613 "Unhandled case in FromProtoEnum<types::ConstraintAnchor>" );
2614 }
2615}
2616
2617
2618template<>
2619types::TuningPatternMode ToProtoEnum( LENGTH_TUNING_MODE aValue )
2620{
2621 switch( aValue )
2622 {
2623 case LENGTH_TUNING_MODE::SINGLE: return types::TuningPatternMode::TPM_SINGLE;
2624 case LENGTH_TUNING_MODE::DIFF_PAIR: return types::TuningPatternMode::TPM_DIFF_PAIR;
2625 case LENGTH_TUNING_MODE::DIFF_PAIR_SKEW: return types::TuningPatternMode::TPM_DIFF_PAIR_SKEW;
2626
2627 default:
2628 wxCHECK_MSG( false, types::TuningPatternMode::TPM_UNKNOWN,
2629 "Unhandled case in ToProtoEnum<LENGTH_TUNING_MODE>" );
2630 }
2631}
2632
2633
2634template<>
2635LENGTH_TUNING_MODE FromProtoEnum( types::TuningPatternMode aValue )
2636{
2637 switch( aValue )
2638 {
2639 case types::TuningPatternMode::TPM_SINGLE: return LENGTH_TUNING_MODE::SINGLE;
2640 case types::TuningPatternMode::TPM_DIFF_PAIR: return LENGTH_TUNING_MODE::DIFF_PAIR;
2641 case types::TuningPatternMode::TPM_DIFF_PAIR_SKEW: return LENGTH_TUNING_MODE::DIFF_PAIR_SKEW;
2642
2643 default:
2644 case types::TuningPatternMode::TPM_UNKNOWN: return LENGTH_TUNING_MODE::SINGLE;
2645 }
2646
2647 wxCHECK_MSG( false, LENGTH_TUNING_MODE::SINGLE,
2648 "Unhandled case in FromProtoEnum<types::TuningPatternMode>" );
2649}
2650
2651
2652
2653template<>
2654types::TuningPatternMeanderSide ToProtoEnum( PNS::MEANDER_SIDE aValue )
2655{
2656 switch( aValue )
2657 {
2658 case PNS::MEANDER_SIDE_DEFAULT: return types::TuningPatternMeanderSide::TPMS_DEFAULT;
2659 case PNS::MEANDER_SIDE_LEFT: return types::TuningPatternMeanderSide::TPMS_LEFT;
2660 case PNS::MEANDER_SIDE_RIGHT: return types::TuningPatternMeanderSide::TPMS_RIGHT;
2661
2662 default:
2663 wxCHECK_MSG( false, types::TuningPatternMeanderSide::TPMS_UNKNOWN,
2664 "Unhandled case in ToProtoEnum<PNS::MEANDER_SIDE>" );
2665 }
2666}
2667
2668
2669template<>
2670PNS::MEANDER_SIDE FromProtoEnum( types::TuningPatternMeanderSide aValue )
2671{
2672 switch( aValue )
2673 {
2674 case types::TuningPatternMeanderSide::TPMS_DEFAULT: return PNS::MEANDER_SIDE_DEFAULT;
2675 case types::TuningPatternMeanderSide::TPMS_LEFT: return PNS::MEANDER_SIDE_LEFT;
2676 case types::TuningPatternMeanderSide::TPMS_RIGHT: return PNS::MEANDER_SIDE_RIGHT;
2677
2678 default:
2679 case types::TuningPatternMeanderSide::TPMS_UNKNOWN: return PNS::MEANDER_SIDE_DEFAULT;
2680 }
2681
2682 wxCHECK_MSG( false, PNS::MEANDER_SIDE_DEFAULT,
2683 "Unhandled case in FromProtoEnum<types::TuningPatternMeanderSide>" );
2684}
2685
2686template<>
2687types::TuningPatternCornerStyle ToProtoEnum( PNS::MEANDER_STYLE aValue )
2688{
2689 switch( aValue )
2690 {
2691 case PNS::MEANDER_STYLE_CHAMFER: return types::TuningPatternCornerStyle::TPCS_CHAMFERED;
2692 case PNS::MEANDER_STYLE_ROUND: return types::TuningPatternCornerStyle::TPCS_ROUNDED;
2693
2694 default:
2695 wxCHECK_MSG( false, types::TuningPatternCornerStyle::TPCS_UNKNOWN,
2696 "Unhandled case in ToProtoEnum<PNS::MEANDER_STYLE>" );
2697 }
2698}
2699
2700
2701template<>
2702PNS::MEANDER_STYLE FromProtoEnum( types::TuningPatternCornerStyle aValue )
2703{
2704 switch( aValue )
2705 {
2706 case types::TuningPatternCornerStyle::TPCS_CHAMFERED: return PNS::MEANDER_STYLE_CHAMFER;
2707 case types::TuningPatternCornerStyle::TPCS_ROUNDED: return PNS::MEANDER_STYLE_ROUND;
2708
2709 default:
2710 case types::TuningPatternCornerStyle::TPCS_UNKNOWN: return PNS::MEANDER_STYLE_CHAMFER;
2711 }
2712
2713 wxCHECK_MSG( false, PNS::MEANDER_STYLE_CHAMFER,
2714 "Unhandled case in FromProtoEnum<types::TuningPatternCornerStyle>" );
2715}
2716
2717template<>
2718types::TuningPatternStatus ToProtoEnum( PNS::MEANDER_PLACER_BASE::TUNING_STATUS aValue )
2719{
2720 switch( aValue )
2721 {
2722 case PNS::MEANDER_PLACER_BASE::TOO_SHORT: return types::TuningPatternStatus::TPS_TOO_SHORT;
2723 case PNS::MEANDER_PLACER_BASE::TOO_LONG: return types::TuningPatternStatus::TPS_TOO_LONG;
2724 case PNS::MEANDER_PLACER_BASE::TUNED: return types::TuningPatternStatus::TPS_TUNED;
2725
2726 default:
2727 wxCHECK_MSG( false, types::TuningPatternStatus::TPS_UNKNOWN,
2728 "Unhandled case in ToProtoEnum<TUNING_STATUS>" );
2729 }
2730}
2731
2732
2733template<>
2734PNS::MEANDER_PLACER_BASE::TUNING_STATUS FromProtoEnum( types::TuningPatternStatus aValue )
2735{
2736 switch( aValue )
2737 {
2738 case types::TuningPatternStatus::TPS_TOO_SHORT: return PNS::MEANDER_PLACER_BASE::TOO_SHORT;
2739 case types::TuningPatternStatus::TPS_TOO_LONG: return PNS::MEANDER_PLACER_BASE::TOO_LONG;
2740 case types::TuningPatternStatus::TPS_TUNED: return PNS::MEANDER_PLACER_BASE::TUNED;
2741
2742 default:
2743 case types::TuningPatternStatus::TPS_UNKNOWN: return PNS::MEANDER_PLACER_BASE::TUNED;
2744 }
2745
2746 wxCHECK_MSG( false, PNS::MEANDER_PLACER_BASE::TUNED,
2747 "Unhandled case in FromProtoEnum<types::TuningPatternStatus>" );
2748}
2749
2750
2751template<>
2752types::ViaStitchLayout ToProtoEnum( PCB_VIA_STITCH_LAYOUT aValue )
2753{
2754 switch( aValue )
2755 {
2756 case PCB_VIA_STITCH_LAYOUT::PLAIN: return types::ViaStitchLayout::VSL_PLAIN;
2757 case PCB_VIA_STITCH_LAYOUT::STAGGERED: return types::ViaStitchLayout::VSL_STAGGERED;
2758 case PCB_VIA_STITCH_LAYOUT::POISSON: return types::ViaStitchLayout::VSL_POISSON;
2759
2760 default:
2761 wxCHECK_MSG( false, types::ViaStitchLayout::VSL_UNKNOWN,
2762 "Unhandled case in ToProtoEnum<PCB_VIA_STITCH_LAYOUT>" );
2763 }
2764}
2765
2766
2767template<>
2768PCB_VIA_STITCH_LAYOUT FromProtoEnum( types::ViaStitchLayout aValue )
2769{
2770 switch( aValue )
2771 {
2772 case types::ViaStitchLayout::VSL_PLAIN: return PCB_VIA_STITCH_LAYOUT::PLAIN;
2773 case types::ViaStitchLayout::VSL_STAGGERED: return PCB_VIA_STITCH_LAYOUT::STAGGERED;
2774 case types::ViaStitchLayout::VSL_POISSON: return PCB_VIA_STITCH_LAYOUT::POISSON;
2775
2776 default:
2777 case types::ViaStitchLayout::VSL_UNKNOWN: return PCB_VIA_STITCH_LAYOUT::PLAIN;
2778 }
2779
2780 wxCHECK_MSG( false, PCB_VIA_STITCH_LAYOUT::PLAIN,
2781 "Unhandled case in FromProtoEnum<types::ViaStitchLayout>" );
2782}
2783
2784
2785template<>
2786types::ViaStitchMode ToProtoEnum( PCB_VIA_STITCH_MODE aValue )
2787{
2788 switch( aValue )
2789 {
2790 case PCB_VIA_STITCH_MODE::STITCH: return types::ViaStitchMode::VSM_STITCH;
2791 case PCB_VIA_STITCH_MODE::GUARD: return types::ViaStitchMode::VSM_GUARD;
2792
2793 default:
2794 wxCHECK_MSG( false, types::ViaStitchMode::VSM_UNKNOWN,
2795 "Unhandled case in ToProtoEnum<PCB_VIA_STITCH_MODE>" );
2796 }
2797}
2798
2799
2800template<>
2801PCB_VIA_STITCH_MODE FromProtoEnum( types::ViaStitchMode aValue )
2802{
2803 switch( aValue )
2804 {
2805 case types::ViaStitchMode::VSM_STITCH: return PCB_VIA_STITCH_MODE::STITCH;
2806 case types::ViaStitchMode::VSM_GUARD: return PCB_VIA_STITCH_MODE::GUARD;
2807
2808 default:
2809 case types::ViaStitchMode::VSM_UNKNOWN: return PCB_VIA_STITCH_MODE::STITCH;
2810 }
2811
2812 wxCHECK_MSG( false, PCB_VIA_STITCH_MODE::STITCH,
2813 "Unhandled case in FromProtoEnum<types::ViaStitchMode>" );
2814}
2815
2816
2817template<>
2818types::ViaStackStyle ToProtoEnum( VIA_STACK_STYLE aValue )
2819{
2820 switch( aValue )
2821 {
2822 case VIA_STACK_STYLE::STACKED: return types::ViaStackStyle::VSK_STACKED;
2823 case VIA_STACK_STYLE::STAGGERED: return types::ViaStackStyle::VSK_STAGGERED;
2824
2825 default:
2826 wxCHECK_MSG( false, types::ViaStackStyle::VSK_UNKNOWN,
2827 "Unhandled case in ToProtoEnum<VIA_STACK_STYLE>" );
2828 }
2829}
2830
2831
2832template<>
2833VIA_STACK_STYLE FromProtoEnum( types::ViaStackStyle aValue )
2834{
2835 switch( aValue )
2836 {
2837 case types::ViaStackStyle::VSK_STACKED: return VIA_STACK_STYLE::STACKED;
2838 case types::ViaStackStyle::VSK_STAGGERED: return VIA_STACK_STYLE::STAGGERED;
2839
2840 default:
2841 case types::ViaStackStyle::VSK_UNKNOWN: return VIA_STACK_STYLE::STACKED;
2842 }
2843
2844 wxCHECK_MSG( false, VIA_STACK_STYLE::STACKED,
2845 "Unhandled case in FromProtoEnum<types::ViaStackStyle>" );
2846}
2847
2848
2849// Adding something new here? Add it to test_api_enums.cpp!
types::PadType ToProtoEnum(PAD_ATTRIB aValue)
PAD_ATTRIB FromProtoEnum(types::PadType aValue)
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)
NET_COLOR_MODE
Determine how net color overrides should be applied.
@ 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.
RATSNEST_MODE
Determine how ratsnest lines are drawn.
@ VISIBLE
Ratsnest lines are drawn to items on visible layers only.
@ ALL
Ratsnest lines are drawn to items on all layers (default)
BS_EDGE_CONNECTOR_CONSTRAINTS
@ BS_EDGE_CONNECTOR_BEVELLED
@ BS_EDGE_CONNECTOR_NONE
@ BS_EDGE_CONNECTOR_IN_USE
BOARD_STACKUP_ITEM_TYPE
@ BS_ITEM_TYPE_UNDEFINED
@ BS_ITEM_TYPE_COPPER
@ BS_ITEM_TYPE_SILKSCREEN
@ BS_ITEM_TYPE_DIELECTRIC
@ BS_ITEM_TYPE_SOLDERPASTE
@ BS_ITEM_TYPE_SOLDERMASK
DATA_SET
Columns of the IPC-2581C function mode table, Table 4 p 80.
NET_NAMES
An anonymous name keeps the connections.
GEN_MODE
This is a hack to deal with cli having the wrong behavior We will deprecate out the wrong behavior,...
@ ALL_LAYERS_SEPARATE_FILE
The most traditional output mode KiCad has had.
@ ALL_LAYERS_ONE_FILE
DEPRECATED MODE.
@ ONE_PAGE_PER_LAYER_ONE_FILE
"Single Document" mode
MODE
! Copper geometry mode: controls how many unique copper layer shapes this padstack has
Definition padstack.h:169
@ NORMAL
Shape is the same on all layers.
Definition padstack.h:170
@ CUSTOM
Shapes can be defined on arbitrary layers.
Definition padstack.h:172
@ FRONT_INNER_BACK
Up to three shapes can be defined (F_Cu, inner copper layers, B_Cu)
Definition padstack.h:171
TUNING_STATUS
Result of the length tuning operation.
PCB_DRC_CODE
Definition drc_item.h:35
@ DRCE_DISABLED_LAYER_ITEM
Definition drc_item.h:74
@ DRCE_FOOTPRINT_SCALED_WITH_PADS
Definition drc_item.h:89
@ DRCE_DP_UNCOUPLED_LENGTH_TOO_LONG
Definition drc_item.h:114
@ DRCE_SKEW_OUT_OF_RANGE
Definition drc_item.h:111
@ DRCE_CREEPAGE
Definition drc_item.h:42
@ DRCE_TUNING_PROFILE_IMPLICIT_RULES
Definition drc_item.h:120
@ DRCE_HOLE_CLEARANCE
Definition drc_item.h:52
@ DRCE_MICROVIA_STACK_DEPTH
Definition drc_item.h:65
@ DRCE_SILK_EDGE_CLEARANCE
Definition drc_item.h:102
@ DRCE_ZONES_INTERSECT
Definition drc_item.h:45
@ DRCE_FOOTPRINT_FILTERS
Definition drc_item.h:82
@ DRCE_SILK_MASK_CLEARANCE
Definition drc_item.h:100
@ DRCE_VIA_DIAMETER
Definition drc_item.h:59
@ DRCE_UNCONNECTED_ITEMS
Definition drc_item.h:37
@ DRCE_DP_GAP_OUT_OF_RANGE
Definition drc_item.h:113
@ DRCE_TRACK_WIDTH
Definition drc_item.h:53
@ DRCE_PADSTACK
Definition drc_item.h:60
@ DRCE_MIRRORED_TEXT_ON_FRONT_LAYER
Definition drc_item.h:116
@ DRCE_LIB_FOOTPRINT_ISSUES
Definition drc_item.h:85
@ DRCE_MICROVIA_CROSSES_CORE
Definition drc_item.h:67
@ DRCE_OVERLAPPING_FOOTPRINTS
Definition drc_item.h:68
@ DRCE_INVALID_OUTLINE
Definition drc_item.h:75
@ DRCE_TRACK_ON_POST_MACHINED_LAYER
Definition drc_item.h:122
@ DRCE_TEXT_ON_EDGECUTS
Definition drc_item.h:40
@ DRCE_NET_CHAIN_STUB_TOO_LONG
Definition drc_item.h:108
@ DRCE_MALFORMED_MICROVIA_STACK_SPAN
Definition drc_item.h:63
@ DRCE_MICROVIA_ASPECT_RATIO
Definition drc_item.h:66
@ DRCE_DRILL_OUT_OF_RANGE
Definition drc_item.h:58
@ DRCE_EDGE_CLEARANCE
Definition drc_item.h:44
@ DRCE_NET_CHAIN_RETURN_PATH_BREAK
Definition drc_item.h:109
@ DRCE_STARVED_THERMAL
Definition drc_item.h:47
@ DRCE_TRACK_SEGMENT_LENGTH
Definition drc_item.h:55
@ DRCE_SCHEMATIC_FIELDS_PARITY
Definition drc_item.h:126
@ DRCE_MISSING_COURTYARD
Definition drc_item.h:69
@ DRCE_MICROVIA_STACK_NOT_FILLED
Definition drc_item.h:64
@ DRCE_TRACK_ANGLE
Definition drc_item.h:54
@ DRCE_TRACK_NOT_CENTERED_ON_VIA
Definition drc_item.h:124
@ DRCE_CLEARANCE
Definition drc_item.h:41
@ DRCE_ISOLATED_COPPER
Definition drc_item.h:46
@ DRCE_GENERIC_ERROR
Definition drc_item.h:94
@ DRCE_NET_CHAIN_TUNING_PROFILES
Definition drc_item.h:110
@ DRCE_MISSING_TUNING_PROFILE
Definition drc_item.h:119
@ DRCE_DRILLED_HOLES_TOO_CLOSE
Definition drc_item.h:50
@ DRCE_ALLOWED_ITEMS
Definition drc_item.h:39
@ DRCE_COPPER_SLIVER
Definition drc_item.h:96
@ DRCE_PTH_IN_COURTYARD
Definition drc_item.h:72
@ DRCE_MICROVIA_DRILL_OUT_OF_RANGE
Definition drc_item.h:62
@ DRCE_SHORTING_ITEMS
Definition drc_item.h:38
@ DRCE_MALFORMED_COURTYARD
Definition drc_item.h:70
@ DRCE_DANGLING_VIA
Definition drc_item.h:48
@ DRCE_PADSTACK_INVALID
Definition drc_item.h:61
@ DRCE_UNRESOLVED_VARIABLE
Definition drc_item.h:91
@ DRCE_FOOTPRINT_TYPE_MISMATCH
Definition drc_item.h:84
@ DRCE_DUPLICATE_FOOTPRINT
Definition drc_item.h:78
@ DRCE_DANGLING_TRACK
Definition drc_item.h:49
@ DRCE_TEXT_HEIGHT
Definition drc_item.h:104
@ DRCE_ASSERTION_FAILURE
Definition drc_item.h:92
@ DRCE_SOLDERMASK_BRIDGE
Definition drc_item.h:97
@ DRCE_DRILLED_HOLES_COLOCATED
Definition drc_item.h:51
@ DRCE_EXTRA_FOOTPRINT
Definition drc_item.h:79
@ DRCE_SILK_CLEARANCE
Definition drc_item.h:103
@ DRCE_LENGTH_OUT_OF_RANGE
Definition drc_item.h:107
@ DRCE_LIB_FOOTPRINT_MISMATCH
Definition drc_item.h:86
@ DRCE_NET_CONFLICT
Definition drc_item.h:80
@ DRCE_MISSING_FOOTPRINT
Definition drc_item.h:77
@ DRCE_PAD_TH_WITH_NO_HOLE
Definition drc_item.h:87
@ DRCE_FOOTPRINT
Definition drc_item.h:88
@ DRCE_UNMIRRORED_TEXT_ON_BACK_LAYER
Definition drc_item.h:117
@ DRCE_GENERIC_WARNING
Definition drc_item.h:93
@ DRCE_TEXT_THICKNESS
Definition drc_item.h:105
@ DRCE_NPTH_IN_COURTYARD
Definition drc_item.h:73
@ DRCE_CONNECTION_WIDTH
Definition drc_item.h:57
@ DRCE_SCHEMATIC_PARITY
Definition drc_item.h:81
@ DRCE_TRACKS_CROSSING
Definition drc_item.h:43
@ DRCE_VIA_COUNT_OUT_OF_RANGE
Definition drc_item.h:112
@ DRCE_ANNULAR_WIDTH
Definition drc_item.h:56
DRC_DISALLOW_T
Definition drc_rule.h:96
@ DRC_DISALLOW_PADS
Definition drc_rule.h:102
@ DRC_DISALLOW_BURIED_VIAS
Definition drc_rule.h:100
@ DRC_DISALLOW_BLIND_VIAS
Definition drc_rule.h:99
@ DRC_DISALLOW_TEXTS
Definition drc_rule.h:104
@ DRC_DISALLOW_ZONES
Definition drc_rule.h:103
@ DRC_DISALLOW_HOLES
Definition drc_rule.h:106
@ DRC_DISALLOW_GRAPHICS
Definition drc_rule.h:105
@ DRC_DISALLOW_THROUGH_VIAS
Definition drc_rule.h:97
@ DRC_DISALLOW_FOOTPRINTS
Definition drc_rule.h:107
@ DRC_DISALLOW_TRACKS
Definition drc_rule.h:101
@ DRC_DISALLOW_MICRO_VIAS
Definition drc_rule.h:98
DRC_CONSTRAINT_T
Definition drc_rule.h:49
@ ANNULAR_WIDTH_CONSTRAINT
Definition drc_rule.h:63
@ BRIDGED_MASK_CONSTRAINT
Definition drc_rule.h:88
@ COURTYARD_CLEARANCE_CONSTRAINT
Definition drc_rule.h:57
@ VIA_DIAMETER_CONSTRAINT
Definition drc_rule.h:72
@ ZONE_CONNECTION_CONSTRAINT
Definition drc_rule.h:64
@ DIFF_PAIR_GAP_CONSTRAINT
Definition drc_rule.h:78
@ NET_CHAIN_LENGTH_CONSTRAINT
Definition drc_rule.h:74
@ VIA_DANGLING_CONSTRAINT
Definition drc_rule.h:87
@ SOLDER_MASK_SLIVER_CONSTRAINT
Definition drc_rule.h:89
@ NET_CHAIN_STUB_LENGTH_CONSTRAINT
Definition drc_rule.h:75
@ DISALLOW_CONSTRAINT
Definition drc_rule.h:71
@ TRACK_WIDTH_CONSTRAINT
Definition drc_rule.h:61
@ SILK_CLEARANCE_CONSTRAINT
Definition drc_rule.h:58
@ EDGE_CLEARANCE_CONSTRAINT
Definition drc_rule.h:55
@ MIN_RESOLVED_SPOKES_CONSTRAINT
Definition drc_rule.h:67
@ TRACK_SEGMENT_LENGTH_CONSTRAINT
Definition drc_rule.h:62
@ TEXT_THICKNESS_CONSTRAINT
Definition drc_rule.h:60
@ LENGTH_CONSTRAINT
Definition drc_rule.h:73
@ VIA_COUNT_CONSTRAINT
Definition drc_rule.h:81
@ NET_CHAIN_RETURN_PATH_CONSTRAINT
Definition drc_rule.h:76
@ PHYSICAL_HOLE_CLEARANCE_CONSTRAINT
Definition drc_rule.h:83
@ CLEARANCE_CONSTRAINT
Definition drc_rule.h:51
@ MICROVIA_ASPECT_RATIO_CONSTRAINT
Definition drc_rule.h:91
@ NULL_CONSTRAINT
Definition drc_rule.h:50
@ THERMAL_SPOKE_WIDTH_CONSTRAINT
Definition drc_rule.h:66
@ CONNECTION_WIDTH_CONSTRAINT
Definition drc_rule.h:85
@ THERMAL_RELIEF_GAP_CONSTRAINT
Definition drc_rule.h:65
@ MAX_UNCOUPLED_CONSTRAINT
Definition drc_rule.h:79
@ ASSERTION_CONSTRAINT
Definition drc_rule.h:84
@ SKEW_CONSTRAINT
Definition drc_rule.h:77
@ MICROVIA_STACK_DEPTH_CONSTRAINT
Definition drc_rule.h:90
@ HOLE_CLEARANCE_CONSTRAINT
Definition drc_rule.h:53
@ SOLDER_PASTE_ABS_MARGIN_CONSTRAINT
Definition drc_rule.h:69
@ SOLDER_MASK_EXPANSION_CONSTRAINT
Definition drc_rule.h:68
@ TRACK_ANGLE_CONSTRAINT
Definition drc_rule.h:86
@ HOLE_SIZE_CONSTRAINT
Definition drc_rule.h:56
@ TEXT_HEIGHT_CONSTRAINT
Definition drc_rule.h:59
@ CREEPAGE_CONSTRAINT
Definition drc_rule.h:52
@ DIFF_PAIR_INTRA_SKEW_CONSTRAINT
Definition drc_rule.h:80
@ PHYSICAL_CLEARANCE_CONSTRAINT
Definition drc_rule.h:82
@ SOLDER_PASTE_REL_MARGIN_CONSTRAINT
Definition drc_rule.h:70
@ HOLE_TO_HOLE_CONSTRAINT
Definition drc_rule.h:54
MEANDER_SIDE
Initial side the meander is placed on.
Definition pns_meander.h:60
@ MEANDER_SIDE_RIGHT
Definition pns_meander.h:63
@ MEANDER_SIDE_DEFAULT
Definition pns_meander.h:62
@ MEANDER_SIDE_LEFT
Definition pns_meander.h:61
MEANDER_STYLE
Meander corner shape.
Definition pns_meander.h:53
@ MEANDER_STYLE_ROUND
Definition pns_meander.h:54
@ MEANDER_STYLE_CHAMFER
Definition pns_meander.h:55
PAD_DRILL_SHAPE
The set of pad drill shapes, used with PAD::{Set,Get}DrillShape()
Definition padstack.h:68
PAD_ATTRIB
The set of pad shapes, used with PAD::{Set,Get}Attribute().
Definition padstack.h:96
@ NPTH
like PAD_PTH, but not plated mechanical use only, no connection allowed
Definition padstack.h:102
@ SMD
Smd pad, appears on the solder paste layer (default)
Definition padstack.h:98
@ PTH
Plated through hole pad.
Definition padstack.h:97
@ CONN
Like smd, does not appear on the solder paste layer (default) Note: also has a special attribute in G...
Definition padstack.h:99
PAD_SHAPE
The set of pad shapes, used with PAD::{Set,Get}Shape()
Definition padstack.h:51
@ CHAMFERED_RECT
Definition padstack.h:59
@ ROUNDRECT
Definition padstack.h:56
@ TRAPEZOID
Definition padstack.h:55
@ RECTANGLE
Definition padstack.h:53
PAD_PROP
The set of pad properties used in Gerber files (Draw files, and P&P files) to define some properties ...
Definition padstack.h:113
@ FIDUCIAL_LOCAL
a fiducial (usually a smd) local to the parent footprint
Definition padstack.h:117
@ FIDUCIAL_GLBL
a fiducial (usually a smd) for the full board
Definition padstack.h:116
@ MECHANICAL
a pad used for mechanical support
Definition padstack.h:121
@ PRESSFIT
a PTH with a hole diameter with tight tolerances for press fit pin
Definition padstack.h:122
@ HEATSINK
a pad used as heat sink, usually in SMD footprints
Definition padstack.h:119
@ NONE
no special fabrication property
Definition padstack.h:114
@ TESTPOINT
a test point pad
Definition padstack.h:118
@ CASTELLATED
a pad with a castellated through hole
Definition padstack.h:120
@ BGA
Smd pad, used in BGA footprints.
Definition padstack.h:115
UNCONNECTED_LAYER_MODE
Definition padstack.h:127
CONSTRAINT_ANCHOR
Which feature of a referenced board item participates in a constraint.
@ VERTEX
An indexed rectangle corner or polygon outline vertex; pairs with CONSTRAINT_MEMBER::m_index.
@ MID
Midpoint of a segment or arc.
@ RADIUS
The radius (scalar feature) of an arc or circle.
@ WHOLE
The item as a whole (a segment as a line, a circle).
@ START
First endpoint of a segment or arc.
@ END
Second endpoint of a segment or arc.
@ CENTER
Center of an arc or circle.
PCB_CONSTRAINT_TYPE
The geometric relationship a PCB_CONSTRAINT enforces between its members.
@ CONCENTRIC
Two arcs/circles share a center.
@ SYMMETRIC
Two points are mirror images about an axis.
@ FIXED_POSITION
A point is locked at its current location.
@ VERTICAL
A segment (or two points) is vertical.
@ TANGENT
A line and a curve, or two curves, touch tangentially.
@ COINCIDENT
Two points are made to coincide.
@ PERPENDICULAR
Two segments are perpendicular.
@ FIXED_RADIUS
An arc/circle has a driving radius value.
@ HORIZONTAL
A segment (or two points) is horizontal.
@ EQUAL_RADIUS
Two arcs/circles have equal radius.
@ MIDPOINT
A point is the midpoint of a segment.
@ POINT_ON_LINE
A point lies on a segment's supporting line.
@ FIXED_LENGTH
A segment has a driving length value.
@ ANGULAR_DIMENSION
An angle between members (driving or reference).
@ COLLINEAR
Two segments lie on the same line.
@ ARC_ANGLE
An arc has a driving or reference swept-angle value.
@ PARALLEL
Two segments are parallel.
@ EQUAL_LENGTH
Two segments have equal length.
DIM_TEXT_POSITION
Where to place the text on a dimension.
@ OUTSIDE
Text appears outside the dimension line (default)
@ MANUAL
Text placement is manually set by the user.
@ INLINE
Text appears in line with the dimension line.
DIM_UNITS_FORMAT
How to display the units in a dimension's text.
DIM_UNITS_MODE
Used for storing the units selection in the file because EDA_UNITS alone doesn't cut it.
DIM_ARROW_DIRECTION
Used for dimension's arrow.
DIM_TEXT_BORDER
Frame to show around dimension text.
DIM_PRECISION
VIATYPE
LENGTH_TUNING_MODE
@ DIFF_PAIR
@ DIFF_PAIR_SKEW
VIA_STACK_STYLE
PCB_VIA_STITCH_MODE
@ STITCH
Fill the outline with vias with a pattern.
@ GUARD
Place vias to guard a net contained within.
PCB_VIA_STITCH_LAYOUT
@ POISSON
Tiled poisson distribution.
@ STAGGERED
Odd rows shifted by half the pitch.
@ PLAIN
Regular row/column grid.
DRILL_MARKS
Plots and prints can show holes in pads and vias 3 options are available:
SEVERITY
@ RPT_SEVERITY_WARNING
@ RPT_SEVERITY_ERROR
@ RPT_SEVERITY_UNDEFINED
@ RPT_SEVERITY_EXCLUSION
@ RPT_SEVERITY_IGNORE
@ RPT_SEVERITY_DEBUG
@ RPT_SEVERITY_INFO
@ RPT_SEVERITY_ACTION
@ TARGET_UNKNOWN
@ TARGET_ROUND
@ TARGET_RECT
@ TARGET_TRACK
TEARDROP_TYPE
define the type of a teardrop: on a via or pad, or a track end
DIELECTRIC_MODEL
Frequency-domain model used for the substrate dielectric properties.
Class ZONE_SETTINGS used to handle zones parameters in dialogs.
THIEVING_PATTERN
Shape stamped onto the grid for a copper-thieving fill.
ISLAND_REMOVAL_MODE
Whether or not to remove isolated islands from a zone.
ZONE_FILL_MODE
ZONE_BORDER_DISPLAY_STYLE
Zone border styles.
PLACEMENT_SOURCE_T
ZONE_CONNECTION
How pads are covered by copper in zone.
Definition zones.h:43
@ THERMAL
Use thermal relief for pads.
Definition zones.h:46
@ THT_THERMAL
Thermal relief only for THT pads.
Definition zones.h:48
@ NONE
Pads are not covered.
Definition zones.h:45
@ FULL
pads are covered by copper
Definition zones.h:47