20#ifndef LIBREPCB_CORE_BOARDDESIGNRULECHECK_H
21#define LIBREPCB_CORE_BOARDDESIGNRULECHECK_H
26#include "../../../rulecheck/rulecheckmessage.h"
27#include "../../../utils/transform.h"
30#include <polyclipping/clipper.hpp>
137 std::function<
bool(const
Layer&)> layerFilter);
144 const
Data& data, const QSet<const
Layer*>& layers) noexcept;
150 const
Data::
Via& via) noexcept;
156 void emitStatus(const QString& status) noexcept;
The BoardDesignRuleCheck class checks a librepcb::Board for design rule violations.
Definition boarddesignrulecheck.h:47
int mProgressCounter
Definition boarddesignrulecheck.h:168
QMutex mMutex
Definition boarddesignrulecheck.h:166
RuleCheckMessageList checkVias(const Data &data)
Definition boarddesignrulecheck.cpp:1640
RuleCheckMessageList checkCopperBoardClearances(const Data &data)
Definition boarddesignrulecheck.cpp:657
RuleCheckMessageList checkBoardOutline(const Data &data)
Definition boarddesignrulecheck.cpp:1815
RuleCheckMessageList checkMinimumSilkscreenWidth(const Data &data)
Definition boarddesignrulecheck.cpp:1347
void cancel() noexcept
Cancel the current asynchronous job.
Definition boarddesignrulecheck.cpp:109
void emitProgress(int percent) noexcept
Definition boarddesignrulecheck.cpp:2386
RuleCheckMessageList checkMinimumPthSlotWidth(const Data &data)
Definition boarddesignrulecheck.cpp:1318
bool mAbort
Definition boarddesignrulecheck.h:170
static bool isViaUseless(const Data &data, const Data::Segment &ns, const Data::Via &via) noexcept
Definition boarddesignrulecheck.cpp:2304
RuleCheckMessageList checkMinimumNpthDrillDiameter(const Data &data)
Definition boarddesignrulecheck.cpp:1205
static ClipperLib::Paths getBoardClearanceArea(const Data &data, const UnsignedLength &clearance)
Definition boarddesignrulecheck.cpp:2168
RuleCheckMessageList checkZones(const Data &data)
Definition boarddesignrulecheck.cpp:1395
Result waitForFinished() const noexcept
Wait until the asynchronous operation is finished.
Definition boarddesignrulecheck.cpp:97
void prepareCopperPaths(const Data &data, CalculatedJobData &calcData, const Layer &layer)
Definition boarddesignrulecheck.cpp:337
RuleCheckMessageList checkCopperCopperClearances(const Data &data)
Definition boarddesignrulecheck.cpp:347
static ClipperLib::Paths getDeviceOutlinePaths(const Data::Device &device, const Layer &layer)
Definition boarddesignrulecheck.cpp:2215
RuleCheckMessageList checkMinimumPthDrillDiameter(const Data &data)
Definition boarddesignrulecheck.cpp:1276
void emitStatus(const QString &status) noexcept
Definition boarddesignrulecheck.cpp:2391
RuleCheckMessageList checkMinimumSilkscreenTextHeight(const Data &data)
Definition boarddesignrulecheck.cpp:1365
void progressStatus(const QString &msg)
static PositiveLength maxArcTolerance() noexcept
Definition boarddesignrulecheck.h:161
RuleCheckMessageList checkMinimumPthAnnularRing(const Data &data, const CalculatedJobData &calcData)
Definition boarddesignrulecheck.cpp:1136
RuleCheckMessageList(BoardDesignRuleCheck::* Stage2Func)(const Data &, const CalculatedJobData &)
Definition boarddesignrulecheck.h:98
static QVector< Path > getViaLocation(const Data::Via &via) noexcept
Definition boarddesignrulecheck.cpp:2299
RuleCheckMessageList checkForMissingConnections(const Data &data)
Definition boarddesignrulecheck.cpp:1965
std::function< void(const Data &, CalculatedJobData &)> Stage1Func
Definition boarddesignrulecheck.h:97
RuleCheckMessageList checkDrillDrillClearances(const Data &data)
Definition boarddesignrulecheck.cpp:863
void progressPercent(int percent)
RuleCheckMessageList checkUsedLayers(const Data &data)
Definition boarddesignrulecheck.cpp:1892
RuleCheckMessageList(BoardDesignRuleCheck::* IndependentStageFunc)(const Data &)
Definition boarddesignrulecheck.h:100
int mProgressTotal
Definition boarddesignrulecheck.h:167
RuleCheckMessageList checkDrillBoardClearances(const Data &data)
Definition boarddesignrulecheck.cpp:950
static QVector< Path > getDeviceLocation(const Data::Device &device)
Definition boarddesignrulecheck.cpp:2245
RuleCheckMessageList checkForUnplacedComponents(const Data &data)
Definition boarddesignrulecheck.cpp:1951
void finished(Result result)
static QVector< Path > getBoardOutlines(const Data &data, const QSet< const Layer * > &layers) noexcept
Definition boarddesignrulecheck.cpp:2190
Result run(std::shared_ptr< const Data > data) noexcept
Definition boarddesignrulecheck.cpp:141
QFuture< Result > mFuture
Definition boarddesignrulecheck.h:169
RuleCheckMessageList checkMinimumCopperWidth(const Data &data)
Definition boarddesignrulecheck.cpp:1120
std::function< RuleCheckMessageList()> JobFunc
Definition boarddesignrulecheck.h:96
RuleCheckMessageList checkAllowedNpthSlots(const Data &data)
Definition boarddesignrulecheck.cpp:1672
static QVector< Path > getTraceLocation(const Data::Trace &trace) noexcept
Definition boarddesignrulecheck.cpp:2376
void start(Board &board, const BoardDesignRuleCheckSettings &settings, bool quick) noexcept
Definition boarddesignrulecheck.cpp:59
RuleCheckMessageList checkDeviceClearances(const Data &data)
Definition boarddesignrulecheck.cpp:1759
static void checkMinimumWidth(RuleCheckMessageList &messages, const Data &data, const UnsignedLength &minWidth, std::function< bool(const Layer &)> layerFilter)
Definition boarddesignrulecheck.cpp:2028
RuleCheckMessageList checkSilkscreenStopmaskClearances(const Data &data)
Definition boarddesignrulecheck.cpp:1027
RuleCheckMessageList checkForStaleObjects(const Data &data)
Definition boarddesignrulecheck.cpp:2005
RuleCheckMessageList checkAllowedPthSlots(const Data &data)
Definition boarddesignrulecheck.cpp:1705
static bool requiresHoleSlotWarning(const Data::Hole &hole, BoardDesignRuleCheckSettings::AllowedSlots allowed)
Definition boarddesignrulecheck.cpp:2149
RuleCheckMessageList checkCopperHoleClearances(const Data &data, const CalculatedJobData &calcData)
Definition boarddesignrulecheck.cpp:806
RuleCheckMessageList checkMinimumNpthSlotWidth(const Data &data)
Definition boarddesignrulecheck.cpp:1241
RuleCheckMessageList checkInvalidPadConnections(const Data &data)
Definition boarddesignrulecheck.cpp:1732
Result tryRunJob(JobFunc function, int weight) noexcept
Definition boarddesignrulecheck.cpp:119
static QVector< Path > getHoleLocation(const Data::Hole &hole, const Transform &transform=Transform()) noexcept
Definition boarddesignrulecheck.cpp:2381
The BoardDesignRuleCheckSettings class.
Definition boarddesignrulechecksettings.h:44
The Board class represents a PCB of a project and is always part of a circuit.
Definition board.h:73
The Device class represents an instance of a component (a "real" component)
Definition device.h:55
The Hole class.
Definition hole.h:45
The Layer class provides all supported geometry layers.
Definition layer.h:42
The Path class represents a list of vertices connected by straight lines or circular arc segments.
Definition path.h:57
The Trace class represents a trace within a board.
Definition trace.h:113
The Via class represents a via of a board.
Definition via.h:52
Definition occmodel.cpp:77
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition length.h:810
type_safe::constrained_type< Length, UnsignedLengthConstraint, UnsignedLengthVerifier > UnsignedLength
Definition length.h:694
QVector< std::shared_ptr< const RuleCheckMessage > > RuleCheckMessageList
Definition rulecheckmessage.h:104
Definition boarddesignrulecheck.h:53
QHash< const Layer *, ClipperLib::Paths > copperPathsPerLayer
Definition boarddesignrulecheck.h:61
QMutex mutex
Definition boarddesignrulecheck.h:59
Definition boarddesignrulecheck.h:64
RuleCheckMessageList messages
Definition boarddesignrulecheck.h:65
QStringList errors
Definition boarddesignrulecheck.h:66
Input data structure for librepcb::BoardDesignRuleCheck.
Definition boarddesignrulecheckdata.h:48