20 #ifndef LIBREPCB_EDITOR_BOARDCLIPBOARDDATA_H 21 #define LIBREPCB_EDITOR_BOARDCLIPBOARDDATA_H 52 class TransactionalDirectory;
53 class TransactionalFileSystem;
68 static constexpr
const char*
tagname =
"device";
82 const Uuid& libFootprintUuid,
const Point& position,
83 const Angle& rotation,
bool mirrored,
bool locked,
85 const QList<BoardStrokeTextData>& strokeTexts)
86 : componentUuid(componentUuid),
87 libDeviceUuid(libDeviceUuid),
88 libFootprintUuid(libFootprintUuid),
93 attributes(attributes),
94 strokeTexts(strokeTexts),
100 libFootprintUuid(
deserialize<
Uuid>(node.getChild(
"lib_footprint/@0"))),
101 position(node.getChild(
"position")),
103 mirrored(
deserialize<bool>(node.getChild(
"flip/@0"))),
104 locked(
deserialize<bool>(node.getChild(
"lock/@0"))),
118 root.
appendChild(
"lib_footprint", libFootprintUuid);
134 return (componentUuid != rhs.componentUuid) ||
135 (libDeviceUuid != rhs.libDeviceUuid) ||
136 (libFootprintUuid != rhs.libFootprintUuid) ||
137 (position != rhs.position) || (rotation != rhs.rotation) ||
138 (mirrored != rhs.mirrored) || (locked != rhs.locked) ||
139 (attributes != rhs.attributes) || (strokeTexts != rhs.strokeTexts);
144 static constexpr
const char*
tagname =
"netsegment";
152 explicit NetSegment(
const tl::optional<CircuitIdentifier>& netName)
153 : netName(netName), vias(), junctions(), traces(), onEdited(*this) {}
157 node.getChild(
"net/@0"))),
176 return (netName != rhs.netName) || (vias != rhs.vias) ||
177 (junctions != rhs.junctions) || (traces != rhs.traces);
182 static constexpr
const char*
tagname =
"plane";
199 const tl::optional<CircuitIdentifier>& netSignalName,
201 const UnsignedLength& minClearance,
bool keepIslands,
int priority,
206 netSignalName(netSignalName),
209 minClearance(minClearance),
210 keepIslands(keepIslands),
212 connectStyle(connectStyle),
213 thermalGap(thermalGap),
214 thermalSpokeWidth(thermalSpokeWidth),
222 node.getChild(
"net/@0"))),
227 keepIslands(
deserialize<bool>(node.getChild(
"keep_islands/@0"))),
228 priority(
deserialize<int>(node.getChild(
"priority/@0"))),
230 node.getChild(
"connect_style/@0"))),
235 locked(
deserialize<bool>(node.getChild(
"lock/@0"))),
248 root.
appendChild(
"thermal_spoke", thermalSpokeWidth);
259 return (uuid != rhs.uuid) || (layer != rhs.layer) ||
260 (netSignalName != rhs.netSignalName) || (outline != rhs.outline) ||
261 (minWidth != rhs.minWidth) || (minClearance != rhs.minClearance) ||
262 (keepIslands != rhs.keepIslands) || (priority != rhs.priority) ||
263 (connectStyle != rhs.connectStyle) ||
264 (thermalGap != rhs.thermalGap) ||
265 (thermalSpokeWidth != rhs.thermalSpokeWidth) ||
266 (locked != rhs.locked);
280 const QString& path =
"") noexcept;
299 std::unique_ptr<QMimeData>
toMimeData()
const;
300 static std::unique_ptr<BoardClipboardData>
fromMimeData(
301 const QMimeData* mime);
~BoardClipboardData() noexcept
Definition: boardclipboarddata.cpp:94
UnsignedLength minWidth
Definition: boardclipboarddata.h:188
void serialize(SExpression &root) const
Definition: boardclipboarddata.h:113
const Layer * layer
Definition: boardclipboarddata.h:185
Path outline
Definition: boardclipboarddata.h:187
bool operator!=(const Plane &rhs) noexcept
Definition: boardclipboarddata.h:258
void ensureLineBreak()
Definition: sexpression.cpp:206
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition: point.cpp:136
const Uuid & getBoardUuid() const noexcept
Definition: boardclipboarddata.h:281
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition: boardstroketextdata.cpp:242
Definition: boardclipboarddata.h:143
QList< BoardStrokeTextData > strokeTexts
Definition: boardclipboarddata.h:78
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition: serializableobjectlist.h:379
Definition: occmodel.cpp:77
Angle rotation
Definition: boardclipboarddata.h:74
Plane(const Uuid &uuid, const Layer &layer, const tl::optional< CircuitIdentifier > &netSignalName, const Path &outline, const UnsignedLength &minWidth, const UnsignedLength &minClearance, bool keepIslands, int priority, BI_Plane::ConnectStyle connectStyle, const PositiveLength &thermalGap, const PositiveLength &thermalSpokeWidth, bool locked)
Definition: boardclipboarddata.h:198
The Layer class provides all supported geometry layers.
Definition: layer.h:40
Plane(const SExpression &node)
Definition: boardclipboarddata.h:218
TraceList traces
Definition: boardclipboarddata.h:149
const Point & getCursorPos() const noexcept
Definition: boardclipboarddata.h:282
QList< BoardZoneData > & getZones() noexcept
Definition: boardclipboarddata.h:290
Definition: boardclipboarddata.h:181
JunctionList junctions
Definition: boardclipboarddata.h:148
SExpression & appendList(const QString &name)
Definition: sexpression.cpp:212
bool operator!=(const NetSegment &rhs) noexcept
Definition: boardclipboarddata.h:175
AttributeList attributes
Definition: boardclipboarddata.h:77
The Angle class is used to represent an angle (for example 12.75 degrees)
Definition: angle.h:78
SerializableObjectList< NetSegment, NetSegment > & getNetSegments() noexcept
Definition: boardclipboarddata.h:286
PositiveLength thermalSpokeWidth
Definition: boardclipboarddata.h:194
NetSegment(const SExpression &node)
Definition: boardclipboarddata.h:155
Uuid componentUuid
Definition: boardclipboarddata.h:70
QList< BoardStrokeTextData > mStrokeTexts
Definition: boardclipboarddata.h:318
Signal< Plane > onEdited
Dummy event, not used.
Definition: boardclipboarddata.h:196
ViaList vias
Definition: boardclipboarddata.h:147
QList< BoardPolygonData > & getPolygons() noexcept
Definition: boardclipboarddata.h:291
SerializableObjectList< Plane, Plane > & getPlanes() noexcept
Definition: boardclipboarddata.h:289
std::shared_ptr< TransactionalFileSystem > mFileSystem
Definition: boardclipboarddata.h:310
The Point class is used to represent a point/coordinate/vector, for example (1.2mm; 5...
Definition: point.h:79
QList< BoardZoneData > mZones
Definition: boardclipboarddata.h:316
bool mirrored
Definition: boardclipboarddata.h:75
Uuid libFootprintUuid
Definition: boardclipboarddata.h:72
QList< BoardStrokeTextData > & getStrokeTexts() noexcept
Definition: boardclipboarddata.h:292
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition: path.cpp:335
bool operator!=(const Device &rhs) noexcept
Definition: boardclipboarddata.h:133
void appendChild(std::unique_ptr< SExpression > child)
Definition: sexpression.cpp:217
Device(const Uuid &componentUuid, const Uuid &libDeviceUuid, const Uuid &libFootprintUuid, const Point &position, const Angle &rotation, bool mirrored, bool locked, const AttributeList &attributes, const QList< BoardStrokeTextData > &strokeTexts)
Definition: boardclipboarddata.h:81
The BoardClipboardData class.
Definition: boardclipboarddata.h:64
void serialize(SExpression &root) const
Definition: boardclipboarddata.h:163
static QString getMimeType() noexcept
Definition: boardclipboarddata.cpp:193
type_safe::constrained_type< QString, CircuitIdentifierConstraint, CircuitIdentifierVerifier > CircuitIdentifier
Definition: circuitidentifier.h:96
SerializableObjectList< Device, Device > & getDevices() noexcept
Definition: boardclipboarddata.h:283
The BI_Plane class.
Definition: bi_plane.h:52
Signal< NetSegment > onEdited
Dummy event, not used.
Definition: boardclipboarddata.h:150
QMap< std::pair< Uuid, Uuid >, Point > mPadPositions
Definition: boardclipboarddata.h:320
AttributeKey deserialize(const SExpression &node)
Definition: attributekey.h:105
void serialize(SExpression &root) const
Definition: boardclipboarddata.h:238
Signal< Device > onEdited
Dummy event, not used.
Definition: boardclipboarddata.h:79
SerializableObjectList< Plane, Plane > mPlanes
Definition: boardclipboarddata.h:315
tl::optional< CircuitIdentifier > netName
Definition: boardclipboarddata.h:146
The Path class represents a list of vertices connected by straight lines or circular arc segments...
Definition: path.h:58
static constexpr const char * tagname
Definition: boardclipboarddata.h:68
The Signal class is used to emit signals on non-QObject derived classes.
Definition: signalslot.h:65
QList< SExpression * > getChildren(Type type) noexcept
Definition: sexpression.cpp:94
static std::unique_ptr< BoardClipboardData > fromMimeData(const QMimeData *mime)
Definition: boardclipboarddata.cpp:178
BoardClipboardData()=delete
bool locked
Definition: boardclipboarddata.h:195
ConnectStyle
Definition: bi_plane.h:68
Point mCursorPos
Definition: boardclipboarddata.h:312
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition: length.h:812
QList< BoardHoleData > & getHoles() noexcept
Definition: boardclipboarddata.h:293
tl::optional< CircuitIdentifier > netSignalName
Definition: boardclipboarddata.h:186
QList< BoardHoleData > mHoles
Definition: boardclipboarddata.h:319
SerializableObjectList< NetSegment, NetSegment > mNetSegments
Definition: boardclipboarddata.h:314
Uuid mBoardUuid
Definition: boardclipboarddata.h:311
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition: uuid.h:58
QMap< std::pair< Uuid, Uuid >, Point > & getPadPositions() noexcept
Definition: boardclipboarddata.h:294
bool keepIslands
Definition: boardclipboarddata.h:190
bool locked
Definition: boardclipboarddata.h:76
bool isEmpty() const noexcept
Definition: boardclipboarddata.cpp:106
SerializableObjectList< Device, Device > mDevices
Definition: boardclipboarddata.h:313
PositiveLength thermalGap
Definition: boardclipboarddata.h:193
BoardClipboardData & operator=(const BoardClipboardData &rhs)=delete
std::unique_ptr< TransactionalDirectory > getDirectory(const QString &path="") noexcept
Definition: boardclipboarddata.cpp:112
UnsignedLength minClearance
Definition: boardclipboarddata.h:189
The BoardStrokeTextData class.
Definition: boardstroketextdata.h:49
std::unique_ptr< QMimeData > toMimeData() const
Definition: boardclipboarddata.cpp:122
The SExpression class.
Definition: sexpression.h:69
Point position
Definition: boardclipboarddata.h:73
int priority
Definition: boardclipboarddata.h:191
Device(const SExpression &node)
Definition: boardclipboarddata.h:97
BI_Plane::ConnectStyle connectStyle
Definition: boardclipboarddata.h:192
type_safe::constrained_type< Length, UnsignedLengthConstraint, UnsignedLengthVerifier > UnsignedLength
Definition: length.h:696
Uuid libDeviceUuid
Definition: boardclipboarddata.h:71
QList< BoardPolygonData > mPolygons
Definition: boardclipboarddata.h:317
Uuid uuid
Definition: boardclipboarddata.h:184
NetSegment(const tl::optional< CircuitIdentifier > &netName)
Definition: boardclipboarddata.h:152
Definition: boardclipboarddata.h:67