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 INWARD,
85 OUTWARD,
86};
87
92{
93 NONE,
95 CIRCLE,
97};
98
119{
120public:
122
128 virtual const VECTOR2I& GetStart() const { return m_start; }
129 virtual void SetStart( const VECTOR2I& aPoint ) { m_start = aPoint; }
130
131 virtual const VECTOR2I& GetEnd() const { return m_end; }
132 virtual void SetEnd( const VECTOR2I& aPoint ) { m_end = aPoint; }
133
134 VECTOR2I GetPosition() const override { return m_start; }
135 void SetPosition( const VECTOR2I& aPos ) override { m_start = aPos; }
136
138 void SetOverrideTextEnabled( bool aOverride ) { m_overrideTextEnabled = aOverride; }
139
140 wxString GetOverrideText() const { return m_valueString; }
141 void SetOverrideText( const wxString& aValue ) { m_valueString = aValue; }
142
143 void ChangeOverrideText( const wxString& aValue )
144 {
146 SetOverrideText( aValue );
147 Update();
148 }
149
150 int GetMeasuredValue() const { return m_measuredValue; }
151
152 // KiCad normally calculates the measured value but some importers need to set it.
153 void SetMeasuredValue( int aValue ) { m_measuredValue = aValue; }
154
158 wxString GetValueText() const;
159
167 void Update()
168 {
169 // Calls updateText internally
171 }
172
174 {
176 Update();
177 }
178
179 wxString GetPrefix() const { return m_prefix; }
180 void SetPrefix( const wxString& aPrefix );
181
182 void ChangePrefix( const wxString& aPrefix )
183 {
184 SetPrefix( aPrefix );
185 Update();
186 }
187
188 wxString GetSuffix() const { return m_suffix; }
189 void SetSuffix( const wxString& aSuffix );
190
191 void ChangeSuffix( const wxString& aSuffix )
192 {
193 SetSuffix( aSuffix );
194 Update();
195 }
196
198 void SetArrowDirection( const DIM_ARROW_DIRECTION& aDirection )
199 {
200 m_arrowDirection = aDirection;
201 }
202
204 {
205 SetArrowDirection( aDirection );
206 updateText();
208 }
209
210 EDA_UNITS GetUnits() const { return m_units; }
211 void SetUnits( EDA_UNITS aUnits );
212
214 void SetUnitsMode( DIM_UNITS_MODE aMode );
215
217 {
218 SetUnitsMode( aMode );
219 Update();
220 }
221
222 void SetAutoUnits( bool aAuto = true ) { m_autoUnits = aAuto; }
223
225 void SetUnitsFormat( const DIM_UNITS_FORMAT aFormat ) { m_unitsFormat = aFormat; }
226
228 {
229 SetUnitsFormat( aFormat );
230 Update();
231 }
232
234 void SetPrecision( DIM_PRECISION aPrecision ) { m_precision = aPrecision; }
235
237 {
238 SetPrecision( aPrecision );
239 Update();
240 }
241
242 bool GetSuppressZeroes() const { return m_suppressZeroes; }
243 void SetSuppressZeroes( bool aSuppress ) { m_suppressZeroes = aSuppress; }
244
245 void ChangeSuppressZeroes( bool aSuppress )
246 {
247 SetSuppressZeroes( aSuppress );
248 Update();
249 }
250
251 bool GetKeepTextAligned() const { return m_keepTextAligned; }
252 void SetKeepTextAligned( bool aKeepAligned ) { m_keepTextAligned = aKeepAligned; }
253
254 double GetTextAngleDegreesProp() const { return GetTextAngleDegrees(); }
255 void ChangeTextAngleDegrees( double aDegrees );
256 void ChangeKeepTextAligned( bool aKeepAligned );
257
260
261 int GetArrowLength() const { return m_arrowLength; }
262 void SetArrowLength( int aLength ) { m_arrowLength = aLength; }
263
264 void SetExtensionOffset( int aOffset ) { m_extensionOffset = aOffset; }
265 int GetExtensionOffset() const { return m_extensionOffset; }
266
267 int GetLineThickness() const { return m_lineThickness; }
268 void SetLineThickness( int aWidth ) { m_lineThickness = aWidth; }
269
273 const std::vector<std::shared_ptr<SHAPE>>& GetShapes() const { return m_shapes; }
274
275 // BOARD_ITEM overrides
276
277 void Move( const VECTOR2I& offset ) override;
278 void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
279 void Flip( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection ) override;
280
289 virtual void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
290
291 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
292
293 bool HitTest( const VECTOR2I& aPosition, int aAccuracy ) const override;
294 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
295
296 const BOX2I GetBoundingBox() const override;
297
298 std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer,
299 FLASHING aFlash = FLASHING::DEFAULT ) const override;
300
301 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
302
303 const BOX2I ViewBBox() const override;
304
305 void ClearRenderCache() override;
306
307 void TransformShapeToPolygon( SHAPE_POLY_SET& aBuffer, PCB_LAYER_ID aLayer, int aClearance,
308 int aError, ERROR_LOC aErrorLoc,
309 bool aIgnoreLineWidth = false ) const override;
310
311 double Similarity( const BOARD_ITEM& aOther ) const override;
312
313 bool operator==( const PCB_DIMENSION_BASE& aOther ) const;
314 bool operator==( const BOARD_ITEM& aBoardItem ) const override;
315
316#if defined(DEBUG)
317 virtual void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
318#endif
319
320protected:
321
325 virtual void updateGeometry() = 0;
326
333 virtual void updateText();
334
335 template<typename ShapeType>
336 void addShape( const ShapeType& aShape );
337
346 void drawAnArrow( VECTOR2I aStartPoint, EDA_ANGLE anAngle, int aLength );
347
348 // Value format
350 wxString m_valueString;
351 wxString m_prefix;
352 wxString m_suffix;
359
360 // Geometry
366
367 // Internal
371
373 std::vector<std::shared_ptr<SHAPE>> m_shapes;
374
376};
377
378
407{
408public:
410
411 // Do not create a copy constructor & operator=.
412 // The ones generated by the compiler are adequate.
413
414 ~PCB_DIM_ALIGNED() = default;
415
416 static inline bool ClassOf( const EDA_ITEM* aItem )
417 {
418 return aItem && aItem->Type() == PCB_DIM_ALIGNED_T;
419 }
420
421 EDA_ITEM* Clone() const override;
422
423 void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
424
425 BITMAPS GetMenuImage() const override;
426
427 const VECTOR2I& GetCrossbarStart() const { return m_crossBarStart; }
428
429 const VECTOR2I& GetCrossbarEnd() const { return m_crossBarEnd; }
430
436 void SetHeight( int aHeight ) { m_height = aHeight; }
437 int GetHeight() const { return m_height; }
438
439 void ChangeHeight( int aHeight )
440 {
441 SetHeight( aHeight );
442 Update();
443 }
444
450 void UpdateHeight( const VECTOR2I& aCrossbarStart, const VECTOR2I& aCrossbarEnd );
451
452 void SetExtensionHeight( int aHeight ) { m_extensionHeight = aHeight; }
453 int GetExtensionHeight() const { return m_extensionHeight; }
454
455 void ChangeExtensionHeight( int aHeight )
456 {
457 SetExtensionHeight( aHeight );
458 Update();
459 }
460
466 double GetAngle() const
467 {
469
470 return atan2( (double)delta.y, (double)delta.x );
471 }
472
473 wxString GetClass() const override
474 {
475 return wxT( "PCB_DIM_ALIGNED" );
476 }
477
478 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
479
480protected:
481 virtual void swapData( BOARD_ITEM* aImage ) override;
482
483 void updateGeometry() override;
484
485 void updateText() override;
486
487 // Geometry
490
493
494};
495
496
502{
503public:
504 enum class DIR
505 {
506 HORIZONTAL, // Aligned with x-axis
507 VERTICAL // Aligned with y-axis
508 };
509
510 PCB_DIM_ORTHOGONAL( BOARD_ITEM* aParent );
511
513
514 static inline bool ClassOf( const EDA_ITEM* aItem )
515 {
516 return aItem && aItem->Type() == PCB_DIM_ORTHOGONAL_T;
517 }
518
519 EDA_ITEM* Clone() const override;
520
521 void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
522
523 BITMAPS GetMenuImage() const override;
524
530 void SetOrientation( DIR aOrientation ) { m_orientation = aOrientation; }
531 DIR GetOrientation() const { return m_orientation; }
532
533 wxString GetClass() const override
534 {
535 return wxT( "PCB_DIM_ORTHOGONAL" );
536 }
537 void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
538
539protected:
540 void swapData( BOARD_ITEM* aImage ) override;
541
542 void updateGeometry() override;
543
544 void updateText() override;
545
546private:
547 // Geometry
549
550};
551
552
574{
575public:
576 PCB_DIM_RADIAL( BOARD_ITEM* aParent );
577
578 static inline bool ClassOf( const EDA_ITEM* aItem )
579 {
580 return aItem && aItem->Type() == PCB_DIM_RADIAL_T;
581 }
582
583 EDA_ITEM* Clone() const override;
584
585 void SetLeaderLength( int aLength ) { m_leaderLength = aLength; }
586 int GetLeaderLength() const { return m_leaderLength; }
587
588 void ChangeLeaderLength( int aLength )
589 {
590 SetLeaderLength( aLength );
591 Update();
592 }
593
594 // Returns the point (c).
595 VECTOR2I GetKnee() const;
596
597 BITMAPS GetMenuImage() const override;
598
599 wxString GetClass() const override
600 {
601 return wxT( "PCB_DIM_RADIAL" );
602 }
603
604protected:
605 virtual void swapData( BOARD_ITEM* aImage ) override;
606
607 void updateText() override;
608 void updateGeometry() override;
609
610private:
612};
613
614
629{
630public:
631 PCB_DIM_LEADER( BOARD_ITEM* aParent );
632
633 static inline bool ClassOf( const EDA_ITEM* aItem )
634 {
635 return aItem && aItem->Type() == PCB_DIM_LEADER_T;
636 }
637
638 EDA_ITEM* Clone() const override;
639
640 BITMAPS GetMenuImage() const override;
641
642 wxString GetClass() const override
643 {
644 return wxT( "PCB_DIM_LEADER" );
645 }
646
647 void SetTextBorder( DIM_TEXT_BORDER aBorder ) { m_textBorder = aBorder; }
649
651 {
652 SetTextBorder( aBorder );
653 Update();
654 }
655
656 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
657
658protected:
659 virtual void swapData( BOARD_ITEM* aImage ) override;
660
661 void updateText() override;
662 void updateGeometry() override;
663
664private:
666};
667
668
676{
677public:
678 PCB_DIM_CENTER( BOARD_ITEM* aParent );
679
680 static inline bool ClassOf( const EDA_ITEM* aItem )
681 {
682 return aItem && aItem->Type() == PCB_DIM_CENTER_T;
683 }
684
685 EDA_ITEM* Clone() const override;
686
687 BITMAPS GetMenuImage() const override;
688
689 wxString GetClass() const override
690 {
691 return wxT( "PCB_DIM_CENTER" );
692 }
693
694 const BOX2I GetBoundingBox() const override;
695
696 const BOX2I ViewBBox() const override;
697
698protected:
699 virtual void swapData( BOARD_ITEM* aImage ) override;
700
701 void updateGeometry() override;
702};
703
704#endif // DIMENSION_H
ERROR_LOC
When approximating an arc or circle, should the error be placed on the outside or inside of the curve...
Definition: approximation.h:32
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:79
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:89
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:101
double GetTextAngleDegrees() const
Definition: eda_text.h:137
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 Flip(const VECTOR2I &aCentre, FLIP_DIRECTION aFlipDirection) override
Flip this object, i.e.
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 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.
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
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.
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
void ChangeArrowDirection(const DIM_ARROW_DIRECTION &aDirection)
bool GetKeepTextAligned() const
void ChangeTextAngleDegrees(double aDegrees)
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)
bool operator==(const PCB_DIMENSION_BASE &aOther) const
const std::vector< std::shared_ptr< SHAPE > > & GetShapes() const
DIM_UNITS_MODE GetUnitsMode() const
void drawAnArrow(VECTOR2I aStartPoint, EDA_ANGLE anAngle, int aLength)
Draws an arrow and updates the shape container.
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.
DIM_ARROW_DIRECTION GetArrowDirection() const
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.
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
void SetArrowDirection(const DIM_ARROW_DIRECTION &aDirection)
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.
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
DIM_ARROW_DIRECTION m_arrowDirection
direction of dimension arrow.
void ChangeKeepTextAligned(bool aKeepAligned)
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.
double GetTextAngleDegreesProp() const
bool GetOverrideTextEnabled() const
void SetUnitsMode(DIM_UNITS_MODE aMode)
int m_arrowLength
Length of arrow shapes.
virtual const VECTOR2I & GetEnd() const
virtual void Mirror(const VECTOR2I &axis_pos, FLIP_DIRECTION aFlipDirection) override
Mirror the dimension relative to a given horizontal axis.
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 Mirror(const VECTOR2I &axis_pos, FLIP_DIRECTION aFlipDirection) override
Mirror the dimension relative to a given horizontal axis.
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 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 Mirror(const VECTOR2I &axis_pos, FLIP_DIRECTION aFlipDirection) override
Mirror the dimension relative to a given horizontal axis.
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.
A round rectangle shape, based on a rectangle and a radius.
Definition: roundrect.h:36
Represent a set of closed polygons.
EDA_UNITS
Definition: eda_units.h:46
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
Definition: layer_ids.h:147
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:60
FLIP_DIRECTION
Definition: mirror.h:27
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_ARROW_DIRECTION
Used for dimension's arrow.
Definition: pcb_dimension.h:83
DIM_TEXT_BORDER
Frame to show around dimension text.
Definition: pcb_dimension.h:92
DIM_PRECISION
Definition: pcb_dimension.h:47
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