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
33enum class DIM_VALUE_MODE : int; // defined in constraints/constraint_builder.h
34
35
38{
39 NO_SUFFIX, // 1234.0
40 BARE_SUFFIX, // 1234.0 mm
41 PAREN_SUFFIX // 1234.0 (mm)
42};
43
44enum class DIM_PRECISION
45{
46 X = 0, // 0
47 X_X, // 0.0
48 X_XX, // 0.00
49 X_XXX, // 0.000
50 X_XXXX, // 0.0000
51 X_XXXXX, // 0.00000
52 V_VV, // 0.00 / 0 / 0.0
53 V_VVV, // 0.000 / 0 / 0.00
54 V_VVVV, // 0.0000 / 0.0 / 0.000
55 V_VVVVV // 0.00000 / 0.00 / 0.0000
56};
57
65
70{
71 INCH, // Do not use IN: it conflicts with a Windows header
75};
76
85
96
117{
118public:
120
121 void Serialize( google::protobuf::Any &aContainer ) const override;
122 bool Deserialize( const google::protobuf::Any &aContainer ) override;
123
129 virtual VECTOR2I GetStart() const;
130 virtual void SetStart( const VECTOR2I& aPoint );
131
132 virtual VECTOR2I GetEnd() const;
133 virtual void SetEnd( const VECTOR2I& aPoint );
134
135 VECTOR2I GetPosition() const override { return GetStart(); }
136 void SetPosition( const VECTOR2I& aPos ) override { SetStart( aPos ); }
137
138 void OnFootprintRescaled( double aRatioX, double aRatioY, double aLinearFactor, const VECTOR2I& aAnchor,
139 const EDA_ANGLE& aParentRotate ) override;
140
141 void OnFootprintTransformed() override;
142
143 const VECTOR2I& GetLibraryStart() const { return m_start; }
144 const VECTOR2I& GetLibraryEnd() const { return m_end; }
145
147 void SetOverrideTextEnabled( bool aOverride ) { m_overrideTextEnabled = aOverride; }
148
149 wxString GetOverrideText() const { return m_valueString; }
150 void SetOverrideText( const wxString& aValue ) { m_valueString = aValue; }
151
152 void ChangeOverrideText( const wxString& aValue )
153 {
155 SetOverrideText( aValue );
156 Update();
157 }
158
161
166 void ChangeValueMode( DIM_VALUE_MODE aMode );
167
172 wxString GetValueFieldText() const;
173
178 void ChangeValueFieldText( const wxString& aText );
179
180 int GetMeasuredValue() const { return m_measuredValue; }
181
182 // KiCad normally calculates the measured value but some importers need to set it.
183 void SetMeasuredValue( int aValue ) { m_measuredValue = aValue; }
184
188 wxString GetValueText() const;
189
197 void Update()
198 {
199 // Calls updateText internally
201 }
202
204 {
206 Update();
207 }
208
209 wxString GetPrefix() const { return m_prefix; }
210 void SetPrefix( const wxString& aPrefix );
211
212 void ChangePrefix( const wxString& aPrefix )
213 {
214 SetPrefix( aPrefix );
215 Update();
216 }
217
218 wxString GetSuffix() const { return m_suffix; }
219 void SetSuffix( const wxString& aSuffix );
220
221 void ChangeSuffix( const wxString& aSuffix )
222 {
223 SetSuffix( aSuffix );
224 Update();
225 }
226
228 void SetArrowDirection( const DIM_ARROW_DIRECTION& aDirection )
229 {
230 m_arrowDirection = aDirection;
231 }
232
234 {
235 SetArrowDirection( aDirection );
236 updateText();
238 }
239
240 EDA_UNITS GetUnits() const { return m_units; }
241 void SetUnits( EDA_UNITS aUnits );
242
244 void SetUnitsMode( DIM_UNITS_MODE aMode );
245
247 {
248 SetUnitsMode( aMode );
249 Update();
250 }
251
252 void SetAutoUnits( bool aAuto = true ) { m_autoUnits = aAuto; }
253
255 void SetUnitsFormat( const DIM_UNITS_FORMAT aFormat ) { m_unitsFormat = aFormat; }
256
258 {
259 SetUnitsFormat( aFormat );
260 Update();
261 }
262
264 void SetPrecision( DIM_PRECISION aPrecision ) { m_precision = aPrecision; }
265
267 {
268 SetPrecision( aPrecision );
269 Update();
270 }
271
272 bool GetSuppressZeroes() const { return m_suppressZeroes; }
273 void SetSuppressZeroes( bool aSuppress ) { m_suppressZeroes = aSuppress; }
274
275 void ChangeSuppressZeroes( bool aSuppress )
276 {
277 SetSuppressZeroes( aSuppress );
278 Update();
279 }
280
281 bool GetKeepTextAligned() const { return m_keepTextAligned; }
282 void SetKeepTextAligned( bool aKeepAligned ) { m_keepTextAligned = aKeepAligned; }
283
284 double GetTextAngleDegreesProp() const { return GetTextAngleDegrees(); }
285 void ChangeTextAngleDegrees( double aDegrees );
286 void ChangeKeepTextAligned( bool aKeepAligned );
287
290
291 int GetArrowLength() const { return m_arrowLength; }
292 void SetArrowLength( int aLength ) { m_arrowLength = aLength; }
293
294 void SetExtensionOffset( int aOffset ) { m_extensionOffset = aOffset; }
295 int GetExtensionOffset() const { return m_extensionOffset; }
296
297 int GetLineThickness() const { return m_lineThickness; }
298 void SetLineThickness( int aWidth ) { m_lineThickness = aWidth; }
299
300 void StyleFromSettings( const BOARD_DESIGN_SETTINGS& settings, bool aCheckSide ) override;
301
305 const std::vector<std::shared_ptr<SHAPE>>& GetShapes() const { return m_shapes; }
306
307 // BOARD_ITEM overrides
308
309 void Move( const VECTOR2I& offset ) override;
310 void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
311 void Flip( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection ) override;
312
322 virtual void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
323
324 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
325
326 bool HitTest( const VECTOR2I& aPosition, int aAccuracy ) const override;
327 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
328 bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const override;
329
330 const BOX2I GetBoundingBox() const override;
331
332 std::shared_ptr<SHAPE> GetEffectiveShape( PCB_LAYER_ID aLayer = UNDEFINED_LAYER,
334 DRC_CONSTRAINT_T aUsage = NULL_CONSTRAINT ) const override;
335
336 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
337
338 const BOX2I ViewBBox() const override;
339
340 std::vector<int> ViewGetLayers() const override;
341
342 double ViewGetLOD( int aLayer, const KIGFX::VIEW* aView ) const override;
343
344 void ClearRenderCache() override;
345
346 double GetCoverageArea( int aTextMargin ) const override;
347
348 void TransformShapeToPolygon( SHAPE_POLY_SET& aBuffer, PCB_LAYER_ID aLayer, int aClearance,
349 int aError, ERROR_LOC aErrorLoc,
350 bool aIgnoreLineWidth = false ) const override;
351
352 double Similarity( const BOARD_ITEM& aOther ) const override;
353
354 bool operator==( const PCB_DIMENSION_BASE& aOther ) const;
355 bool operator==( const BOARD_ITEM& aBoardItem ) const override;
356
357#if defined(DEBUG)
358 virtual void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
359#endif
360
361protected:
362
366 virtual void updateGeometry() = 0;
367
374 virtual void updateText();
375
376 template<typename ShapeType>
377 void addShape( const ShapeType& aShape );
378
387 void drawAnArrow( VECTOR2I aStartPoint, EDA_ANGLE anAngle, int aLength );
388
389 // Value format
391 wxString m_valueString;
392 wxString m_prefix;
393 wxString m_suffix;
400
401 // Geometry
407
408 // Internal
410
413
415 std::vector<std::shared_ptr<SHAPE>> m_shapes;
416
418
419 // a flag to protect against reentrance
420 bool m_busy;
421};
422
423
443
452{
453public:
455
456 // Do not create a copy constructor & operator=.
457 // The ones generated by the compiler are adequate.
458
459 ~PCB_DIM_ALIGNED() = default;
460
461 void CopyFrom( const BOARD_ITEM* aOther ) override;
462 void Serialize( google::protobuf::Any &aContainer ) const override;
463 bool Deserialize( const google::protobuf::Any &aContainer ) override;
464
465 static inline bool ClassOf( const EDA_ITEM* aItem )
466 {
467 return aItem && aItem->Type() == PCB_DIM_ALIGNED_T;
468 }
469
470 EDA_ITEM* Clone() const override;
471
472 void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
473
474 BITMAPS GetMenuImage() const override;
475
476 const VECTOR2I& GetCrossbarStart() const { return m_crossBarStart; }
477
478 const VECTOR2I& GetCrossbarEnd() const { return m_crossBarEnd; }
479
485 void SetHeight( int aHeight ) { m_height = aHeight; }
486 int GetHeight() const { return m_height; }
487
488 void ChangeHeight( int aHeight )
489 {
490 SetHeight( aHeight );
491 Update();
492 }
493
500 void UpdateHeight( const VECTOR2I& aCrossbarStart, const VECTOR2I& aCrossbarEnd );
501
502 void SetExtensionHeight( int aHeight ) { m_extensionHeight = aHeight; }
503 int GetExtensionHeight() const { return m_extensionHeight; }
504
505 void ChangeExtensionHeight( int aHeight )
506 {
507 SetExtensionHeight( aHeight );
508 Update();
509 }
510
516 double GetAngle() const
517 {
518 VECTOR2I delta( GetEnd() - GetStart() );
519
520 return atan2( (double)delta.y, (double)delta.x );
521 }
522
523 wxString GetClass() const override
524 {
525 return wxT( "PCB_DIM_ALIGNED" );
526 }
527
528 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
529
530protected:
531 virtual void swapData( BOARD_ITEM* aImage ) override;
532
533 void updateGeometry() override;
534
535 void updateText() override;
536
537 // Geometry
540
543
544};
545
546
552{
553public:
554 enum class DIR
555 {
556 HORIZONTAL, // Aligned with x-axis
557 VERTICAL // Aligned with y-axis
558 };
559
560 PCB_DIM_ORTHOGONAL( BOARD_ITEM* aParent );
561
563
564 void CopyFrom( const BOARD_ITEM* aOther ) override;
565 void Serialize( google::protobuf::Any &aContainer ) const override;
566 bool Deserialize( const google::protobuf::Any &aContainer ) override;
567
568 static inline bool ClassOf( const EDA_ITEM* aItem )
569 {
570 return aItem && aItem->Type() == PCB_DIM_ORTHOGONAL_T;
571 }
572
573 EDA_ITEM* Clone() const override;
574
575 void Mirror( const VECTOR2I& axis_pos, FLIP_DIRECTION aFlipDirection ) override;
576
577 BITMAPS GetMenuImage() const override;
578
584 void SetOrientation( DIR aOrientation ) { m_orientation = aOrientation; }
585 DIR GetOrientation() const { return m_orientation; }
586
587 wxString GetClass() const override
588 {
589 return wxT( "PCB_DIM_ORTHOGONAL" );
590 }
591 void Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle ) override;
592
593protected:
594 void swapData( BOARD_ITEM* aImage ) override;
595
596 void updateGeometry() override;
597
598 void updateText() override;
599
600private:
601 // Geometry
603
604};
605
606
628{
629public:
630 PCB_DIM_RADIAL( BOARD_ITEM* aParent );
631
632 void CopyFrom( const BOARD_ITEM* aOther ) override;
633 void Serialize( google::protobuf::Any &aContainer ) const override;
634 bool Deserialize( const google::protobuf::Any &aContainer ) override;
635
636 static inline bool ClassOf( const EDA_ITEM* aItem )
637 {
638 return aItem && aItem->Type() == PCB_DIM_RADIAL_T;
639 }
640
641 EDA_ITEM* Clone() const override;
642
643 void SetLeaderLength( int aLength ) { m_leaderLength = aLength; }
644 int GetLeaderLength() const { return m_leaderLength; }
645
646 void ChangeLeaderLength( int aLength )
647 {
648 SetLeaderLength( aLength );
649 Update();
650 }
651
652 // Returns the point (c).
653 VECTOR2I GetKnee() const;
654
655 BITMAPS GetMenuImage() const override;
656
657 wxString GetClass() const override
658 {
659 return wxT( "PCB_DIM_RADIAL" );
660 }
661
662protected:
663 virtual void swapData( BOARD_ITEM* aImage ) override;
664
665 void updateText() override;
666 void updateGeometry() override;
667
668private:
670};
671
672
687{
688public:
689 PCB_DIM_LEADER( BOARD_ITEM* aParent );
690
691 void CopyFrom( const BOARD_ITEM* aOther ) override;
692 void Serialize( google::protobuf::Any &aContainer ) const override;
693 bool Deserialize( const google::protobuf::Any &aContainer ) override;
694
695 static inline bool ClassOf( const EDA_ITEM* aItem )
696 {
697 return aItem && aItem->Type() == PCB_DIM_LEADER_T;
698 }
699
700 EDA_ITEM* Clone() const override;
701
702 BITMAPS GetMenuImage() const override;
703
704 wxString GetClass() const override
705 {
706 return wxT( "PCB_DIM_LEADER" );
707 }
708
709 void SetTextBorder( DIM_TEXT_BORDER aBorder ) { m_textBorder = aBorder; }
711
713 {
714 SetTextBorder( aBorder );
715 Update();
716 }
717
718 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
719
720protected:
721 virtual void swapData( BOARD_ITEM* aImage ) override;
722
723 void updateText() override;
724 void updateGeometry() override;
725
726private:
728};
729
730
738{
739public:
740 PCB_DIM_CENTER( BOARD_ITEM* aParent );
741
742 void CopyFrom( const BOARD_ITEM* aOther ) override;
743 void Serialize( google::protobuf::Any &aContainer ) const override;
744 bool Deserialize( const google::protobuf::Any &aContainer ) override;
745
746 static inline bool ClassOf( const EDA_ITEM* aItem )
747 {
748 return aItem && aItem->Type() == PCB_DIM_CENTER_T;
749 }
750
751 EDA_ITEM* Clone() const override;
752
753 BITMAPS GetMenuImage() const override;
754
755 wxString GetClass() const override
756 {
757 return wxT( "PCB_DIM_CENTER" );
758 }
759
760 const BOX2I GetBoundingBox() const override;
761
762 const BOX2I ViewBBox() const override;
763
764protected:
765 virtual void swapData( BOARD_ITEM* aImage ) override;
766
767 void updateText() override;
768 void updateGeometry() override;
769};
770
771#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:914
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:84
BOARD_ITEM(BOARD_ITEM *aParent, KICAD_T idtype, PCB_LAYER_ID aLayer=F_Cu)
Definition board_item.h:86
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:98
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:110
double GetTextAngleDegrees() const
Definition eda_text.h:185
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition view.h:63
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
Definition richio.h:65
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)
void OnFootprintRescaled(double aRatioX, double aRatioY, double aLinearFactor, const VECTOR2I &aAnchor, const EDA_ANGLE &aParentRotate) override
Apply a parent footprint scale to this item.
wxString GetOverrideText() const
wxString GetSuffix() const
std::vector< std::shared_ptr< SHAPE > > m_shapes
Internal cache of drawn 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.
virtual void SetEnd(const VECTOR2I &aPoint)
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)
VECTOR2I m_start
Start, FP-relative when in a footprint, board absolute otherwise.
DIM_PRECISION m_precision
Number of digits to display after decimal.
virtual void SetStart(const VECTOR2I &aPoint)
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)
std::shared_ptr< SHAPE > GetEffectiveShape(PCB_LAYER_ID aLayer=UNDEFINED_LAYER, FLASHING aFlash=FLASHING::DEFAULT, DRC_CONSTRAINT_T aUsage=NULL_CONSTRAINT) const override
Some pad shapes can be complex (rounded/chamfered rectangle), even without considering custom shapes.
const VECTOR2I & GetLibraryStart() const
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 OnFootprintTransformed() override
Hook for items inside a footprint to refresh after the FP transform changes (translate,...
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
void ChangeValueMode(DIM_VALUE_MODE aMode)
Property panel setter for value mode override text flag lives on dimension length constraint is board...
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_VALUE_MODE GetValueMode() const
Value mode from board state via DimensionValueMode.
DIM_UNITS_FORMAT GetUnitsFormat() const
void SetLineThickness(int aWidth)
void SetArrowLength(int aLength)
DIM_ARROW_DIRECTION GetArrowDirection() const
wxString m_valueString
Displayed value when m_overrideValue = true.
virtual VECTOR2I GetEnd() const
void ChangePrecision(DIM_PRECISION aPrecision)
void SetPrecision(DIM_PRECISION aPrecision)
bool m_overrideTextEnabled
Manually specify the displayed measurement value.
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
double ViewGetLOD(int aLayer, const KIGFX::VIEW *aView) const override
Return the level of detail (LOD) of the item.
void ChangePrefix(const wxString &aPrefix)
wxString m_prefix
String prepended to the value.
const VECTOR2I & GetLibraryEnd() const
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.
virtual VECTOR2I GetStart() const
The dimension's origin is the first feature point for the dimension.
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)
wxString GetValueFieldText() const
Mode aware value for panel driving shows constraint length arbitrary shows override text otherwise sh...
void ChangeSuppressZeroes(bool aSuppress)
int GetArrowLength() const
double GetCoverageArea(int aTextMargin) const override
Return the board area this item covers, used to rank candidates under the cursor so a click on a smal...
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.
void ChangeValueFieldText(const wxString &aText)
Property panel setter for value arbitrary text owned by dimension driving edits board level constrain...
double GetTextAngleDegreesProp() const
bool GetOverrideTextEnabled() const
void SetUnitsMode(DIM_UNITS_MODE aMode)
int m_arrowLength
Length of arrow shapes.
virtual void Mirror(const VECTOR2I &axis_pos, FLIP_DIRECTION aFlipDirection) override
Mirror the dimension relative to a given horizontal axis.
VECTOR2I m_end
End, FP-relative when in a footprint, board absolute otherwise.
void ChangeUnitsMode(DIM_UNITS_MODE aMode)
void SetKeepTextAligned(bool aKeepAligned)
void StyleFromSettings(const BOARD_DESIGN_SETTINGS &settings, bool aCheckSide) override
std::vector< int > ViewGetLayers() const override
Return the all the layers within the VIEW the object is painted on.
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.
DIM_VALUE_MODE
Mode a value bearing dimension value is in Driven mirrors measured geometry Driving forces geometry t...
DRC_CONSTRAINT_T
Definition drc_rule.h:49
@ NULL_CONSTRAINT
Definition drc_rule.h:50
@ NONE
Definition eda_fill.h:42
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:61
static const long long MM
int delta
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition typeinfo.h:70
@ PCB_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
Definition typeinfo.h:98
@ PCB_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
Definition typeinfo.h:95
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition typeinfo.h:96
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition typeinfo.h:94
@ PCB_DIMENSION_T
class PCB_DIMENSION_BASE: abstract dimension meta-type
Definition typeinfo.h:92
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
Definition typeinfo.h:97
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:708