LibrePCB Developers Documentation
Loading...
Searching...
No Matches
boarddesignrulecheckmessages.h
Go to the documentation of this file.
1/*
2 * LibrePCB - Professional EDA for everyone!
3 * Copyright (C) 2013 LibrePCB Developers, see AUTHORS.md for contributors.
4 * https://librepcb.org/
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef LIBREPCB_CORE_BOARDDESIGNRULECHECKMESSAGES_H
21#define LIBREPCB_CORE_BOARDDESIGNRULECHECKMESSAGES_H
22
23/*******************************************************************************
24 * Includes
25 ******************************************************************************/
26#include "../../../rulecheck/rulecheckmessage.h"
28
29#include <QtCore>
30
31/*******************************************************************************
32 * Namespace / Forward Declarations
33 ******************************************************************************/
34namespace librepcb {
35
36/*******************************************************************************
37 * Class DrcHoleRef
38 ******************************************************************************/
39
40struct DrcHoleRef {
42
43 bool isPadHole() const noexcept {
44 return (mDevice || mSegment) && mPad && mHole;
45 }
46 bool isViaHole() const noexcept { return mSegment && mVia; }
47 bool isPlated() const noexcept { return isPadHole() || isViaHole(); }
48 const QString& getNetName() const noexcept { return mNetName; }
49 const Data::Pad* getPad() const noexcept { return mPad; }
50 PositiveLength getDiameter() const noexcept {
51 if (mHole) {
52 return mHole->diameter;
53 } else if (mVia) {
54 return mVia->drillDiameter;
55 } else {
56 Q_ASSERT(false);
57 qCritical() << "DrcHoleRef: Unknown object type.";
58 return PositiveLength(1);
59 }
60 }
61 void serialize(SExpression& node) const;
62
63 static DrcHoleRef boardHole(const Data::Hole& hole) {
64 DrcHoleRef obj;
65 obj.mHole = &hole;
66 return obj;
67 }
68 static DrcHoleRef deviceHole(const Data::Device& device,
69 const Data::Hole& hole) {
70 DrcHoleRef obj;
71 obj.mDevice = &device;
72 obj.mHole = &hole;
73 return obj;
74 }
76 const Data::Pad& pad,
77 const Data::Hole& hole) {
78 DrcHoleRef obj;
79 obj.mDevice = &device;
80 obj.mPad = &pad;
81 obj.mHole = &hole;
82 obj.mNetName = pad.netName;
83 return obj;
84 }
85 static DrcHoleRef padHole(const Data::Segment& segment, const Data::Pad& pad,
86 const Data::Hole& hole) {
87 DrcHoleRef obj;
88 obj.mSegment = &segment;
89 obj.mPad = &pad;
90 obj.mHole = &hole;
91 obj.mNetName = pad.netName;
92 return obj;
93 }
94 static DrcHoleRef via(const Data::Segment& segment, const Data::Via& via) {
95 DrcHoleRef obj;
96 obj.mSegment = &segment;
97 obj.mVia = &via;
98 obj.mNetName = segment.netName;
99 return obj;
100 }
101
102private:
103 const Data::Hole* mHole = nullptr;
104 const Data::Segment* mSegment = nullptr;
105 const Data::Via* mVia = nullptr;
106 const Data::Device* mDevice = nullptr;
107 const Data::Pad* mPad = nullptr;
108 QString mNetName; // Empty if no net.
109};
110
111/*******************************************************************************
112 * Class DrcMsgMissingDevice
113 ******************************************************************************/
114
119 Q_DECLARE_TR_FUNCTIONS(DrcMsgMissingDevice)
120
121public:
122 // Constructors / Destructor
124 DrcMsgMissingDevice(const Uuid& uuid, const QString& name) noexcept;
126 : RuleCheckMessage(other) {}
127 virtual ~DrcMsgMissingDevice() noexcept {}
128};
129
130/*******************************************************************************
131 * Class DrcMsgMissingConnection
132 ******************************************************************************/
133
138 Q_DECLARE_TR_FUNCTIONS(DrcMsgMissingConnection)
139
140public:
142 struct Anchor {
143 QString getName() const;
144 void serialize(SExpression& node) const;
145
146 static Anchor footprintPad(const Data::Device& device,
147 const Data::Pad& pad) {
148 Anchor obj;
149 obj.mDevice = &device;
150 obj.mPad = &pad;
151 return obj;
152 }
153 static Anchor pad(const Data::Segment& segment, const Data::Pad& pad) {
154 Anchor obj;
155 obj.mSegment = &segment;
156 obj.mPad = &pad;
157 return obj;
158 }
159 static Anchor junction(const Data::Segment& segment,
160 const Data::Junction& junction) {
161 Anchor obj;
162 obj.mSegment = &segment;
163 obj.mJunction = &junction;
164 return obj;
165 }
166 static Anchor via(const Data::Segment& segment, const Data::Via& via) {
167 Anchor obj;
168 obj.mSegment = &segment;
169 obj.mVia = &via;
170 return obj;
171 }
172
173 private:
174 // Either it's a pad...
175 const Data::Device* mDevice = nullptr;
176 const Data::Pad* mPad = nullptr;
177 // ... or a junction or via
178 const Data::Segment* mSegment = nullptr;
179 const Data::Junction* mJunction = nullptr;
180 const Data::Via* mVia = nullptr;
181 };
182
183 // Constructors / Destructor
185 DrcMsgMissingConnection(const Anchor& p1, const Anchor& p2,
186 const QString& netName,
187 const QVector<Path>& locations);
190 virtual ~DrcMsgMissingConnection() noexcept {}
191};
192
193/*******************************************************************************
194 * Class DrcMsgImpossibleConnection
195 ******************************************************************************/
196
201 Q_DECLARE_TR_FUNCTIONS(DrcMsgImpossibleConnection)
202
203public:
205
206 // Constructors / Destructor
208 DrcMsgImpossibleConnection(const Data::Device& device, const Uuid& signalUuid,
209 const QString& signalName, const QString& netName,
210 const QVector<Path>& locations);
213 virtual ~DrcMsgImpossibleConnection() noexcept {}
214};
215
216/*******************************************************************************
217 * Class DrcMsgMissingBoardOutline
218 ******************************************************************************/
219
224 Q_DECLARE_TR_FUNCTIONS(DrcMsgMissingBoardOutline)
225
226public:
227 // Constructors / Destructor
228 DrcMsgMissingBoardOutline() noexcept;
231 virtual ~DrcMsgMissingBoardOutline() noexcept {}
232};
233
234/*******************************************************************************
235 * Class DrcMsgMultipleBoardOutlines
236 ******************************************************************************/
237
242 Q_DECLARE_TR_FUNCTIONS(DrcMsgMultipleBoardOutlines)
243
244public:
245 // Constructors / Destructor
246 explicit DrcMsgMultipleBoardOutlines(const QVector<Path>& locations) noexcept;
249 virtual ~DrcMsgMultipleBoardOutlines() noexcept {}
250};
251
252/*******************************************************************************
253 * Class DrcMsgOpenBoardOutlinePolygon
254 ******************************************************************************/
255
260 Q_DECLARE_TR_FUNCTIONS(DrcMsgOpenBoardOutlinePolygon)
261
262public:
263 // Constructors / Destructor
265 DrcMsgOpenBoardOutlinePolygon(const Uuid& polygon,
266 const std::optional<Uuid>& device,
267 const QVector<Path>& locations) noexcept;
271 virtual ~DrcMsgOpenBoardOutlinePolygon() noexcept {}
272};
273
274/*******************************************************************************
275 * Class DrcMsgMinimumBoardOutlineInnerRadiusViolation
276 ******************************************************************************/
277
282 : public RuleCheckMessage {
284
285public:
286 // Constructors / Destructor
289 const UnsignedLength& minRadius, const QVector<Path>& locations) noexcept;
294};
295
296/*******************************************************************************
297 * Class DrcMsgPlatedCutouts
298 ******************************************************************************/
299
304 Q_DECLARE_TR_FUNCTIONS(DrcMsgMultipleBoardOutlines)
305
306public:
307 // Constructors / Destructor
308 explicit DrcMsgPlatedCutouts(const QVector<Path>& locations) noexcept;
310 : RuleCheckMessage(other) {}
311 virtual ~DrcMsgPlatedCutouts() noexcept {}
312};
313
314/*******************************************************************************
315 * Class DrcMsgPlatedCutoutWithoutCopper
316 ******************************************************************************/
317
322 Q_DECLARE_TR_FUNCTIONS(DrcMsgPlatedCutoutWithoutCopper)
323
324public:
326
327 // Constructors / Destructor
330 const Data::Device* device,
331 const QVector<Path>& locations) noexcept;
333 const Data::Device* device,
334 const QVector<Path>& locations) noexcept;
339
340private:
341 static QString determineMessage() noexcept;
342 static QString determineDescription() noexcept;
343};
344
345/*******************************************************************************
346 * Class DrcMsgNonPlatedCutoutWithCopper
347 ******************************************************************************/
348
353 Q_DECLARE_TR_FUNCTIONS(DrcMsgNonPlatedCutoutWithCopper)
354
355public:
357
358 // Constructors / Destructor
361 const Data::Device* device,
362 const QVector<Path>& locations) noexcept;
364 const Data::Device* device,
365 const QVector<Path>& locations) noexcept;
370
371private:
372 static QString determineMessage() noexcept;
373 static QString determineDescription() noexcept;
374};
375
376/*******************************************************************************
377 * Class DrcMsgEmptyNetSegment
378 ******************************************************************************/
379
384 Q_DECLARE_TR_FUNCTIONS(DrcMsgEmptyNetSegment)
385
386public:
388
389 // Constructors / Destructor
391 explicit DrcMsgEmptyNetSegment(const Data::Segment& ns) noexcept;
393 : RuleCheckMessage(other), mUuid(other.mUuid) {}
394 virtual ~DrcMsgEmptyNetSegment() noexcept {}
395
396 const Uuid& getUuid() const noexcept { return mUuid; }
397
398private:
400};
401
402/*******************************************************************************
403 * Class DrcMsgUnconnectedJunction
404 ******************************************************************************/
405
410 Q_DECLARE_TR_FUNCTIONS(DrcMsgUnconnectedJunction)
411
412public:
414
415 // Constructors / Destructor
418 const Data::Segment& ns,
419 const QVector<Path>& locations) noexcept;
422 virtual ~DrcMsgUnconnectedJunction() noexcept {}
423};
424
425/*******************************************************************************
426 * Class DrcMsgMinimumTextHeightViolation
427 ******************************************************************************/
428
433 Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumTextHeightViolation)
434
435public:
437
438 // Constructors / Destructor
441 const Data::Device* device,
442 const UnsignedLength& minHeight,
443 const QVector<Path>& locations) noexcept;
448};
449
450/*******************************************************************************
451 * Class DrcMsgMinimumWidthViolation
452 ******************************************************************************/
453
458 Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumWidthViolation)
459
460public:
462
463 // Constructors / Destructor
466 const Data::Trace& trace,
467 const UnsignedLength& minWidth,
468 const QVector<Path>& locations) noexcept;
470 const UnsignedLength& minWidth,
471 const QVector<Path>& locations) noexcept;
473 const UnsignedLength& minWidth,
474 const QVector<Path>& locations) noexcept;
476 const Data::Device* device,
477 const UnsignedLength& minWidth,
478 const QVector<Path>& locations) noexcept;
480 const Data::Polygon& polygon,
481 const UnsignedLength& minWidth,
482 const QVector<Path>& locations) noexcept;
484 const Data::Circle& circle,
485 const UnsignedLength& minWidth,
486 const QVector<Path>& locations) noexcept;
489 virtual ~DrcMsgMinimumWidthViolation() noexcept {}
490};
491
492/*******************************************************************************
493 * Class DrcMsgCopperCopperClearanceViolation
494 ******************************************************************************/
495
500 Q_DECLARE_TR_FUNCTIONS(DrcMsgCopperCopperClearanceViolation)
501
502public:
504
505 struct Object {
506 QString getName() const;
507 void serialize(SExpression& node) const;
508
509 static Object footprintPad(const Data::Pad& pad,
510 const Data::Device& device) {
511 Object obj;
512 obj.mPad = &pad;
513 obj.mDevice = &device;
514 obj.mNetName = pad.netName;
515 return obj;
516 }
517 static Object pad(const Data::Pad& pad, const Data::Segment& segment) {
518 Object obj;
519 obj.mPad = &pad;
520 obj.mSegment = &segment;
521 obj.mNetName = pad.netName;
522 return obj;
523 }
524 static Object trace(const Data::Trace& trace,
525 const Data::Segment& segment) {
526 Object obj;
527 obj.mTrace = &trace;
528 obj.mSegment = &segment;
529 obj.mNetName = segment.netName;
530 return obj;
531 }
532 static Object via(const Data::Via& via, const Data::Segment& segment) {
533 Object obj;
534 obj.mVia = &via;
535 obj.mSegment = &segment;
536 obj.mNetName = segment.netName;
537 return obj;
538 }
539 static Object plane(const Data::Plane& plane) {
540 Object obj;
541 obj.mPlane = &plane;
542 obj.mNetName = plane.netName;
543 return obj;
544 }
545 static Object polygon(const Data::Polygon& polygon,
546 const Data::Device* device) {
547 Object obj;
548 obj.mPolygon = &polygon;
549 obj.mDevice = device;
550 return obj;
551 }
552 static Object circle(const Data::Circle& circle,
553 const Data::Device* device) {
554 Object obj;
555 obj.mCircle = &circle;
556 obj.mDevice = device;
557 return obj;
558 }
560 const Data::Device* device) {
561 Object obj;
562 obj.mStrokeText = &txt;
563 obj.mDevice = device;
564 return obj;
565 }
566
567 bool operator==(const Object& rhs) const {
568 std::unique_ptr<SExpression> obj1 = SExpression::createList("object");
569 serialize(*obj1);
570 std::unique_ptr<SExpression> obj2 = SExpression::createList("object");
571 rhs.serialize(*obj2);
572 return (*obj1) == (*obj2);
573 }
574
575 private:
576 // Actual object (one of them)
577 const Data::Pad* mPad = nullptr;
578 const Data::Trace* mTrace = nullptr;
579 const Data::Via* mVia = nullptr;
580 const Data::Plane* mPlane = nullptr;
581 const Data::Polygon* mPolygon = nullptr;
582 const Data::Circle* mCircle = nullptr;
583 const Data::StrokeText* mStrokeText = nullptr;
584
585 // Optional context (depending on object type)
586 const Data::Segment* mSegment = nullptr;
587 const Data::Device* mDevice = nullptr;
588 QString mNetName; // Empty if no net.
589 };
590
591 // Constructors / Destructor
593 DrcMsgCopperCopperClearanceViolation(const Object& obj1, const Object& obj2,
594 const QSet<const Layer*>& layers,
595 const Length& minClearance,
596 const QVector<Path>& locations);
601
602private:
603 static QString getLayerName(const QSet<const Layer*>& layers);
604};
605
606/*******************************************************************************
607 * Class DrcMsgCopperBoardClearanceViolation
608 ******************************************************************************/
609
614 Q_DECLARE_TR_FUNCTIONS(DrcMsgCopperBoardClearanceViolation)
615
616public:
618
619 // Constructors / Destructor
622 const Data::Pad& pad,
623 const UnsignedLength& minClearance,
624 const QVector<Path>& locations) noexcept;
626 const Data::Via& via,
627 const UnsignedLength& minClearance,
628 const QVector<Path>& locations) noexcept;
630 const Data::Trace& trace,
631 const UnsignedLength& minClearance,
632 const QVector<Path>& locations) noexcept;
634 const Data::Pad& pad,
635 const UnsignedLength& minClearance,
636 const QVector<Path>& locations) noexcept;
638 const UnsignedLength& minClearance,
639 const QVector<Path>& locations) noexcept;
641 const Data::Device* device,
642 const UnsignedLength& minClearance,
643 const QVector<Path>& locations) noexcept;
645 const Data::Circle& circle,
646 const UnsignedLength& minClearance,
647 const QVector<Path>& locations) noexcept;
649 const Data::Device* device,
650 const UnsignedLength& minClearance,
651 const QVector<Path>& locations) noexcept;
656
657private:
658 static QString determineMessage(const Data::Pad& pad,
659 const UnsignedLength& minClearance) noexcept;
660 static QString determineDescription(const Data::Pad& pad) noexcept;
661};
662
663/*******************************************************************************
664 * Class DrcMsgCopperHoleClearanceViolation
665 ******************************************************************************/
666
671 Q_DECLARE_TR_FUNCTIONS(DrcMsgCopperHoleClearanceViolation)
672
673public:
675
676 // Constructors / Destructor
679 const Data::Device* device,
680 const UnsignedLength& minClearance,
681 const QVector<Path>& locations) noexcept;
686};
687
688/*******************************************************************************
689 * Class DrcMsgCopperInKeepoutZone
690 ******************************************************************************/
691
696 Q_DECLARE_TR_FUNCTIONS(DrcMsgCopperInKeepoutZone)
697
698public:
700
701 // Constructors / Destructor
704 const Data::Device* zoneDevice,
705 const Data::Device& device, const Data::Pad& pad,
706 const QVector<Path>& locations) noexcept;
708 const Data::Device* zoneDevice,
709 const Data::Segment& ns, const Data::Pad& pad,
710 const QVector<Path>& locations) noexcept;
712 const Data::Device* zoneDevice,
713 const Data::Segment& ns, const Data::Via& via,
714 const QVector<Path>& locations) noexcept;
716 const Data::Device* zoneDevice,
717 const Data::Segment& ns, const Data::Trace& trace,
718 const QVector<Path>& locations) noexcept;
720 const Data::Device* zoneDevice,
721 const Data::Polygon& polygon,
722 const QVector<Path>& locations) noexcept;
724 const Data::Device* zoneDevice,
725 const Data::Device& device,
726 const Data::Polygon& polygon,
727 const QVector<Path>& locations) noexcept;
729 const Data::Device* zoneDevice,
730 const Data::Device& device,
731 const Data::Circle& circle,
732 const QVector<Path>& locations) noexcept;
735 virtual ~DrcMsgCopperInKeepoutZone() noexcept {}
736
737private:
738 void addZoneApprovalNodes(const Data::Zone& zone,
739 const Data::Device* zoneDevice) noexcept;
740 static QString determineMessage(const Data::Pad& pad,
741 const QString& cmpInstName) noexcept;
742 static QString determineDescription() noexcept;
743};
744
745/*******************************************************************************
746 * Class DrcMsgDrillDrillClearanceViolation
747 ******************************************************************************/
748
753 Q_DECLARE_TR_FUNCTIONS(DrcMsgDrillDrillClearanceViolation)
754
755public:
756 // Constructors / Destructor
759 const DrcHoleRef& hole2,
760 const UnsignedLength& minClearance,
761 const QVector<Path>& locations);
766};
767
768/*******************************************************************************
769 * Class DrcMsgDrillBoardClearanceViolation
770 ******************************************************************************/
771
776 Q_DECLARE_TR_FUNCTIONS(DrcMsgDrillBoardClearanceViolation)
777
778public:
779 // Constructors / Destructor
782 const UnsignedLength& minClearance,
783 const QVector<Path>& locations) noexcept;
788};
789
790/*******************************************************************************
791 * Class DrcMsgDeviceInCourtyard
792 ******************************************************************************/
793
798 Q_DECLARE_TR_FUNCTIONS(DrcMsgDeviceInCourtyard)
799
800public:
802
803 // Constructors / Destructor
806 const Data::Device& device2,
807 const QVector<Path>& locations) noexcept;
810 virtual ~DrcMsgDeviceInCourtyard() noexcept {}
811};
812
813/*******************************************************************************
814 * Class DrcMsgOverlappingDevices
815 ******************************************************************************/
816
821 Q_DECLARE_TR_FUNCTIONS(DrcMsgOverlappingDevices)
822
823public:
825
826 // Constructors / Destructor
829 const Data::Device& device2,
830 const QVector<Path>& locations) noexcept;
833 virtual ~DrcMsgOverlappingDevices() noexcept {}
834};
835
836/*******************************************************************************
837 * Class DrcMsgDeviceInKeepoutZone
838 ******************************************************************************/
839
844 Q_DECLARE_TR_FUNCTIONS(DrcMsgDeviceInKeepoutZone)
845
846public:
848
849 // Constructors / Destructor
852 const Data::Device* zoneDevice,
853 const Data::Device& device,
854 const QVector<Path>& locations) noexcept;
857 virtual ~DrcMsgDeviceInKeepoutZone() noexcept {}
858
859private:
860 void addZoneApprovalNodes(const Data::Zone& zone,
861 const Data::Device* zoneDevice) noexcept;
862 static QString determineDescription() noexcept;
863};
864
865/*******************************************************************************
866 * Class DrcMsgExposureInKeepoutZone
867 ******************************************************************************/
868
873 Q_DECLARE_TR_FUNCTIONS(DrcMsgExposureInKeepoutZone)
874
875public:
877
878 // Constructors / Destructor
881 const Data::Device* zoneDevice,
882 const Data::Device& device, const Data::Pad& pad,
883 const QVector<Path>& locations) noexcept;
885 const Data::Device* zoneDevice,
886 const Data::Segment& ns, const Data::Pad& pad,
887 const QVector<Path>& locations) noexcept;
889 const Data::Device* zoneDevice,
890 const Data::Segment& ns, const Data::Via& via,
891 const QVector<Path>& locations) noexcept;
893 const Data::Device* zoneDevice,
894 const Data::Polygon& polygon,
895 const QVector<Path>& locations) noexcept;
897 const Data::Device* zoneDevice,
898 const Data::Device& device,
899 const Data::Polygon& polygon,
900 const QVector<Path>& locations) noexcept;
902 const Data::Device* zoneDevice,
903 const Data::Device& device,
904 const Data::Circle& circle,
905 const QVector<Path>& locations) noexcept;
908 virtual ~DrcMsgExposureInKeepoutZone() noexcept {}
909
910private:
911 void addZoneApprovalNodes(const Data::Zone& zone,
912 const Data::Device* zoneDevice) noexcept;
913 static QString determineMessage(const Data::Pad& pad,
914 const QString& cmpInstName) noexcept;
915 static QString determineDescription() noexcept;
916};
917
918/*******************************************************************************
919 * Class DrcMsgMinimumAnnularRingViolation
920 ******************************************************************************/
921
926 Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumAnnularRingViolation)
927
928public:
930
931 // Constructors / Destructor
934 const Data::Via& via,
935 const UnsignedLength& minAnnularWidth,
936 const QVector<Path>& locations) noexcept;
938 const Data::Pad& pad,
939 const UnsignedLength& minAnnularWidth,
940 const QVector<Path>& locations) noexcept;
942 const Data::Pad& pad,
943 const UnsignedLength& minAnnularWidth,
944 const QVector<Path>& locations) noexcept;
949
950private:
951 static QString determineMessage(const Data::Pad& pad,
952 const UnsignedLength& minAnnularWidth,
953 const QString& cmpInstName) noexcept;
954 static QString determineDescription(const Data::Pad& pad) noexcept;
955};
956
957/*******************************************************************************
958 * Class DrcMsgMinimumDrillDiameterViolation
959 ******************************************************************************/
960
965 Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumDrillDiameterViolation)
966
967public:
968 // Constructors / Destructor
971 const UnsignedLength& minDiameter,
972 const QVector<Path>& locations) noexcept;
977
978private:
979 static QString determineMessage(const DrcHoleRef& hole,
980 const UnsignedLength& minDiameter) noexcept;
981 static QString determineDescription(const DrcHoleRef& hole) noexcept;
982};
983
984/*******************************************************************************
985 * Class DrcMsgMinimumSlotWidthViolation
986 ******************************************************************************/
987
992 Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumSlotWidthViolation)
993
994public:
995 // Constructors / Destructor
998 const UnsignedLength& minWidth,
999 const QVector<Path>& locations) noexcept;
1004
1005private:
1006 static QString determineMessage(bool plated,
1007 const PositiveLength& actualWidth,
1008 const UnsignedLength& minWidth) noexcept;
1009 static QString determineDescription(bool plated) noexcept;
1010};
1011
1012/*******************************************************************************
1013 * Class DrcMsgInvalidPadConnection
1014 ******************************************************************************/
1015
1020 Q_DECLARE_TR_FUNCTIONS(DrcMsgInvalidPadConnection)
1021
1022public:
1024
1025 // Constructors / Destructor
1027 DrcMsgInvalidPadConnection(const Data::Device& device, const Data::Pad& pad,
1028 const Layer& layer,
1029 const QVector<Path>& locations) noexcept;
1031 const Layer& layer,
1032 const QVector<Path>& locations) noexcept;
1035 virtual ~DrcMsgInvalidPadConnection() noexcept {}
1036
1037private:
1038 static QString determineMessage(const Data::Pad& pad,
1039 const QString& cmpInstName) noexcept;
1040 static QString determineDescription() noexcept;
1041};
1042
1043/*******************************************************************************
1044 * Class DrcMsgForbiddenSlot
1045 ******************************************************************************/
1046
1051 Q_DECLARE_TR_FUNCTIONS(DrcMsgForbiddenSlot)
1052
1053public:
1055
1056 // Constructors / Destructor
1058 DrcMsgForbiddenSlot(const Data::Hole& hole, const Data::Device* device,
1059 const Data::Pad* pad,
1060 const QVector<Path>& locations) noexcept;
1061 DrcMsgForbiddenSlot(const Data::Hole& hole, const Data::Segment& ns,
1062 const Data::Pad& pad,
1063 const QVector<Path>& locations) noexcept;
1065 : RuleCheckMessage(other) {}
1066 virtual ~DrcMsgForbiddenSlot() noexcept {}
1067
1068private:
1069 static QString determineMessage(const NonEmptyPath& path) noexcept;
1070 static QString determineDescription(const NonEmptyPath& path) noexcept;
1071};
1072
1073/*******************************************************************************
1074 * Class DrcMsgForbiddenVia
1075 ******************************************************************************/
1076
1081 Q_DECLARE_TR_FUNCTIONS(DrcMsgForbiddenVia)
1082
1083public:
1085
1086 // Constructors / Destructor
1088 DrcMsgForbiddenVia(const Data::Segment& ns, const Data::Via& via,
1089 const QVector<Path>& locations) noexcept;
1091 : RuleCheckMessage(other) {}
1092 virtual ~DrcMsgForbiddenVia() noexcept {}
1093
1094private:
1095 static QString determineMessage(const Data::Segment& ns,
1096 const Data::Via& via) noexcept;
1097 static QString determineDescription(const Data::Via& via) noexcept;
1098};
1099
1100/*******************************************************************************
1101 * Class DrcMsgInvalidVia
1102 ******************************************************************************/
1103
1108 Q_DECLARE_TR_FUNCTIONS(DrcMsgInvalidVia)
1109
1110public:
1112
1113 // Constructors / Destructor
1115 DrcMsgInvalidVia(const Data::Segment& ns, const Data::Via& via,
1116 const QVector<Path>& locations) noexcept;
1117 DrcMsgInvalidVia(const DrcMsgInvalidVia& other) noexcept
1118 : RuleCheckMessage(other) {}
1119 virtual ~DrcMsgInvalidVia() noexcept {}
1120};
1121
1122/*******************************************************************************
1123 * Class DrcMsgPlaneThermalSpokeWidthIgnored
1124 ******************************************************************************/
1125
1130 Q_DECLARE_TR_FUNCTIONS(DrcMsgPlaneThermalSpokeWidthIgnored)
1131
1132public:
1134
1135 // Constructors / Destructor
1138 const QVector<Path>& locations) noexcept;
1140 const DrcMsgPlaneThermalSpokeWidthIgnored& other) noexcept
1141 : RuleCheckMessage(other), mPlaneUuid(other.mPlaneUuid) {}
1143
1144 const Uuid& getUuid() const noexcept { return mPlaneUuid; }
1145
1146private:
1148};
1149
1150/*******************************************************************************
1151 * Class DrcMsgSilkscreenClearanceViolation
1152 ******************************************************************************/
1153
1158 Q_DECLARE_TR_FUNCTIONS(DrcMsgSilkscreenClearanceViolation)
1159
1160public:
1162
1163 // Constructors / Destructor
1166 const Data::Device* device,
1167 const UnsignedLength& minClearance,
1168 const QVector<Path>& locations) noexcept;
1173};
1174
1175/*******************************************************************************
1176 * Class DrcMsgUselessZone
1177 ******************************************************************************/
1178
1183 Q_DECLARE_TR_FUNCTIONS(DrcMsgUselessZone)
1184
1185public:
1187
1188 // Constructors / Destructor
1190 DrcMsgUselessZone(const Data::Zone& zone,
1191 const QVector<Path>& locations) noexcept;
1193 : RuleCheckMessage(other) {}
1194 virtual ~DrcMsgUselessZone() noexcept {}
1195};
1196
1197/*******************************************************************************
1198 * Class DrcMsgUselessVia
1199 ******************************************************************************/
1200
1205 Q_DECLARE_TR_FUNCTIONS(DrcMsgUselessVia)
1206
1207public:
1209
1210 // Constructors / Destructor
1212 DrcMsgUselessVia(const Data::Segment& ns, const Data::Via& via,
1213 const QVector<Path>& locations) noexcept;
1214 DrcMsgUselessVia(const DrcMsgUselessVia& other) noexcept
1215 : RuleCheckMessage(other) {}
1216 virtual ~DrcMsgUselessVia() noexcept {}
1217};
1218
1219/*******************************************************************************
1220 * Class DrcMsgDisabledLayer
1221 ******************************************************************************/
1222
1227 Q_DECLARE_TR_FUNCTIONS(DrcMsgDisabledLayer)
1228
1229public:
1230 // Constructors / Destructor
1232 explicit DrcMsgDisabledLayer(const Layer& layer) noexcept;
1234 : RuleCheckMessage(other) {}
1235 virtual ~DrcMsgDisabledLayer() noexcept {}
1236};
1237
1238/*******************************************************************************
1239 * Class DrcMsgUnusedLayer
1240 ******************************************************************************/
1241
1246 Q_DECLARE_TR_FUNCTIONS(DrcMsgUnusedLayer)
1247
1248public:
1249 // Constructors / Destructor
1251 explicit DrcMsgUnusedLayer(const Layer& layer) noexcept;
1253 : RuleCheckMessage(other) {}
1254 virtual ~DrcMsgUnusedLayer() noexcept {}
1255};
1256
1257/*******************************************************************************
1258 * End of File
1259 ******************************************************************************/
1260
1261} // namespace librepcb
1262
1263#endif
The DrcMsgCopperBoardClearanceViolation class.
Definition boarddesignrulecheckmessages.h:613
DrcMsgCopperBoardClearanceViolation(const DrcMsgCopperBoardClearanceViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:652
virtual ~DrcMsgCopperBoardClearanceViolation() noexcept
Definition boarddesignrulecheckmessages.h:655
The DrcMsgCopperCopperClearanceViolation class.
Definition boarddesignrulecheckmessages.h:499
DrcMsgCopperCopperClearanceViolation(const DrcMsgCopperCopperClearanceViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:597
virtual ~DrcMsgCopperCopperClearanceViolation() noexcept
Definition boarddesignrulecheckmessages.h:600
The DrcMsgCopperHoleClearanceViolation class.
Definition boarddesignrulecheckmessages.h:670
DrcMsgCopperHoleClearanceViolation(const DrcMsgCopperHoleClearanceViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:682
virtual ~DrcMsgCopperHoleClearanceViolation() noexcept
Definition boarddesignrulecheckmessages.h:685
The DrcMsgCopperInKeepoutZone class.
Definition boarddesignrulecheckmessages.h:695
DrcMsgCopperInKeepoutZone(const DrcMsgCopperInKeepoutZone &other) noexcept
Definition boarddesignrulecheckmessages.h:733
virtual ~DrcMsgCopperInKeepoutZone() noexcept
Definition boarddesignrulecheckmessages.h:735
The DrcMsgDeviceInCourtyard class.
Definition boarddesignrulecheckmessages.h:797
virtual ~DrcMsgDeviceInCourtyard() noexcept
Definition boarddesignrulecheckmessages.h:810
DrcMsgDeviceInCourtyard(const DrcMsgDeviceInCourtyard &other) noexcept
Definition boarddesignrulecheckmessages.h:808
The DrcMsgDeviceInKeepoutZone class.
Definition boarddesignrulecheckmessages.h:843
virtual ~DrcMsgDeviceInKeepoutZone() noexcept
Definition boarddesignrulecheckmessages.h:857
DrcMsgDeviceInKeepoutZone(const DrcMsgDeviceInKeepoutZone &other) noexcept
Definition boarddesignrulecheckmessages.h:855
The DrcMsgDisabledLayer class.
Definition boarddesignrulecheckmessages.h:1226
DrcMsgDisabledLayer(const DrcMsgDisabledLayer &other) noexcept
Definition boarddesignrulecheckmessages.h:1233
virtual ~DrcMsgDisabledLayer() noexcept
Definition boarddesignrulecheckmessages.h:1235
The DrcMsgDrillBoardClearanceViolation class.
Definition boarddesignrulecheckmessages.h:775
virtual ~DrcMsgDrillBoardClearanceViolation() noexcept
Definition boarddesignrulecheckmessages.h:787
DrcMsgDrillBoardClearanceViolation(const DrcMsgDrillBoardClearanceViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:784
The DrcMsgDrillDrillClearanceViolation class.
Definition boarddesignrulecheckmessages.h:752
virtual ~DrcMsgDrillDrillClearanceViolation() noexcept
Definition boarddesignrulecheckmessages.h:765
DrcMsgDrillDrillClearanceViolation(const DrcMsgDrillDrillClearanceViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:762
The DrcMsgEmptyNetSegment class.
Definition boarddesignrulecheckmessages.h:383
Uuid mUuid
Definition boarddesignrulecheckmessages.h:399
virtual ~DrcMsgEmptyNetSegment() noexcept
Definition boarddesignrulecheckmessages.h:394
const Uuid & getUuid() const noexcept
Definition boarddesignrulecheckmessages.h:396
DrcMsgEmptyNetSegment(const DrcMsgEmptyNetSegment &other) noexcept
Definition boarddesignrulecheckmessages.h:392
The DrcMsgExposureInKeepoutZone class.
Definition boarddesignrulecheckmessages.h:872
DrcMsgExposureInKeepoutZone(const DrcMsgExposureInKeepoutZone &other) noexcept
Definition boarddesignrulecheckmessages.h:906
virtual ~DrcMsgExposureInKeepoutZone() noexcept
Definition boarddesignrulecheckmessages.h:908
The DrcMsgForbiddenSlot class.
Definition boarddesignrulecheckmessages.h:1050
DrcMsgForbiddenSlot(const DrcMsgForbiddenSlot &other) noexcept
Definition boarddesignrulecheckmessages.h:1064
virtual ~DrcMsgForbiddenSlot() noexcept
Definition boarddesignrulecheckmessages.h:1066
The DrcMsgForbiddenVia class.
Definition boarddesignrulecheckmessages.h:1080
virtual ~DrcMsgForbiddenVia() noexcept
Definition boarddesignrulecheckmessages.h:1092
DrcMsgForbiddenVia(const DrcMsgForbiddenVia &other) noexcept
Definition boarddesignrulecheckmessages.h:1090
The DrcMsgImpossibleConnection class.
Definition boarddesignrulecheckmessages.h:200
virtual ~DrcMsgImpossibleConnection() noexcept
Definition boarddesignrulecheckmessages.h:213
DrcMsgImpossibleConnection(const DrcMsgImpossibleConnection &other) noexcept
Definition boarddesignrulecheckmessages.h:211
The DrcMsgInvalidPadConnection class.
Definition boarddesignrulecheckmessages.h:1019
DrcMsgInvalidPadConnection(const DrcMsgInvalidPadConnection &other) noexcept
Definition boarddesignrulecheckmessages.h:1033
virtual ~DrcMsgInvalidPadConnection() noexcept
Definition boarddesignrulecheckmessages.h:1035
The DrcMsgInvalidVia class.
Definition boarddesignrulecheckmessages.h:1107
virtual ~DrcMsgInvalidVia() noexcept
Definition boarddesignrulecheckmessages.h:1119
DrcMsgInvalidVia(const DrcMsgInvalidVia &other) noexcept
Definition boarddesignrulecheckmessages.h:1117
The DrcMsgMinimumAnnularRingViolation class.
Definition boarddesignrulecheckmessages.h:925
virtual ~DrcMsgMinimumAnnularRingViolation() noexcept
Definition boarddesignrulecheckmessages.h:948
DrcMsgMinimumAnnularRingViolation(const DrcMsgMinimumAnnularRingViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:945
The DrcMsgMinimumBoardOutlineInnerRadiusViolation class.
Definition boarddesignrulecheckmessages.h:282
DrcMsgMinimumBoardOutlineInnerRadiusViolation(const DrcMsgMinimumBoardOutlineInnerRadiusViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:290
virtual ~DrcMsgMinimumBoardOutlineInnerRadiusViolation() noexcept
Definition boarddesignrulecheckmessages.h:293
The DrcMsgMinimumDrillDiameterViolation class.
Definition boarddesignrulecheckmessages.h:964
DrcMsgMinimumDrillDiameterViolation(const DrcMsgMinimumDrillDiameterViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:973
virtual ~DrcMsgMinimumDrillDiameterViolation() noexcept
Definition boarddesignrulecheckmessages.h:976
The DrcMsgMinimumSlotWidthViolation class.
Definition boarddesignrulecheckmessages.h:991
virtual ~DrcMsgMinimumSlotWidthViolation() noexcept
Definition boarddesignrulecheckmessages.h:1003
DrcMsgMinimumSlotWidthViolation(const DrcMsgMinimumSlotWidthViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:1000
The DrcMsgMinimumTextHeightViolation class.
Definition boarddesignrulecheckmessages.h:432
DrcMsgMinimumTextHeightViolation(const DrcMsgMinimumTextHeightViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:444
virtual ~DrcMsgMinimumTextHeightViolation() noexcept
Definition boarddesignrulecheckmessages.h:447
The DrcMsgMinimumWidthViolation class.
Definition boarddesignrulecheckmessages.h:457
virtual ~DrcMsgMinimumWidthViolation() noexcept
Definition boarddesignrulecheckmessages.h:489
DrcMsgMinimumWidthViolation(const DrcMsgMinimumWidthViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:487
The DrcMsgMissingBoardOutline class.
Definition boarddesignrulecheckmessages.h:223
DrcMsgMissingBoardOutline() noexcept
Definition boarddesignrulecheckmessages.cpp:234
virtual ~DrcMsgMissingBoardOutline() noexcept
Definition boarddesignrulecheckmessages.h:231
DrcMsgMissingBoardOutline(const DrcMsgMissingBoardOutline &other) noexcept
Definition boarddesignrulecheckmessages.h:229
The DrcMsgMissingConnection class.
Definition boarddesignrulecheckmessages.h:137
DrcMsgMissingConnection(const DrcMsgMissingConnection &other) noexcept
Definition boarddesignrulecheckmessages.h:188
virtual ~DrcMsgMissingConnection() noexcept
Definition boarddesignrulecheckmessages.h:190
The DrcMsgMissingDevice class.
Definition boarddesignrulecheckmessages.h:118
DrcMsgMissingDevice(const DrcMsgMissingDevice &other) noexcept
Definition boarddesignrulecheckmessages.h:125
virtual ~DrcMsgMissingDevice() noexcept
Definition boarddesignrulecheckmessages.h:127
The DrcMsgMultipleBoardOutlines class.
Definition boarddesignrulecheckmessages.h:241
virtual ~DrcMsgMultipleBoardOutlines() noexcept
Definition boarddesignrulecheckmessages.h:249
DrcMsgMultipleBoardOutlines(const DrcMsgMultipleBoardOutlines &other) noexcept
Definition boarddesignrulecheckmessages.h:247
The DrcMsgNonPlatedCutoutWithCopper class.
Definition boarddesignrulecheckmessages.h:352
virtual ~DrcMsgNonPlatedCutoutWithCopper() noexcept
Definition boarddesignrulecheckmessages.h:369
DrcMsgNonPlatedCutoutWithCopper(const DrcMsgNonPlatedCutoutWithCopper &other) noexcept
Definition boarddesignrulecheckmessages.h:366
The DrcMsgOpenBoardOutlinePolygon class.
Definition boarddesignrulecheckmessages.h:259
DrcMsgOpenBoardOutlinePolygon(const DrcMsgOpenBoardOutlinePolygon &other) noexcept
Definition boarddesignrulecheckmessages.h:268
virtual ~DrcMsgOpenBoardOutlinePolygon() noexcept
Definition boarddesignrulecheckmessages.h:271
The DrcMsgOverlappingDevices class.
Definition boarddesignrulecheckmessages.h:820
virtual ~DrcMsgOverlappingDevices() noexcept
Definition boarddesignrulecheckmessages.h:833
DrcMsgOverlappingDevices(const DrcMsgOverlappingDevices &other) noexcept
Definition boarddesignrulecheckmessages.h:831
The DrcMsgPlaneThermalSpokeWidthIgnored class.
Definition boarddesignrulecheckmessages.h:1129
virtual ~DrcMsgPlaneThermalSpokeWidthIgnored() noexcept
Definition boarddesignrulecheckmessages.h:1142
const Uuid mPlaneUuid
Definition boarddesignrulecheckmessages.h:1147
DrcMsgPlaneThermalSpokeWidthIgnored(const DrcMsgPlaneThermalSpokeWidthIgnored &other) noexcept
Definition boarddesignrulecheckmessages.h:1139
const Uuid & getUuid() const noexcept
Definition boarddesignrulecheckmessages.h:1144
The DrcMsgPlatedCutoutWithoutCopper class.
Definition boarddesignrulecheckmessages.h:321
static QString determineDescription() noexcept
Definition boarddesignrulecheckmessages.cpp:376
virtual ~DrcMsgPlatedCutoutWithoutCopper() noexcept
Definition boarddesignrulecheckmessages.h:338
static QString determineMessage() noexcept
Definition boarddesignrulecheckmessages.cpp:372
DrcMsgPlatedCutoutWithoutCopper(const DrcMsgPlatedCutoutWithoutCopper &other) noexcept
Definition boarddesignrulecheckmessages.h:335
The DrcMsgMultipleBoardOutlines class.
Definition boarddesignrulecheckmessages.h:303
virtual ~DrcMsgPlatedCutouts() noexcept
Definition boarddesignrulecheckmessages.h:311
DrcMsgPlatedCutouts(const DrcMsgPlatedCutouts &other) noexcept
Definition boarddesignrulecheckmessages.h:309
The DrcMsgSilkscreenClearanceViolation class.
Definition boarddesignrulecheckmessages.h:1157
DrcMsgSilkscreenClearanceViolation(const DrcMsgSilkscreenClearanceViolation &other) noexcept
Definition boarddesignrulecheckmessages.h:1169
virtual ~DrcMsgSilkscreenClearanceViolation() noexcept
Definition boarddesignrulecheckmessages.h:1172
The DrcMsgUnconnectedJunction class.
Definition boarddesignrulecheckmessages.h:409
virtual ~DrcMsgUnconnectedJunction() noexcept
Definition boarddesignrulecheckmessages.h:422
DrcMsgUnconnectedJunction(const DrcMsgUnconnectedJunction &other) noexcept
Definition boarddesignrulecheckmessages.h:420
The DrcMsgUnusedLayer class.
Definition boarddesignrulecheckmessages.h:1245
DrcMsgUnusedLayer(const DrcMsgUnusedLayer &other) noexcept
Definition boarddesignrulecheckmessages.h:1252
virtual ~DrcMsgUnusedLayer() noexcept
Definition boarddesignrulecheckmessages.h:1254
The DrcMsgUselessVia class.
Definition boarddesignrulecheckmessages.h:1204
virtual ~DrcMsgUselessVia() noexcept
Definition boarddesignrulecheckmessages.h:1216
DrcMsgUselessVia(const DrcMsgUselessVia &other) noexcept
Definition boarddesignrulecheckmessages.h:1214
The DrcMsgUselessZone class.
Definition boarddesignrulecheckmessages.h:1182
DrcMsgUselessZone(const DrcMsgUselessZone &other) noexcept
Definition boarddesignrulecheckmessages.h:1192
virtual ~DrcMsgUselessZone() noexcept
Definition boarddesignrulecheckmessages.h:1194
The Layer class provides all supported geometry layers.
Definition layer.h:42
The Length class is used to represent a length (for example 12.75 millimeters)
Definition length.h:82
The RuleCheckMessage class.
Definition rulecheckmessage.h:45
The SExpression class.
Definition sexpression.h:69
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
Definition occmodel.cpp:77
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition length.h:810
type_safe::constrained_type< Path, NonEmptyPathConstraint, NonEmptyPathVerifier > NonEmptyPath
Definition path.h:238
type_safe::constrained_type< Length, UnsignedLengthConstraint, UnsignedLengthVerifier > UnsignedLength
Definition length.h:694
std::unique_ptr< SExpression > serialize(const AttributeKey &obj)
Definition attributekey.h:94
Definition boarddesignrulecheckdata.h:142
Definition boarddesignrulecheckdata.h:172
Definition boarddesignrulecheckdata.h:81
PositiveLength diameter
Definition boarddesignrulecheckdata.h:83
Definition boarddesignrulecheckdata.h:54
Definition boarddesignrulecheckdata.h:87
QString netName
Definition boarddesignrulecheckdata.h:98
Definition boarddesignrulecheckdata.h:124
QString netName
Definition boarddesignrulecheckdata.h:127
Definition boarddesignrulecheckdata.h:135
Definition boarddesignrulecheckdata.h:101
QString netName
Definition boarddesignrulecheckdata.h:104
Definition boarddesignrulecheckdata.h:150
Definition boarddesignrulecheckdata.h:59
Definition boarddesignrulecheckdata.h:66
PositiveLength drillDiameter
Definition boarddesignrulecheckdata.h:69
Definition boarddesignrulecheckdata.h:160
Input data structure for librepcb::BoardDesignRuleCheck.
Definition boarddesignrulecheckdata.h:48
Definition boarddesignrulecheckmessages.h:40
static DrcHoleRef via(const Data::Segment &segment, const Data::Via &via)
Definition boarddesignrulecheckmessages.h:94
static DrcHoleRef footprintPadHole(const Data::Device &device, const Data::Pad &pad, const Data::Hole &hole)
Definition boarddesignrulecheckmessages.h:75
QString mNetName
Definition boarddesignrulecheckmessages.h:108
bool isPadHole() const noexcept
Definition boarddesignrulecheckmessages.h:43
static DrcHoleRef padHole(const Data::Segment &segment, const Data::Pad &pad, const Data::Hole &hole)
Definition boarddesignrulecheckmessages.h:85
const QString & getNetName() const noexcept
Definition boarddesignrulecheckmessages.h:48
static DrcHoleRef boardHole(const Data::Hole &hole)
Definition boarddesignrulecheckmessages.h:63
const Data::Hole * mHole
Definition boarddesignrulecheckmessages.h:103
const Data::Pad * getPad() const noexcept
Definition boarddesignrulecheckmessages.h:49
PositiveLength getDiameter() const noexcept
Definition boarddesignrulecheckmessages.h:50
void serialize(SExpression &node) const
Definition boarddesignrulecheckmessages.cpp:73
static DrcHoleRef deviceHole(const Data::Device &device, const Data::Hole &hole)
Definition boarddesignrulecheckmessages.h:68
const Data::Via * mVia
Definition boarddesignrulecheckmessages.h:105
const Data::Pad * mPad
Definition boarddesignrulecheckmessages.h:107
const Data::Device * mDevice
Definition boarddesignrulecheckmessages.h:106
bool isPlated() const noexcept
Definition boarddesignrulecheckmessages.h:47
const Data::Segment * mSegment
Definition boarddesignrulecheckmessages.h:104
bool isViaHole() const noexcept
Definition boarddesignrulecheckmessages.h:46
Definition boarddesignrulecheckmessages.h:505
bool operator==(const Object &rhs) const
Definition boarddesignrulecheckmessages.h:567
QString mNetName
Definition boarddesignrulecheckmessages.h:588
const Data::Plane * mPlane
Definition boarddesignrulecheckmessages.h:580
static Object plane(const Data::Plane &plane)
Definition boarddesignrulecheckmessages.h:539
const Data::Polygon * mPolygon
Definition boarddesignrulecheckmessages.h:581
static Object polygon(const Data::Polygon &polygon, const Data::Device *device)
Definition boarddesignrulecheckmessages.h:545
static Object footprintPad(const Data::Pad &pad, const Data::Device &device)
Definition boarddesignrulecheckmessages.h:509
const Data::StrokeText * mStrokeText
Definition boarddesignrulecheckmessages.h:583
static Object via(const Data::Via &via, const Data::Segment &segment)
Definition boarddesignrulecheckmessages.h:532
const Data::Circle * mCircle
Definition boarddesignrulecheckmessages.h:582
void serialize(SExpression &node) const
Definition boarddesignrulecheckmessages.cpp:693
static Object strokeText(const Data::StrokeText &txt, const Data::Device *device)
Definition boarddesignrulecheckmessages.h:559
const Data::Trace * mTrace
Definition boarddesignrulecheckmessages.h:578
static Object circle(const Data::Circle &circle, const Data::Device *device)
Definition boarddesignrulecheckmessages.h:552
const Data::Via * mVia
Definition boarddesignrulecheckmessages.h:579
const Data::Pad * mPad
Definition boarddesignrulecheckmessages.h:577
static Object pad(const Data::Pad &pad, const Data::Segment &segment)
Definition boarddesignrulecheckmessages.h:517
const Data::Device * mDevice
Definition boarddesignrulecheckmessages.h:587
static Object trace(const Data::Trace &trace, const Data::Segment &segment)
Definition boarddesignrulecheckmessages.h:524
const Data::Segment * mSegment
Definition boarddesignrulecheckmessages.h:586
Definition boarddesignrulecheckmessages.h:142
QString getName() const
Definition boarddesignrulecheckmessages.cpp:131
static Anchor junction(const Data::Segment &segment, const Data::Junction &junction)
Definition boarddesignrulecheckmessages.h:159
static Anchor footprintPad(const Data::Device &device, const Data::Pad &pad)
Definition boarddesignrulecheckmessages.h:146
void serialize(SExpression &node) const
Definition boarddesignrulecheckmessages.cpp:151
static Anchor pad(const Data::Segment &segment, const Data::Pad &pad)
Definition boarddesignrulecheckmessages.h:153
const Data::Via * mVia
Definition boarddesignrulecheckmessages.h:180
const Data::Junction * mJunction
Definition boarddesignrulecheckmessages.h:179
const Data::Pad * mPad
Definition boarddesignrulecheckmessages.h:176
static Anchor via(const Data::Segment &segment, const Data::Via &via)
Definition boarddesignrulecheckmessages.h:166
const Data::Device * mDevice
Definition boarddesignrulecheckmessages.h:175
const Data::Segment * mSegment
Definition boarddesignrulecheckmessages.h:178