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 along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#include <import_export.h>
22#include <api/api_enums.h>
23#include <api/board/board_types.pb.h>
24#include <api/board/board_commands.pb.h>
25#include <wx/wx.h>
26
28#include <padstack.h>
29#include <pcb_dimension.h>
30#include <pcb_track.h>
31#include <zones.h>
32#include <zone_settings.h>
34
35// Adding something new here? Add it to test_api_enums.cpp!
36
37using namespace kiapi::board;
38
39template<>
40types::PadType ToProtoEnum( PAD_ATTRIB aValue )
41{
42 switch( aValue )
43 {
44 case PAD_ATTRIB::PTH: return types::PadType::PT_PTH;
45 case PAD_ATTRIB::SMD: return types::PadType::PT_SMD;
46 case PAD_ATTRIB::CONN: return types::PadType::PT_EDGE_CONNECTOR;
47 case PAD_ATTRIB::NPTH: return types::PadType::PT_NPTH;
48
49 default:
50 wxCHECK_MSG( false, types::PadType::PT_UNKNOWN,
51 "Unhandled case in ToProtoEnum<PAD_ATTRIB>");
52 }
53}
54
55
56template<>
57PAD_ATTRIB FromProtoEnum( types::PadType aValue )
58{
59 switch( aValue )
60 {
61 case types::PadType::PT_UNKNOWN:
62 case types::PadType::PT_PTH: return PAD_ATTRIB::PTH;
63 case types::PadType::PT_SMD: return PAD_ATTRIB::SMD;
64 case types::PadType::PT_EDGE_CONNECTOR: return PAD_ATTRIB::CONN;
65 case types::PadType::PT_NPTH: return PAD_ATTRIB::NPTH;
66
67 default:
68 wxCHECK_MSG( false, PAD_ATTRIB::PTH,
69 "Unhandled case in FromProtoEnum<types::PadType>" );
70 }
71}
72
73template<>
74types::DrillShape ToProtoEnum( PAD_DRILL_SHAPE aValue )
75{
76 switch( aValue )
77 {
78 case PAD_DRILL_SHAPE::CIRCLE: return types::DrillShape::DS_CIRCLE;
79 case PAD_DRILL_SHAPE::OBLONG: return types::DrillShape::DS_OBLONG;
80 case PAD_DRILL_SHAPE::UNDEFINED: return types::DrillShape::DS_UNDEFINED;
81 default:
82 wxCHECK_MSG( false, types::DrillShape::DS_UNKNOWN,
83 "Unhandled case in ToProtoEnum<PAD_DRILL_SHAPE>");
84 }
85}
86
87template<>
88PAD_DRILL_SHAPE FromProtoEnum( types::DrillShape aValue )
89{
90 switch( aValue )
91 {
92 case types::DrillShape::DS_CIRCLE: return PAD_DRILL_SHAPE::CIRCLE;
93 case types::DrillShape::DS_OBLONG: return PAD_DRILL_SHAPE::OBLONG;
94 case types::DrillShape::DS_UNKNOWN:
95 case types::DrillShape::DS_UNDEFINED: return PAD_DRILL_SHAPE::UNDEFINED;
96 default:
97 wxCHECK_MSG( false, PAD_DRILL_SHAPE::UNDEFINED,
98 "Unhandled case in FromProtoEnum<types::DrillShape>" );
99 }
100}
101
102template<>
103types::PadStackShape ToProtoEnum( PAD_SHAPE aValue )
104{
105 switch( aValue )
106 {
107 case PAD_SHAPE::CIRCLE: return types::PadStackShape::PSS_CIRCLE;
108 case PAD_SHAPE::RECTANGLE: return types::PadStackShape::PSS_RECTANGLE;
109 case PAD_SHAPE::OVAL: return types::PadStackShape::PSS_OVAL;
110 case PAD_SHAPE::TRAPEZOID: return types::PadStackShape::PSS_TRAPEZOID;
111 case PAD_SHAPE::ROUNDRECT: return types::PadStackShape::PSS_ROUNDRECT;
112 case PAD_SHAPE::CHAMFERED_RECT: return types::PadStackShape::PSS_CHAMFEREDRECT;
113 case PAD_SHAPE::CUSTOM: return types::PadStackShape::PSS_CUSTOM;
114
115 default:
116 wxCHECK_MSG( false, types::PadStackShape::PSS_UNKNOWN,
117 "Unhandled case in ToProtoEnum<PAD_SHAPE>");
118 }
119}
120
121
122template<>
123PAD_SHAPE FromProtoEnum( types::PadStackShape aValue )
124{
125 switch( aValue )
126 {
127 case types::PadStackShape::PSS_UNKNOWN:
128 case types::PadStackShape::PSS_CIRCLE: return PAD_SHAPE::CIRCLE;
129 case types::PadStackShape::PSS_RECTANGLE: return PAD_SHAPE::RECTANGLE;
130 case types::PadStackShape::PSS_OVAL: return PAD_SHAPE::OVAL;
131 case types::PadStackShape::PSS_TRAPEZOID: return PAD_SHAPE::TRAPEZOID;
132 case types::PadStackShape::PSS_ROUNDRECT: return PAD_SHAPE::ROUNDRECT;
133 case types::PadStackShape::PSS_CHAMFEREDRECT: return PAD_SHAPE::CHAMFERED_RECT;
134 case types::PadStackShape::PSS_CUSTOM: return PAD_SHAPE::CUSTOM;
135
136 default:
137 wxCHECK_MSG( false, PAD_SHAPE::CIRCLE,
138 "Unhandled case in FromProtoEnum<types::PadStackShape>" );
139 }
140}
141
142
143template<>
144types::PadStackType ToProtoEnum( PADSTACK::MODE aValue )
145{
146 switch( aValue )
147 {
148 case PADSTACK::MODE::NORMAL: return types::PadStackType::PST_NORMAL;
149 case PADSTACK::MODE::FRONT_INNER_BACK: return types::PadStackType::PST_FRONT_INNER_BACK;
150 case PADSTACK::MODE::CUSTOM: return types::PadStackType::PST_CUSTOM;
151
152 default:
153 wxCHECK_MSG( false, types::PadStackType::PST_UNKNOWN,
154 "Unhandled case in ToProtoEnum<PADSTACK::MODE>");
155 }
156}
157
158
159template<>
160PADSTACK::MODE FromProtoEnum( types::PadStackType aValue )
161{
162 switch( aValue )
163 {
164 case types::PadStackType::PST_UNKNOWN:
165 case types::PadStackType::PST_NORMAL: return PADSTACK::MODE::NORMAL;
166 case types::PadStackType::PST_FRONT_INNER_BACK: return PADSTACK::MODE::FRONT_INNER_BACK;
167 case types::PadStackType::PST_CUSTOM: return PADSTACK::MODE::CUSTOM;
168
169 default:
170 wxCHECK_MSG( false, PADSTACK::MODE::NORMAL,
171 "Unhandled case in FromProtoEnum<types::PadStackType>" );
172 }
173}
174
175
176template<>
177types::ViaType ToProtoEnum( VIATYPE aValue )
178{
179 switch( aValue )
180 {
181 case VIATYPE::THROUGH: return types::ViaType::VT_THROUGH;
182 case VIATYPE::BLIND: return types::ViaType::VT_BLIND; // Since V10
183 case VIATYPE::BURIED: return types::ViaType::VT_BURIED;
184 case VIATYPE::MICROVIA: return types::ViaType::VT_MICRO;
185
186 default:
187 wxCHECK_MSG( false, types::ViaType::VT_UNKNOWN,
188 "Unhandled case in ToProtoEnum<VIATYPE>");
189 }
190}
191
192
193template<>
194VIATYPE FromProtoEnum( types::ViaType aValue )
195{
196 switch( aValue )
197 {
198 case types::ViaType::VT_UNKNOWN:
199 case types::ViaType::VT_THROUGH: return VIATYPE::THROUGH;
200 case types::ViaType::VT_BLIND_BURIED: return VIATYPE::BLIND;
201 case types::ViaType::VT_BLIND: return VIATYPE::BLIND; // Since V10
202 case types::ViaType::VT_BURIED: return VIATYPE::BURIED;
203 case types::ViaType::VT_MICRO: return VIATYPE::MICROVIA;
204
205 default:
206 wxCHECK_MSG( false, VIATYPE::THROUGH,
207 "Unhandled case in FromProtoEnum<types::ViaType>" );
208 }
209}
210
211
212template<>
213types::ZoneConnectionStyle ToProtoEnum( ZONE_CONNECTION aValue )
214{
215 switch( aValue )
216 {
217 case ZONE_CONNECTION::INHERITED: return types::ZoneConnectionStyle::ZCS_INHERITED;
218 case ZONE_CONNECTION::NONE: return types::ZoneConnectionStyle::ZCS_NONE;
219 case ZONE_CONNECTION::THERMAL: return types::ZoneConnectionStyle::ZCS_THERMAL;
220 case ZONE_CONNECTION::FULL: return types::ZoneConnectionStyle::ZCS_FULL;
221 case ZONE_CONNECTION::THT_THERMAL: return types::ZoneConnectionStyle::ZCS_PTH_THERMAL;
222
223 default:
224 wxCHECK_MSG( false, types::ZoneConnectionStyle::ZCS_UNKNOWN,
225 "Unhandled case in ToProtoEnum<ZONE_CONNECTION>");
226 }
227}
228
229
230template<>
231ZONE_CONNECTION FromProtoEnum( types::ZoneConnectionStyle aValue )
232{
233 switch( aValue )
234 {
235 case types::ZoneConnectionStyle::ZCS_UNKNOWN: return ZONE_CONNECTION::INHERITED;
236 case types::ZoneConnectionStyle::ZCS_INHERITED: return ZONE_CONNECTION::INHERITED;
237 case types::ZoneConnectionStyle::ZCS_NONE: return ZONE_CONNECTION::NONE;
238 case types::ZoneConnectionStyle::ZCS_THERMAL: return ZONE_CONNECTION::THERMAL;
239 case types::ZoneConnectionStyle::ZCS_FULL: return ZONE_CONNECTION::FULL;
240 case types::ZoneConnectionStyle::ZCS_PTH_THERMAL: return ZONE_CONNECTION::THT_THERMAL;
241
242 default:
243 wxCHECK_MSG( false, ZONE_CONNECTION::INHERITED,
244 "Unhandled case in FromProtoEnum<types::ZoneConnectionStyle>" );
245 }
246}
247
248
249template<>
250types::UnconnectedLayerRemoval ToProtoEnum( PADSTACK::UNCONNECTED_LAYER_MODE aValue )
251{
252 switch( aValue )
253 {
255 return types::UnconnectedLayerRemoval::ULR_KEEP;
256
258 return types::UnconnectedLayerRemoval::ULR_REMOVE;
259
261 return types::UnconnectedLayerRemoval::ULR_REMOVE_EXCEPT_START_AND_END;
262
264 return types::UnconnectedLayerRemoval::ULR_START_END_ONLY;
265
266 default:
267 wxCHECK_MSG( false, types::UnconnectedLayerRemoval::ULR_UNKNOWN,
268 "Unhandled case in ToProtoEnum<PADSTACK::UNCONNECTED_LAYER_MODE>");
269 }
270}
271
272
273template<>
274PADSTACK::UNCONNECTED_LAYER_MODE FromProtoEnum( types::UnconnectedLayerRemoval aValue )
275{
276 switch( aValue )
277 {
278 case types::UnconnectedLayerRemoval::ULR_UNKNOWN:
279 case types::UnconnectedLayerRemoval::ULR_KEEP:
281
282 case types::UnconnectedLayerRemoval::ULR_REMOVE:
284
285 case types::UnconnectedLayerRemoval::ULR_REMOVE_EXCEPT_START_AND_END:
287
288 case types::UnconnectedLayerRemoval::ULR_START_END_ONLY:
290
291 default:
293 "Unhandled case in FromProtoEnum<types::UnconnectedLayerRemoval>");
294 }
295}
296
297
298template<>
299types::IslandRemovalMode ToProtoEnum( ISLAND_REMOVAL_MODE aValue )
300{
301 switch( aValue )
302 {
303 case ISLAND_REMOVAL_MODE::ALWAYS: return types::IslandRemovalMode::IRM_ALWAYS;
304 case ISLAND_REMOVAL_MODE::NEVER: return types::IslandRemovalMode::IRM_NEVER;
305 case ISLAND_REMOVAL_MODE::AREA: return types::IslandRemovalMode::IRM_AREA;
306
307 default:
308 wxCHECK_MSG( false, types::IslandRemovalMode::IRM_UNKNOWN,
309 "Unhandled case in ToProtoEnum<ISLAND_REMOVAL_MODE>");
310 }
311}
312
313
314template<>
315ISLAND_REMOVAL_MODE FromProtoEnum( types::IslandRemovalMode aValue )
316{
317 switch( aValue )
318 {
319 case types::IslandRemovalMode::IRM_UNKNOWN:
320 case types::IslandRemovalMode::IRM_ALWAYS: return ISLAND_REMOVAL_MODE::ALWAYS;
321 case types::IslandRemovalMode::IRM_NEVER: return ISLAND_REMOVAL_MODE::NEVER;
322 case types::IslandRemovalMode::IRM_AREA: return ISLAND_REMOVAL_MODE::AREA;
323
324 default:
325 wxCHECK_MSG( false, ISLAND_REMOVAL_MODE::ALWAYS,
326 "Unhandled case in FromProtoEnum<types::IslandRemovalMode>" );
327 }
328}
329
330
331template<>
332types::ZoneFillMode ToProtoEnum( ZONE_FILL_MODE aValue )
333{
334 switch( aValue )
335 {
336 case ZONE_FILL_MODE::POLYGONS: return types::ZoneFillMode::ZFM_SOLID;
337 case ZONE_FILL_MODE::HATCH_PATTERN: return types::ZoneFillMode::ZFM_HATCHED;
338
339 default:
340 wxCHECK_MSG( false, types::ZoneFillMode::ZFM_UNKNOWN,
341 "Unhandled case in ToProtoEnum<ZONE_FILL_MODE>");
342 }
343}
344
345
346template<>
347ZONE_FILL_MODE FromProtoEnum( types::ZoneFillMode aValue )
348{
349 switch( aValue )
350 {
351 case types::ZoneFillMode::ZFM_UNKNOWN:
352 case types::ZoneFillMode::ZFM_SOLID: return ZONE_FILL_MODE::POLYGONS;
353 case types::ZoneFillMode::ZFM_HATCHED: return ZONE_FILL_MODE::HATCH_PATTERN;
354
355 default:
356 wxCHECK_MSG( false, ZONE_FILL_MODE::POLYGONS,
357 "Unhandled case in FromProtoEnum<types::ZoneFillMode>" );
358 }
359}
360
361
362template<>
363types::ZoneBorderStyle ToProtoEnum( ZONE_BORDER_DISPLAY_STYLE aValue )
364{
365 switch( aValue )
366 {
367 case ZONE_BORDER_DISPLAY_STYLE::NO_HATCH: return types::ZoneBorderStyle::ZBS_SOLID;
368 case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL: return types::ZoneBorderStyle::ZBS_DIAGONAL_FULL;
369 case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE: return types::ZoneBorderStyle::ZBS_DIAGONAL_EDGE;
370 case ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER: return types::ZoneBorderStyle::ZBS_INVISIBLE;
371
372 default:
373 wxCHECK_MSG( false, types::ZoneBorderStyle::ZBS_UNKNOWN,
374 "Unhandled case in ToProtoEnum<ZONE_BORDER_DISPLAY_STYLE>");
375 }
376}
377
378
379template<>
380ZONE_BORDER_DISPLAY_STYLE FromProtoEnum( types::ZoneBorderStyle aValue )
381{
382 switch( aValue )
383 {
384 case types::ZoneBorderStyle::ZBS_SOLID: return ZONE_BORDER_DISPLAY_STYLE::NO_HATCH;
385 case types::ZoneBorderStyle::ZBS_DIAGONAL_FULL: return ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL;
386 case types::ZoneBorderStyle::ZBS_UNKNOWN:
387 case types::ZoneBorderStyle::ZBS_DIAGONAL_EDGE: return ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE;
388 case types::ZoneBorderStyle::ZBS_INVISIBLE: return ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER;
389
390 default:
392 "Unhandled case in FromProtoEnum<types::ZoneHatchBorderMode>" );
393 }
394}
395
396
397template<>
398types::PlacementRuleSourceType ToProtoEnum( PLACEMENT_SOURCE_T aValue )
399{
400 switch( aValue )
401 {
403 return types::PlacementRuleSourceType::PRST_SHEET_NAME;
404
406 return types::PlacementRuleSourceType::PRST_COMPONENT_CLASS;
407
409 return types::PlacementRuleSourceType::PRST_GROUP;
410
412 return types::PlacementRuleSourceType::PRST_DESIGN_BLOCK;
413
414 default:
415 wxCHECK_MSG( false, types::PlacementRuleSourceType::PRST_UNKNOWN,
416 "Unhandled case in ToProtoEnum<PLACEMENT_SOURCE_T>");
417 }
418}
419
420
421template<>
422PLACEMENT_SOURCE_T FromProtoEnum( types::PlacementRuleSourceType aValue )
423{
424 switch( aValue )
425 {
426 case types::PlacementRuleSourceType::PRST_UNKNOWN:
427 case types::PlacementRuleSourceType::PRST_SHEET_NAME:
429
430 case types::PlacementRuleSourceType::PRST_COMPONENT_CLASS:
432
433 case types::PlacementRuleSourceType::PRST_GROUP:
435
436 case types::PlacementRuleSourceType::PRST_DESIGN_BLOCK:
438
439 default:
440 wxCHECK_MSG( false, PLACEMENT_SOURCE_T::SHEETNAME,
441 "Unhandled case in FromProtoEnum<types::PlacementRuleSourceType>" );
442 }
443}
444
445
446template<>
447types::TeardropType ToProtoEnum( TEARDROP_TYPE aValue )
448{
449 switch( aValue )
450 {
451 case TEARDROP_TYPE::TD_NONE: return types::TeardropType::TDT_NONE;
452 case TEARDROP_TYPE::TD_UNSPECIFIED: return types::TeardropType::TDT_UNSPECIFIED;
453 case TEARDROP_TYPE::TD_VIAPAD: return types::TeardropType::TDT_VIA_PAD;
454 case TEARDROP_TYPE::TD_TRACKEND: return types::TeardropType::TDT_TRACK_END;
455
456 default:
457 wxCHECK_MSG( false, types::TeardropType::TDT_UNKNOWN,
458 "Unhandled case in ToProtoEnum<TEARDROP_TYPE>");
459 }
460}
461
462
463template<>
464TEARDROP_TYPE FromProtoEnum( types::TeardropType aValue )
465{
466 switch( aValue )
467 {
468 case types::TeardropType::TDT_UNKNOWN:
469 case types::TeardropType::TDT_NONE: return TEARDROP_TYPE::TD_NONE;
470 case types::TeardropType::TDT_UNSPECIFIED: return TEARDROP_TYPE::TD_UNSPECIFIED;
471 case types::TeardropType::TDT_VIA_PAD: return TEARDROP_TYPE::TD_VIAPAD;
472 case types::TeardropType::TDT_TRACK_END: return TEARDROP_TYPE::TD_TRACKEND;
473
474 default:
475 wxCHECK_MSG( false, TEARDROP_TYPE::TD_NONE,
476 "Unhandled case in FromProtoEnum<types::ZoneHatchBorderMode>" );
477 }
478}
479
480
481template<>
482types::DimensionTextBorderStyle ToProtoEnum( DIM_TEXT_BORDER aValue )
483{
484 switch( aValue )
485 {
486 case DIM_TEXT_BORDER::NONE: return types::DimensionTextBorderStyle::DTBS_NONE;
487 case DIM_TEXT_BORDER::RECTANGLE: return types::DimensionTextBorderStyle::DTBS_RECTANGLE;
488 case DIM_TEXT_BORDER::CIRCLE: return types::DimensionTextBorderStyle::DTBS_CIRCLE;
489 case DIM_TEXT_BORDER::ROUNDRECT: return types::DimensionTextBorderStyle::DTBS_ROUNDRECT;
490
491 default:
492 wxCHECK_MSG( false, types::DimensionTextBorderStyle::DTBS_UNKNOWN,
493 "Unhandled case in ToProtoEnum<DIM_TEXT_BORDER>");
494 }
495}
496
497
498template<>
499DIM_TEXT_BORDER FromProtoEnum( types::DimensionTextBorderStyle aValue )
500{
501 switch( aValue )
502 {
503 case types::DimensionTextBorderStyle::DTBS_UNKNOWN:
504 case types::DimensionTextBorderStyle::DTBS_NONE: return DIM_TEXT_BORDER::NONE;
505 case types::DimensionTextBorderStyle::DTBS_RECTANGLE: return DIM_TEXT_BORDER::RECTANGLE;
506 case types::DimensionTextBorderStyle::DTBS_CIRCLE: return DIM_TEXT_BORDER::CIRCLE;
507 case types::DimensionTextBorderStyle::DTBS_ROUNDRECT: return DIM_TEXT_BORDER::ROUNDRECT;
508
509 default:
510 wxCHECK_MSG( false, DIM_TEXT_BORDER::NONE,
511 "Unhandled case in FromProtoEnum<types::DimensionTextBorderStyle>" );
512 }
513}
514
515
516template<>
517types::DimensionUnitFormat ToProtoEnum( DIM_UNITS_FORMAT aValue )
518{
519 switch( aValue )
520 {
521 case DIM_UNITS_FORMAT::NO_SUFFIX: return types::DimensionUnitFormat::DUF_NO_SUFFIX;
522 case DIM_UNITS_FORMAT::BARE_SUFFIX: return types::DimensionUnitFormat::DUF_BARE_SUFFIX;
523 case DIM_UNITS_FORMAT::PAREN_SUFFIX: return types::DimensionUnitFormat::DUF_PAREN_SUFFIX;
524
525 default:
526 wxCHECK_MSG( false, types::DimensionUnitFormat::DUF_UNKNOWN,
527 "Unhandled case in ToProtoEnum<DIM_UNITS_FORMAT>");
528 }
529}
530
531
532template<>
533DIM_UNITS_FORMAT FromProtoEnum( types::DimensionUnitFormat aValue )
534{
535 switch( aValue )
536 {
537 case types::DimensionUnitFormat::DUF_UNKNOWN:
538 case types::DimensionUnitFormat::DUF_NO_SUFFIX: return DIM_UNITS_FORMAT::NO_SUFFIX;
539 case types::DimensionUnitFormat::DUF_BARE_SUFFIX: return DIM_UNITS_FORMAT::BARE_SUFFIX;
540 case types::DimensionUnitFormat::DUF_PAREN_SUFFIX: return DIM_UNITS_FORMAT::PAREN_SUFFIX;
541
542 default:
543 wxCHECK_MSG( false, DIM_UNITS_FORMAT::NO_SUFFIX,
544 "Unhandled case in FromProtoEnum<types::DimensionUnitFormat>" );
545 }
546}
547
548
549template<>
550types::DimensionArrowDirection ToProtoEnum( DIM_ARROW_DIRECTION aValue )
551{
552 switch( aValue )
553 {
554 case DIM_ARROW_DIRECTION::INWARD: return types::DimensionArrowDirection::DAD_INWARD;
555 case DIM_ARROW_DIRECTION::OUTWARD: return types::DimensionArrowDirection::DAD_OUTWARD;
556
557 default:
558 wxCHECK_MSG( false, types::DimensionArrowDirection::DAD_UNKNOWN,
559 "Unhandled case in ToProtoEnum<DIM_ARROW_DIRECTION>");
560 }
561}
562
563
564template<>
565DIM_ARROW_DIRECTION FromProtoEnum( types::DimensionArrowDirection aValue )
566{
567 switch( aValue )
568 {
569 case types::DimensionArrowDirection::DAD_INWARD: return DIM_ARROW_DIRECTION::INWARD;
570 case types::DimensionArrowDirection::DAD_UNKNOWN:
571 case types::DimensionArrowDirection::DAD_OUTWARD: return DIM_ARROW_DIRECTION::OUTWARD;
572
573 default:
574 wxCHECK_MSG( false, DIM_ARROW_DIRECTION::OUTWARD,
575 "Unhandled case in FromProtoEnum<types::DimensionArrowDirection>" );
576 }
577}
578
579
580template<>
581types::DimensionPrecision ToProtoEnum( DIM_PRECISION aValue )
582{
583 switch( aValue )
584 {
585 case DIM_PRECISION::X: return types::DimensionPrecision::DP_FIXED_0;
586 case DIM_PRECISION::X_X: return types::DimensionPrecision::DP_FIXED_1;
587 case DIM_PRECISION::X_XX: return types::DimensionPrecision::DP_FIXED_2;
588 case DIM_PRECISION::X_XXX: return types::DimensionPrecision::DP_FIXED_3;
589 case DIM_PRECISION::X_XXXX: return types::DimensionPrecision::DP_FIXED_4;
590 case DIM_PRECISION::X_XXXXX: return types::DimensionPrecision::DP_FIXED_5;
591 case DIM_PRECISION::V_VV: return types::DimensionPrecision::DP_SCALED_IN_2;
592 case DIM_PRECISION::V_VVV: return types::DimensionPrecision::DP_SCALED_IN_3;
593 case DIM_PRECISION::V_VVVV: return types::DimensionPrecision::DP_SCALED_IN_4;
594 case DIM_PRECISION::V_VVVVV: return types::DimensionPrecision::DP_SCALED_IN_5;
595
596 default:
597 wxCHECK_MSG( false, types::DimensionPrecision::DP_UNKNOWN,
598 "Unhandled case in ToProtoEnum<DIM_PRECISION>");
599 }
600}
601
602
603template<>
604DIM_PRECISION FromProtoEnum( types::DimensionPrecision aValue )
605{
606 switch( aValue )
607 {
608 case types::DimensionPrecision::DP_FIXED_0: return DIM_PRECISION::X;
609 case types::DimensionPrecision::DP_FIXED_1: return DIM_PRECISION::X_X;
610 case types::DimensionPrecision::DP_FIXED_2: return DIM_PRECISION::X_XX;
611 case types::DimensionPrecision::DP_FIXED_3: return DIM_PRECISION::X_XXX;
612 case types::DimensionPrecision::DP_FIXED_4: return DIM_PRECISION::X_XXXX;
613 case types::DimensionPrecision::DP_FIXED_5: return DIM_PRECISION::X_XXXXX;
614 case types::DimensionPrecision::DP_UNKNOWN:
615 case types::DimensionPrecision::DP_SCALED_IN_2: return DIM_PRECISION::V_VV;
616 case types::DimensionPrecision::DP_SCALED_IN_3: return DIM_PRECISION::V_VVV;
617 case types::DimensionPrecision::DP_SCALED_IN_4: return DIM_PRECISION::V_VVVV;
618 case types::DimensionPrecision::DP_SCALED_IN_5: return DIM_PRECISION::V_VVVVV;
619
620 default:
621 wxCHECK_MSG( false, DIM_PRECISION::V_VV,
622 "Unhandled case in FromProtoEnum<types::DimensionPrecision>" );
623 }
624}
625
626
627template<>
628types::DimensionTextPosition ToProtoEnum( DIM_TEXT_POSITION aValue )
629{
630 switch( aValue )
631 {
632 case DIM_TEXT_POSITION::OUTSIDE: return types::DimensionTextPosition::DTP_OUTSIDE;
633 case DIM_TEXT_POSITION::INLINE: return types::DimensionTextPosition::DTP_INLINE;
634 case DIM_TEXT_POSITION::MANUAL: return types::DimensionTextPosition::DTP_MANUAL;
635
636 default:
637 wxCHECK_MSG( false, types::DimensionTextPosition::DTP_UNKNOWN,
638 "Unhandled case in ToProtoEnum<DIM_TEXT_POSITION>");
639 }
640}
641
642
643template<>
644DIM_TEXT_POSITION FromProtoEnum( types::DimensionTextPosition aValue )
645{
646 switch( aValue )
647 {
648 case types::DimensionTextPosition::DTP_UNKNOWN:
649 case types::DimensionTextPosition::DTP_OUTSIDE: return DIM_TEXT_POSITION::OUTSIDE;
650 case types::DimensionTextPosition::DTP_INLINE: return DIM_TEXT_POSITION::INLINE;
651 case types::DimensionTextPosition::DTP_MANUAL: return DIM_TEXT_POSITION::MANUAL;
652
653 default:
654 wxCHECK_MSG( false, DIM_TEXT_POSITION::OUTSIDE,
655 "Unhandled case in FromProtoEnum<types::DimensionTextPosition>" );
656 }
657}
658
659
660template<>
661types::DimensionUnit ToProtoEnum( DIM_UNITS_MODE aValue )
662{
663 switch( aValue )
664 {
665 case DIM_UNITS_MODE::INCH: return types::DimensionUnit::DU_INCHES;
666 case DIM_UNITS_MODE::MILS: return types::DimensionUnit::DU_MILS;
667 case DIM_UNITS_MODE::MM: return types::DimensionUnit::DU_MILLIMETERS;
668 case DIM_UNITS_MODE::AUTOMATIC: return types::DimensionUnit::DU_AUTOMATIC;
669
670 default:
671 wxCHECK_MSG( false, types::DimensionUnit::DU_UNKNOWN,
672 "Unhandled case in ToProtoEnum<DIM_UNITS_MODE>");
673 }
674}
675
676
677template<>
678DIM_UNITS_MODE FromProtoEnum( types::DimensionUnit aValue )
679{
680 switch( aValue )
681 {
682 case types::DimensionUnit::DU_INCHES: return DIM_UNITS_MODE::INCH;
683 case types::DimensionUnit::DU_MILS: return DIM_UNITS_MODE::MILS;
684 case types::DimensionUnit::DU_MILLIMETERS: return DIM_UNITS_MODE::MM;
685 case types::DimensionUnit::DU_UNKNOWN:
686 case types::DimensionUnit::DU_AUTOMATIC: return DIM_UNITS_MODE::AUTOMATIC;
687
688 default:
689 wxCHECK_MSG( false, DIM_UNITS_MODE::AUTOMATIC,
690 "Unhandled case in FromProtoEnum<types::DimensionUnit>" );
691 }
692}
693
694
695template<>
696commands::InactiveLayerDisplayMode ToProtoEnum( HIGH_CONTRAST_MODE aValue )
697{
698 switch( aValue )
699 {
700 case HIGH_CONTRAST_MODE::NORMAL: return commands::InactiveLayerDisplayMode::ILDM_NORMAL;
701 case HIGH_CONTRAST_MODE::DIMMED: return commands::InactiveLayerDisplayMode::ILDM_DIMMED;
702 case HIGH_CONTRAST_MODE::HIDDEN: return commands::InactiveLayerDisplayMode::ILDM_HIDDEN;
703
704 default:
705 wxCHECK_MSG( false, commands::InactiveLayerDisplayMode::ILDM_NORMAL,
706 "Unhandled case in ToProtoEnum<HIGH_CONTRAST_MODE>");
707 }
708}
709
710
711template<>
712HIGH_CONTRAST_MODE FromProtoEnum( commands::InactiveLayerDisplayMode aValue )
713{
714 switch( aValue )
715 {
716 case commands::InactiveLayerDisplayMode::ILDM_DIMMED: return HIGH_CONTRAST_MODE::DIMMED;
717 case commands::InactiveLayerDisplayMode::ILDM_HIDDEN: return HIGH_CONTRAST_MODE::HIDDEN;
718 case commands::InactiveLayerDisplayMode::ILDM_UNKNOWN:
719 case commands::InactiveLayerDisplayMode::ILDM_NORMAL: return HIGH_CONTRAST_MODE::NORMAL;
720
721 default:
722 wxCHECK_MSG( false, HIGH_CONTRAST_MODE::NORMAL,
723 "Unhandled case in FromProtoEnum<commands::InactiveLayerDisplayMode>" );
724 }
725}
726
727
728template<>
729commands::NetColorDisplayMode ToProtoEnum( NET_COLOR_MODE aValue )
730{
731 switch( aValue )
732 {
733 case NET_COLOR_MODE::ALL: return commands::NetColorDisplayMode::NCDM_ALL;
734 case NET_COLOR_MODE::RATSNEST: return commands::NetColorDisplayMode::NCDM_RATSNEST;
735 case NET_COLOR_MODE::OFF: return commands::NetColorDisplayMode::NCDM_OFF;
736
737 default:
738 wxCHECK_MSG( false, commands::NetColorDisplayMode::NCDM_UNKNOWN,
739 "Unhandled case in ToProtoEnum<NET_COLOR_MODE>");
740 }
741}
742
743
744template<>
745NET_COLOR_MODE FromProtoEnum( commands::NetColorDisplayMode aValue )
746{
747 switch( aValue )
748 {
749 case commands::NetColorDisplayMode::NCDM_ALL: return NET_COLOR_MODE::ALL;
750 case commands::NetColorDisplayMode::NCDM_OFF: return NET_COLOR_MODE::OFF;
751 case commands::NetColorDisplayMode::NCDM_UNKNOWN:
752 case commands::NetColorDisplayMode::NCDM_RATSNEST: return NET_COLOR_MODE::RATSNEST;
753
754 default:
755 wxCHECK_MSG( false, NET_COLOR_MODE::RATSNEST,
756 "Unhandled case in FromProtoEnum<commands::NetColorDisplayMode>" );
757 }
758}
759
760
761template<>
762commands::RatsnestDisplayMode ToProtoEnum( RATSNEST_MODE aValue )
763{
764 switch( aValue )
765 {
766 case RATSNEST_MODE::ALL: return commands::RatsnestDisplayMode::RDM_ALL_LAYERS;
767 case RATSNEST_MODE::VISIBLE: return commands::RatsnestDisplayMode::RDM_VISIBLE_LAYERS;
768
769 default:
770 wxCHECK_MSG( false, commands::RatsnestDisplayMode::RDM_UNKNOWN,
771 "Unhandled case in ToProtoEnum<RATSNEST_MODE>");
772 }
773}
774
775
776template<>
777RATSNEST_MODE FromProtoEnum( commands::RatsnestDisplayMode aValue )
778{
779 switch( aValue )
780 {
781 case commands::RatsnestDisplayMode::RDM_VISIBLE_LAYERS: return RATSNEST_MODE::VISIBLE;
782 case commands::RatsnestDisplayMode::RDM_UNKNOWN:
783 case commands::RatsnestDisplayMode::RDM_ALL_LAYERS: return RATSNEST_MODE::ALL;
784
785 default:
786 wxCHECK_MSG( false, RATSNEST_MODE::ALL,
787 "Unhandled case in FromProtoEnum<commands::RatsnestDisplayMode>" );
788 }
789}
790
791
792template<>
793BoardStackupLayerType ToProtoEnum( BOARD_STACKUP_ITEM_TYPE aValue )
794{
795 switch( aValue )
796 {
797 case BS_ITEM_TYPE_UNDEFINED: return BoardStackupLayerType::BSLT_UNDEFINED;
798 case BS_ITEM_TYPE_COPPER: return BoardStackupLayerType::BSLT_COPPER;
799 case BS_ITEM_TYPE_DIELECTRIC: return BoardStackupLayerType::BSLT_DIELECTRIC;
800 case BS_ITEM_TYPE_SOLDERPASTE: return BoardStackupLayerType::BSLT_SOLDERPASTE;
801 case BS_ITEM_TYPE_SOLDERMASK: return BoardStackupLayerType::BSLT_SOLDERMASK;
802 case BS_ITEM_TYPE_SILKSCREEN: return BoardStackupLayerType::BSLT_SILKSCREEN;
803
804 default:
805 wxCHECK_MSG( false, BoardStackupLayerType::BSLT_UNKNOWN,
806 "Unhandled case in ToProtoEnum<BOARD_STACKUP_ITEM_TYPE>");
807 }
808}
809
810
811template<>
812BOARD_STACKUP_ITEM_TYPE FromProtoEnum( BoardStackupLayerType aValue )
813{
814 switch( aValue )
815 {
816 case BoardStackupLayerType::BSLT_UNDEFINED: return BS_ITEM_TYPE_UNDEFINED;
817 case BoardStackupLayerType::BSLT_COPPER: return BS_ITEM_TYPE_COPPER;
818 case BoardStackupLayerType::BSLT_DIELECTRIC: return BS_ITEM_TYPE_DIELECTRIC;
819 case BoardStackupLayerType::BSLT_SOLDERPASTE: return BS_ITEM_TYPE_SOLDERPASTE;
820 case BoardStackupLayerType::BSLT_SOLDERMASK: return BS_ITEM_TYPE_SOLDERMASK;
821 case BoardStackupLayerType::BSLT_SILKSCREEN: return BS_ITEM_TYPE_SILKSCREEN;
822
823 default:
824 wxCHECK_MSG( false, BS_ITEM_TYPE_UNDEFINED,
825 "Unhandled case in FromProtoEnum<BoardStackupLayerType>" );
826 }
827}
828
829// 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)
@ RATSNEST
Net/netclass colors are shown on ratsnest lines only.
@ ALL
Net/netclass colors are shown on all net copper.
@ OFF
Net (and netclass) colors are not shown.
@ VISIBLE
Ratsnest lines are drawn to items on visible layers only.
@ ALL
Ratsnest lines are drawn to items on all layers (default)
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
MODE
! Copper geometry mode: controls how many unique copper layer shapes this padstack has
Definition padstack.h:138
@ NORMAL
Shape is the same on all layers.
Definition padstack.h:139
@ CUSTOM
Shapes can be defined on arbitrary layers.
Definition padstack.h:141
@ FRONT_INNER_BACK
Up to three shapes can be defined (F_Cu, inner copper layers, B_Cu)
Definition padstack.h:140
UNCONNECTED_LAYER_MODE
! Whether or not to remove the copper shape for unconnected layers
Definition padstack.h:152
PAD_DRILL_SHAPE
The set of pad drill shapes, used with PAD::{Set,Get}DrillShape()
Definition padstack.h:69
PAD_ATTRIB
The set of pad shapes, used with PAD::{Set,Get}Attribute().
Definition padstack.h:81
@ NPTH
like PAD_PTH, but not plated mechanical use only, no connection allowed
Definition padstack.h:87
@ SMD
Smd pad, appears on the solder paste layer (default)
Definition padstack.h:83
@ PTH
Plated through hole pad.
Definition padstack.h:82
@ CONN
Like smd, does not appear on the solder paste layer (default) Note: also has a special attribute in G...
Definition padstack.h:84
PAD_SHAPE
The set of pad shapes, used with PAD::{Set,Get}Shape()
Definition padstack.h:52
@ CHAMFERED_RECT
Definition padstack.h:60
@ ROUNDRECT
Definition padstack.h:57
@ TRAPEZOID
Definition padstack.h:56
@ RECTANGLE
Definition padstack.h:54
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
Definition pcb_track.h:67
@ THROUGH
Definition pcb_track.h:68
@ MICROVIA
Definition pcb_track.h:71
TEARDROP_TYPE
define the type of a teardrop: on a via or pad, or a track end
Class ZONE_SETTINGS used to handle zones parameters in dialogs.
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:47
@ THERMAL
Use thermal relief for pads.
Definition zones.h:50
@ THT_THERMAL
Thermal relief only for THT pads.
Definition zones.h:52
@ NONE
Pads are not covered.
Definition zones.h:49
@ FULL
pads are covered by copper
Definition zones.h:51