20#ifndef LIBREPCB_CORE_BOARD_H
21#define LIBREPCB_CORE_BOARD_H
26#include "../../fileio/filepath.h"
27#include "../../fileio/transactionaldirectory.h"
28#include "../../types/elementname.h"
29#include "../../types/length.h"
30#include "../../types/lengthunit.h"
31#include "../../types/tag.h"
32#include "../../types/uuid.h"
33#include "../../types/version.h"
57class BoardDesignRuleCheckSettings;
58class BoardDesignRules;
59class BoardFabricationOutputSettings;
74class Board final :
public QObject {
102 const QString& directoryName, const
Uuid& uuid,
126 const
std::optional<
Uuid>& assemblyVariant) const noexcept;
199 const QSet<SExpression>& approvals)
noexcept;
201 bool partialRun)
noexcept;
203 bool approved)
noexcept;
227 const QSet<const
Layer*>& layers) noexcept;
271 bool operator==(const
Board& rhs) const noexcept {
return (
this == &rhs); }
The BI_AirWire class.
Definition bi_airwire.h:45
The Board Item Base (BI_Base) class.
Definition bi_base.h:45
The BI_Device class.
Definition bi_device.h:57
The BI_Hole class.
Definition bi_hole.h:46
The BI_NetSegment class.
Definition bi_netsegment.h:53
The BI_Plane class.
Definition bi_plane.h:52
The BI_Polygon class.
Definition bi_polygon.h:46
The BI_StrokeText class.
Definition bi_stroketext.h:49
The BI_Zone class.
Definition bi_zone.h:46
The BoardDesignRuleCheckSettings class.
Definition boarddesignrulechecksettings.h:50
The BoardDesignRules class.
Definition boarddesignrules.h:46
The BoardFabricationOutputSettings class.
Definition boardfabricationoutputsettings.h:43
The Board class represents a PCB of a project and is always part of a circuit.
Definition board.h:74
void setLayersVisibility(const QMap< QString, bool > &visibility) noexcept
Definition board.h:188
TransactionalDirectory & getDirectory() noexcept
Definition board.h:109
void setSilkscreenColor(const PcbColor &c) noexcept
Definition board.h:181
void removeStrokeText(BI_StrokeText &text)
Definition board.cpp:651
QMap< Uuid, BI_Polygon * > mPolygons
Definition board.h:344
void setName(const ElementName &name) noexcept
Definition board.cpp:342
void removeHole(BI_Hole &hole)
Definition board.cpp:682
const BoardDesignRules & getDesignRules() const noexcept
Definition board.h:110
void invalidatePlanes(const Layer *layer=nullptr) noexcept
Definition board.cpp:541
QScopedPointer< BoardFabricationOutputSettings > mFabricationOutputSettings
Definition board.h:307
void addNetSegment(BI_NetSegment &netsegment)
Definition board.cpp:481
void addHole(BI_Hole &hole)
Definition board.cpp:666
const LengthUnit & getGridUnit() const noexcept
Definition board.h:137
void removeZone(BI_Zone &zone)
Definition board.cpp:586
const BoardDesignRuleCheckSettings & getDrcSettings() const noexcept
Definition board.h:113
PositiveLength mGridInterval
Definition board.h:315
void removePolygon(BI_Polygon &polygon)
Definition board.cpp:619
BoardFabricationOutputSettings & getFabricationOutputSettings() noexcept
Definition board.h:116
void removeDeviceInstance(BI_Device &instance)
Definition board.cpp:465
const PositiveLength & getGridInterval() const noexcept
Definition board.h:134
void removeNetSegment(BI_NetSegment &netsegment)
Definition board.cpp:499
void forceAirWiresRebuild() noexcept
Definition board.cpp:734
QSet< const Layer * > mScheduledLayersForPlanesRebuild
Definition board.h:309
QSet< SExpression > mSupportedDrcMessageApprovals
Definition board.h:337
const QMap< Uuid, BI_StrokeText * > & getStrokeTexts() const noexcept
Definition board.h:242
const QMap< Uuid, BI_Hole * > & getHoles() const noexcept
Definition board.h:249
void copyFrom(const Board &other)
Definition board.cpp:792
const PcbColor * getSilkscreenColorBot() const noexcept
Definition board.h:155
QMap< Uuid, BI_Device * > mDeviceInstances
Definition board.h:340
void netSegmentAdded(BI_NetSegment &netSegment)
void airWireRemoved(BI_AirWire &airWire)
const QString mDirectoryName
Definition board.h:301
void setInnerLayerCount(int count) noexcept
Definition board.cpp:358
std::shared_ptr< SceneData3D > buildScene3D(const std::optional< Uuid > &assemblyVariant) const noexcept
Definition board.cpp:215
QVector< const Layer * > mSilkscreenLayersTop
Definition board.h:325
LengthUnit mGridUnit
Definition board.h:316
const QSet< const Layer * > getCopperLayers() const noexcept
Definition board.h:142
const PcbColor & getSilkscreenColor() const noexcept
Definition board.h:149
const QMap< Uuid, BI_Plane * > & getPlanes() const noexcept
Definition board.h:221
void nameChanged(const ElementName &name)
void addStrokeText(BI_StrokeText &text)
Definition board.cpp:634
void strokeTextAdded(BI_StrokeText &strokeText)
const PcbColor * mSilkscreenColor
Must never be nullptr!
Definition board.h:324
void polygonRemoved(BI_Polygon &polygon)
void strokeTextRemoved(BI_StrokeText &strokeText)
const PositiveLength & getPcbThickness() const noexcept
Definition board.h:145
QSet< SExpression > mDrcMessageApprovals
Definition board.h:336
void loadDrcMessageApprovals(const Version &version, const QSet< SExpression > &approvals) noexcept
Definition board.cpp:392
const PcbColor * getSilkscreenColorTop() const noexcept
Definition board.h:152
const ElementName & getName() const noexcept
Definition board.h:130
Uuid mUuid
Definition board.h:312
QMap< Uuid, BI_Hole * > mHoles
Definition board.h:346
const QVector< const Layer * > & getSilkscreenLayersBot() const noexcept
Definition board.h:161
void setDrcSettings(const BoardDesignRuleCheckSettings &settings) noexcept
Definition board.cpp:383
QScopedPointer< BoardDesignRules > mDesignRules
Definition board.h:305
const QVector< const Layer * > & getSilkscreenLayersTop() const noexcept
Definition board.h:158
void setDesignRules(const BoardDesignRules &rules) noexcept
Definition board.cpp:374
void addPlane(BI_Plane &plane)
Definition board.cpp:514
ElementName mName
Definition board.h:313
void setDefaultFontName(const QString &name) noexcept
Definition board.h:170
void preferredFootprintTagsChanged()
void addDeviceInstance(BI_Device &instance)
Definition board.cpp:447
Version mDrcMessageApprovalsVersion
Definition board.h:335
bool mIsAddedToProject
Definition board.h:303
QMap< Uuid, BI_Plane * > mPlanes
Definition board.h:342
QMap< Uuid, BI_Zone * > mZones
Definition board.h:343
void polygonAdded(BI_Polygon &polygon)
BI_Device * getDeviceInstanceByComponentUuid(const Uuid &uuid) const noexcept
Definition board.cpp:442
const BoardFabricationOutputSettings & getFabricationOutputSettings() const noexcept
Definition board.h:119
void addPolygon(BI_Polygon &polygon)
Definition board.cpp:601
void airWireAdded(BI_AirWire &airWire)
const QMap< Uuid, BI_Device * > & getDeviceInstances() const noexcept
Definition board.h:206
void netSegmentRemoved(BI_NetSegment &netSegment)
bool updateDrcMessageApprovals(QSet< SExpression > approvals, bool partialRun) noexcept
Definition board.cpp:398
void setGridUnit(const LengthUnit &unit) noexcept
Definition board.h:177
void scheduleAirWiresRebuild(NetSignal *netsignal) noexcept
Definition board.h:255
const QSet< SExpression > & getDrcMessageApprovals() const noexcept
Definition board.h:195
Project & getProject() const noexcept
Definition board.h:107
PositiveLength mPcbThickness
Total PCB thickness (all layers)
Definition board.h:322
QSet< const Layer * > mCopperLayers
Derived from mInnerLayerCount.
Definition board.h:321
const QString & getDefaultFontName() const noexcept
Definition board.h:131
QList< BI_Base * > getAllItems() const noexcept
Definition board.cpp:202
void addToProject()
Definition board.cpp:937
Project & mProject
A reference to the Project object (from the ctor)
Definition board.h:300
int getInnerLayerCount() const noexcept
Definition board.h:141
bool operator!=(const Board &rhs) const noexcept
Definition board.h:272
int mInnerLayerCount
Definition board.h:320
void zoneRemoved(BI_Zone &zone)
void addDefaultContent()
Definition board.cpp:782
void triggerAirWiresRebuild() noexcept
Definition board.cpp:697
QScopedPointer< BoardDesignRuleCheckSettings > mDrcSettings
Definition board.h:306
const PreferredFootprintTags & getPreferredFootprintTags() const noexcept
Definition board.h:138
const QMap< Uuid, BI_NetSegment * > & getNetSegments() const noexcept
Definition board.h:214
void deviceRemoved(BI_Device &device)
QString mDefaultFontFileName
Definition board.h:314
QMap< QString, bool > mLayersVisibility
Definition board.h:332
void planeAdded(BI_Plane &plane)
void designRulesModified()
QMap< Uuid, BI_NetSegment * > mNetSegments
Definition board.h:341
PreferredFootprintTags mPreferredFootprintTags
Definition board.h:317
void save()
Definition board.cpp:983
void setPreferredFootprintTags(const PreferredFootprintTags &tags) noexcept
Definition board.cpp:350
const Uuid & getUuid() const noexcept
Definition board.h:129
std::optional< std::pair< Point, Point > > calculateBoundingRect() const noexcept
Definition board.cpp:745
void removePlane(BI_Plane &plane)
Definition board.cpp:530
std::unique_ptr< TransactionalDirectory > mDirectory
Definition board.h:302
void addZone(BI_Zone &zone)
Definition board.cpp:570
QSet< const Layer * > takeScheduledLayersForPlanesRebuild(const QSet< const Layer * > &layers) noexcept
Definition board.cpp:559
void setSilkscreenLayersTop(const QVector< const Layer * > &l) noexcept
Definition board.h:182
void setPcbThickness(const PositiveLength &t) noexcept
Definition board.h:179
void setSilkscreenLayersBot(const QVector< const Layer * > &l) noexcept
Definition board.h:185
void planeRemoved(BI_Plane &plane)
const QMap< QString, bool > & getLayersVisibility() const noexcept
Definition board.h:164
const PcbColor * mSolderResist
nullptr means no solder resist!
Definition board.h:323
QSet< NetSignal * > mScheduledNetSignalsForAirWireRebuild
Definition board.h:308
void removeFromProject()
Definition board.cpp:962
void innerLayerCountChanged()
const QMap< Uuid, BI_Zone * > & getZones() const noexcept
Definition board.h:230
void holeAdded(BI_Hole &hole)
QMap< Uuid, BI_StrokeText * > mStrokeTexts
Definition board.h:345
void zoneAdded(BI_Zone &zone)
QMultiHash< NetSignal *, BI_AirWire * > mAirWires
Definition board.h:347
void deviceAdded(BI_Device &device)
const PcbColor * getSolderResist() const noexcept
Definition board.h:148
const QMap< Uuid, BI_Polygon * > & getPolygons() const noexcept
Definition board.h:235
QVector< const Layer * > mSilkscreenLayersBot
Definition board.h:326
void holeRemoved(BI_Hole &hole)
void setGridInterval(const PositiveLength &interval) noexcept
Definition board.h:174
void setSolderResist(const PcbColor *c) noexcept
Definition board.h:180
QList< BI_AirWire * > getAirWires() const noexcept
Definition board.h:254
void setDrcMessageApproved(const SExpression &approval, bool approved) noexcept
Definition board.cpp:429
const QString & getDirectoryName() const noexcept
Definition board.h:108
The Layer class provides all supported geometry layers.
Definition layer.h:42
The LengthUnit class represents a length unit (millimeters, inches,...) and provides some useful meth...
Definition lengthunit.h:62
The NetSignal class.
Definition netsignal.h:50
Predefined colors relevant for PCB fabrication.
Definition pcbcolor.h:41
The Point class is used to represent a point/coordinate/vector, for example (1.2mm; 5....
Definition point.h:78
The Project class represents a whole (opened) project with all its content.
Definition project.h:71
The SExpression class.
Definition sexpression.h:69
3D scene data representing a board with package models
Definition scenedata3d.h:52
Helper class to access a subdirectory of TransactionalFileSystem.
Definition transactionaldirectory.h:51
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
The Version class represents a version number in the format "1.42.7".
Definition version.h:58
Definition occmodel.cpp:77
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition length.h:810
type_safe::constrained_type< QString, ElementNameConstraint, ElementNameVerifier > ElementName
Definition elementname.h:84