20#ifndef LIBREPCB_CORE_TRACE_H
21#define LIBREPCB_CORE_TRACE_H
26#include "../serialization/serializableobjectlist.h"
27#include "../types/length.h"
55 return (
device == rhs.device) && (
pad == rhs.pad);
87 return !(*
this == rhs);
100 const std::optional<Uuid>&
via,
const std::optional<Uuid>&
pad,
124 Q_DECLARE_TR_FUNCTIONS(
Trace)
189 static constexpr const char*
tagname =
"trace";
199 std::size_t seed = 0) noexcept {
202 s += anchor->toStr();
204 if (std::optional<Uuid> anchor = key.
tryGetVia()) {
205 s += anchor->toStr();
207 if (std::optional<Uuid> anchor = key.
tryGetPad()) {
208 s += anchor->toStr();
211 s += anchor->device.toStr();
212 s += anchor->pad.toStr();
214 Q_ASSERT(!s.isEmpty());
216 return ::qHash(s, seed);
The Layer class provides all supported geometry layers.
Definition layer.h:42
The SExpression class.
Definition sexpression.h:69
The Signal class is used to emit signals on non-QObject derived classes.
Definition signalslot.h:65
The Slot class is used to receive signals from non-QObject derived classes.
Definition signalslot.h:170
The TraceAnchor class.
Definition trace.h:45
const std::optional< Uuid > & tryGetVia() const noexcept
Definition trace.h:69
static TraceAnchor pad(const Uuid &pad) noexcept
Definition trace.cpp:135
~TraceAnchor() noexcept
Definition trace.cpp:67
bool operator!=(const TraceAnchor &rhs) const noexcept
Definition trace.h:86
bool operator==(const TraceAnchor &rhs) const noexcept
Definition trace.cpp:85
static TraceAnchor footprintPad(const Uuid &device, const Uuid &pad) noexcept
Definition trace.cpp:139
static TraceAnchor via(const Uuid &via) noexcept
Definition trace.cpp:131
std::optional< PadAnchor > mFootprintPad
Definition trace.h:107
std::optional< Uuid > mJunction
Definition trace.h:104
std::optional< Uuid > mPad
Definition trace.h:106
static TraceAnchor junction(const Uuid &junction) noexcept
Definition trace.cpp:127
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition trace.cpp:70
TraceAnchor & operator=(const TraceAnchor &rhs) noexcept
Definition trace.cpp:119
const std::optional< Uuid > & tryGetPad() const noexcept
Definition trace.h:70
const std::optional< Uuid > & tryGetJunction() const noexcept
Definition trace.h:66
bool operator<(const TraceAnchor &rhs) const noexcept
Definition trace.cpp:90
std::optional< Uuid > mVia
Definition trace.h:105
const std::optional< PadAnchor > & tryGetFootprintPad() const noexcept
Definition trace.h:71
The Trace class represents a trace within a board.
Definition trace.h:123
Signal< Trace, Event > onEdited
Definition trace.h:134
const PositiveLength & getWidth() const noexcept
Definition trace.h:149
static void normalizeAnchors(TraceAnchor &start, TraceAnchor &end) noexcept
Definition trace.cpp:272
const TraceAnchor & getP2() const noexcept
Definition trace.h:151
const TraceAnchor & getP1() const noexcept
Definition trace.h:150
Uuid mUuid
Definition trace.h:177
Event
Definition trace.h:128
~Trace() noexcept
Definition trace.cpp:183
bool operator!=(const Trace &rhs) const noexcept
Definition trace.h:170
const Layer & getLayer() const noexcept
Definition trace.h:148
bool operator==(const Trace &rhs) const noexcept
Definition trace.cpp:251
bool setAnchors(TraceAnchor a, TraceAnchor b) noexcept
Definition trace.cpp:220
bool setLayer(const Layer &layer) noexcept
Definition trace.cpp:200
Trace & operator=(const Trace &rhs) noexcept
Definition trace.cpp:260
TraceAnchor mP1
Definition trace.h:180
void serialize(SExpression &root) const
Serialize into librepcb::SExpression node.
Definition trace.cpp:236
Slot< Trace, Event > OnEditedSlot
Definition trace.h:135
const Uuid & getUuid() const noexcept
Definition trace.h:147
bool setWidth(const PositiveLength &width) noexcept
Definition trace.cpp:210
const Layer * mLayer
Definition trace.h:178
TraceAnchor mP2
Definition trace.h:181
bool setUuid(const Uuid &uuid) noexcept
Definition trace.cpp:190
PositiveLength mWidth
Definition trace.h:179
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
Definition occmodel.cpp:77
std::size_t qHash(const AttributeKey &key, std::size_t seed=0) noexcept
Definition attributekey.h:113
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition length.h:810
Uuid device
Definition trace.h:51
bool operator==(const PadAnchor &rhs) const noexcept
Definition trace.h:54
Uuid pad
Definition trace.h:52
static constexpr const char * tagname
Definition trace.h:189