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_BURIED: return types::ViaType::VT_BLIND_BURIED;
183 case VIATYPE::MICROVIA: return types::ViaType::VT_MICRO;
184
185 default:
186 wxCHECK_MSG( false, types::ViaType::VT_UNKNOWN,
187 "Unhandled case in ToProtoEnum<VIATYPE>");
188 }
189}
190
191
192template<>
193VIATYPE FromProtoEnum( types::ViaType aValue )
194{
195 switch( aValue )
196 {
197 case types::ViaType::VT_UNKNOWN:
198 case types::ViaType::VT_THROUGH: return VIATYPE::THROUGH;
199 case types::ViaType::VT_BLIND_BURIED: return VIATYPE::BLIND_BURIED;
200 case types::ViaType::VT_MICRO: return VIATYPE::MICROVIA;
201
202 default:
203 wxCHECK_MSG( false, VIATYPE::THROUGH,
204 "Unhandled case in FromProtoEnum<types::ViaType>" );
205 }
206}
207
208
209template<>
210types::ZoneConnectionStyle ToProtoEnum( ZONE_CONNECTION aValue )
211{
212 switch( aValue )
213 {
214 case ZONE_CONNECTION::INHERITED: return types::ZoneConnectionStyle::ZCS_INHERITED;
215 case ZONE_CONNECTION::NONE: return types::ZoneConnectionStyle::ZCS_NONE;
216 case ZONE_CONNECTION::THERMAL: return types::ZoneConnectionStyle::ZCS_THERMAL;
217 case ZONE_CONNECTION::FULL: return types::ZoneConnectionStyle::ZCS_FULL;
218 case ZONE_CONNECTION::THT_THERMAL: return types::ZoneConnectionStyle::ZCS_PTH_THERMAL;
219
220 default:
221 wxCHECK_MSG( false, types::ZoneConnectionStyle::ZCS_UNKNOWN,
222 "Unhandled case in ToProtoEnum<ZONE_CONNECTION>");
223 }
224}
225
226
227template<>
228ZONE_CONNECTION FromProtoEnum( types::ZoneConnectionStyle aValue )
229{
230 switch( aValue )
231 {
232 case types::ZoneConnectionStyle::ZCS_UNKNOWN: return ZONE_CONNECTION::INHERITED;
233 case types::ZoneConnectionStyle::ZCS_INHERITED: return ZONE_CONNECTION::INHERITED;
234 case types::ZoneConnectionStyle::ZCS_NONE: return ZONE_CONNECTION::NONE;
235 case types::ZoneConnectionStyle::ZCS_THERMAL: return ZONE_CONNECTION::THERMAL;
236 case types::ZoneConnectionStyle::ZCS_FULL: return ZONE_CONNECTION::FULL;
237 case types::ZoneConnectionStyle::ZCS_PTH_THERMAL: return ZONE_CONNECTION::THT_THERMAL;
238
239 default:
240 wxCHECK_MSG( false, ZONE_CONNECTION::INHERITED,
241 "Unhandled case in FromProtoEnum<types::ZoneConnectionStyle>" );
242 }
243}
244
245
246template<>
247types::UnconnectedLayerRemoval ToProtoEnum( PADSTACK::UNCONNECTED_LAYER_MODE aValue )
248{
249 switch( aValue )
250 {
252 return types::UnconnectedLayerRemoval::ULR_KEEP;
253
255 return types::UnconnectedLayerRemoval::ULR_REMOVE;
256
258 return types::UnconnectedLayerRemoval::ULR_REMOVE_EXCEPT_START_AND_END;
259
261 return types::UnconnectedLayerRemoval::ULR_START_END_ONLY;
262
263 default:
264 wxCHECK_MSG( false, types::UnconnectedLayerRemoval::ULR_UNKNOWN,
265 "Unhandled case in ToProtoEnum<PADSTACK::UNCONNECTED_LAYER_MODE>");
266 }
267}
268
269
270template<>
271PADSTACK::UNCONNECTED_LAYER_MODE FromProtoEnum( types::UnconnectedLayerRemoval aValue )
272{
273 switch( aValue )
274 {
275 case types::UnconnectedLayerRemoval::ULR_UNKNOWN:
276 case types::UnconnectedLayerRemoval::ULR_KEEP:
278
279 case types::UnconnectedLayerRemoval::ULR_REMOVE:
281
282 case types::UnconnectedLayerRemoval::ULR_REMOVE_EXCEPT_START_AND_END:
284
285 case types::UnconnectedLayerRemoval::ULR_START_END_ONLY:
287
288 default:
290 "Unhandled case in FromProtoEnum<types::UnconnectedLayerRemoval>");
291 }
292}
293
294
295template<>
296types::IslandRemovalMode ToProtoEnum( ISLAND_REMOVAL_MODE aValue )
297{
298 switch( aValue )
299 {
300 case ISLAND_REMOVAL_MODE::ALWAYS: return types::IslandRemovalMode::IRM_ALWAYS;
301 case ISLAND_REMOVAL_MODE::NEVER: return types::IslandRemovalMode::IRM_NEVER;
302 case ISLAND_REMOVAL_MODE::AREA: return types::IslandRemovalMode::IRM_AREA;
303
304 default:
305 wxCHECK_MSG( false, types::IslandRemovalMode::IRM_UNKNOWN,
306 "Unhandled case in ToProtoEnum<ISLAND_REMOVAL_MODE>");
307 }
308}
309
310
311template<>
312ISLAND_REMOVAL_MODE FromProtoEnum( types::IslandRemovalMode aValue )
313{
314 switch( aValue )
315 {
316 case types::IslandRemovalMode::IRM_UNKNOWN:
317 case types::IslandRemovalMode::IRM_ALWAYS: return ISLAND_REMOVAL_MODE::ALWAYS;
318 case types::IslandRemovalMode::IRM_NEVER: return ISLAND_REMOVAL_MODE::NEVER;
319 case types::IslandRemovalMode::IRM_AREA: return ISLAND_REMOVAL_MODE::AREA;
320
321 default:
322 wxCHECK_MSG( false, ISLAND_REMOVAL_MODE::ALWAYS,
323 "Unhandled case in FromProtoEnum<types::IslandRemovalMode>" );
324 }
325}
326
327
328template<>
329types::ZoneFillMode ToProtoEnum( ZONE_FILL_MODE aValue )
330{
331 switch( aValue )
332 {
333 case ZONE_FILL_MODE::POLYGONS: return types::ZoneFillMode::ZFM_SOLID;
334 case ZONE_FILL_MODE::HATCH_PATTERN: return types::ZoneFillMode::ZFM_HATCHED;
335
336 default:
337 wxCHECK_MSG( false, types::ZoneFillMode::ZFM_UNKNOWN,
338 "Unhandled case in ToProtoEnum<ZONE_FILL_MODE>");
339 }
340}
341
342
343template<>
344ZONE_FILL_MODE FromProtoEnum( types::ZoneFillMode aValue )
345{
346 switch( aValue )
347 {
348 case types::ZoneFillMode::ZFM_UNKNOWN:
349 case types::ZoneFillMode::ZFM_SOLID: return ZONE_FILL_MODE::POLYGONS;
350 case types::ZoneFillMode::ZFM_HATCHED: return ZONE_FILL_MODE::HATCH_PATTERN;
351
352 default:
353 wxCHECK_MSG( false, ZONE_FILL_MODE::POLYGONS,
354 "Unhandled case in FromProtoEnum<types::ZoneFillMode>" );
355 }
356}
357
358
359template<>
360types::ZoneBorderStyle ToProtoEnum( ZONE_BORDER_DISPLAY_STYLE aValue )
361{
362 switch( aValue )
363 {
364 case ZONE_BORDER_DISPLAY_STYLE::NO_HATCH: return types::ZoneBorderStyle::ZBS_SOLID;
365 case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL: return types::ZoneBorderStyle::ZBS_DIAGONAL_FULL;
366 case ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE: return types::ZoneBorderStyle::ZBS_DIAGONAL_EDGE;
367 case ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER: return types::ZoneBorderStyle::ZBS_INVISIBLE;
368
369 default:
370 wxCHECK_MSG( false, types::ZoneBorderStyle::ZBS_UNKNOWN,
371 "Unhandled case in ToProtoEnum<ZONE_BORDER_DISPLAY_STYLE>");
372 }
373}
374
375
376template<>
377ZONE_BORDER_DISPLAY_STYLE FromProtoEnum( types::ZoneBorderStyle aValue )
378{
379 switch( aValue )
380 {
381 case types::ZoneBorderStyle::ZBS_SOLID: return ZONE_BORDER_DISPLAY_STYLE::NO_HATCH;
382 case types::ZoneBorderStyle::ZBS_DIAGONAL_FULL: return ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_FULL;
383 case types::ZoneBorderStyle::ZBS_UNKNOWN:
384 case types::ZoneBorderStyle::ZBS_DIAGONAL_EDGE: return ZONE_BORDER_DISPLAY_STYLE::DIAGONAL_EDGE;
385 case types::ZoneBorderStyle::ZBS_INVISIBLE: return ZONE_BORDER_DISPLAY_STYLE::INVISIBLE_BORDER;
386
387 default:
389 "Unhandled case in FromProtoEnum<types::ZoneHatchBorderMode>" );
390 }
391}
392
393
394template<>
395types::PlacementRuleSourceType ToProtoEnum( PLACEMENT_SOURCE_T aValue )
396{
397 switch( aValue )
398 {
400 return types::PlacementRuleSourceType::PRST_SHEET_NAME;
401
403 return types::PlacementRuleSourceType::PRST_COMPONENT_CLASS;
404
406 return types::PlacementRuleSourceType::PRST_GROUP;
407
408 default:
409 wxCHECK_MSG( false, types::PlacementRuleSourceType::PRST_UNKNOWN,
410 "Unhandled case in ToProtoEnum<PLACEMENT_SOURCE_T>");
411 }
412}
413
414
415template<>
416PLACEMENT_SOURCE_T FromProtoEnum( types::PlacementRuleSourceType aValue )
417{
418 switch( aValue )
419 {
420 case types::PlacementRuleSourceType::PRST_UNKNOWN:
421 case types::PlacementRuleSourceType::PRST_SHEET_NAME:
423
424 case types::PlacementRuleSourceType::PRST_COMPONENT_CLASS:
426
427 case types::PlacementRuleSourceType::PRST_GROUP:
429
430 default:
431 wxCHECK_MSG( false, PLACEMENT_SOURCE_T::SHEETNAME,
432 "Unhandled case in FromProtoEnum<types::PlacementRuleSourceType>" );
433 }
434}
435
436
437template<>
438types::TeardropType ToProtoEnum( TEARDROP_TYPE aValue )
439{
440 switch( aValue )
441 {
442 case TEARDROP_TYPE::TD_NONE: return types::TeardropType::TDT_NONE;
443 case TEARDROP_TYPE::TD_UNSPECIFIED: return types::TeardropType::TDT_UNSPECIFIED;
444 case TEARDROP_TYPE::TD_VIAPAD: return types::TeardropType::TDT_VIA_PAD;
445 case TEARDROP_TYPE::TD_TRACKEND: return types::TeardropType::TDT_TRACK_END;
446
447 default:
448 wxCHECK_MSG( false, types::TeardropType::TDT_UNKNOWN,
449 "Unhandled case in ToProtoEnum<TEARDROP_TYPE>");
450 }
451}
452
453
454template<>
455TEARDROP_TYPE FromProtoEnum( types::TeardropType aValue )
456{
457 switch( aValue )
458 {
459 case types::TeardropType::TDT_UNKNOWN:
460 case types::TeardropType::TDT_NONE: return TEARDROP_TYPE::TD_NONE;
461 case types::TeardropType::TDT_UNSPECIFIED: return TEARDROP_TYPE::TD_UNSPECIFIED;
462 case types::TeardropType::TDT_VIA_PAD: return TEARDROP_TYPE::TD_VIAPAD;
463 case types::TeardropType::TDT_TRACK_END: return TEARDROP_TYPE::TD_TRACKEND;
464
465 default:
466 wxCHECK_MSG( false, TEARDROP_TYPE::TD_NONE,
467 "Unhandled case in FromProtoEnum<types::ZoneHatchBorderMode>" );
468 }
469}
470
471
472template<>
473types::DimensionTextBorderStyle ToProtoEnum( DIM_TEXT_BORDER aValue )
474{
475 switch( aValue )
476 {
477 case DIM_TEXT_BORDER::NONE: return types::DimensionTextBorderStyle::DTBS_NONE;
478 case DIM_TEXT_BORDER::RECTANGLE: return types::DimensionTextBorderStyle::DTBS_RECTANGLE;
479 case DIM_TEXT_BORDER::CIRCLE: return types::DimensionTextBorderStyle::DTBS_CIRCLE;
480 case DIM_TEXT_BORDER::ROUNDRECT: return types::DimensionTextBorderStyle::DTBS_ROUNDRECT;
481
482 default:
483 wxCHECK_MSG( false, types::DimensionTextBorderStyle::DTBS_UNKNOWN,
484 "Unhandled case in ToProtoEnum<DIM_TEXT_BORDER>");
485 }
486}
487
488
489template<>
490DIM_TEXT_BORDER FromProtoEnum( types::DimensionTextBorderStyle aValue )
491{
492 switch( aValue )
493 {
494 case types::DimensionTextBorderStyle::DTBS_UNKNOWN:
495 case types::DimensionTextBorderStyle::DTBS_NONE: return DIM_TEXT_BORDER::NONE;
496 case types::DimensionTextBorderStyle::DTBS_RECTANGLE: return DIM_TEXT_BORDER::RECTANGLE;
497 case types::DimensionTextBorderStyle::DTBS_CIRCLE: return DIM_TEXT_BORDER::CIRCLE;
498 case types::DimensionTextBorderStyle::DTBS_ROUNDRECT: return DIM_TEXT_BORDER::ROUNDRECT;
499
500 default:
501 wxCHECK_MSG( false, DIM_TEXT_BORDER::NONE,
502 "Unhandled case in FromProtoEnum<types::DimensionTextBorderStyle>" );
503 }
504}
505
506
507template<>
508types::DimensionUnitFormat ToProtoEnum( DIM_UNITS_FORMAT aValue )
509{
510 switch( aValue )
511 {
512 case DIM_UNITS_FORMAT::NO_SUFFIX: return types::DimensionUnitFormat::DUF_NO_SUFFIX;
513 case DIM_UNITS_FORMAT::BARE_SUFFIX: return types::DimensionUnitFormat::DUF_BARE_SUFFIX;
514 case DIM_UNITS_FORMAT::PAREN_SUFFIX: return types::DimensionUnitFormat::DUF_PAREN_SUFFIX;
515
516 default:
517 wxCHECK_MSG( false, types::DimensionUnitFormat::DUF_UNKNOWN,
518 "Unhandled case in ToProtoEnum<DIM_UNITS_FORMAT>");
519 }
520}
521
522
523template<>
524DIM_UNITS_FORMAT FromProtoEnum( types::DimensionUnitFormat aValue )
525{
526 switch( aValue )
527 {
528 case types::DimensionUnitFormat::DUF_UNKNOWN:
529 case types::DimensionUnitFormat::DUF_NO_SUFFIX: return DIM_UNITS_FORMAT::NO_SUFFIX;
530 case types::DimensionUnitFormat::DUF_BARE_SUFFIX: return DIM_UNITS_FORMAT::BARE_SUFFIX;
531 case types::DimensionUnitFormat::DUF_PAREN_SUFFIX: return DIM_UNITS_FORMAT::PAREN_SUFFIX;
532
533 default:
534 wxCHECK_MSG( false, DIM_UNITS_FORMAT::NO_SUFFIX,
535 "Unhandled case in FromProtoEnum<types::DimensionUnitFormat>" );
536 }
537}
538
539
540template<>
541types::DimensionArrowDirection ToProtoEnum( DIM_ARROW_DIRECTION aValue )
542{
543 switch( aValue )
544 {
545 case DIM_ARROW_DIRECTION::INWARD: return types::DimensionArrowDirection::DAD_INWARD;
546 case DIM_ARROW_DIRECTION::OUTWARD: return types::DimensionArrowDirection::DAD_OUTWARD;
547
548 default:
549 wxCHECK_MSG( false, types::DimensionArrowDirection::DAD_UNKNOWN,
550 "Unhandled case in ToProtoEnum<DIM_ARROW_DIRECTION>");
551 }
552}
553
554
555template<>
556DIM_ARROW_DIRECTION FromProtoEnum( types::DimensionArrowDirection aValue )
557{
558 switch( aValue )
559 {
560 case types::DimensionArrowDirection::DAD_INWARD: return DIM_ARROW_DIRECTION::INWARD;
561 case types::DimensionArrowDirection::DAD_UNKNOWN:
562 case types::DimensionArrowDirection::DAD_OUTWARD: return DIM_ARROW_DIRECTION::OUTWARD;
563
564 default:
565 wxCHECK_MSG( false, DIM_ARROW_DIRECTION::OUTWARD,
566 "Unhandled case in FromProtoEnum<types::DimensionArrowDirection>" );
567 }
568}
569
570
571template<>
572types::DimensionPrecision ToProtoEnum( DIM_PRECISION aValue )
573{
574 switch( aValue )
575 {
576 case DIM_PRECISION::X: return types::DimensionPrecision::DP_FIXED_0;
577 case DIM_PRECISION::X_X: return types::DimensionPrecision::DP_FIXED_1;
578 case DIM_PRECISION::X_XX: return types::DimensionPrecision::DP_FIXED_2;
579 case DIM_PRECISION::X_XXX: return types::DimensionPrecision::DP_FIXED_3;
580 case DIM_PRECISION::X_XXXX: return types::DimensionPrecision::DP_FIXED_4;
581 case DIM_PRECISION::X_XXXXX: return types::DimensionPrecision::DP_FIXED_5;
582 case DIM_PRECISION::V_VV: return types::DimensionPrecision::DP_SCALED_IN_2;
583 case DIM_PRECISION::V_VVV: return types::DimensionPrecision::DP_SCALED_IN_3;
584 case DIM_PRECISION::V_VVVV: return types::DimensionPrecision::DP_SCALED_IN_4;
585 case DIM_PRECISION::V_VVVVV: return types::DimensionPrecision::DP_SCALED_IN_5;
586
587 default:
588 wxCHECK_MSG( false, types::DimensionPrecision::DP_UNKNOWN,
589 "Unhandled case in ToProtoEnum<DIM_PRECISION>");
590 }
591}
592
593
594template<>
595DIM_PRECISION FromProtoEnum( types::DimensionPrecision aValue )
596{
597 switch( aValue )
598 {
599 case types::DimensionPrecision::DP_FIXED_0: return DIM_PRECISION::X;
600 case types::DimensionPrecision::DP_FIXED_1: return DIM_PRECISION::X_X;
601 case types::DimensionPrecision::DP_FIXED_2: return DIM_PRECISION::X_XX;
602 case types::DimensionPrecision::DP_FIXED_3: return DIM_PRECISION::X_XXX;
603 case types::DimensionPrecision::DP_FIXED_4: return DIM_PRECISION::X_XXXX;
604 case types::DimensionPrecision::DP_FIXED_5: return DIM_PRECISION::X_XXXXX;
605 case types::DimensionPrecision::DP_UNKNOWN:
606 case types::DimensionPrecision::DP_SCALED_IN_2: return DIM_PRECISION::V_VV;
607 case types::DimensionPrecision::DP_SCALED_IN_3: return DIM_PRECISION::V_VVV;
608 case types::DimensionPrecision::DP_SCALED_IN_4: return DIM_PRECISION::V_VVVV;
609 case types::DimensionPrecision::DP_SCALED_IN_5: return DIM_PRECISION::V_VVVVV;
610
611 default:
612 wxCHECK_MSG( false, DIM_PRECISION::V_VV,
613 "Unhandled case in FromProtoEnum<types::DimensionPrecision>" );
614 }
615}
616
617
618template<>
619types::DimensionTextPosition ToProtoEnum( DIM_TEXT_POSITION aValue )
620{
621 switch( aValue )
622 {
623 case DIM_TEXT_POSITION::OUTSIDE: return types::DimensionTextPosition::DTP_OUTSIDE;
624 case DIM_TEXT_POSITION::INLINE: return types::DimensionTextPosition::DTP_INLINE;
625 case DIM_TEXT_POSITION::MANUAL: return types::DimensionTextPosition::DTP_MANUAL;
626
627 default:
628 wxCHECK_MSG( false, types::DimensionTextPosition::DTP_UNKNOWN,
629 "Unhandled case in ToProtoEnum<DIM_TEXT_POSITION>");
630 }
631}
632
633
634template<>
635DIM_TEXT_POSITION FromProtoEnum( types::DimensionTextPosition aValue )
636{
637 switch( aValue )
638 {
639 case types::DimensionTextPosition::DTP_UNKNOWN:
640 case types::DimensionTextPosition::DTP_OUTSIDE: return DIM_TEXT_POSITION::OUTSIDE;
641 case types::DimensionTextPosition::DTP_INLINE: return DIM_TEXT_POSITION::INLINE;
642 case types::DimensionTextPosition::DTP_MANUAL: return DIM_TEXT_POSITION::MANUAL;
643
644 default:
645 wxCHECK_MSG( false, DIM_TEXT_POSITION::OUTSIDE,
646 "Unhandled case in FromProtoEnum<types::DimensionTextPosition>" );
647 }
648}
649
650
651template<>
652types::DimensionUnit ToProtoEnum( DIM_UNITS_MODE aValue )
653{
654 switch( aValue )
655 {
656 case DIM_UNITS_MODE::INCH: return types::DimensionUnit::DU_INCHES;
657 case DIM_UNITS_MODE::MILS: return types::DimensionUnit::DU_MILS;
658 case DIM_UNITS_MODE::MM: return types::DimensionUnit::DU_MILLIMETERS;
659 case DIM_UNITS_MODE::AUTOMATIC: return types::DimensionUnit::DU_AUTOMATIC;
660
661 default:
662 wxCHECK_MSG( false, types::DimensionUnit::DU_UNKNOWN,
663 "Unhandled case in ToProtoEnum<DIM_UNITS_MODE>");
664 }
665}
666
667
668template<>
669DIM_UNITS_MODE FromProtoEnum( types::DimensionUnit aValue )
670{
671 switch( aValue )
672 {
673 case types::DimensionUnit::DU_INCHES: return DIM_UNITS_MODE::INCH;
674 case types::DimensionUnit::DU_MILS: return DIM_UNITS_MODE::MILS;
675 case types::DimensionUnit::DU_MILLIMETERS: return DIM_UNITS_MODE::MM;
676 case types::DimensionUnit::DU_UNKNOWN:
677 case types::DimensionUnit::DU_AUTOMATIC: return DIM_UNITS_MODE::AUTOMATIC;
678
679 default:
680 wxCHECK_MSG( false, DIM_UNITS_MODE::AUTOMATIC,
681 "Unhandled case in FromProtoEnum<types::DimensionUnit>" );
682 }
683}
684
685
686template<>
687commands::InactiveLayerDisplayMode ToProtoEnum( HIGH_CONTRAST_MODE aValue )
688{
689 switch( aValue )
690 {
691 case HIGH_CONTRAST_MODE::NORMAL: return commands::InactiveLayerDisplayMode::ILDM_NORMAL;
692 case HIGH_CONTRAST_MODE::DIMMED: return commands::InactiveLayerDisplayMode::ILDM_DIMMED;
693 case HIGH_CONTRAST_MODE::HIDDEN: return commands::InactiveLayerDisplayMode::ILDM_HIDDEN;
694
695 default:
696 wxCHECK_MSG( false, commands::InactiveLayerDisplayMode::ILDM_NORMAL,
697 "Unhandled case in ToProtoEnum<HIGH_CONTRAST_MODE>");
698 }
699}
700
701
702template<>
703HIGH_CONTRAST_MODE FromProtoEnum( commands::InactiveLayerDisplayMode aValue )
704{
705 switch( aValue )
706 {
707 case commands::InactiveLayerDisplayMode::ILDM_DIMMED: return HIGH_CONTRAST_MODE::DIMMED;
708 case commands::InactiveLayerDisplayMode::ILDM_HIDDEN: return HIGH_CONTRAST_MODE::HIDDEN;
709 case commands::InactiveLayerDisplayMode::ILDM_UNKNOWN:
710 case commands::InactiveLayerDisplayMode::ILDM_NORMAL: return HIGH_CONTRAST_MODE::NORMAL;
711
712 default:
713 wxCHECK_MSG( false, HIGH_CONTRAST_MODE::NORMAL,
714 "Unhandled case in FromProtoEnum<commands::InactiveLayerDisplayMode>" );
715 }
716}
717
718
719template<>
720commands::NetColorDisplayMode ToProtoEnum( NET_COLOR_MODE aValue )
721{
722 switch( aValue )
723 {
724 case NET_COLOR_MODE::ALL: return commands::NetColorDisplayMode::NCDM_ALL;
725 case NET_COLOR_MODE::RATSNEST: return commands::NetColorDisplayMode::NCDM_RATSNEST;
726 case NET_COLOR_MODE::OFF: return commands::NetColorDisplayMode::NCDM_OFF;
727
728 default:
729 wxCHECK_MSG( false, commands::NetColorDisplayMode::NCDM_UNKNOWN,
730 "Unhandled case in ToProtoEnum<NET_COLOR_MODE>");
731 }
732}
733
734
735template<>
736NET_COLOR_MODE FromProtoEnum( commands::NetColorDisplayMode aValue )
737{
738 switch( aValue )
739 {
740 case commands::NetColorDisplayMode::NCDM_ALL: return NET_COLOR_MODE::ALL;
741 case commands::NetColorDisplayMode::NCDM_OFF: return NET_COLOR_MODE::OFF;
742 case commands::NetColorDisplayMode::NCDM_UNKNOWN:
743 case commands::NetColorDisplayMode::NCDM_RATSNEST: return NET_COLOR_MODE::RATSNEST;
744
745 default:
746 wxCHECK_MSG( false, NET_COLOR_MODE::RATSNEST,
747 "Unhandled case in FromProtoEnum<commands::NetColorDisplayMode>" );
748 }
749}
750
751
752template<>
753commands::RatsnestDisplayMode ToProtoEnum( RATSNEST_MODE aValue )
754{
755 switch( aValue )
756 {
757 case RATSNEST_MODE::ALL: return commands::RatsnestDisplayMode::RDM_ALL_LAYERS;
758 case RATSNEST_MODE::VISIBLE: return commands::RatsnestDisplayMode::RDM_VISIBLE_LAYERS;
759
760 default:
761 wxCHECK_MSG( false, commands::RatsnestDisplayMode::RDM_UNKNOWN,
762 "Unhandled case in ToProtoEnum<RATSNEST_MODE>");
763 }
764}
765
766
767template<>
768RATSNEST_MODE FromProtoEnum( commands::RatsnestDisplayMode aValue )
769{
770 switch( aValue )
771 {
772 case commands::RatsnestDisplayMode::RDM_VISIBLE_LAYERS: return RATSNEST_MODE::VISIBLE;
773 case commands::RatsnestDisplayMode::RDM_UNKNOWN:
774 case commands::RatsnestDisplayMode::RDM_ALL_LAYERS: return RATSNEST_MODE::ALL;
775
776 default:
777 wxCHECK_MSG( false, RATSNEST_MODE::ALL,
778 "Unhandled case in FromProtoEnum<commands::RatsnestDisplayMode>" );
779 }
780}
781
782
783template<>
784BoardStackupLayerType ToProtoEnum( BOARD_STACKUP_ITEM_TYPE aValue )
785{
786 switch( aValue )
787 {
788 case BS_ITEM_TYPE_UNDEFINED: return BoardStackupLayerType::BSLT_UNDEFINED;
789 case BS_ITEM_TYPE_COPPER: return BoardStackupLayerType::BSLT_COPPER;
790 case BS_ITEM_TYPE_DIELECTRIC: return BoardStackupLayerType::BSLT_DIELECTRIC;
791 case BS_ITEM_TYPE_SOLDERPASTE: return BoardStackupLayerType::BSLT_SOLDERPASTE;
792 case BS_ITEM_TYPE_SOLDERMASK: return BoardStackupLayerType::BSLT_SOLDERMASK;
793 case BS_ITEM_TYPE_SILKSCREEN: return BoardStackupLayerType::BSLT_SILKSCREEN;
794
795 default:
796 wxCHECK_MSG( false, BoardStackupLayerType::BSLT_UNKNOWN,
797 "Unhandled case in ToProtoEnum<BOARD_STACKUP_ITEM_TYPE>");
798 }
799}
800
801
802template<>
803BOARD_STACKUP_ITEM_TYPE FromProtoEnum( BoardStackupLayerType aValue )
804{
805 switch( aValue )
806 {
807 case BoardStackupLayerType::BSLT_UNDEFINED: return BS_ITEM_TYPE_UNDEFINED;
808 case BoardStackupLayerType::BSLT_COPPER: return BS_ITEM_TYPE_COPPER;
809 case BoardStackupLayerType::BSLT_DIELECTRIC: return BS_ITEM_TYPE_DIELECTRIC;
810 case BoardStackupLayerType::BSLT_SOLDERPASTE: return BS_ITEM_TYPE_SOLDERPASTE;
811 case BoardStackupLayerType::BSLT_SOLDERMASK: return BS_ITEM_TYPE_SOLDERMASK;
812 case BoardStackupLayerType::BSLT_SILKSCREEN: return BS_ITEM_TYPE_SILKSCREEN;
813
814 default:
815 wxCHECK_MSG( false, BS_ITEM_TYPE_UNDEFINED,
816 "Unhandled case in FromProtoEnum<BoardStackupLayerType>" );
817 }
818}
819
820// 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
Definition: board_stackup.h:43
@ BS_ITEM_TYPE_UNDEFINED
Definition: board_stackup.h:44
@ BS_ITEM_TYPE_COPPER
Definition: board_stackup.h:45
@ BS_ITEM_TYPE_SILKSCREEN
Definition: board_stackup.h:51
@ BS_ITEM_TYPE_DIELECTRIC
Definition: board_stackup.h:46
@ BS_ITEM_TYPE_SOLDERPASTE
Definition: board_stackup.h:48
@ BS_ITEM_TYPE_SOLDERMASK
Definition: board_stackup.h:49
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.
@ CUSTOM
Shapes can be defined on arbitrary layers.
@ FRONT_INNER_BACK
Up to three shapes can be defined (F_Cu, inner copper layers, B_Cu)
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
@ SMD
Smd pad, appears on the solder paste layer (default)
@ PTH
Plated through hole pad.
@ CONN
Like smd, does not appear on the solder paste layer (default) Note: also has a special attribute in G...
PAD_SHAPE
The set of pad shapes, used with PAD::{Set,Get}Shape()
Definition: padstack.h:52
DIM_TEXT_POSITION
Where to place the text on a dimension.
Definition: pcb_dimension.h:62
@ 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.
Definition: pcb_dimension.h:40
DIM_UNITS_MODE
Used for storing the units selection in the file because EDA_UNITS alone doesn't cut it.
Definition: pcb_dimension.h:72
DIM_ARROW_DIRECTION
Used for dimension's arrow.
Definition: pcb_dimension.h:83
DIM_TEXT_BORDER
Frame to show around dimension text.
Definition: pcb_dimension.h:92
DIM_PRECISION
Definition: pcb_dimension.h:47
VIATYPE
Definition: pcb_track.h:66
@ BLIND_BURIED
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.
Definition: zone_settings.h:68
ZONE_FILL_MODE
Definition: zone_settings.h:44
ZONE_BORDER_DISPLAY_STYLE
Zone border styles.
Definition: zone_settings.h:59
PLACEMENT_SOURCE_T
Definition: zone_settings.h:75
ZONE_CONNECTION
How pads are covered by copper in zone.
Definition: zones.h:47
@ THERMAL
Use thermal relief for pads.
@ THT_THERMAL
Thermal relief only for THT pads.
@ NONE
Pads are not covered.
@ FULL
pads are covered by copper