KiCad PCB EDA Suite
Loading...
Searching...
No Matches
board_item.cpp
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) 2012 Jean-Pierre Charras, [email protected]
5 * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <[email protected]>
6 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22#include <wx/debug.h>
23#include <wx/msgdlg.h>
24#include <i18n_utility.h>
25#include <macros.h>
26#include <board.h>
28#include <lset.h>
29#include <pcb_group.h>
30#include <pcb_generator.h>
31#include <footprint.h>
32#include <font/font.h>
33#include <properties/property.h>
35
36
38{
39 switch ( Type() )
40 {
41 case PCB_FOOTPRINT_T:
42 case PCB_PAD_T:
43 case PCB_SHAPE_T:
45 case PCB_FIELD_T:
46 case PCB_TEXT_T:
47 case PCB_TEXTBOX_T:
48 case PCB_TABLE_T:
49 case PCB_GROUP_T:
50 case PCB_GENERATOR_T:
51 case PCB_TRACE_T:
52 case PCB_VIA_T:
53 case PCB_ARC_T:
54 case PCB_DIMENSION_T:
60 case PCB_ZONE_T:
61 case PCB_BARCODE_T:
62 return true;
63 default:
64 return false;
65 }
66}
67
68
69void BOARD_ITEM::CopyFrom( const BOARD_ITEM* aOther )
70{
71 wxCHECK( aOther, /* void */ );
72 *this = *aOther;
73}
74
75
77{
78 if( Type() == PCB_T )
79 return static_cast<const BOARD*>( this );
80
81 return static_cast<const BOARD*>( findParent( PCB_T ) );
82}
83
84
86{
87 if( Type() == PCB_T )
88 return static_cast<BOARD*>( this );
89
90 return static_cast<BOARD*>( findParent( PCB_T ) );
91}
92
93
95{
96 return static_cast<FOOTPRINT*>( findParent( PCB_FOOTPRINT_T ) );
97}
98
99
100void BOARD_ITEM::SetUuid( const KIID& aUuid )
101{
102 if( m_Uuid == aUuid )
103 return;
104
105 if( BOARD* board = GetBoard(); board && board->IsItemIndexedById( this ) )
106 {
107 board->RebindItemUuid( this, aUuid );
108 return;
109 }
110
111 SetUuidDirect( aUuid );
112}
113
114
115void BOARD_ITEM::SetUuidDirect( const KIID& aUuid )
116{
117 const_cast<KIID&>( m_Uuid ) = aUuid;
118}
119
120
122{
124 {
125 if( group->AsEdaItem()->IsLocked() )
126 return true;
127 }
128
129 if( !GetBoard() || GetBoard()->GetBoardUse() == BOARD_USE::FPHOLDER )
130 return false;
131
132 return m_isLocked;
133}
134
135
137{
138 wxFAIL_MSG( wxString( "GetStroke() not defined by " ) + GetClass() );
139
140 return STROKE_PARAMS( pcbIUScale.mmToIU( DEFAULT_LINE_WIDTH ) );
141}
142
143
145{
146 wxFAIL_MSG( wxString( "SetStroke() not defined by " ) + GetClass() );
147}
148
149
154
155
157{
158 if( const BOARD* board = GetBoard() )
159 return board->GetDesignSettings().m_MaxError;
160
161 return ARC_HIGH_DEF;
162}
163
164
166{
167 const BOARD* board = GetBoard();
168
169 if( board )
170 return board->GetLayerSet().count();
171
172 return 64;
173}
174
175
177{
178 const BOARD* board = GetBoard();
179
180 if( board )
181 return board->GetCopperLayerCount();
182
183 return 32;
184}
185
186
188{
189 const BOARD* board = GetBoard();
190
191 if( board )
192 return board->GetEnabledLayers();
193
194 return LSET::AllLayersMask();
195}
196
197
199{
200 if( const BOARD* board = GetBoard() )
201 return board->GetLayerName( m_layer );
202
203 // If no parent, return standard name
205}
206
207
209{
210 if( ( GetLayerSet() & LSET::SideSpecificMask() ).any() )
211 return true;
212
213 if( const BOARD* board = GetBoard() )
214 {
215 LAYER_T principalLayerType = board->GetLayerType( m_layer );
216
217 if( principalLayerType == LT_FRONT || principalLayerType == LT_BACK )
218 return true;
219 }
220
221 return false;
222}
223
224
226{
227 const BOARD* board = GetBoard();
228 LSET layers = GetLayerSet();
229 int copperLayerCount = MAX_CU_LAYERS;
230
231 if( board )
232 {
233 layers &= board->GetEnabledLayers();
234 copperLayerCount = board->GetCopperLayerCount();
235 }
236
237 LSET copperLayers = layers & LSET::AllCuMask();
238 LSET techLayers = layers & LSET::AllTechMask();
239
240 // Try to be smart and useful. Check all copper first.
241 if( (int) copperLayers.count() == copperLayerCount )
242 return _( "all copper layers" );
243
244 for( LSET testLayers : { copperLayers, techLayers, layers } )
245 {
246 for( int layer = PCBNEW_LAYER_ID_START; layer < PCB_LAYER_ID_COUNT; ++layer )
247 {
248 if( testLayers[ layer ] )
249 {
250 wxString layerInfo = board ? board->GetLayerName( ToLAYER_ID( layer ) )
251 : LayerName( ToLAYER_ID( layer ) );
252
253 if( testLayers.count() > 1 )
254 layerInfo << wxS( " " ) + _( "and others" );
255
256 return layerInfo;
257 }
258 }
259 }
260
261 // No copper, no technicals: no layer
262 return _( "no layers" );
263}
264
265
266std::vector<int> BOARD_ITEM::ViewGetLayers() const
267{
268 // Basic fallback
269 if( IsLocked() )
271
272 return { m_layer };
273}
274
275
277{
279
280 if( parent )
281 parent->Remove( this );
282
283 delete this;
284}
285
286
288{
290}
291
292
294{
295 if( aImage == nullptr )
296 return;
297
298 EDA_ITEM* parent = GetParent();
300 EDA_GROUP* imageGroup = aImage->GetParentGroup();
301 BOARD* board = GetBoard();
302
303 // Evict children from the item-by-id cache before the swap moves them to the
304 // image. The image is typically deleted after the swap (undo/redo, commit revert),
305 // which would leave the cache holding dangling pointers to the destroyed children.
306 if( board )
307 {
308 board->UncacheChildrenById( this );
309 }
310
311 swapData( aImage );
312 SetParent( parent );
313
314 // Group membership is a back-reference, not item data, so keep each side's own.
316 aImage->SetParentGroup( imageGroup );
317
318 if( board )
319 {
320 board->CacheChildrenById( this );
321 }
322}
323
324
325BOARD_ITEM* BOARD_ITEM::Duplicate( bool addToParentGroup, BOARD_COMMIT* aCommit ) const
326{
327 BOARD_ITEM* dupe = static_cast<BOARD_ITEM*>( Clone() );
328 dupe->ResetUuid();
329
330 if( addToParentGroup )
331 {
332 wxCHECK_MSG( aCommit, dupe, "Must supply a commit to update parent group" );
333
334 if( EDA_GROUP* group = dupe->GetParentGroup() )
335 {
336 aCommit->Modify( group->AsEdaItem(), nullptr, RECURSE_MODE::NO_RECURSE );
337 group->AddItem( dupe );
338 }
339 }
340
341 return dupe;
342}
343
344
346 int aClearance, int aError, ERROR_LOC aErrorLoc,
347 bool ignoreLineWidth ) const
348{
349 wxLogDebug( wxT( "%s doesn't implement TransformShapeToPolygon()" ), GetClass() );
350}
351
352
354{
355 if( a->Type() != b->Type() )
356 return a->Type() < b->Type();
357
358 if( a->GetLayerSet() != b->GetLayerSet() )
359 return a->GetLayerSet().Seq() < b->GetLayerSet().Seq();
360
361 if( a->m_Uuid != b->m_Uuid ) // UUIDs *should* always be unique (for valid boards anyway)
362 return a->m_Uuid < b->m_Uuid;
363
364 return a < b; // But just in case; ptrs are guaranteed to be different
365}
366
367
368std::shared_ptr<SHAPE> BOARD_ITEM::GetEffectiveShape( PCB_LAYER_ID aLayer, FLASHING aFlash ) const
369{
370 static std::shared_ptr<SHAPE> shape;
371
373
374 return shape;
375}
376
377
378std::shared_ptr<SHAPE_SEGMENT> BOARD_ITEM::GetEffectiveHoleShape() const
379{
380 static std::shared_ptr<SHAPE_SEGMENT> slot;
381
383
384 return slot;
385}
386
387
389{
390 if( FOOTPRINT* parentFP = GetParentFootprint() )
391 return parentFP->GetTransform().InverseApply( GetPosition() );
392
393 return GetPosition();
394}
395
396
398{
399 if( FOOTPRINT* parentFP = GetParentFootprint() )
400 SetPosition( parentFP->GetTransform().Apply( aPos ) );
401 else
402 SetPosition( aPos );
403}
404
405
406void BOARD_ITEM::Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle )
407{
408 wxMessageBox( wxT( "virtual BOARD_ITEM::Rotate used, should not occur" ), GetClass() );
409}
410
411
412void BOARD_ITEM::Flip( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection )
413{
414 wxMessageBox( wxT( "virtual BOARD_ITEM::Flip used, should not occur" ), GetClass() );
415}
416
417
418void BOARD_ITEM::Mirror( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection )
419{
420 wxMessageBox( wxT( "virtual BOARD_ITEM::Mirror used, should not occur" ), GetClass() );
421}
422
423
425{
426 if( FOOTPRINT* fp = dynamic_cast<FOOTPRINT*>( m_parent ) )
427 return fp->GetReference();
428
429 return m_parent->m_Uuid.AsString();
430}
431
432
433const std::vector<wxString>* BOARD_ITEM::GetEmbeddedFonts()
434{
435 if( BOARD* board = GetBoard() )
436 return board->GetFontFiles();
437
438 return nullptr;
439}
440
441
442static struct BOARD_ITEM_DESC
443{
445 {
447
448 if( layerEnum.Choices().GetCount() == 0 )
449 {
450 layerEnum.Undefined( UNDEFINED_LAYER );
451
452 for( PCB_LAYER_ID layer : LSET::AllLayersMask() )
453 layerEnum.Map( layer, LSET::Name( layer ) );
454 }
455
459
460 propMgr.AddProperty( new PROPERTY<BOARD_ITEM, wxString>( _HKI( "Parent" ),
464
465 auto isNotFootprintHolder =
466 []( INSPECTABLE* aItem ) -> bool
467 {
468 BOARD_ITEM* item = dynamic_cast<BOARD_ITEM*>( aItem );
469 return item && item->GetBoard() && !item->GetBoard()->IsFootprintHolder();
470 };
471
472 propMgr.AddProperty( new PROPERTY<BOARD_ITEM, int>( _HKI( "Position X" ),
475 propMgr.AddProperty( new PROPERTY<BOARD_ITEM, int>( _HKI( "Position Y" ),
480 propMgr.AddProperty( new PROPERTY<BOARD_ITEM, bool>( _HKI( "Locked" ),
482 .SetAvailableFunc( isNotFootprintHolder );
483 }
485
ERROR_LOC
When approximating an arc or circle, should the error be placed on the outside or inside of the curve...
constexpr int ARC_HIGH_DEF
Definition base_units.h:137
constexpr EDA_IU_SCALE pcbIUScale
Definition base_units.h:121
@ FPHOLDER
Definition board.h:364
LAYER_T
The allowed types of layers, same as Specctra DSN spec.
Definition board.h:235
@ LT_FRONT
Definition board.h:242
@ LT_BACK
Definition board.h:243
#define DEFAULT_LINE_WIDTH
static struct BOARD_ITEM_DESC _BOARD_ITEM_DESC
Abstract interface for BOARD_ITEMs capable of storing other items inside.
virtual void Remove(BOARD_ITEM *aItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL)=0
Removes an item from the container.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition board_item.h:81
BOARD_ITEM(BOARD_ITEM *aParent, KICAD_T idtype, PCB_LAYER_ID aLayer=F_Cu)
Definition board_item.h:83
virtual void Mirror(const VECTOR2I &aCentre, FLIP_DIRECTION aFlipDirection)
Mirror this object relative to a given horizontal axis the layer is not changed.
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition board_item.h:265
friend class BOARD
Definition board_item.h:512
void SetUuidDirect(const KIID &aUuid)
Raw UUID assignment.
int GetY() const
Definition board_item.h:122
bool IsGroupableType() const
virtual BOARD_ITEM * Duplicate(bool addToParentGroup, BOARD_COMMIT *aCommit=nullptr) const
Create a copy of this BOARD_ITEM.
void DeleteStructure()
Delete this object after removing from its parent if it has one.
const std::vector< wxString > * GetEmbeddedFonts() override
void SwapItemData(BOARD_ITEM *aImage)
Swap data between aItem and aImage.
void SetLocked(bool aLocked) override
Definition board_item.h:356
virtual STROKE_PARAMS GetStroke() const
virtual int BoardLayerCount() const
Return the total number of layers for the board that this item resides on.
virtual void SetStroke(const STROKE_PARAMS &aStroke)
void SetUuid(const KIID &aUuid)
PCB_LAYER_ID m_layer
Definition board_item.h:508
bool m_isLocked
Definition board_item.h:510
wxString GetParentAsString() const
For "parent" property.
int GetX() const
Definition board_item.h:116
bool IsLocked() const override
virtual void TransformShapeToPolygon(SHAPE_POLY_SET &aBuffer, PCB_LAYER_ID aLayer, int aClearance, int aError, ERROR_LOC aErrorLoc, bool ignoreLineWidth=false) const
Convert the item shape to a closed polygon.
virtual void Rotate(const VECTOR2I &aRotCentre, const EDA_ANGLE &aAngle)
Rotate this object.
void SetX(int aX)
Definition board_item.h:138
void SetY(int aY)
Definition board_item.h:144
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
Definition board_item.h:313
virtual std::vector< int > ViewGetLayers() const override
Return the all the layers within the VIEW the object is painted on.
virtual std::shared_ptr< SHAPE > GetEffectiveShape(PCB_LAYER_ID aLayer=UNDEFINED_LAYER, FLASHING aFlash=FLASHING::DEFAULT) const
Some pad shapes can be complex (rounded/chamfered rectangle), even without considering custom shapes.
virtual const BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
FOOTPRINT * GetParentFootprint() const
VECTOR2I GetFPRelativePosition() const
virtual LSET BoardLayerSet() const
Return the LSET for the board that this item resides on.
virtual LSET GetLayerSet() const
Return a std::bitset of all layers on which the item physically resides.
Definition board_item.h:285
virtual void swapData(BOARD_ITEM *aImage)
const KIFONT::METRICS & GetFontMetrics() const
void SetFPRelativePosition(const VECTOR2I &aPos)
virtual wxString LayerMaskDescribe() const
Return a string (to be shown to the user) describing a layer mask.
virtual void CopyFrom(const BOARD_ITEM *aOther)
void ResetUuid()
Definition board_item.h:245
BOARD_ITEM_CONTAINER * GetParent() const
Definition board_item.h:231
bool IsSideSpecific() const
virtual int BoardCopperLayerCount() const
Return the total number of copper layers for the board that this item resides on.
wxString GetLayerName() const
Return the name of the PCB layer on which the item resides.
int GetMaxError() const
virtual std::shared_ptr< SHAPE_SEGMENT > GetEffectiveHoleShape() const
virtual void Flip(const VECTOR2I &aCentre, FLIP_DIRECTION aFlipDirection)
Flip this object, i.e.
bool IsFootprintHolder() const
Find out if the board is being used to hold a single footprint for editing/viewing.
Definition board.h:402
static wxString GetStandardLayerName(PCB_LAYER_ID aLayerId)
Return an "English Standard" name of a PCB layer when given aLayerNumber.
Definition board.h:991
LSET GetLayerSet() const override
Return a std::bitset of all layers on which the item physically resides.
Definition board.h:770
void UncacheChildrenById(const BOARD_ITEM *aParent)
Definition board.h:1613
int GetCopperLayerCount() const
Definition board.cpp:985
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
Definition board.cpp:793
const LSET & GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
Definition board.cpp:1034
bool IsItemIndexedById(const BOARD_ITEM *aItem) const
Definition board.h:1541
void CacheChildrenById(const BOARD_ITEM *aParent)
Definition board.h:1585
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
Definition commit.h:102
A set of EDA_ITEMs (i.e., without duplicates).
Definition eda_group.h:42
A base class for most all the KiCad significant classes used in schematics and boards.
Definition eda_item.h:96
virtual VECTOR2I GetPosition() const
Definition eda_item.h:282
virtual void SetPosition(const VECTOR2I &aPos)
Definition eda_item.h:283
const KIID m_Uuid
Definition eda_item.h:531
virtual EDA_GROUP * GetParentGroup() const
Definition eda_item.h:114
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:108
virtual void SetParentGroup(EDA_GROUP *aGroup)
Definition eda_item.h:113
virtual EDA_ITEM * Clone() const
Create a duplicate of this item with linked list members set to NULL.
Definition eda_item.cpp:143
virtual void SetParent(EDA_ITEM *aParent)
Definition eda_item.cpp:89
EDA_ITEM * m_parent
Owner.
Definition eda_item.h:543
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:37
EDA_ITEM * findParent(KICAD_T aType) const
Definition eda_item.cpp:73
ENUM_MAP & Map(T aValue, const wxString &aName)
Definition property.h:727
static ENUM_MAP< T > & Instance()
Definition property.h:721
ENUM_MAP & Undefined(T aValue)
Definition property.h:734
wxPGChoices & Choices()
Definition property.h:772
Class that other classes need to inherit from, in order to be inspectable.
Definition inspectable.h:38
static const METRICS & Default()
Definition font.cpp:48
virtual wxString GetClass() const =0
Return the class name.
Definition kiid.h:44
LSET is a set of PCB_LAYER_IDs.
Definition lset.h:37
static const LSET & AllCuMask()
return AllCuMask( MAX_CU_LAYERS );
Definition lset.cpp:604
static const LSET & SideSpecificMask()
Definition lset.cpp:732
LSEQ Seq(const LSEQ &aSequence) const
Return an LSEQ from the union of this LSET and a desired sequence.
Definition lset.cpp:309
static const LSET & AllTechMask()
Return a mask holding all technical layers (no CU layer) on both side.
Definition lset.cpp:672
static const LSET & AllLayersMask()
Definition lset.cpp:637
static wxString Name(PCB_LAYER_ID aLayerId)
Return the fixed name association with aLayerId.
Definition lset.cpp:184
PROPERTY_BASE & SetAvailableFunc(std::function< bool(INSPECTABLE *)> aFunc)
Set a callback function to determine whether an object provides this property.
Definition property.h:262
PROPERTY_BASE & SetIsHiddenFromPropertiesManager(bool aHide=true)
Definition property.h:319
PROPERTY_BASE & SetIsHiddenFromLibraryEditors(bool aIsHidden=true)
Definition property.h:333
Provide class metadata.Helper macro to map type hashes to names.
void InheritsAfter(TYPE_ID aDerived, TYPE_ID aBase)
Declare an inheritance relationship between types.
static PROPERTY_MANAGER & Instance()
PROPERTY_BASE & AddProperty(PROPERTY_BASE *aProperty, const wxString &aGroup=wxEmptyString)
Register a property.
Represent a set of closed polygons.
Simple container to manage line stroke parameters.
A type-safe container of any type.
Definition ki_any.h:92
#define _(s)
@ NO_RECURSE
Definition eda_item.h:50
Some functions to handle hotkeys in KiCad.
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition layer_id.cpp:31
constexpr PCB_LAYER_ID PCBNEW_LAYER_ID_START
Definition layer_ids.h:170
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
Definition layer_ids.h:180
#define MAX_CU_LAYERS
Definition layer_ids.h:172
@ LAYER_LOCKED_ITEM_SHADOW
Shadow layer for locked items.
Definition layer_ids.h:303
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:56
@ UNDEFINED_LAYER
Definition layer_ids.h:57
@ PCB_LAYER_ID_COUNT
Definition layer_ids.h:167
PCB_LAYER_ID ToLAYER_ID(int aLayer)
Definition lset.cpp:750
This file contains miscellaneous commonly used macros and functions.
#define UNIMPLEMENTED_FOR(type)
Definition macros.h:92
FLIP_DIRECTION
Definition mirror.h:23
#define _HKI(x)
Definition page_info.cpp:40
Class to handle a set of BOARD_ITEMs.
#define TYPE_HASH(x)
Definition property.h:74
#define IMPLEMENT_ENUM_TO_WXANY(type)
Definition property.h:826
#define NO_SETTER(owner, type)
Definition property.h:833
@ PT_COORD
Coordinate expressed in distance units (mm/inch)
Definition property.h:65
#define REGISTER_TYPE(x)
bool operator()(const BOARD_ITEM *a, const BOARD_ITEM *b) const
@ PCB_T
Definition typeinfo.h:75
@ PCB_SHAPE_T
class PCB_SHAPE, a segment not on copper layers
Definition typeinfo.h:81
@ 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_GENERATOR_T
class PCB_GENERATOR, generator on a layer
Definition typeinfo.h:84
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
Definition typeinfo.h:90
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition typeinfo.h:97
@ PCB_GROUP_T
class PCB_GROUP, a set of BOARD_ITEMs
Definition typeinfo.h:104
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
Definition typeinfo.h:86
@ PCB_ZONE_T
class ZONE, a copper pour area
Definition typeinfo.h:101
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
Definition typeinfo.h:85
@ PCB_REFERENCE_IMAGE_T
class PCB_REFERENCE_IMAGE, bitmap on a layer
Definition typeinfo.h:82
@ PCB_FIELD_T
class PCB_FIELD, text associated with a footprint property
Definition typeinfo.h:83
@ PCB_BARCODE_T
class PCB_BARCODE, a barcode (graphic item)
Definition typeinfo.h:94
@ PCB_FOOTPRINT_T
class FOOTPRINT, a footprint
Definition typeinfo.h:79
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition typeinfo.h:95
@ PCB_PAD_T
class PAD, a pad in a footprint
Definition typeinfo.h:80
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
Definition typeinfo.h:91
@ PCB_DIMENSION_T
class PCB_DIMENSION_BASE: abstract dimension meta-type
Definition typeinfo.h:93
@ PCB_TABLE_T
class PCB_TABLE, table of PCB_TABLECELLs
Definition typeinfo.h:87
@ PCB_TRACE_T
class PCB_TRACK, a track segment (segment on a copper layer)
Definition typeinfo.h:89
@ 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