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 The 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, see <https://www.gnu.org/licenses/>.
19 */
20
21#ifndef PCB_DIMENSION_H
22#define PCB_DIMENSION_H
23
24
25#include <board_item.h>
26#include <pcb_text.h>
27#include <geometry/shape.h>
28#include <geometry/circle.h>
29
30class LINE_READER;
31class MSG_PANEL_ITEM;
32
33
36{
37 NO_SUFFIX, // 1234.0
38 BARE_SUFFIX, // 1234.0 mm
39 PAREN_SUFFIX // 1234.0 (mm)
40};
41
42enum class DIM_PRECISION
43{
44 X = 0, // 0
45 X_X, // 0.0
46 X_XX, // 0.00
47 X_XXX, // 0.000
48 X_XXXX, // 0.0000
49 X_XXXXX, // 0.00000
50 V_VV, // 0.00 / 0 / 0.0
51 V_VVV, // 0.000 / 0 / 0.00
52 V_VVVV, // 0.0000 / 0.0 / 0.000
53 V_VVVVV // 0.00000 / 0.00 / 0.0000
54};
55
63
68{
69 INCH, // Do not use IN: it conflicts with a Windows header
73};
74
83
94
115{
116public:
118
119 void Serialize( google::protobuf::Any &aContainer ) const override;
120 bool Deserialize( const google::protobuf::Any &aContainer ) override;
121
127 virtual const VECTOR2I& GetStart() const { return m_start; }
128 virtual void SetStart( const VECTOR2I& aPoint ) { m_start = aPoint; }
129
130 virtual const VECTOR2I& GetEnd() const { return m_end; }
131 virtual void SetEnd( const VECTOR2I& aPoint ) { m_end = aPoint; }
132
133 VECTOR2I GetPosition() const override { return m_start; }
134 void SetPosition( const VECTOR2I& aPos ) override { m_start = aPos; }
135
137 void SetOverrideTextEnabled( bool aOverride ) { m_overrideTextEnabled = aOverride; }
138
139 wxString GetOverrideText() const { return m_valueString; }
140 void SetOverrideText( const wxString& aValue ) { m_valueString = aValue; }
141
142 void ChangeOverrideText( const wxString& aValue )
143 {
145 SetOverrideText( aValue );
146 Update();
147 }
148
149 int GetMeasuredValue() const { return m_measuredValue; }
150
151 // KiCad normally calculates the measured value but some importers need to set it.
152 void SetMeasuredValue( int aValue ) { m_measuredValue = aValue; }
153
157 wxString GetValueText() const;
158
166 void Update()
167 {
168 // Calls updateText internally
170 }
171
173 {
175 Update();
176 }
177
178 wxString GetPrefix() const { return m_prefix; }
179 void SetPrefix( const wxString& aPrefix );
180
181 void ChangePrefix( const wxString& aPrefix )
182 {
183 SetPrefix( aPrefix );
184 Update();
185 }
186
187 wxString GetSuffix() const { return m_suffix; }
188 void SetSuffix( const wxString& aSuffix );
189
190 void ChangeSuffix( const wxString& aSuffix )
191 {
192 SetSuffix( aSuffix );
193 Update();
194 }
195
197 void SetArrowDirection( const DIM_ARROW_DIRECTION& aDirection )
198 {
199 m_arrowDirection = aDirection;
200 }
201
203 {
204 SetArrowDirection( aDirection );
205 updateText();
207 }
208
209 EDA_UNITS GetUnits() const { return m_units; }
210 void SetUnits( EDA_UNITS aUnits );
211
213 void SetUnitsMode( DIM_UNITS_MODE aMode );
214
216 {
217 SetUnitsMode( aMode );
218 Update();
219 }
220
221 void SetAutoUnits( bool aAuto = true ) { m_autoUnits = aAuto; }
222
224 void SetUnitsFormat( const DIM_UNITS_FORMAT aFormat ) { m_unitsFormat = aFormat; }
225
227 {
228 SetUnitsFormat( aFormat );
229 Update();
230 }
231
233 void SetPrecision( DIM_PRECISION aPrecision ) { m_precision = aPrecision; }
234
236 {
237 SetPrecision( aPrecision );
238 Update();
239 }
240
241 bool GetSuppressZeroes() const { return m_suppressZeroes; }
242 void SetSuppressZeroes( bool aSuppress ) { m_suppressZeroes = aSuppress; }
243
244 void ChangeSuppressZeroes( bool aSuppress )
245 {
246 SetSuppressZeroes( aSuppress );
247 Update();
248 }
249
250 bool GetKeepTextAligned() const { return m_keepTextAligned; }
251 void SetKeepTextAligned( bool aKeepAligned ) { m_keepTextAligned = aKeepAligned; }
252
253 double GetTextAngleDegreesProp() const { return GetTextAngleDegrees(); }
254 void ChangeTextAngleDegrees( double aDegrees );
255 void ChangeKeepTextAligned( bool aKeepAligned );
256
259
260 int GetArrowLength() const { return m_arrowLength; }
261 void SetArrowLength( int aLength ) { m_arrowLength = aLength; }
262
263 void SetExtensionOffset( int aOffset ) { m_extensionOffset = aOffset; }
264 int GetExtensionOffset() const { return m_extensionOffset; }
265
266 int GetLineThickness() const { return m_lineThickness; }
267 void SetLineThickness( int aWidth ) { m_lineThickness = aWidth; }
268
269 void StyleFromSettings( const BOARD_DESIGN_SETTINGS& settings, bool aCheckSide ) override;
270
274 const std::vector<std::shared_ptr<SHAPE>>& GetShapes() const { return m_shapes; }
275
276 // BOARD_ITEM overrides
277
278 void Move( const VECTOR2I& offset ) override;
279 void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
280 void Flip( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection ) override;
281
290 virtual void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
291
292 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
293
294 bool HitTest( const VECTOR2I& aPosition, int aAccuracy ) const override;
295 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
296 bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const override;
297
298 const BOX2I GetBoundingBox() const override;
299
300 std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER,
301 FLASHING aFlash = FLASHING::DEFAULT ) const override;
302
303 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
304
305 const BOX2I ViewBBox() const override;
306
307 void ClearRenderCache() override;
308
309 void TransformShapeToPolygon( SHAPE_POLY_SET& aBuffer, PCB_LAYER_ID aLayer, int aClearance,
310 int aError, ERROR_LOC aErrorLoc,
311 bool aIgnoreLineWidth = false ) const override;
312
313 double Similarity( const BOARD_ITEM& aOther ) const override;
314
315 bool operator==( const PCB_DIMENSION_BASE& aOther ) const;
316 bool operator==( const BOARD_ITEM& aBoardItem ) const override;
317
318#if defined(DEBUG)
319 virtual void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
320#endif
321
322protected:
323
327 virtual void updateGeometry() = 0;
328
335 virtual void updateText();
336
337 template<typename ShapeType>
338 void addShape( const ShapeType& aShape );
339
348 void drawAnArrow( VECTOR2I aStartPoint, EDA_ANGLE anAngle, int aLength );
349
350 // Value format
352 wxString m_valueString;
353 wxString m_prefix;
354 wxString m_suffix;
361
362 // Geometry
368
369 // Internal
373
375 std::vector<std::shared_ptr<SHAPE>> m_shapes;
376
378
379 // a flag to protect against reentrance
380 bool m_busy;
381};
382
383
403
412{
413public:
415
416 // Do not create a copy constructor & operator=.
417 // The ones generated by the compiler are adequate.
418
419 ~PCB_DIM_ALIGNED() = default;
420
421 void CopyFrom( const BOARD_ITEM* aOther ) override;
422 void Serialize( google::protobuf::Any &aContainer ) const override;
423 bool Deserialize( const google::protobuf::Any &aContainer ) override;
424
425 static inline bool ClassOf( const EDA_ITEM* aItem )
426 {
427 return aItem && aItem->Type() == PCB_DIM_ALIGNED_T;
428 }
429
430 EDA_ITEM* Clone() const override;
431
432 void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
433
434 BITMAPS GetMenuImage() const override;
435
436 const VECTOR2I& GetCrossbarStart() const { return m_crossBarStart; }
437
438 const VECTOR2I& GetCrossbarEnd() const { return m_crossBarEnd; }
439
445 void SetHeight( int aHeight ) { m_height = aHeight; }
446 int GetHeight() const { return m_height; }
447
448 void ChangeHeight( int aHeight )
449 {
450 SetHeight( aHeight );
451 Update();
452 }
453
459 void UpdateHeight( const VECTOR2I& aCrossbarStart, const VECTOR2I& aCrossbarEnd );
460
461 void SetExtensionHeight( int aHeight ) { m_extensionHeight = aHeight; }
462 int GetExtensionHeight() const { return m_extensionHeight; }
463
464 void ChangeExtensionHeight( int aHeight )
465 {
466 SetExtensionHeight( aHeight );
467 Update();
468 }
469
475 double GetAngle() const
476 {
478
479 return atan2( (double)delta.y, (double)delta.x );
480 }
481
482 wxString GetClass() const override
483 {
484 return wxT( "PCB_DIM_ALIGNED" );
485 }
486
487 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
488
489protected:
490 virtual void swapData( BOARD_ITEM* aImage ) override;
491
492 void updateGeometry() override;
493
494 void updateText() override;
495
496 // Geometry
499
502
503};
504
505
511{
512public:
513 enum class DIR
514 {
515 HORIZONTAL, // Aligned with x-axis
516 VERTICAL // Aligned with y-axis
517 };
518
519 PCB_DIM_ORTHOGONAL( BOARD_ITEM* aParent );
520
522
523 void CopyFrom( const BOARD_ITEM* aOther ) override;
524 void Serialize( google::protobuf::Any &aContainer ) const override;
525 bool Deserialize( const google::protobuf::Any &aContainer ) override;
526
527 static inline bool ClassOf( const EDA_ITEM* aItem )
528 {
529 return aItem && aItem->Type() == PCB_DIM_ORTHOGONAL_T;
530 }
531
532 EDA_ITEM* Clone() const override;
533
534 void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
535
536 BITMAPS GetMenuImage() const override;
537
543 void SetOrientation( DIR aOrientation ) { m_orientation = aOrientation; }
544 DIR GetOrientation() const { return m_orientation; }
545
546 wxString GetClass() const override
547 {
548 return wxT( "PCB_DIM_ORTHOGONAL" );
549 }
550 void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
551
552protected:
553 void swapData( BOARD_ITEM* aImage ) override;
554
555 void updateGeometry() override;
556
557 void updateText() override;
558
559private:
560 // Geometry
562
563};
564
565
587{
588public:
589 PCB_DIM_RADIAL( BOARD_ITEM* aParent );
590
591 void CopyFrom( const BOARD_ITEM* aOther ) override;
592 void Serialize( google::protobuf::Any &aContainer ) const override;
593 bool Deserialize( const google::protobuf::Any &aContainer ) override;
594
595 static inline bool ClassOf( const EDA_ITEM* aItem )
596 {
597 return aItem && aItem->Type() == PCB_DIM_RADIAL_T;
598 }
599
600 EDA_ITEM* Clone() const override;
601
602 void SetLeaderLength( int aLength ) { m_leaderLength = aLength; }
603 int GetLeaderLength() const { return m_leaderLength; }
604
605 void ChangeLeaderLength( int aLength )
606 {
607 SetLeaderLength( aLength );
608 Update();
609 }
610
611 // Returns the point (c).
612 VECTOR2I GetKnee() const;
613
614 BITMAPS GetMenuImage() const override;
615
616 wxString GetClass() const override
617 {
618 return wxT( "PCB_DIM_RADIAL" );
619 }
620
621protected:
622 virtual void swapData( BOARD_ITEM* aImage ) override;
623
624 void updateText() override;
625 void updateGeometry() override;
626
627private:
629};
630
631
646{
647public:
648 PCB_DIM_LEADER( BOARD_ITEM* aParent );
649
650 void CopyFrom( const BOARD_ITEM* aOther ) override;
651 void Serialize( google::protobuf::Any &aContainer ) const override;
652 bool Deserialize( const google::protobuf::Any &aContainer ) override;
653
654 static inline bool ClassOf( const EDA_ITEM* aItem )
655 {
656 return aItem && aItem->Type() == PCB_DIM_LEADER_T;
657 }
658
659 EDA_ITEM* Clone() const override;
660
661 BITMAPS GetMenuImage() const override;
662
663 wxString GetClass() const override
664 {
665 return wxT( "PCB_DIM_LEADER" );
666 }
667
668 void SetTextBorder( DIM_TEXT_BORDER aBorder ) { m_textBorder = aBorder; }
670
672 {
673 SetTextBorder( aBorder );
674 Update();
675 }
676
677 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
678
679protected:
680 virtual void swapData( BOARD_ITEM* aImage ) override;
681
682 void updateText() override;
683 void updateGeometry() override;
684
685private:
687};
688
689
697{
698public:
699 PCB_DIM_CENTER( BOARD_ITEM* aParent );
700
701 void CopyFrom( const BOARD_ITEM* aOther ) override;
702 void Serialize( google::protobuf::Any &aContainer ) const override;
703 bool Deserialize( const google::protobuf::Any &aContainer ) override;
704
705 static inline bool ClassOf( const EDA_ITEM* aItem )
706 {
707 return aItem && aItem->Type() == PCB_DIM_CENTER_T;
708 }
709
710 EDA_ITEM* Clone() const override;
711
712 BITMAPS GetMenuImage() const override;
713
714 wxString GetClass() const override
715 {
716 return wxT( "PCB_DIM_CENTER" );
717 }
718
719 const BOX2I GetBoundingBox() const override;
720
721 const BOX2I ViewBBox() const override;
722
723protected:
724 virtual void swapData( BOARD_ITEM* aImage ) override;
725
726 void updateText() override;
727 void updateGeometry() override;
728};
729
730#endif // DIMENSION_H
ERROR_LOC
When approximating an arc or circle, should the error be placed on the outside or inside of the curve...
BITMAPS
A list of all bitmap identifiers.
BOX2< VECTOR2I > BOX2I
Definition box2.h:918
Container for design settings for a BOARD object.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition board_item.h:80
BOARD_ITEM(BOARD_ITEM *aParent, KICAD_T idtype, PCB_LAYER_ID aLayer=F_Cu)
Definition board_item.h:82
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:96
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:108
double GetTextAngleDegrees() const
Definition eda_text.h:175
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
Definition richio.h:62
EDA_MSG_PANEL items for displaying messages.
Definition msgpanel.h:50
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.
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
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.
void addShape(const ShapeType &aShape)
std::shared_ptr< SHAPE > GetEffectiveShape(PCB_LAYER_ID aLayer=UNDEFINED_LAYER, FLASHING aFlash=FLASHING::DEFAULT) const override
Some pad shapes can be complex (rounded/chamfered rectangle), even without considering custom shapes.
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
PCB_DIMENSION_BASE(BOARD_ITEM *aParent, KICAD_T aType=PCB_DIMENSION_T)
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.
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
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)
void StyleFromSettings(const BOARD_DESIGN_SETTINGS &settings, bool aCheckSide) override
VECTOR2I GetPosition() const override
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.
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
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 Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
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 CopyFrom(const BOARD_ITEM *aOther) override
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.
PCB_DIM_ALIGNED(BOARD_ITEM *aParent, KICAD_T aType=PCB_DIM_ALIGNED_T)
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.
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.
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
void CopyFrom(const BOARD_ITEM *aOther) override
virtual void swapData(BOARD_ITEM *aImage) override
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
PCB_DIM_CENTER(BOARD_ITEM *aParent)
static bool ClassOf(const EDA_ITEM *aItem)
void updateText() override
Update the text field value from the current geometry (called by updateGeometry normally).
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
void CopyFrom(const BOARD_ITEM *aOther) override
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.
PCB_DIM_LEADER(BOARD_ITEM *aParent)
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
void ChangeTextBorder(DIM_TEXT_BORDER aBorder)
wxString GetClass() const override
Return the class name.
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
void swapData(BOARD_ITEM *aImage) override
wxString GetClass() const override
Return the class name.
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
static bool ClassOf(const EDA_ITEM *aItem)
void updateText() override
Update the text field value from the current geometry (called by updateGeometry normally).
void CopyFrom(const BOARD_ITEM *aOther) override
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
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
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
PCB_DIM_ORTHOGONAL(BOARD_ITEM *aParent)
int GetLeaderLength() const
PCB_DIM_RADIAL(BOARD_ITEM *aParent)
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 CopyFrom(const BOARD_ITEM *aOther) override
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
void updateGeometry() override
Update the cached geometry of the dimension after changing any of its properties.
void ChangeLeaderLength(int aLength)
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
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.
PCB_TEXT(BOARD_ITEM *parent, KICAD_T idtype=PCB_TEXT_T)
Definition pcb_text.cpp:49
A round rectangle shape, based on a rectangle and a radius.
Definition roundrect.h:32
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
Represent a set of closed polygons.
@ NONE
Definition eda_shape.h:72
EDA_UNITS
Definition eda_units.h:44
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
Definition layer_ids.h:180
@ DEFAULT
Flashing follows connectivity.
Definition layer_ids.h:181
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:56
@ UNDEFINED_LAYER
Definition layer_ids.h:57
FLIP_DIRECTION
Definition mirror.h:23
DIM_TEXT_POSITION
Where to place the text on a dimension.
@ 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.
DIM_UNITS_MODE
Used for storing the units selection in the file because EDA_UNITS alone doesn't cut it.
DIM_ARROW_DIRECTION
Used for dimension's arrow.
DIM_TEXT_BORDER
Frame to show around dimension text.
DIM_PRECISION
@ INCH
Definition rs274x.cpp:58
static const long long MM
int delta
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition typeinfo.h:71
@ PCB_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
Definition typeinfo.h:99
@ PCB_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
Definition typeinfo.h:96
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition typeinfo.h:97
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition typeinfo.h:95
@ PCB_DIMENSION_T
class PCB_DIMENSION_BASE: abstract dimension meta-type
Definition typeinfo.h:93
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
Definition typeinfo.h:98
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683