KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pcb_dimension.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2004 Jean-Pierre Charras, [email protected]
5 * Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#ifndef PCB_DIMENSION_H
26#define PCB_DIMENSION_H
27
28
29#include <board_item.h>
30#include <pcb_text.h>
31#include <geometry/shape.h>
32#include <geometry/circle.h>
33
34class LINE_READER;
35class MSG_PANEL_ITEM;
36
37
40{
41 NO_SUFFIX, // 1234.0
42 BARE_SUFFIX, // 1234.0 mm
43 PAREN_SUFFIX // 1234.0 (mm)
44};
45
46enum class DIM_PRECISION
47{
48 X = 0, // 0
49 X_X, // 0.0
50 X_XX, // 0.00
51 X_XXX, // 0.000
52 X_XXXX, // 0.0000
53 X_XXXXX, // 0.00000
54 V_VV, // 0.00 / 0 / 0.0
55 V_VVV, // 0.000 / 0 / 0.00
56 V_VVVV, // 0.0000 / 0.0 / 0.000
57 V_VVVVV // 0.00000 / 0.00 / 0.0000
58};
59
62{
63 OUTSIDE,
64 INLINE,
65 MANUAL
66};
67
72{
73 INCHES,
74 MILS,
77};
78
83{
84 NONE,
86 CIRCLE,
88};
89
110{
111public:
113
119 virtual const VECTOR2I& GetStart() const { return m_start; }
120 virtual void SetStart( const VECTOR2I& aPoint ) { m_start = aPoint; }
121
122 virtual const VECTOR2I& GetEnd() const { return m_end; }
123 virtual void SetEnd( const VECTOR2I& aPoint ) { m_end = aPoint; }
124
125 VECTOR2I GetPosition() const override { return m_start; }
126 void SetPosition( const VECTOR2I& aPos ) override { m_start = aPos; }
127
129 void SetOverrideTextEnabled( bool aOverride ) { m_overrideTextEnabled = aOverride; }
130
131 wxString GetOverrideText() const { return m_valueString; }
132 void SetOverrideText( const wxString& aValue ) { m_valueString = aValue; }
133
134 void ChangeOverrideText( const wxString& aValue )
135 {
137 SetOverrideText( aValue );
138 updateText();
139 }
140
141 int GetMeasuredValue() const { return m_measuredValue; }
142
143 // KiCad normally calculates the measured value but some importers need to set it.
144 void SetMeasuredValue( int aValue ) { m_measuredValue = aValue; }
145
149 wxString GetValueText() const;
150
154 void Update()
155 {
157 updateText();
158 }
159
161 {
163 updateText();
164 }
165
166 wxString GetPrefix() const { return m_prefix; }
167 void SetPrefix( const wxString& aPrefix );
168
169 void ChangePrefix( const wxString& aPrefix )
170 {
171 SetPrefix( aPrefix );
172 updateText();
173 }
174
175 wxString GetSuffix() const { return m_suffix; }
176 void SetSuffix( const wxString& aSuffix );
177
178 void ChangeSuffix( const wxString& aSuffix )
179 {
180 SetSuffix( aSuffix );
181 updateText();
182 }
183
184 EDA_UNITS GetUnits() const { return m_units; }
185 void SetUnits( EDA_UNITS aUnits );
186
188 void SetUnitsMode( DIM_UNITS_MODE aMode );
189
191 {
192 SetUnitsMode( aMode );
193 updateText();
194 }
195
196 void SetAutoUnits( bool aAuto = true ) { m_autoUnits = aAuto; }
197
199 void SetUnitsFormat( const DIM_UNITS_FORMAT aFormat ) { m_unitsFormat = aFormat; }
200
202 {
203 SetUnitsFormat( aFormat );
204 updateText();
205 }
206
208 void SetPrecision( DIM_PRECISION aPrecision ) { m_precision = aPrecision; }
209
211 {
212 SetPrecision( aPrecision );
213 updateText();
214 }
215
216 bool GetSuppressZeroes() const { return m_suppressZeroes; }
217 void SetSuppressZeroes( bool aSuppress ) { m_suppressZeroes = aSuppress; }
218
219 void ChangeSuppressZeroes( bool aSuppress )
220 {
221 SetSuppressZeroes( aSuppress );
222 updateText();
223 }
224
225 bool GetKeepTextAligned() const { return m_keepTextAligned; }
226 void SetKeepTextAligned( bool aKeepAligned ) { m_keepTextAligned = aKeepAligned; }
227
230
231 int GetArrowLength() const { return m_arrowLength; }
232 void SetArrowLength( int aLength ) { m_arrowLength = aLength; }
233
234 void SetExtensionOffset( int aOffset ) { m_extensionOffset = aOffset; }
235 int GetExtensionOffset() const { return m_extensionOffset; }
236
237 int GetLineThickness() const { return m_lineThickness; }
238 void SetLineThickness( int aWidth ) { m_lineThickness = aWidth; }
239
243 const std::vector<std::shared_ptr<SHAPE>>& GetShapes() const { return m_shapes; }
244
245 // BOARD_ITEM overrides
246
247 void Move( const VECTOR2I& offset ) override;
248 void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
249 void Flip( const VECTOR2I& aCentre, bool aFlipLeftRight ) override;
250
259 virtual void Mirror( const VECTOR2I& axis_pos, bool aMirrorLeftRight = false );
260
261 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
262
263 bool HitTest( const VECTOR2I& aPosition, int aAccuracy ) const override;
264 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
265
266 const BOX2I GetBoundingBox() const override;
267
268 std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer,
269 FLASHING aFlash = FLASHING::DEFAULT ) const override;
270
271 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider ) const override;
272
273 const BOX2I ViewBBox() const override;
274
275 void ClearRenderCache() override;
276
277 void TransformShapeToPolygon( SHAPE_POLY_SET& aBuffer, PCB_LAYER_ID aLayer, int aClearance,
278 int aError, ERROR_LOC aErrorLoc,
279 bool aIgnoreLineWidth = false ) const override;
280
281 double Similarity( const BOARD_ITEM& aOther ) const override;
282
283 bool operator==( const BOARD_ITEM& aOther ) const override;
284
285#if defined(DEBUG)
286 virtual void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
287#endif
288
289protected:
290
294 virtual void updateGeometry() = 0;
295
299 virtual void updateText();
300
301 template<typename ShapeType>
302 void addShape( const ShapeType& aShape );
303
312 static OPT_VECTOR2I segPolyIntersection( const SHAPE_POLY_SET& aPoly, const SEG& aSeg,
313 bool aStart = true );
314 static OPT_VECTOR2I segCircleIntersection( CIRCLE& aCircle, SEG& aSeg, bool aStart = true );
315
316 // Value format
318 wxString m_valueString;
319 wxString m_prefix;
320 wxString m_suffix;
326
327 // Geometry
333
334 // Internal
338
340 std::vector<std::shared_ptr<SHAPE>> m_shapes;
341
343};
344
345
374{
375public:
377
378 // Do not create a copy constructor & operator=.
379 // The ones generated by the compiler are adequate.
380
381 ~PCB_DIM_ALIGNED() = default;
382
383 static inline bool ClassOf( const EDA_ITEM* aItem )
384 {
385 return aItem && aItem->Type() == PCB_DIM_ALIGNED_T;
386 }
387
388 EDA_ITEM* Clone() const override;
389
390 void Mirror( const VECTOR2I& axis_pos, bool aMirrorLeftRight = false ) override;
391
392 BITMAPS GetMenuImage() const override;
393
394 const VECTOR2I& GetCrossbarStart() const { return m_crossBarStart; }
395
396 const VECTOR2I& GetCrossbarEnd() const { return m_crossBarEnd; }
397
403 void SetHeight( int aHeight ) { m_height = aHeight; }
404 int GetHeight() const { return m_height; }
405
406 void ChangeHeight( int aHeight )
407 {
408 SetHeight( aHeight );
410 }
411
417 void UpdateHeight( const VECTOR2I& aCrossbarStart, const VECTOR2I& aCrossbarEnd );
418
419 void SetExtensionHeight( int aHeight ) { m_extensionHeight = aHeight; }
420 int GetExtensionHeight() const { return m_extensionHeight; }
421
422 void ChangeExtensionHeight( int aHeight )
423 {
424 SetExtensionHeight( aHeight );
426 }
427
433 double GetAngle() const
434 {
436
437 return atan2( (double)delta.y, (double)delta.x );
438 }
439
440 wxString GetClass() const override
441 {
442 return wxT( "PCB_DIM_ALIGNED" );
443 }
444
445 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
446
447protected:
448 virtual void swapData( BOARD_ITEM* aImage ) override;
449
450 void updateGeometry() override;
451
452 void updateText() override;
453
454 // Geometry
457
460
461};
462
463
469{
470public:
471 enum class DIR
472 {
473 HORIZONTAL, // Aligned with x-axis
474 VERTICAL // Aligned with y-axis
475 };
476
477 PCB_DIM_ORTHOGONAL( BOARD_ITEM* aParent );
478
480
481 static inline bool ClassOf( const EDA_ITEM* aItem )
482 {
483 return aItem && aItem->Type() == PCB_DIM_ORTHOGONAL_T;
484 }
485
486 EDA_ITEM* Clone() const override;
487
488 BITMAPS GetMenuImage() const override;
489
495 void SetOrientation( DIR aOrientation ) { m_orientation = aOrientation; }
496 DIR GetOrientation() const { return m_orientation; }
497
498 wxString GetClass() const override
499 {
500 return wxT( "PCB_DIM_ORTHOGONAL" );
501 }
502 void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
503
504protected:
505 void swapData( BOARD_ITEM* aImage ) override;
506
507 void updateGeometry() override;
508
509 void updateText() override;
510
511private:
512 // Geometry
514
515};
516
517
539{
540public:
541 PCB_DIM_RADIAL( BOARD_ITEM* aParent );
542
543 static inline bool ClassOf( const EDA_ITEM* aItem )
544 {
545 return aItem && aItem->Type() == PCB_DIM_RADIAL_T;
546 }
547
548 EDA_ITEM* Clone() const override;
549
550 void SetLeaderLength( int aLength ) { m_leaderLength = aLength; }
551 int GetLeaderLength() const { return m_leaderLength; }
552
553 void ChangeLeaderLength( int aLength )
554 {
555 SetLeaderLength( aLength );
557 }
558
559 // Returns the point (c).
560 VECTOR2I GetKnee() const;
561
562 BITMAPS GetMenuImage() const override;
563
564 wxString GetClass() const override
565 {
566 return wxT( "PCB_DIM_RADIAL" );
567 }
568
569protected:
570 virtual void swapData( BOARD_ITEM* aImage ) override;
571
572 void updateText() override;
573 void updateGeometry() override;
574
575private:
578};
579
580
595{
596public:
597 PCB_DIM_LEADER( BOARD_ITEM* aParent );
598
599 static inline bool ClassOf( const EDA_ITEM* aItem )
600 {
601 return aItem && aItem->Type() == PCB_DIM_LEADER_T;
602 }
603
604 EDA_ITEM* Clone() const override;
605
606 BITMAPS GetMenuImage() const override;
607
608 wxString GetClass() const override
609 {
610 return wxT( "PCB_DIM_LEADER" );
611 }
612
613 void SetTextBorder( DIM_TEXT_BORDER aBorder ) { m_textBorder = aBorder; }
615
617 {
618 SetTextBorder( aBorder );
620 }
621
622 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
623
624protected:
625 virtual void swapData( BOARD_ITEM* aImage ) override;
626
627 void updateText() override;
628 void updateGeometry() override;
629
630private:
632};
633
634
642{
643public:
644 PCB_DIM_CENTER( BOARD_ITEM* aParent );
645
646 static inline bool ClassOf( const EDA_ITEM* aItem )
647 {
648 return aItem && aItem->Type() == PCB_DIM_CENTER_T;
649 }
650
651 EDA_ITEM* Clone() const override;
652
653 BITMAPS GetMenuImage() const override;
654
655 wxString GetClass() const override
656 {
657 return wxT( "PCB_DIM_CENTER" );
658 }
659
660 const BOX2I GetBoundingBox() const override;
661
662 const BOX2I ViewBBox() const override;
663
664protected:
665 virtual void swapData( BOARD_ITEM* aImage ) override;
666
667 void updateGeometry() override;
668};
669
670#endif // DIMENSION_H
BITMAPS
A list of all bitmap identifiers.
Definition: bitmaps_list.h:33
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:77
Represent basic circle geometry with utility geometry functions.
Definition: circle.h:33
The base class for create windows for drawing purpose.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:88
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:100
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
Definition: richio.h:93
EDA_MSG_PANEL items for displaying messages.
Definition: msgpanel.h:54
Abstract dimension API.
EDA_UNITS GetUnits() const
bool m_autoUnits
If true, follow the currently selected UI units.
void Update()
Update the dimension's cached text and geometry.
void ChangeSuffix(const wxString &aSuffix)
wxString GetOverrideText() const
wxString GetSuffix() const
std::vector< std::shared_ptr< SHAPE > > m_shapes
double Similarity(const BOARD_ITEM &aOther) const override
Return a measure of how likely the other object is to represent the same object.
void TransformShapeToPolygon(SHAPE_POLY_SET &aBuffer, PCB_LAYER_ID aLayer, int aClearance, int aError, ERROR_LOC aErrorLoc, bool aIgnoreLineWidth=false) const override
Convert the item shape to a closed polygon.
virtual void updateGeometry()=0
Update the cached geometry of the dimension after changing any of its properties.
void Flip(const VECTOR2I &aCentre, bool aFlipLeftRight) override
Flip this object, i.e.
void ClearRenderCache() override
int m_lineThickness
Thickness used for all graphics in the dimension.
void Move(const VECTOR2I &offset) override
Move this object.
void SetUnitsFormat(const DIM_UNITS_FORMAT aFormat)
bool m_suppressZeroes
Suppress trailing zeroes.
void SetMeasuredValue(int aValue)
int GetLineThickness() const
void SetUnits(EDA_UNITS aUnits)
DIM_PRECISION m_precision
Number of digits to display after decimal.
std::shared_ptr< SHAPE > GetEffectiveShape(PCB_LAYER_ID aLayer, FLASHING aFlash=FLASHING::DEFAULT) const override
Some pad shapes can be complex (rounded/chamfered rectangle), even without considering custom shapes.
static OPT_VECTOR2I segCircleIntersection(CIRCLE &aCircle, SEG &aSeg, bool aStart=true)
void addShape(const ShapeType &aShape)
void SetPrefix(const wxString &aPrefix)
wxString m_suffix
String appended to the value.
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
void ChangeOverrideText(const wxString &aValue)
void SetExtensionOffset(int aOffset)
void SetSuppressZeroes(bool aSuppress)
bool m_inClearRenderCache
re-entrancy guard
int m_extensionOffset
Distance from feature points to extension line start.
DIM_TEXT_POSITION GetTextPositionMode() const
bool GetKeepTextAligned() const
bool m_keepTextAligned
Calculate text orientation to match dimension.
DIM_PRECISION GetPrecision() const
wxString GetPrefix() const
void SetOverrideTextEnabled(bool aOverride)
void SetSuffix(const wxString &aSuffix)
const std::vector< std::shared_ptr< SHAPE > > & GetShapes() const
bool operator==(const BOARD_ITEM &aOther) const override
DIM_UNITS_MODE GetUnitsMode() const
void SetTextPositionMode(DIM_TEXT_POSITION aMode)
virtual void updateText()
Update the text field value from the current geometry (called by updateGeometry normally).
bool HitTest(const VECTOR2I &aPosition, int aAccuracy) const override
Test if aPosition is inside or on the boundary of this item.
EDA_UNITS m_units
0 = inches, 1 = mm
int m_measuredValue
value of PCB dimensions
DIM_UNITS_FORMAT GetUnitsFormat() const
void SetLineThickness(int aWidth)
void SetArrowLength(int aLength)
virtual const VECTOR2I & GetStart() const
The dimension's origin is the first feature point for the dimension.
wxString m_valueString
Displayed value when m_overrideValue = true.
void ChangePrecision(DIM_PRECISION aPrecision)
virtual void SetEnd(const VECTOR2I &aPoint)
void SetPrecision(DIM_PRECISION aPrecision)
bool m_overrideTextEnabled
Manually specify the displayed measurement value.
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider) const override
Return a user-visible description string of this item.
virtual void SetStart(const VECTOR2I &aPoint)
void SetAutoUnits(bool aAuto=true)
DIM_UNITS_FORMAT m_unitsFormat
How to render the units suffix.
int GetMeasuredValue() const
bool GetSuppressZeroes() const
const BOX2I ViewBBox() const override
Return the bounding box of the item covering all its layers.
DIM_TEXT_POSITION m_textPosition
How to position the text.
static OPT_VECTOR2I segPolyIntersection(const SHAPE_POLY_SET &aPoly, const SEG &aSeg, bool aStart=true)
Find the intersection between a given segment and polygon outline.
void SetOverrideText(const wxString &aValue)
wxString GetValueText() const
int GetExtensionOffset() const
void ChangePrefix(const wxString &aPrefix)
wxString m_prefix
String prepended to the value.
void Rotate(const VECTOR2I &aRotCentre, const EDA_ANGLE &aAngle) override
Rotate this object.
void SetPosition(const VECTOR2I &aPos) override
void ChangeUnitsFormat(const DIM_UNITS_FORMAT aFormat)
void ChangeSuppressZeroes(bool aSuppress)
int GetArrowLength() const
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
virtual void Mirror(const VECTOR2I &axis_pos, bool aMirrorLeftRight=false)
Mirror the dimension relative to a given horizontal axis.
bool GetOverrideTextEnabled() const
void SetUnitsMode(DIM_UNITS_MODE aMode)
int m_arrowLength
Length of arrow shapes.
virtual const VECTOR2I & GetEnd() const
VECTOR2I m_end
Internal cache of drawn shapes.
void ChangeUnitsMode(DIM_UNITS_MODE aMode)
void SetKeepTextAligned(bool aKeepAligned)
VECTOR2I GetPosition() const override
For better understanding of the points that make a dimension:
int GetHeight() const
const VECTOR2I & GetCrossbarStart() const
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
int m_height
Perpendicular distance from features to crossbar.
void ChangeExtensionHeight(int aHeight)
wxString GetClass() const override
Return the class name.
void updateText() override
Update the text field value from the current geometry (called by updateGeometry normally).
void SetExtensionHeight(int aHeight)
const VECTOR2I & GetCrossbarEnd() const
~PCB_DIM_ALIGNED()=default
VECTOR2I m_crossBarStart
Crossbar start control point.
void UpdateHeight(const VECTOR2I &aCrossbarStart, const VECTOR2I &aCrossbarEnd)
Update the stored height basing on points coordinates.
virtual void swapData(BOARD_ITEM *aImage) override
int m_extensionHeight
Length of extension lines past the crossbar.
double GetAngle() const
Return the angle of the crossbar.
void SetHeight(int aHeight)
Set the distance from the feature points to the crossbar line.
static bool ClassOf(const EDA_ITEM *aItem)
VECTOR2I m_crossBarEnd
Crossbar end control point.
void Mirror(const VECTOR2I &axis_pos, bool aMirrorLeftRight=false) override
Mirror the dimension relative to a given horizontal axis.
void ChangeHeight(int aHeight)
void updateGeometry() override
Update the cached geometry of the dimension after changing any of its properties.
int GetExtensionHeight() const
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
Mark the center of a circle or arc with a cross shape.
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
void updateGeometry() override
Update the cached geometry of the dimension after changing any of its properties.
wxString GetClass() const override
Return the class name.
const BOX2I ViewBBox() const override
Return the bounding box of the item covering all its layers.
virtual void swapData(BOARD_ITEM *aImage) override
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
static bool ClassOf(const EDA_ITEM *aItem)
A leader is a dimension-like object pointing to a specific point.
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
DIM_TEXT_BORDER m_textBorder
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
DIM_TEXT_BORDER GetTextBorder() const
virtual void swapData(BOARD_ITEM *aImage) override
static bool ClassOf(const EDA_ITEM *aItem)
void updateGeometry() override
Update the cached geometry of the dimension after changing any of its properties.
void updateText() override
Update the text field value from the current geometry (called by updateGeometry normally).
void SetTextBorder(DIM_TEXT_BORDER aBorder)
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
void ChangeTextBorder(DIM_TEXT_BORDER aBorder)
wxString GetClass() const override
Return the class name.
An orthogonal dimension is like an aligned dimension, but the extension lines are locked to the X or ...
void swapData(BOARD_ITEM *aImage) override
wxString GetClass() const override
Return the class name.
static bool ClassOf(const EDA_ITEM *aItem)
void updateText() override
Update the text field value from the current geometry (called by updateGeometry normally).
void SetOrientation(DIR aOrientation)
Set the orientation of the dimension line (so, perpendicular to the feature lines).
void updateGeometry() override
Update the cached geometry of the dimension after changing any of its properties.
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
~PCB_DIM_ORTHOGONAL()=default
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
DIR m_orientation
What axis to lock the dimension line to.
void Rotate(const VECTOR2I &aRotCentre, const EDA_ANGLE &aAngle) override
Rotate this object.
DIR GetOrientation() const
A radial dimension indicates either the radius or diameter of an arc or circle.
int GetLeaderLength() const
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
void updateText() override
Update the text field value from the current geometry (called by updateGeometry normally).
virtual void swapData(BOARD_ITEM *aImage) override
void SetLeaderLength(int aLength)
wxString GetClass() const override
Return the class name.
void updateGeometry() override
Update the cached geometry of the dimension after changing any of its properties.
void ChangeLeaderLength(int aLength)
static bool ClassOf(const EDA_ITEM *aItem)
VECTOR2I GetKnee() const
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
Definition: seg.h:42
Represent a set of closed polygons.
EDA_UNITS
Definition: eda_units.h:46
ERROR_LOC
When approximating an arc or circle, should the error be placed on the outside or inside of the curve...
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
Definition: layer_ids.h:149
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:60
DIM_TEXT_POSITION
Where to place the text on a dimension.
Definition: pcb_dimension.h:62
@ OUTSIDE
Text appears outside the dimension line (default)
@ MANUAL
Text placement is manually set by the user.
@ INLINE
Text appears in line with the dimension line.
DIM_UNITS_FORMAT
How to display the units in a dimension's text.
Definition: pcb_dimension.h:40
DIM_UNITS_MODE
Used for storing the units selection in the file because EDA_UNITS alone doesn't cut it.
Definition: pcb_dimension.h:72
DIM_TEXT_BORDER
Frame to show around dimension text.
Definition: pcb_dimension.h:83
DIM_PRECISION
Definition: pcb_dimension.h:47
std::optional< VECTOR2I > OPT_VECTOR2I
Definition: seg.h:39
constexpr int delta
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition: typeinfo.h:78
@ PCB_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
Definition: typeinfo.h:105
@ PCB_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
Definition: typeinfo.h:102
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition: typeinfo.h:103
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition: typeinfo.h:101
@ PCB_DIMENSION_T
class PCB_DIMENSION_BASE: abstract dimension meta-type
Definition: typeinfo.h:100
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
Definition: typeinfo.h:104