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, you may find one here:
20 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21 * or you may search the http://www.gnu.org website for the version 2 license,
22 * or you may write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
26#include <pybind11/pybind11.h>
27
28#include <wx/debug.h>
29#include <wx/msgdlg.h>
30#include <i18n_utility.h>
31#include <macros.h>
32#include <board.h>
34#include <lset.h>
35#include <pcb_group.h>
36#include <pcb_generator.h>
37#include <footprint.h>
38#include <font/font.h>
39
40
42{
43 switch ( Type() )
44 {
45 case PCB_FOOTPRINT_T:
46 case PCB_PAD_T:
47 case PCB_SHAPE_T:
49 case PCB_FIELD_T:
50 case PCB_TEXT_T:
51 case PCB_TEXTBOX_T:
52 case PCB_TABLE_T:
53 case PCB_GROUP_T:
54 case PCB_GENERATOR_T:
55 case PCB_TRACE_T:
56 case PCB_VIA_T:
57 case PCB_ARC_T:
58 case PCB_DIMENSION_T:
64 case PCB_ZONE_T:
65 return true;
66 default:
67 return false;
68 }
69}
70
71
72void BOARD_ITEM::CopyFrom( const BOARD_ITEM* aOther )
73{
74 wxCHECK( aOther, /* void */ );
75 *this = *aOther;
76}
77
78
80{
81 if( Type() == PCB_T )
82 return static_cast<const BOARD*>( this );
83
84 return static_cast<const BOARD*>( findParent( PCB_T ) );
85}
86
87
89{
90 if( Type() == PCB_T )
91 return static_cast<BOARD*>( this );
92
93 return static_cast<BOARD*>( findParent( PCB_T ) );
94}
95
96
98{
99 return static_cast<FOOTPRINT*>( findParent( PCB_FOOTPRINT_T ) );
100}
101
102
104{
106 {
107 if( group->AsEdaItem()->IsLocked() )
108 return true;
109 }
110
111 if( !GetBoard() || GetBoard()->GetBoardUse() == BOARD_USE::FPHOLDER )
112 return false;
113
114 return m_isLocked;
115}
116
117
119{
120 wxFAIL_MSG( wxString( "GetStroke() not defined by " ) + GetClass() );
121
123}
124
125
127{
128 wxFAIL_MSG( wxString( "SetStroke() not defined by " ) + GetClass() );
129}
130
131
133{
135}
136
137
139{
140 if( const BOARD* board = GetBoard() )
141 return board->GetDesignSettings().m_MaxError;
142
143 return ARC_HIGH_DEF;
144}
145
146
148{
149 const BOARD* board = GetBoard();
150
151 if( board )
152 return board->GetLayerSet().count();
153
154 return 64;
155}
156
157
159{
160 const BOARD* board = GetBoard();
161
162 if( board )
163 return board->GetCopperLayerCount();
164
165 return 32;
166}
167
168
170{
171 const BOARD* board = GetBoard();
172
173 if( board )
174 return board->GetEnabledLayers();
175
176 return LSET::AllLayersMask();
177}
178
179
181{
182 if( const BOARD* board = GetBoard() )
183 return board->GetLayerName( m_layer );
184
185 // If no parent, return standard name
187}
188
189
191{
192 if( ( GetLayerSet() & LSET::SideSpecificMask() ).any() )
193 return true;
194
195 if( const BOARD* board = GetBoard() )
196 {
197 LAYER_T principalLayerType = board->GetLayerType( m_layer );
198
199 if( principalLayerType == LT_FRONT || principalLayerType == LT_BACK )
200 return true;
201 }
202
203 return false;
204}
205
206
208{
209 const BOARD* board = GetBoard();
210 LSET layers = GetLayerSet();
211
212 if( board )
213 layers &= board->GetEnabledLayers();
214
215 LSET copperLayers = layers & LSET::AllCuMask();
216 LSET techLayers = layers & LSET::AllTechMask();
217
218 // Try to be smart and useful. Check all copper first.
219 if( (int) copperLayers.count() == board->GetCopperLayerCount() )
220 return _( "all copper layers" );
221
222 for( LSET testLayers : { copperLayers, techLayers, layers } )
223 {
224 for( int bit = PCBNEW_LAYER_ID_START; bit < PCB_LAYER_ID_COUNT; ++bit )
225 {
226 if( testLayers[ bit ] )
227 {
228 wxString layerInfo = board->GetLayerName( static_cast<PCB_LAYER_ID>( bit ) );
229
230 if( testLayers.count() > 1 )
231 layerInfo << wxS( " " ) + _( "and others" );
232
233 return layerInfo;
234 }
235 }
236 }
237
238 // No copper, no technicals: no layer
239 return _( "no layers" );
240}
241
242
243std::vector<int> BOARD_ITEM::ViewGetLayers() const
244{
245 // Basic fallback
246 if( IsLocked() )
248
249 return { m_layer };
250}
251
252
254{
256
257 if( parent )
258 parent->Remove( this );
259
260 delete this;
261}
262
263
265{
267}
268
269
271{
272 if( aImage == nullptr )
273 return;
274
275 EDA_ITEM* parent = GetParent();
276
277 swapData( aImage );
278
279 SetParent( parent );
280}
281
282
283BOARD_ITEM* BOARD_ITEM::Duplicate( bool addToParentGroup, BOARD_COMMIT* aCommit ) const
284{
285 BOARD_ITEM* dupe = static_cast<BOARD_ITEM*>( Clone() );
286 const_cast<KIID&>( dupe->m_Uuid ) = KIID();
287
288 if( addToParentGroup )
289 {
290 wxCHECK_MSG( aCommit, dupe, "Must supply a commit to update parent group" );
291
292 if( EDA_GROUP* group = dupe->GetParentGroup() )
293 {
294 aCommit->Modify( group->AsEdaItem(), nullptr, RECURSE_MODE::NO_RECURSE );
295 group->AddItem( dupe );
296 }
297 }
298
299 return dupe;
300}
301
302
304 int aClearance, int aError, ERROR_LOC aErrorLoc,
305 bool ignoreLineWidth ) const
306{
307 wxFAIL_MSG( wxString::Format( wxT( "%s doesn't implement TransformShapeToPolygon()" ), GetClass() ) );
308};
309
310
312{
313 if( a->Type() != b->Type() )
314 return a->Type() < b->Type();
315
316 if( a->GetLayerSet() != b->GetLayerSet() )
317 return a->GetLayerSet().Seq() < b->GetLayerSet().Seq();
318
319 if( a->m_Uuid != b->m_Uuid ) // UUIDs *should* always be unique (for valid boards anyway)
320 return a->m_Uuid < b->m_Uuid;
321
322 return a < b; // But just in case; ptrs are guaranteed to be different
323}
324
325
326std::shared_ptr<SHAPE> BOARD_ITEM::GetEffectiveShape( PCB_LAYER_ID aLayer, FLASHING aFlash ) const
327{
328 static std::shared_ptr<SHAPE> shape;
329
331
332 return shape;
333}
334
335
336std::shared_ptr<SHAPE_SEGMENT> BOARD_ITEM::GetEffectiveHoleShape() const
337{
338 static std::shared_ptr<SHAPE_SEGMENT> slot;
339
341
342 return slot;
343}
344
345
347{
348 VECTOR2I pos = GetPosition();
349
350 if( FOOTPRINT* parentFP = GetParentFootprint() )
351 {
352 pos -= parentFP->GetPosition();
353 RotatePoint( pos, -parentFP->GetOrientation() );
354 }
355
356 return pos;
357}
358
359
361{
362 VECTOR2I pos( aPos );
363
364 if( FOOTPRINT* parentFP = GetParentFootprint() )
365 {
366 RotatePoint( pos, parentFP->GetOrientation() );
367 pos += parentFP->GetPosition();
368 }
369
370 SetPosition( pos );
371}
372
373
374void BOARD_ITEM::Rotate( const VECTOR2I& aRotCentre, const EDA_ANGLE& aAngle )
375{
376 wxMessageBox( wxT( "virtual BOARD_ITEM::Rotate used, should not occur" ), GetClass() );
377}
378
379
380void BOARD_ITEM::Flip( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection )
381{
382 wxMessageBox( wxT( "virtual BOARD_ITEM::Flip used, should not occur" ), GetClass() );
383}
384
385
386void BOARD_ITEM::Mirror( const VECTOR2I& aCentre, FLIP_DIRECTION aFlipDirection )
387{
388 wxMessageBox( wxT( "virtual BOARD_ITEM::Mirror used, should not occur" ), GetClass() );
389}
390
391
393{
394 if( FOOTPRINT* fp = dynamic_cast<FOOTPRINT*>( m_parent ) )
395 return fp->GetReference();
396
397 return m_parent->m_Uuid.AsString();
398}
399
400
401const std::vector<wxString>* BOARD_ITEM::GetEmbeddedFonts()
402{
403 if( BOARD* board = GetBoard() )
404 return board->GetFontFiles();
405
406 return nullptr;
407}
408
409
410static struct BOARD_ITEM_DESC
411{
413 {
415
416 if( layerEnum.Choices().GetCount() == 0 )
417 {
418 layerEnum.Undefined( UNDEFINED_LAYER );
419
420 for( PCB_LAYER_ID layer : LSET::AllLayersMask() )
421 layerEnum.Map( layer, LSET::Name( layer ) );
422 }
423
427
428 propMgr.AddProperty( new PROPERTY<BOARD_ITEM, wxString>( _HKI( "Parent" ),
432
433 propMgr.AddProperty( new PROPERTY<BOARD_ITEM, int>( _HKI( "Position X" ),
434 &BOARD_ITEM::SetX, &BOARD_ITEM::GetX, PROPERTY_DISPLAY::PT_COORD,
436 propMgr.AddProperty( new PROPERTY<BOARD_ITEM, int>( _HKI( "Position Y" ),
437 &BOARD_ITEM::SetY, &BOARD_ITEM::GetY, PROPERTY_DISPLAY::PT_COORD,
441 propMgr.AddProperty( new PROPERTY<BOARD_ITEM, bool>( _HKI( "Locked" ),
444 [=]( INSPECTABLE* aItem ) -> bool
445 {
446 BOARD_ITEM* item = dynamic_cast<BOARD_ITEM*>( aItem );
447 return item && item->GetBoard() && !item->GetBoard()->IsFootprintHolder();
448 } );
449 }
451
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
constexpr int ARC_HIGH_DEF
Definition: base_units.h:129
constexpr EDA_IU_SCALE pcbIUScale
Definition: base_units.h:112
LAYER_T
The allowed types of layers, same as Specctra DSN spec.
Definition: board.h:180
@ LT_FRONT
Definition: board.h:187
@ LT_BACK
Definition: board.h:188
#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:79
virtual void Mirror(const VECTOR2I &aCentre, FLIP_DIRECTION aFlipDirection)
Mirror this object relative to a given horizontal axis the layer is not changed.
Definition: board_item.cpp:386
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:232
int GetY() const
Definition: board_item.h:101
bool IsGroupableType() const
Definition: board_item.cpp:41
virtual BOARD_ITEM * Duplicate(bool addToParentGroup, BOARD_COMMIT *aCommit=nullptr) const
Create a copy of this BOARD_ITEM.
Definition: board_item.cpp:283
void DeleteStructure()
Delete this object after removing from its parent if it has one.
Definition: board_item.cpp:253
const std::vector< wxString > * GetEmbeddedFonts() override
Definition: board_item.cpp:401
void SwapItemData(BOARD_ITEM *aImage)
Swap data between aItem and aImage.
Definition: board_item.cpp:270
void SetLocked(bool aLocked) override
Definition: board_item.h:323
virtual STROKE_PARAMS GetStroke() const
Definition: board_item.cpp:118
virtual int BoardLayerCount() const
Return the total number of layers for the board that this item resides on.
Definition: board_item.cpp:147
virtual void SetStroke(const STROKE_PARAMS &aStroke)
Definition: board_item.cpp:126
PCB_LAYER_ID m_layer
Definition: board_item.h:453
bool m_isLocked
Definition: board_item.h:456
wxString GetParentAsString() const
For "parent" property.
Definition: board_item.cpp:392
int GetX() const
Definition: board_item.h:95
bool IsLocked() const override
Definition: board_item.cpp:103
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.
Definition: board_item.cpp:303
virtual void Rotate(const VECTOR2I &aRotCentre, const EDA_ANGLE &aAngle)
Rotate this object.
Definition: board_item.cpp:374
void SetX(int aX)
Definition: board_item.h:117
void SetY(int aY)
Definition: board_item.h:123
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
Definition: board_item.h:280
virtual std::vector< int > ViewGetLayers() const override
Return the all the layers within the VIEW the object is painted on.
Definition: board_item.cpp:243
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.
Definition: board_item.cpp:326
virtual const BOARD * GetBoard() const
Return the BOARD in which this BOARD_ITEM resides, or NULL if none.
Definition: board_item.cpp:79
FOOTPRINT * GetParentFootprint() const
Definition: board_item.cpp:97
VECTOR2I GetFPRelativePosition() const
Definition: board_item.cpp:346
virtual LSET BoardLayerSet() const
Return the LSET for the board that this item resides on.
Definition: board_item.cpp:169
virtual LSET GetLayerSet() const
Return a std::bitset of all layers on which the item physically resides.
Definition: board_item.h:252
virtual void swapData(BOARD_ITEM *aImage)
Definition: board_item.cpp:264
const KIFONT::METRICS & GetFontMetrics() const
Definition: board_item.cpp:132
void SetFPRelativePosition(const VECTOR2I &aPos)
Definition: board_item.cpp:360
virtual void CopyFrom(const BOARD_ITEM *aOther)
Definition: board_item.cpp:72
BOARD_ITEM_CONTAINER * GetParent() const
Definition: board_item.h:210
bool IsSideSpecific() const
Definition: board_item.cpp:190
virtual int BoardCopperLayerCount() const
Return the total number of copper layers for the board that this item resides on.
Definition: board_item.cpp:158
virtual wxString layerMaskDescribe() const
Return a string (to be shown to the user) describing a layer mask.
Definition: board_item.cpp:207
wxString GetLayerName() const
Return the name of the PCB layer on which the item resides.
Definition: board_item.cpp:180
int GetMaxError() const
Definition: board_item.cpp:138
virtual std::shared_ptr< SHAPE_SEGMENT > GetEffectiveHoleShape() const
Definition: board_item.cpp:336
virtual void Flip(const VECTOR2I &aCentre, FLIP_DIRECTION aFlipDirection)
Flip this object, i.e.
Definition: board_item.cpp:380
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:317
bool IsFootprintHolder() const
Find out if the board is being used to hold a single footprint for editing/viewing.
Definition: board.h:347
static wxString GetStandardLayerName(PCB_LAYER_ID aLayerId)
Return an "English Standard" name of a PCB layer when given aLayerNumber.
Definition: board.h:839
LSET GetLayerSet() const override
Return a std::bitset of all layers on which the item physically resides.
Definition: board.h:639
int GetCopperLayerCount() const
Definition: board.cpp:859
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
Definition: board.cpp:680
const LSET & GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
Definition: board.cpp:907
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:107
A set of EDA_ITEMs (i.e., without duplicates).
Definition: eda_group.h:46
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:98
virtual VECTOR2I GetPosition() const
Definition: eda_item.h:272
virtual void SetPosition(const VECTOR2I &aPos)
Definition: eda_item.h:273
const KIID m_Uuid
Definition: eda_item.h:516
virtual EDA_GROUP * GetParentGroup() const
Definition: eda_item.h:116
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:110
virtual void SetParent(EDA_ITEM *aParent)
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:118
EDA_ITEM * m_parent
Owner.
Definition: eda_item.h:528
EDA_ITEM * findParent(KICAD_T aType) const
Definition: eda_item.cpp:75
ENUM_MAP & Map(T aValue, const wxString &aName)
Definition: property.h:703
static ENUM_MAP< T > & Instance()
Definition: property.h:697
ENUM_MAP & Undefined(T aValue)
Definition: property.h:710
wxPGChoices & Choices()
Definition: property.h:746
Class that other classes need to inherit from, in order to be inspectable.
Definition: inspectable.h:37
static const METRICS & Default()
Definition: font.cpp:52
virtual wxString GetClass() const =0
Return the class name.
Definition: kiid.h:49
wxString AsString() const
Definition: kiid.cpp:246
LSET is a set of PCB_LAYER_IDs.
Definition: lset.h:37
static const LSET & SideSpecificMask()
Definition: lset.cpp:719
LSEQ Seq(const LSEQ &aSequence) const
Return an LSEQ from the union of this LSET and a desired sequence.
Definition: lset.cpp:296
static const LSET & AllTechMask()
Return a mask holding all technical layers (no CU layer) on both side.
Definition: lset.cpp:659
static const LSET & AllLayersMask()
Definition: lset.cpp:624
static LSET AllCuMask()
return AllCuMask( MAX_CU_LAYERS );
Definition: lset.cpp:591
static wxString Name(PCB_LAYER_ID aLayerId)
Return the fixed name association with aLayerId.
Definition: lset.cpp:188
PROPERTY_BASE & SetAvailableFunc(std::function< bool(INSPECTABLE *)> aFunc)
Set a callback function to determine whether an object provides this property.
Definition: property.h:258
PROPERTY_BASE & SetIsHiddenFromPropertiesManager(bool aHide=true)
Definition: property.h:315
PROPERTY_BASE & SetIsHiddenFromLibraryEditors(bool aIsHidden=true)
Definition: property.h:329
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:74
void InheritsAfter(TYPE_ID aDerived, TYPE_ID aBase)
Declare an inheritance relationship between types.
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:76
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.
Definition: stroke_params.h:94
#define _HKI(x)
#define _(s)
Some functions to handle hotkeys in KiCad.
constexpr PCB_LAYER_ID PCBNEW_LAYER_ID_START
Definition: layer_ids.h:174
FLASHING
Enum used during connectivity building to ensure we do not query connectivity while building the data...
Definition: layer_ids.h:184
@ LAYER_LOCKED_ITEM_SHADOW
Shadow layer for locked items.
Definition: layer_ids.h:306
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:60
@ UNDEFINED_LAYER
Definition: layer_ids.h:61
@ PCB_LAYER_ID_COUNT
Definition: layer_ids.h:171
This file contains miscellaneous commonly used macros and functions.
#define UNIMPLEMENTED_FOR(type)
Definition: macros.h:96
FLIP_DIRECTION
Definition: mirror.h:27
Class to handle a set of BOARD_ITEMs.
#define TYPE_HASH(x)
Definition: property.h:72
#define IMPLEMENT_ENUM_TO_WXANY(type)
Definition: property.h:797
#define NO_SETTER(owner, type)
Definition: property.h:808
#define REGISTER_TYPE(x)
Definition: property_mgr.h:351
bool operator()(const BOARD_ITEM *a, const BOARD_ITEM *b) const
Definition: board_item.cpp:311
constexpr int mmToIU(double mm) const
Definition: base_units.h:92
void RotatePoint(int *pX, int *pY, const EDA_ANGLE &aAngle)
Calculate the new point of coord coord pX, pY, for a rotation center 0, 0.
Definition: trigo.cpp:229
@ PCB_T
Definition: typeinfo.h:82
@ PCB_SHAPE_T
class PCB_SHAPE, a segment not on copper layers
Definition: typeinfo.h:88
@ 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_GENERATOR_T
class PCB_GENERATOR, generator on a layer
Definition: typeinfo.h:91
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:97
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition: typeinfo.h:103
@ PCB_GROUP_T
class PCB_GROUP, a set of BOARD_ITEMs
Definition: typeinfo.h:110
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
Definition: typeinfo.h:93
@ PCB_ZONE_T
class ZONE, a copper pour area
Definition: typeinfo.h:107
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
Definition: typeinfo.h:92
@ PCB_REFERENCE_IMAGE_T
class PCB_REFERENCE_IMAGE, bitmap on a layer
Definition: typeinfo.h:89
@ PCB_FIELD_T
class PCB_FIELD, text associated with a footprint property
Definition: typeinfo.h:90
@ PCB_FOOTPRINT_T
class FOOTPRINT, a footprint
Definition: typeinfo.h:86
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition: typeinfo.h:101
@ PCB_PAD_T
class PAD, a pad in a footprint
Definition: typeinfo.h:87
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
Definition: typeinfo.h:98
@ PCB_DIMENSION_T
class PCB_DIMENSION_BASE: abstract dimension meta-type
Definition: typeinfo.h:100
@ PCB_TABLE_T
class PCB_TABLE, table of PCB_TABLECELLs
Definition: typeinfo.h:94
@ PCB_TRACE_T
class PCB_TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:96
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
Definition: typeinfo.h:104