LibrePCB Developers Documentation
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"
27 #include "../../../types/length.h"
28 
29 #include <QtCore>
30 
31 /*******************************************************************************
32  * Namespace / Forward Declarations
33  ******************************************************************************/
34 namespace librepcb {
35 
36 class BI_Base;
37 class BI_Device;
38 class BI_FootprintPad;
39 class BI_Hole;
40 class BI_NetLine;
41 class BI_NetLineAnchor;
42 class BI_NetPoint;
43 class BI_NetSegment;
44 class BI_Plane;
45 class BI_Polygon;
46 class BI_StrokeText;
47 class BI_Via;
48 class BI_Zone;
49 class Circle;
50 class ComponentInstance;
51 class Hole;
52 class Layer;
53 class NetSignal;
54 class PadHole;
55 class Polygon;
56 class StrokeText;
57 class Uuid;
58 class Zone;
59 
60 /*******************************************************************************
61  * Class DrcMsgMissingDevice
62  ******************************************************************************/
63 
67 class DrcMsgMissingDevice final : public RuleCheckMessage {
68  Q_DECLARE_TR_FUNCTIONS(DrcMsgMissingDevice)
69 
70 public:
71  // Constructors / Destructor
72  DrcMsgMissingDevice() = delete;
73  explicit DrcMsgMissingDevice(const ComponentInstance& component) noexcept;
75  : RuleCheckMessage(other) {}
76  virtual ~DrcMsgMissingDevice() noexcept {}
77 };
78 
79 /*******************************************************************************
80  * Class DrcMsgMissingConnection
81  ******************************************************************************/
82 
87  Q_DECLARE_TR_FUNCTIONS(DrcMsgMissingConnection)
88 
89 public:
90  // Constructors / Destructor
91  DrcMsgMissingConnection() = delete;
93  const BI_NetLineAnchor& p2,
94  const NetSignal& netSignal,
95  const QVector<Path>& locations);
97  : RuleCheckMessage(other) {}
98  virtual ~DrcMsgMissingConnection() noexcept {}
99 
100 private:
101  static QString getAnchorName(const BI_NetLineAnchor& anchor);
102  static void serializeAnchor(SExpression& node,
103  const BI_NetLineAnchor& anchor);
104 };
105 
106 /*******************************************************************************
107  * Class DrcMsgMissingBoardOutline
108  ******************************************************************************/
109 
114  Q_DECLARE_TR_FUNCTIONS(DrcMsgMissingBoardOutline)
115 
116 public:
117  // Constructors / Destructor
118  DrcMsgMissingBoardOutline() noexcept;
120  : RuleCheckMessage(other) {}
121  virtual ~DrcMsgMissingBoardOutline() noexcept {}
122 };
123 
124 /*******************************************************************************
125  * Class DrcMsgMultipleBoardOutlines
126  ******************************************************************************/
127 
132  Q_DECLARE_TR_FUNCTIONS(DrcMsgMultipleBoardOutlines)
133 
134 public:
135  // Constructors / Destructor
136  explicit DrcMsgMultipleBoardOutlines(const QVector<Path>& locations) noexcept;
138  : RuleCheckMessage(other) {}
139  virtual ~DrcMsgMultipleBoardOutlines() noexcept {}
140 };
141 
142 /*******************************************************************************
143  * Class DrcMsgOpenBoardOutlinePolygon
144  ******************************************************************************/
145 
150  Q_DECLARE_TR_FUNCTIONS(DrcMsgOpenBoardOutlinePolygon)
151 
152 public:
153  // Constructors / Destructor
155  DrcMsgOpenBoardOutlinePolygon(const BI_Device* device, const Uuid& polygon,
156  const QVector<Path>& locations) noexcept;
158  const DrcMsgOpenBoardOutlinePolygon& other) noexcept
159  : RuleCheckMessage(other) {}
160  virtual ~DrcMsgOpenBoardOutlinePolygon() noexcept {}
161 };
162 
163 /*******************************************************************************
164  * Class DrcMsgMinimumBoardOutlineInnerRadiusViolation
165  ******************************************************************************/
166 
171  : public RuleCheckMessage {
172  Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumBoardOutlineInnerRadiusViolation)
173 
174 public:
175  // Constructors / Destructor
178  const UnsignedLength& minRadius, const QVector<Path>& locations) noexcept;
180  const DrcMsgMinimumBoardOutlineInnerRadiusViolation& other) noexcept
181  : RuleCheckMessage(other) {}
183 };
184 
185 /*******************************************************************************
186  * Class DrcMsgEmptyNetSegment
187  ******************************************************************************/
188 
193  Q_DECLARE_TR_FUNCTIONS(DrcMsgEmptyNetSegment)
194 
195 public:
196  // Constructors / Destructor
197  DrcMsgEmptyNetSegment() = delete;
198  explicit DrcMsgEmptyNetSegment(const BI_NetSegment& netSegment) noexcept;
200  : RuleCheckMessage(other) {}
201  virtual ~DrcMsgEmptyNetSegment() noexcept {}
202 };
203 
204 /*******************************************************************************
205  * Class DrcMsgUnconnectedJunction
206  ******************************************************************************/
207 
212  Q_DECLARE_TR_FUNCTIONS(DrcMsgUnconnectedJunction)
213 
214 public:
215  // Constructors / Destructor
216  DrcMsgUnconnectedJunction() = delete;
217  DrcMsgUnconnectedJunction(const BI_NetPoint& netPoint,
218  const QVector<Path>& locations) noexcept;
220  : RuleCheckMessage(other) {}
221  virtual ~DrcMsgUnconnectedJunction() noexcept {}
222 };
223 
224 /*******************************************************************************
225  * Class DrcMsgMinimumTextHeightViolation
226  ******************************************************************************/
227 
232  Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumTextHeightViolation)
233 
234 public:
235  // Constructors / Destructor
238  const UnsignedLength& minHeight,
239  const QVector<Path>& locations) noexcept;
241  const DrcMsgMinimumTextHeightViolation& other) noexcept
242  : RuleCheckMessage(other) {}
243  virtual ~DrcMsgMinimumTextHeightViolation() noexcept {}
244 };
245 
246 /*******************************************************************************
247  * Class DrcMsgMinimumWidthViolation
248  ******************************************************************************/
249 
254  Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumWidthViolation)
255 
256 public:
257  // Constructors / Destructor
258  DrcMsgMinimumWidthViolation() = delete;
260  const UnsignedLength& minWidth,
261  const QVector<Path>& locations) noexcept;
263  const UnsignedLength& minWidth,
264  const QVector<Path>& locations) noexcept;
266  const UnsignedLength& minWidth,
267  const QVector<Path>& locations) noexcept;
269  const UnsignedLength& minWidth,
270  const QVector<Path>& locations) noexcept;
271  DrcMsgMinimumWidthViolation(const BI_Device& device, const Polygon& polygon,
272  const UnsignedLength& minWidth,
273  const QVector<Path>& locations) noexcept;
274  DrcMsgMinimumWidthViolation(const BI_Device& device, const Circle& circle,
275  const UnsignedLength& minWidth,
276  const QVector<Path>& locations) noexcept;
278  : RuleCheckMessage(other) {}
279  virtual ~DrcMsgMinimumWidthViolation() noexcept {}
280 };
281 
282 /*******************************************************************************
283  * Class DrcMsgCopperCopperClearanceViolation
284  ******************************************************************************/
285 
290  Q_DECLARE_TR_FUNCTIONS(DrcMsgCopperCopperClearanceViolation)
291 
292 public:
293  // Constructors / Destructor
296  const NetSignal* net1, const BI_Base& item1, const Polygon* polygon1,
297  const Circle* circle1, const NetSignal* net2, const BI_Base& item2,
298  const Polygon* polygon2, const Circle* circle2,
299  const QVector<const Layer*>& layers, const Length& minClearance,
300  const QVector<Path>& locations);
302  const DrcMsgCopperCopperClearanceViolation& other) noexcept
303  : RuleCheckMessage(other) {}
305 
306 private:
307  static QString getLayerName(const QVector<const Layer*>& layers);
308  static QString getObjectName(const NetSignal* net, const BI_Base& item,
309  const Polygon* polygon, const Circle* circle);
310  static void serializeObject(SExpression& node, const BI_Base& item,
311  const Polygon* polygon, const Circle* circle);
312 };
313 
314 /*******************************************************************************
315  * Class DrcMsgCopperBoardClearanceViolation
316  ******************************************************************************/
317 
322  Q_DECLARE_TR_FUNCTIONS(DrcMsgCopperBoardClearanceViolation)
323 
324 public:
325  // Constructors / Destructor
328  const UnsignedLength& minClearance,
329  const QVector<Path>& locations) noexcept;
331  const UnsignedLength& minClearance,
332  const QVector<Path>& locations) noexcept;
334  const UnsignedLength& minClearance,
335  const QVector<Path>& locations) noexcept;
337  const UnsignedLength& minClearance,
338  const QVector<Path>& locations) noexcept;
340  const UnsignedLength& minClearance,
341  const QVector<Path>& locations) noexcept;
343  const Polygon& polygon,
344  const UnsignedLength& minClearance,
345  const QVector<Path>& locations) noexcept;
347  const Circle& circle,
348  const UnsignedLength& minClearance,
349  const QVector<Path>& locations) noexcept;
351  const UnsignedLength& minClearance,
352  const QVector<Path>& locations) noexcept;
354  const DrcMsgCopperBoardClearanceViolation& other) noexcept
355  : RuleCheckMessage(other) {}
357 
358 private:
359  static QString getPolygonMessage(const UnsignedLength& minClearance) noexcept;
360  static QString getPolygonDescription() noexcept;
361 };
362 
363 /*******************************************************************************
364  * Class DrcMsgCopperHoleClearanceViolation
365  ******************************************************************************/
366 
371  Q_DECLARE_TR_FUNCTIONS(DrcMsgCopperHoleClearanceViolation)
372 
373 public:
374  // Constructors / Destructor
377  const UnsignedLength& minClearance,
378  const QVector<Path>& locations) noexcept;
379  DrcMsgCopperHoleClearanceViolation(const BI_Device& device, const Hole& hole,
380  const UnsignedLength& minClearance,
381  const QVector<Path>& locations) noexcept;
383  const DrcMsgCopperHoleClearanceViolation& other) noexcept
384  : RuleCheckMessage(other) {}
386 
387 private:
388  static QString getMessage(const UnsignedLength& minClearance) noexcept;
389  static QString getDescription() noexcept;
390 };
391 
392 /*******************************************************************************
393  * Class DrcMsgCopperInKeepoutZone
394  ******************************************************************************/
395 
400  Q_DECLARE_TR_FUNCTIONS(DrcMsgCopperInKeepoutZone)
401 
402 public:
403  // Constructors / Destructor
404  DrcMsgCopperInKeepoutZone() = delete;
405  DrcMsgCopperInKeepoutZone(const BI_Zone* boardZone,
406  const BI_Device* zoneDevice, const Zone* deviceZone,
407  const BI_FootprintPad& pad,
408  const QVector<Path>& locations) noexcept;
409  DrcMsgCopperInKeepoutZone(const BI_Zone* boardZone,
410  const BI_Device* zoneDevice, const Zone* deviceZone,
411  const BI_Via& via,
412  const QVector<Path>& locations) noexcept;
413  DrcMsgCopperInKeepoutZone(const BI_Zone* boardZone,
414  const BI_Device* zoneDevice, const Zone* deviceZone,
415  const BI_NetLine& netLine,
416  const QVector<Path>& locations) noexcept;
417  DrcMsgCopperInKeepoutZone(const BI_Zone* boardZone,
418  const BI_Device* zoneDevice, const Zone* deviceZone,
419  const BI_Polygon& polygon,
420  const QVector<Path>& locations) noexcept;
421  DrcMsgCopperInKeepoutZone(const BI_Zone* boardZone,
422  const BI_Device* zoneDevice, const Zone* deviceZone,
423  const BI_Device& device, const Polygon& polygon,
424  const QVector<Path>& locations) noexcept;
425  DrcMsgCopperInKeepoutZone(const BI_Zone* boardZone,
426  const BI_Device* zoneDevice, const Zone* deviceZone,
427  const BI_Device& device, const Circle& circle,
428  const QVector<Path>& locations) noexcept;
430  : RuleCheckMessage(other) {}
431  virtual ~DrcMsgCopperInKeepoutZone() noexcept {}
432 
433 private:
434  void addZoneApprovalNodes(const BI_Zone* boardZone,
435  const BI_Device* zoneDevice,
436  const Zone* deviceZone) noexcept;
437  static QString getDescription() noexcept;
438 };
439 
440 /*******************************************************************************
441  * Class DrcMsgDrillDrillClearanceViolation
442  ******************************************************************************/
443 
448  Q_DECLARE_TR_FUNCTIONS(DrcMsgDrillDrillClearanceViolation)
449 
450 public:
451  // Constructors / Destructor
453  DrcMsgDrillDrillClearanceViolation(const BI_Base& item1, const Uuid& hole1,
454  const BI_Base& item2, const Uuid& hole2,
455  const UnsignedLength& minClearance,
456  const QVector<Path>& locations);
458  const DrcMsgDrillDrillClearanceViolation& other) noexcept
459  : RuleCheckMessage(other) {}
461 
462 private: // Methods
463  static void serializeObject(SExpression& node, const BI_Base& item,
464  const Uuid& hole);
465 };
466 
467 /*******************************************************************************
468  * Class DrcMsgDrillBoardClearanceViolation
469  ******************************************************************************/
470 
475  Q_DECLARE_TR_FUNCTIONS(DrcMsgDrillBoardClearanceViolation)
476 
477 public:
478  // Constructors / Destructor
481  const UnsignedLength& minClearance,
482  const QVector<Path>& locations) noexcept;
484  const PadHole& hole,
485  const UnsignedLength& minClearance,
486  const QVector<Path>& locations) noexcept;
488  const UnsignedLength& minClearance,
489  const QVector<Path>& locations) noexcept;
490  DrcMsgDrillBoardClearanceViolation(const BI_Device& device, const Hole& hole,
491  const UnsignedLength& minClearance,
492  const QVector<Path>& locations) noexcept;
494  const DrcMsgDrillBoardClearanceViolation& other) noexcept
495  : RuleCheckMessage(other) {}
497 
498 private: // Methods
499  static QString getMessage(const UnsignedLength& minClearance) noexcept;
500  static QString getDescription() noexcept;
501 };
502 
503 /*******************************************************************************
504  * Class DrcMsgDeviceInCourtyard
505  ******************************************************************************/
506 
511  Q_DECLARE_TR_FUNCTIONS(DrcMsgDeviceInCourtyard)
512 
513 public:
514  // Constructors / Destructor
515  DrcMsgDeviceInCourtyard() = delete;
516  DrcMsgDeviceInCourtyard(const BI_Device& device1, const BI_Device& device2,
517  const QVector<Path>& locations) noexcept;
519  : RuleCheckMessage(other) {}
520  virtual ~DrcMsgDeviceInCourtyard() noexcept {}
521 };
522 
523 /*******************************************************************************
524  * Class DrcMsgOverlappingDevices
525  ******************************************************************************/
526 
531  Q_DECLARE_TR_FUNCTIONS(DrcMsgOverlappingDevices)
532 
533 public:
534  // Constructors / Destructor
535  DrcMsgOverlappingDevices() = delete;
536  DrcMsgOverlappingDevices(const BI_Device& device1, const BI_Device& device2,
537  const QVector<Path>& locations) noexcept;
539  : RuleCheckMessage(other) {}
540  virtual ~DrcMsgOverlappingDevices() noexcept {}
541 };
542 
543 /*******************************************************************************
544  * Class DrcMsgDeviceInKeepoutZone
545  ******************************************************************************/
546 
551  Q_DECLARE_TR_FUNCTIONS(DrcMsgDeviceInKeepoutZone)
552 
553 public:
554  // Constructors / Destructor
555  DrcMsgDeviceInKeepoutZone() = delete;
556  DrcMsgDeviceInKeepoutZone(const BI_Zone* boardZone,
557  const BI_Device* zoneDevice, const Zone* deviceZone,
558  const BI_Device& device,
559  const QVector<Path>& locations) noexcept;
561  : RuleCheckMessage(other) {}
562  virtual ~DrcMsgDeviceInKeepoutZone() noexcept {}
563 
564 private:
565  void addZoneApprovalNodes(const BI_Zone* boardZone,
566  const BI_Device* zoneDevice,
567  const Zone* deviceZone) noexcept;
568  static QString getDescription() noexcept;
569 };
570 
571 /*******************************************************************************
572  * Class DrcMsgExposureInKeepoutZone
573  ******************************************************************************/
574 
579  Q_DECLARE_TR_FUNCTIONS(DrcMsgExposureInKeepoutZone)
580 
581 public:
582  // Constructors / Destructor
583  DrcMsgExposureInKeepoutZone() = delete;
584  DrcMsgExposureInKeepoutZone(const BI_Zone* boardZone,
585  const BI_Device* zoneDevice,
586  const Zone* deviceZone,
587  const BI_FootprintPad& pad,
588  const QVector<Path>& locations) noexcept;
589  DrcMsgExposureInKeepoutZone(const BI_Zone* boardZone,
590  const BI_Device* zoneDevice,
591  const Zone* deviceZone, const BI_Via& via,
592  const QVector<Path>& locations) noexcept;
593  DrcMsgExposureInKeepoutZone(const BI_Zone* boardZone,
594  const BI_Device* zoneDevice,
595  const Zone* deviceZone, const BI_Polygon& polygon,
596  const QVector<Path>& locations) noexcept;
597  DrcMsgExposureInKeepoutZone(const BI_Zone* boardZone,
598  const BI_Device* zoneDevice,
599  const Zone* deviceZone, const BI_Device& device,
600  const Polygon& polygon,
601  const QVector<Path>& locations) noexcept;
602  DrcMsgExposureInKeepoutZone(const BI_Zone* boardZone,
603  const BI_Device* zoneDevice,
604  const Zone* deviceZone, const BI_Device& device,
605  const Circle& circle,
606  const QVector<Path>& locations) noexcept;
608  : RuleCheckMessage(other) {}
609  virtual ~DrcMsgExposureInKeepoutZone() noexcept {}
610 
611 private:
612  void addZoneApprovalNodes(const BI_Zone* boardZone,
613  const BI_Device* zoneDevice,
614  const Zone* deviceZone) noexcept;
615  static QString getDescription() noexcept;
616 };
617 
618 /*******************************************************************************
619  * Class DrcMsgMinimumAnnularRingViolation
620  ******************************************************************************/
621 
626  Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumAnnularRingViolation)
627 
628 public:
629  // Constructors / Destructor
632  const UnsignedLength& minAnnularWidth,
633  const QVector<Path>& locations) noexcept;
635  const UnsignedLength& minAnnularWidth,
636  const QVector<Path>& locations) noexcept;
638  const DrcMsgMinimumAnnularRingViolation& other) noexcept
639  : RuleCheckMessage(other) {}
641 };
642 
643 /*******************************************************************************
644  * Class DrcMsgMinimumDrillDiameterViolation
645  ******************************************************************************/
646 
651  Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumDrillDiameterViolation)
652 
653 public:
654  // Constructors / Destructor
657  const UnsignedLength& minDiameter,
658  const QVector<Path>& locations) noexcept;
659  DrcMsgMinimumDrillDiameterViolation(const BI_Device& device, const Hole& hole,
660  const UnsignedLength& minDiameter,
661  const QVector<Path>& locations) noexcept;
663  const UnsignedLength& minDiameter,
664  const QVector<Path>& locations) noexcept;
666  const PadHole& padHole,
667  const UnsignedLength& minDiameter,
668  const QVector<Path>& locations) noexcept;
670  const DrcMsgMinimumDrillDiameterViolation& other) noexcept
671  : RuleCheckMessage(other) {}
673 
674 private:
675  static QString determineMessage(const PositiveLength& actualDiameter,
676  const UnsignedLength& minDiameter) noexcept;
677  static QString determineDescription(bool isVia, bool isPad) noexcept;
678 };
679 
680 /*******************************************************************************
681  * Class DrcMsgMinimumSlotWidthViolation
682  ******************************************************************************/
683 
688  Q_DECLARE_TR_FUNCTIONS(DrcMsgMinimumSlotWidthViolation)
689 
690 public:
691  // Constructors / Destructor
694  const UnsignedLength& minWidth,
695  const QVector<Path>& locations) noexcept;
696  DrcMsgMinimumSlotWidthViolation(const BI_Device& device, const Hole& hole,
697  const UnsignedLength& minWidth,
698  const QVector<Path>& locations) noexcept;
700  const PadHole& padHole,
701  const UnsignedLength& minWidth,
702  const QVector<Path>& locations) noexcept;
704  const DrcMsgMinimumSlotWidthViolation& other) noexcept
705  : RuleCheckMessage(other) {}
706  virtual ~DrcMsgMinimumSlotWidthViolation() noexcept {}
707 
708 private:
709  static QString determineMessage(const PositiveLength& actualWidth,
710  const UnsignedLength& minWidth) noexcept;
711  static QString determineDescription(bool isPad) noexcept;
712 };
713 
714 /*******************************************************************************
715  * Class DrcMsgInvalidPadConnection
716  ******************************************************************************/
717 
722  Q_DECLARE_TR_FUNCTIONS(DrcMsgInvalidPadConnection)
723 
724 public:
725  // Constructors / Destructor
726  DrcMsgInvalidPadConnection() = delete;
727  DrcMsgInvalidPadConnection(const BI_FootprintPad& pad, const Layer& layer,
728  const QVector<Path>& locations) noexcept;
730  : RuleCheckMessage(other) {}
731  virtual ~DrcMsgInvalidPadConnection() noexcept {}
732 };
733 
734 /*******************************************************************************
735  * Class DrcMsgForbiddenSlot
736  ******************************************************************************/
737 
741 class DrcMsgForbiddenSlot final : public RuleCheckMessage {
742  Q_DECLARE_TR_FUNCTIONS(DrcMsgForbiddenSlot)
743 
744 public:
745  // Constructors / Destructor
746  DrcMsgForbiddenSlot() = delete;
747  DrcMsgForbiddenSlot(const BI_Hole& hole,
748  const QVector<Path>& locations) noexcept;
749  DrcMsgForbiddenSlot(const BI_Device& device, const Hole& hole,
750  const QVector<Path>& locations) noexcept;
751  DrcMsgForbiddenSlot(const BI_FootprintPad& pad, const PadHole& padHole,
752  const QVector<Path>& locations) noexcept;
754  : RuleCheckMessage(other) {}
755  virtual ~DrcMsgForbiddenSlot() noexcept {}
756 
757 private:
758  static QString determineMessage(const NonEmptyPath& path) noexcept;
759  static QString determineDescription(const NonEmptyPath& path) noexcept;
760 };
761 
762 /*******************************************************************************
763  * Class DrcMsgForbiddenVia
764  ******************************************************************************/
765 
769 class DrcMsgForbiddenVia final : public RuleCheckMessage {
770  Q_DECLARE_TR_FUNCTIONS(DrcMsgForbiddenVia)
771 
772 public:
773  // Constructors / Destructor
774  DrcMsgForbiddenVia() = delete;
775  DrcMsgForbiddenVia(const BI_Via& via,
776  const QVector<Path>& locations) noexcept;
777  DrcMsgForbiddenVia(const DrcMsgForbiddenVia& other) noexcept
778  : RuleCheckMessage(other) {}
779  virtual ~DrcMsgForbiddenVia() noexcept {}
780 
781 private:
782  static QString determineMessage(const BI_Via& via) noexcept;
783  static QString determineDescription(const BI_Via& via) noexcept;
784 };
785 
786 /*******************************************************************************
787  * Class DrcMsgSilkscreenClearanceViolation
788  ******************************************************************************/
789 
794  Q_DECLARE_TR_FUNCTIONS(DrcMsgSilkscreenClearanceViolation)
795 
796 public:
797  // Constructors / Destructor
800  const UnsignedLength& minClearance,
801  const QVector<Path>& locations) noexcept;
803  const DrcMsgSilkscreenClearanceViolation& other) noexcept
804  : RuleCheckMessage(other) {}
806 };
807 
808 /*******************************************************************************
809  * Class DrcMsgUselessZone
810  ******************************************************************************/
811 
815 class DrcMsgUselessZone final : public RuleCheckMessage {
816  Q_DECLARE_TR_FUNCTIONS(DrcMsgUselessZone)
817 
818 public:
819  // Constructors / Destructor
820  DrcMsgUselessZone() = delete;
821  DrcMsgUselessZone(const BI_Zone& zone,
822  const QVector<Path>& locations) noexcept;
823  DrcMsgUselessZone(const DrcMsgUselessZone& other) noexcept
824  : RuleCheckMessage(other) {}
825  virtual ~DrcMsgUselessZone() noexcept {}
826 };
827 
828 /*******************************************************************************
829  * Class DrcMsgUselessVia
830  ******************************************************************************/
831 
835 class DrcMsgUselessVia final : public RuleCheckMessage {
836  Q_DECLARE_TR_FUNCTIONS(DrcMsgUselessVia)
837 
838 public:
839  // Constructors / Destructor
840  DrcMsgUselessVia() = delete;
841  DrcMsgUselessVia(const BI_Via& via, const QVector<Path>& locations) noexcept;
842  DrcMsgUselessVia(const DrcMsgUselessVia& other) noexcept
843  : RuleCheckMessage(other) {}
844  virtual ~DrcMsgUselessVia() noexcept {}
845 };
846 
847 /*******************************************************************************
848  * Class DrcMsgDisabledLayer
849  ******************************************************************************/
850 
854 class DrcMsgDisabledLayer final : public RuleCheckMessage {
855  Q_DECLARE_TR_FUNCTIONS(DrcMsgDisabledLayer)
856 
857 public:
858  // Constructors / Destructor
859  DrcMsgDisabledLayer() = delete;
860  explicit DrcMsgDisabledLayer(const Layer& layer) noexcept;
862  : RuleCheckMessage(other) {}
863  virtual ~DrcMsgDisabledLayer() noexcept {}
864 };
865 
866 /*******************************************************************************
867  * Class DrcMsgUnusedLayer
868  ******************************************************************************/
869 
873 class DrcMsgUnusedLayer final : public RuleCheckMessage {
874  Q_DECLARE_TR_FUNCTIONS(DrcMsgUnusedLayer)
875 
876 public:
877  // Constructors / Destructor
878  DrcMsgUnusedLayer() = delete;
879  explicit DrcMsgUnusedLayer(const Layer& layer) noexcept;
880  DrcMsgUnusedLayer(const DrcMsgUnusedLayer& other) noexcept
881  : RuleCheckMessage(other) {}
882  virtual ~DrcMsgUnusedLayer() noexcept {}
883 };
884 
885 /*******************************************************************************
886  * End of File
887  ******************************************************************************/
888 
889 } // namespace librepcb
890 
891 #endif
virtual ~DrcMsgCopperHoleClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:385
virtual ~DrcMsgUnusedLayer() noexcept
Definition: boarddesignrulecheckmessages.h:882
The BI_NetLine class.
Definition: bi_netline.h:71
virtual ~DrcMsgCopperCopperClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:304
DrcMsgExposureInKeepoutZone(const DrcMsgExposureInKeepoutZone &other) noexcept
Definition: boarddesignrulecheckmessages.h:607
The DrcMsgUnconnectedJunction class.
Definition: boarddesignrulecheckmessages.h:211
The DrcMsgEmptyNetSegment class.
Definition: boarddesignrulecheckmessages.h:192
DrcMsgInvalidPadConnection(const DrcMsgInvalidPadConnection &other) noexcept
Definition: boarddesignrulecheckmessages.h:729
DrcMsgMinimumBoardOutlineInnerRadiusViolation(const DrcMsgMinimumBoardOutlineInnerRadiusViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:179
virtual ~DrcMsgDrillDrillClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:460
virtual ~DrcMsgSilkscreenClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:805
DrcMsgMinimumDrillDiameterViolation(const DrcMsgMinimumDrillDiameterViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:669
The DrcMsgCopperBoardClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:321
DrcMsgDeviceInCourtyard(const DrcMsgDeviceInCourtyard &other) noexcept
Definition: boarddesignrulecheckmessages.h:518
DrcMsgMinimumTextHeightViolation(const DrcMsgMinimumTextHeightViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:240
DrcMsgOpenBoardOutlinePolygon(const DrcMsgOpenBoardOutlinePolygon &other) noexcept
Definition: boarddesignrulecheckmessages.h:157
virtual ~DrcMsgForbiddenVia() noexcept
Definition: boarddesignrulecheckmessages.h:779
The DrcMsgDeviceInKeepoutZone class.
Definition: boarddesignrulecheckmessages.h:550
virtual ~DrcMsgDrillBoardClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:496
DrcMsgMinimumWidthViolation(const DrcMsgMinimumWidthViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:277
Definition: occmodel.cpp:77
The BI_Device class.
Definition: bi_device.h:57
virtual ~DrcMsgMissingDevice() noexcept
Definition: boarddesignrulecheckmessages.h:76
The BI_Hole class.
Definition: bi_hole.h:46
The Hole class.
Definition: hole.h:45
The DrcMsgInvalidPadConnection class.
Definition: boarddesignrulecheckmessages.h:721
The Layer class provides all supported geometry layers.
Definition: layer.h:40
DrcMsgMissingDevice(const DrcMsgMissingDevice &other) noexcept
Definition: boarddesignrulecheckmessages.h:74
virtual ~DrcMsgUselessVia() noexcept
Definition: boarddesignrulecheckmessages.h:844
DrcMsgMissingConnection(const DrcMsgMissingConnection &other) noexcept
Definition: boarddesignrulecheckmessages.h:96
The DrcMsgMinimumSlotWidthViolation class.
Definition: boarddesignrulecheckmessages.h:687
DrcMsgUnusedLayer(const DrcMsgUnusedLayer &other) noexcept
Definition: boarddesignrulecheckmessages.h:880
virtual ~DrcMsgMissingConnection() noexcept
Definition: boarddesignrulecheckmessages.h:98
type_safe::constrained_type< Path, NonEmptyPathConstraint, NonEmptyPathVerifier > NonEmptyPath
Definition: path.h:221
virtual ~DrcMsgOpenBoardOutlinePolygon() noexcept
Definition: boarddesignrulecheckmessages.h:160
The DrcMsgOpenBoardOutlinePolygon class.
Definition: boarddesignrulecheckmessages.h:149
DrcMsgMissingBoardOutline(const DrcMsgMissingBoardOutline &other) noexcept
Definition: boarddesignrulecheckmessages.h:119
virtual ~DrcMsgInvalidPadConnection() noexcept
Definition: boarddesignrulecheckmessages.h:731
DrcMsgUselessZone(const DrcMsgUselessZone &other) noexcept
Definition: boarddesignrulecheckmessages.h:823
virtual ~DrcMsgOverlappingDevices() noexcept
Definition: boarddesignrulecheckmessages.h:540
The DrcMsgMinimumBoardOutlineInnerRadiusViolation class.
Definition: boarddesignrulecheckmessages.h:170
The DrcMsgUnusedLayer class.
Definition: boarddesignrulecheckmessages.h:873
The PadHole class.
Definition: padhole.h:44
The DrcMsgMissingDevice class.
Definition: boarddesignrulecheckmessages.h:67
Definition: bi_netline.h:46
virtual ~DrcMsgEmptyNetSegment() noexcept
Definition: boarddesignrulecheckmessages.h:201
DrcMsgCopperBoardClearanceViolation(const DrcMsgCopperBoardClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:353
virtual ~DrcMsgDeviceInCourtyard() noexcept
Definition: boarddesignrulecheckmessages.h:520
DrcMsgEmptyNetSegment(const DrcMsgEmptyNetSegment &other) noexcept
Definition: boarddesignrulecheckmessages.h:199
The DrcMsgDisabledLayer class.
Definition: boarddesignrulecheckmessages.h:854
The DrcMsgMinimumAnnularRingViolation class.
Definition: boarddesignrulecheckmessages.h:625
The DrcMsgCopperInKeepoutZone class.
Definition: boarddesignrulecheckmessages.h:399
virtual ~DrcMsgCopperInKeepoutZone() noexcept
Definition: boarddesignrulecheckmessages.h:431
virtual ~DrcMsgExposureInKeepoutZone() noexcept
Definition: boarddesignrulecheckmessages.h:609
DrcMsgDrillBoardClearanceViolation(const DrcMsgDrillBoardClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:493
virtual ~DrcMsgMinimumWidthViolation() noexcept
Definition: boarddesignrulecheckmessages.h:279
virtual ~DrcMsgForbiddenSlot() noexcept
Definition: boarddesignrulecheckmessages.h:755
DrcMsgForbiddenVia(const DrcMsgForbiddenVia &other) noexcept
Definition: boarddesignrulecheckmessages.h:777
The DrcMsgUselessVia class.
Definition: boarddesignrulecheckmessages.h:835
The Board Item Base (BI_Base) class.
Definition: bi_base.h:45
DrcMsgOverlappingDevices(const DrcMsgOverlappingDevices &other) noexcept
Definition: boarddesignrulecheckmessages.h:538
const QString & getDescription() const noexcept
Definition: rulecheckmessage.h:64
The DrcMsgMinimumWidthViolation class.
Definition: boarddesignrulecheckmessages.h:253
The DrcMsgMinimumDrillDiameterViolation class.
Definition: boarddesignrulecheckmessages.h:650
The BI_NetSegment class.
Definition: bi_netsegment.h:52
The DrcMsgExposureInKeepoutZone class.
Definition: boarddesignrulecheckmessages.h:578
virtual ~DrcMsgUnconnectedJunction() noexcept
Definition: boarddesignrulecheckmessages.h:221
DrcMsgCopperInKeepoutZone(const DrcMsgCopperInKeepoutZone &other) noexcept
Definition: boarddesignrulecheckmessages.h:429
The BI_StrokeText class.
Definition: bi_stroketext.h:49
virtual ~DrcMsgMinimumDrillDiameterViolation() noexcept
Definition: boarddesignrulecheckmessages.h:672
The Circle class.
Definition: circle.h:46
The BI_Plane class.
Definition: bi_plane.h:52
The BI_NetPoint class.
Definition: bi_netpoint.h:46
DrcMsgCopperHoleClearanceViolation(const DrcMsgCopperHoleClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:382
DrcMsgMultipleBoardOutlines(const DrcMsgMultipleBoardOutlines &other) noexcept
Definition: boarddesignrulecheckmessages.h:137
virtual ~DrcMsgMissingBoardOutline() noexcept
Definition: boarddesignrulecheckmessages.h:121
The DrcMsgMinimumTextHeightViolation class.
Definition: boarddesignrulecheckmessages.h:231
const QString & getMessage() const noexcept
Definition: rulecheckmessage.h:63
The DrcMsgCopperCopperClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:289
The NetSignal class.
Definition: netsignal.h:50
The DrcMsgOverlappingDevices class.
Definition: boarddesignrulecheckmessages.h:530
virtual ~DrcMsgCopperBoardClearanceViolation() noexcept
Definition: boarddesignrulecheckmessages.h:356
The DrcMsgMissingConnection class.
Definition: boarddesignrulecheckmessages.h:86
The Zone class.
Definition: zone.h:43
virtual ~DrcMsgMultipleBoardOutlines() noexcept
Definition: boarddesignrulecheckmessages.h:139
The ComponentInstance class.
Definition: componentinstance.h:54
DrcMsgUselessVia(const DrcMsgUselessVia &other) noexcept
Definition: boarddesignrulecheckmessages.h:842
The DrcMsgDeviceInCourtyard class.
Definition: boarddesignrulecheckmessages.h:510
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition: length.h:812
The BI_Polygon class.
Definition: bi_polygon.h:46
The DrcMsgSilkscreenClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:793
The RuleCheckMessage class.
Definition: rulecheckmessage.h:45
The DrcMsgMultipleBoardOutlines class.
Definition: boarddesignrulecheckmessages.h:131
The DrcMsgMissingBoardOutline class.
Definition: boarddesignrulecheckmessages.h:113
The DrcMsgUselessZone class.
Definition: boarddesignrulecheckmessages.h:815
DrcMsgCopperCopperClearanceViolation(const DrcMsgCopperCopperClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:301
The DrcMsgCopperHoleClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:370
virtual ~DrcMsgMinimumTextHeightViolation() noexcept
Definition: boarddesignrulecheckmessages.h:243
DrcMsgSilkscreenClearanceViolation(const DrcMsgSilkscreenClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:802
The DrcMsgDrillDrillClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:447
The BI_Zone class.
Definition: bi_zone.h:46
virtual ~DrcMsgMinimumSlotWidthViolation() noexcept
Definition: boarddesignrulecheckmessages.h:706
virtual ~DrcMsgMinimumAnnularRingViolation() noexcept
Definition: boarddesignrulecheckmessages.h:640
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition: uuid.h:58
The Length class is used to represent a length (for example 12.75 millimeters)
Definition: length.h:83
DrcMsgDisabledLayer(const DrcMsgDisabledLayer &other) noexcept
Definition: boarddesignrulecheckmessages.h:861
The DrcMsgForbiddenVia class.
Definition: boarddesignrulecheckmessages.h:769
The Polygon class.
Definition: polygon.h:45
virtual ~DrcMsgDeviceInKeepoutZone() noexcept
Definition: boarddesignrulecheckmessages.h:562
The DrcMsgDrillBoardClearanceViolation class.
Definition: boarddesignrulecheckmessages.h:474
DrcMsgMinimumAnnularRingViolation(const DrcMsgMinimumAnnularRingViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:637
virtual ~DrcMsgMinimumBoardOutlineInnerRadiusViolation() noexcept
Definition: boarddesignrulecheckmessages.h:182
virtual ~DrcMsgDisabledLayer() noexcept
Definition: boarddesignrulecheckmessages.h:863
DrcMsgDeviceInKeepoutZone(const DrcMsgDeviceInKeepoutZone &other) noexcept
Definition: boarddesignrulecheckmessages.h:560
DrcMsgMinimumSlotWidthViolation(const DrcMsgMinimumSlotWidthViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:703
The DrcMsgForbiddenSlot class.
Definition: boarddesignrulecheckmessages.h:741
The SExpression class.
Definition: sexpression.h:69
DrcMsgDrillDrillClearanceViolation(const DrcMsgDrillDrillClearanceViolation &other) noexcept
Definition: boarddesignrulecheckmessages.h:457
DrcMsgUnconnectedJunction(const DrcMsgUnconnectedJunction &other) noexcept
Definition: boarddesignrulecheckmessages.h:219
The BI_Via class.
Definition: bi_via.h:44
virtual ~DrcMsgUselessZone() noexcept
Definition: boarddesignrulecheckmessages.h:825
The BI_FootprintPad class.
Definition: bi_footprintpad.h:48
type_safe::constrained_type< Length, UnsignedLengthConstraint, UnsignedLengthVerifier > UnsignedLength
Definition: length.h:696
DrcMsgForbiddenSlot(const DrcMsgForbiddenSlot &other) noexcept
Definition: boarddesignrulecheckmessages.h:753