20#ifndef LIBREPCB_CORE_BOARDDESIGNRULECHECK_H
21#define LIBREPCB_CORE_BOARDDESIGNRULECHECK_H
26#include "../../../utils/transform.h"
30#include <polyclipping/clipper.hpp>
59 QObject* parent =
nullptr)
noexcept;
106 std::function<
bool(
const Layer&)> layerFilter);
107 template <
typename THole>
113 const QSet<const Layer*>& layers)
const noexcept;
115 const Layer& layer,
const QSet<const NetSignal*>& netsignals);
120 template <
typename THole>
125 void emitStatus(const QString& status) noexcept;
143 QHash<QPair<const Layer*, QSet<const NetSignal*>>, ClipperLib::Paths>
The BI_Device class.
Definition: bi_device.h:57
The BI_Via class.
Definition: bi_via.h:44
The BoardDesignRuleCheck class checks a librepcb::Board for design rule violations.
Definition: boarddesignrulecheck.h:52
void checkBoardOutline(int progressEnd)
Definition: boarddesignrulecheck.cpp:1558
void checkForStaleObjects(int progressEnd)
Definition: boarddesignrulecheck.cpp:1725
void checkSilkscreenStopmaskClearances(int progressEnd)
Definition: boarddesignrulecheck.cpp:794
const RuleCheckMessageList & getMessages() const noexcept
Definition: boarddesignrulecheck.h:66
RuleCheckMessageList mMessages
Definition: boarddesignrulecheck.h:142
void checkDrillDrillClearances(int progressEnd)
Definition: boarddesignrulecheck.cpp:632
ClipperLib::Paths getDeviceOutlinePaths(const BI_Device &device, const Layer &layer)
Definition: boarddesignrulecheck.cpp:1953
void checkZones(int progressEnd)
Definition: boarddesignrulecheck.cpp:1128
void emitProgress(int percent) noexcept
Definition: boarddesignrulecheck.cpp:2049
QVector< Path > getHoleLocation(const THole &hole, const Transform &transform=Transform()) const noexcept
Definition: boarddesignrulecheck.cpp:2044
void checkCopperCopperClearances(int progressEnd)
Definition: boarddesignrulecheck.cpp:144
void checkMinimumPthDrillDiameter(int progressEnd)
Definition: boarddesignrulecheck.cpp:1024
QStringList mProgressStatus
Definition: boarddesignrulecheck.h:141
QVector< Path > getViaLocation(const BI_Via &via) const noexcept
Definition: boarddesignrulecheck.cpp:2038
bool requiresHoleSlotWarning(const THole &hole, BoardDesignRuleCheckSettings::AllowedSlots allowed)
Definition: boarddesignrulecheck.cpp:1878
QVector< Path > getDeviceLocation(const BI_Device &device) const
Definition: boarddesignrulecheck.cpp:1983
void checkAllowedNpthSlots(int progressEnd)
Definition: boarddesignrulecheck.cpp:1412
void checkForMissingConnections(int progressEnd)
Definition: boarddesignrulecheck.cpp:1707
void checkDeviceClearances(int progressEnd)
Definition: boarddesignrulecheck.cpp:1502
void checkInvalidPadConnections(int progressEnd)
Definition: boarddesignrulecheck.cpp:1468
void checkAllowedPthSlots(int progressEnd)
Definition: boarddesignrulecheck.cpp:1443
QVector< Path > getBoardOutlines(const QSet< const Layer * > &layers) const noexcept
Definition: boarddesignrulecheck.cpp:1915
void checkMinimumSilkscreenTextHeight(int progressEnd)
Definition: boarddesignrulecheck.cpp:1101
void emitStatus(const QString &status) noexcept
Definition: boarddesignrulecheck.cpp:2054
void checkUsedLayers(int progressEnd)
Definition: boarddesignrulecheck.cpp:1633
void progressStatus(const QString &msg)
static PositiveLength maxArcTolerance() noexcept
Definition: boarddesignrulecheck.h:132
bool mIgnorePlanes
Definition: boarddesignrulecheck.h:139
void emitMessage(const std::shared_ptr< const RuleCheckMessage > &msg) noexcept
Definition: boarddesignrulecheck.cpp:2060
Board & mBoard
Definition: boarddesignrulecheck.h:137
void checkCopperHoleClearances(int progressEnd)
Definition: boarddesignrulecheck.cpp:577
void progressPercent(int percent)
void checkMinimumSilkscreenWidth(int progressEnd)
Definition: boarddesignrulecheck.cpp:1086
void checkMinimumNpthDrillDiameter(int progressEnd)
Definition: boarddesignrulecheck.cpp:962
QString formatLength(const Length &length) const noexcept
Definition: boarddesignrulecheck.cpp:2066
void progressMessage(const QString &msg)
void checkMinimumNpthSlotWidth(int progressEnd)
Definition: boarddesignrulecheck.cpp:993
const QStringList & getProgressStatus() const noexcept
Definition: boarddesignrulecheck.h:63
void checkDrillBoardClearances(int progressEnd)
Definition: boarddesignrulecheck.cpp:720
~BoardDesignRuleCheck() noexcept
Definition: boarddesignrulecheck.cpp:78
const BoardDesignRuleCheckSettings & mSettings
Definition: boarddesignrulecheck.h:138
void checkMinimumWidth(const UnsignedLength &minWidth, std::function< bool(const Layer &)> layerFilter)
Definition: boarddesignrulecheck.cpp:1748
void checkForUnplacedComponents(int progressEnd)
Definition: boarddesignrulecheck.cpp:1692
int mProgressPercent
Definition: boarddesignrulecheck.h:140
QHash< QPair< const Layer *, QSet< const NetSignal * > >, ClipperLib::Paths > mCachedPaths
Definition: boarddesignrulecheck.h:144
void checkMinimumPthSlotWidth(int progressEnd)
Definition: boarddesignrulecheck.cpp:1062
void execute(bool quick)
Definition: boarddesignrulecheck.cpp:85
void rebuildPlanes(int progressEnd)
Definition: boarddesignrulecheck.cpp:137
void checkMinimumCopperWidth(int progressEnd)
Definition: boarddesignrulecheck.cpp:882
BoardDesignRuleCheck(Board &board, const BoardDesignRuleCheckSettings &settings, QObject *parent=nullptr) noexcept
Definition: boarddesignrulecheck.cpp:66
ClipperLib::Paths getBoardClearanceArea(const UnsignedLength &clearance) const
Definition: boarddesignrulecheck.cpp:1896
void checkVias(int progressEnd)
Definition: boarddesignrulecheck.cpp:1391
void checkCopperBoardClearances(int progressEnd)
Definition: boarddesignrulecheck.cpp:429
void checkMinimumPthAnnularRing(int progressEnd)
Definition: boarddesignrulecheck.cpp:895
const ClipperLib::Paths & getCopperPaths(const Layer &layer, const QSet< const NetSignal * > &netsignals)
Definition: boarddesignrulecheck.cpp:1942
The BoardDesignRuleCheckSettings class.
Definition: boarddesignrulechecksettings.h:44
AllowedSlots
Definition: boarddesignrulechecksettings.h:47
The Board class represents a PCB of a project and is always part of a circuit.
Definition: board.h:73
The Layer class provides all supported geometry layers.
Definition: layer.h:40
The Length class is used to represent a length (for example 12.75 millimeters)
Definition: length.h:83
The RuleCheckMessage class.
Definition: rulecheckmessage.h:45
Definition: occmodel.cpp:77
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition: length.h:812
type_safe::constrained_type< Length, UnsignedLengthConstraint, UnsignedLengthVerifier > UnsignedLength
Definition: length.h:696
QVector< std::shared_ptr< const RuleCheckMessage > > RuleCheckMessageList
Definition: rulecheckmessage.h:104