KiCad PCB EDA Suite
Loading...
Searching...
No Matches
board_adapter.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) 2015-2016 Mario Luzeiro <[email protected]>
5 * Copyright (C) 2023 CERN
6 * Copyright (C) 1992-2024 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#ifndef BOARD_ADAPTER_H
27#define BOARD_ADAPTER_H
28
29#include <array>
30#include <vector>
31#include "../3d_rendering/raytracing/accelerators/container_2d.h"
32#include "../3d_rendering/raytracing/accelerators/container_3d.h"
33#include "../3d_rendering/raytracing/shapes3D/bbox_3d.h"
34#include <gal/3d/camera.h>
35#include <3d_enums.h>
36#include "../3d_cache/3d_cache.h"
37#include "../common_ogl/ogl_attr_list.h"
38#include "../3d_viewer/eda_3d_viewer_settings.h"
39
40#include <layer_ids.h>
41#include <pad.h>
42#include <pcb_track.h>
43#include <pcb_base_frame.h>
44#include <pcb_text.h>
45#include <pcb_textbox.h>
46#include <pcb_table.h>
47#include <pcb_shape.h>
48#include <pcb_dimension.h>
49#include <zone.h>
50#include <footprint.h>
51#include <reporter.h>
53
54class COLOR_SETTINGS;
55class PCB_TEXTBOX;
56
58typedef std::map<PCB_LAYER_ID, BVH_CONTAINER_2D*> MAP_CONTAINER_2D_BASE;
59
61typedef std::map<PCB_LAYER_ID, SHAPE_POLY_SET*> MAP_POLY;
62
66#define RANGE_SCALE_3D 8.0f
67
68
73{
74public:
76
78
84 void Set3dCacheManager( S3D_CACHE* aCacheMgr ) noexcept { m_3dModelManager = aCacheMgr; }
85 S3D_CACHE* Get3dCacheManager() const noexcept { return m_3dModelManager; }
86
92 bool Is3dLayerEnabled( PCB_LAYER_ID aLayer,
93 const std::bitset<LAYER_3D_END>& aVisibilityFlags ) const;
94
98 bool IsFootprintShown( FOOTPRINT_ATTR_T aFPAttributes ) const;
99
105 void SetBoard( BOARD* aBoard ) noexcept { m_board = aBoard; }
106 const BOARD* GetBoard() const noexcept { return m_board; }
107
108 void ReloadColorSettings() noexcept;
109
113 std::map<int, COLOR4D> GetLayerColors() const;
114
119
120 std::map<int, COLOR4D> GetDefaultColors() const;
121 void SetLayerColors( const std::map<int, COLOR4D>& aColors );
122
123 std::bitset<LAYER_3D_END> GetVisibleLayers() const;
125 void SetVisibleLayers( const std::bitset<LAYER_3D_END>& aLayers );
126
133 void InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningReporter );
134
140 double BiuTo3dUnits() const noexcept { return m_biuTo3Dunits; }
141
147 const BBOX_3D& GetBBox() const noexcept { return m_boardBoundingBox; }
148
152 float GetBoardBodyThickness() const noexcept { return m_boardBodyThickness3DU; }
153
158
162 float GetFrontCopperThickness() const noexcept { return m_frontCopperThickness3DU; }
163 float GetBackCopperThickness() const noexcept { return m_backCopperThickness3DU; }
164
168 int GetHolePlatingThickness() const noexcept;
169
175 VECTOR2I GetBoardSize() const noexcept { return m_boardSize; }
176
182 VECTOR2I GetBoardPos() const noexcept { return m_boardPos; }
183
189 const SFVEC3F& GetBoardCenter() const noexcept { return m_boardCenter; }
190
198 float GetFootprintZPos( bool aIsFlipped ) const ;
199
205 const SHAPE_POLY_SET& GetBoardPoly() const noexcept { return m_board_poly; }
206
213 SFVEC4F GetLayerColor( PCB_LAYER_ID aLayerId ) const;
214
221 SFVEC4F GetItemColor( int aItemId ) const;
222
227 SFVEC4F GetColor( const COLOR4D& aColor ) const;
228
229 SFVEC2F GetSphericalCoord( int i ) const;
230
237 float GetLayerTopZPos( PCB_LAYER_ID aLayerId ) const noexcept
238 {
239 auto it = m_layerZcoordTop.find( aLayerId );
240
241 if( it != m_layerZcoordTop.end() )
242 return it->second;
243 else
244 return -( m_boardBodyThickness3DU / 2.0f );
245 }
246
253 float GetLayerBottomZPos( PCB_LAYER_ID aLayerId ) const noexcept
254 {
255 auto it = m_layerZcoordBottom.find( aLayerId );
256
257 if( it != m_layerZcoordBottom.end() )
258 return it->second;
259 else
261 }
262
268 const MAP_CONTAINER_2D_BASE& GetLayerMap() const noexcept { return m_layerMap; }
269 const BVH_CONTAINER_2D* GetPlatedPadsFront() const noexcept { return m_platedPadsFront; }
270 const BVH_CONTAINER_2D* GetPlatedPadsBack() const noexcept { return m_platedPadsBack; }
272 const BVH_CONTAINER_2D* GetOffboardPadsBack() const noexcept { return m_offboardPadsBack; }
273
274 const MAP_CONTAINER_2D_BASE& GetLayerHoleMap() const noexcept { return m_layerHoleMap; }
275 const BVH_CONTAINER_2D& GetTH_IDs() const noexcept { return m_TH_IDs; }
276 const BVH_CONTAINER_2D& GetTH_ODs() const noexcept { return m_TH_ODs; }
277
285 const SHAPE_POLY_SET& GetTH_ODPolys() const noexcept
286 {
287 return m_TH_ODPolys;
288 }
289
290 const BVH_CONTAINER_2D& GetViaAnnuli() const noexcept
291 {
292 return m_viaAnnuli;
293 }
294
295 const SHAPE_POLY_SET& GetViaAnnuliPolys() const noexcept
296 {
297 return m_viaAnnuliPolys;
298 }
299
300 const SHAPE_POLY_SET& GetNPTH_ODPolys() const noexcept
301 {
302 return m_NPTH_ODPolys;
303 }
304
308 const BVH_CONTAINER_2D& GetViaTH_ODs() const noexcept
309 {
310 return m_viaTH_ODs;
311 }
312
313 const SHAPE_POLY_SET& GetViaTH_ODPolys() const noexcept
314 {
315 return m_viaTH_ODPolys;
316 }
317
318 unsigned int GetViaCount() const noexcept { return m_viaCount; }
319 unsigned int GetHoleCount() const noexcept { return m_holeCount; }
320
324 float GetAverageViaHoleDiameter() const noexcept { return m_averageViaHoleDiameter; }
325
329 float GetAverageHoleDiameter() const noexcept { return m_averageHoleDiameter; }
330
334 float GetAverageTrackWidth() const noexcept { return m_averageTrackWidth; }
335
340 unsigned int GetCircleSegmentCount( float aDiameter3DU ) const;
341
346 unsigned int GetCircleSegmentCount( int aDiameterBIU ) const;
347
353 const MAP_POLY& GetPolyMap() const noexcept { return m_layers_poly; }
354
357 const MAP_POLY& GetHoleIdPolysMap() const noexcept { return m_layerHoleIdPolys; }
358 const MAP_POLY& GetHoleOdPolysMap() const noexcept { return m_layerHoleOdPolys; }
359
360private:
366 bool createBoardPolygon( wxString* aErrorMsg );
367 void createLayers( REPORTER* aStatusReporter );
368 void destroyLayers();
369
370 // Helper functions to create the board
371 void createTrackWithMargin( const PCB_TRACK* aTrack, CONTAINER_2D_BASE* aDstContainer,
372 int aMargin = 0 );
373
374 void createPadWithMargin( const PAD *aPad, CONTAINER_2D_BASE* aDstContainer,
375 PCB_LAYER_ID aLayer, const VECTOR2I& aMargin ) const;
376
377 void createPadWithHole( const PAD* aPad, CONTAINER_2D_BASE* aDstContainer,
378 int aInflateValue );
379
380 void addPads( const FOOTPRINT* aFootprint, CONTAINER_2D_BASE* aDstContainer,
381 PCB_LAYER_ID aLayerId, bool aSkipPlatedPads, bool aSkipNonPlatedPads );
382
383 void addFootprintShapes( const FOOTPRINT* aFootprint, CONTAINER_2D_BASE* aDstContainer,
384 PCB_LAYER_ID aLayerId,
385 const std::bitset<LAYER_3D_END>& aVisibilityFlags );
386
387 void addText( const EDA_TEXT* aText, CONTAINER_2D_BASE* aDstContainer,
388 const BOARD_ITEM* aOwner );
389
390 void addShape( const PCB_SHAPE* aShape, CONTAINER_2D_BASE* aContainer,
391 const BOARD_ITEM* aOwner, PCB_LAYER_ID aLayer );
392
393 void addShape( const PCB_DIMENSION_BASE* aDimension, CONTAINER_2D_BASE* aDstContainer,
394 const BOARD_ITEM* aOwner );
395
396 void addShape( const PCB_TEXTBOX* aTextBox, CONTAINER_2D_BASE* aContainer,
397 const BOARD_ITEM* aOwner );
398
399 void addTable( const PCB_TABLE* aTable, CONTAINER_2D_BASE* aContainer,
400 const BOARD_ITEM* aOwner );
401
402 void addSolidAreasShapes( const ZONE* aZone, CONTAINER_2D_BASE* aDstContainer,
403 PCB_LAYER_ID aLayerId );
404
405 void createArcSegments( const VECTOR2I& aCentre, const VECTOR2I& aStart,
406 const EDA_ANGLE& aArcAngle, int aCircleToSegmentsCount, int aWidth,
407 CONTAINER_2D_BASE* aContainer, const BOARD_ITEM& aOwner );
408
409 void buildPadOutlineAsSegments( const PAD* aPad, PCB_LAYER_ID aLayer,
410 CONTAINER_2D_BASE* aDstContainer, int aWidth );
411
412public:
418
428
429public:
431
436
450
451 std::map<int, COLOR4D> m_ColorOverrides;
452 std::map<int, COLOR4D> m_BoardEditorColors;
453
454private:
458
463
466
471
474
479
481
484
489
494
496
499
500 std::map<PCB_LAYER_ID, float> m_layerZcoordTop;
502
503 std::map<PCB_LAYER_ID, float> m_layerZcoordBottom;
505
511
512 unsigned int m_trackCount;
514 unsigned int m_viaCount;
516 unsigned int m_holeCount;
518
524 static const wxChar* m_logTrace;
525
526};
527
528
530{
531public:
532 virtual BOARD_ADAPTER& GetAdapter() = 0;
533 virtual CAMERA& GetCurrentCamera() = 0;
534
536};
537
538#endif // BOARD_ADAPTER_H
declared enumerations and flags
std::map< PCB_LAYER_ID, SHAPE_POLY_SET * > MAP_POLY
A type that stores polysets for each layer id.
Definition: board_adapter.h:61
std::map< PCB_LAYER_ID, BVH_CONTAINER_2D * > MAP_CONTAINER_2D_BASE
A type that stores a container of 2d objects for each layer id.
Definition: board_adapter.h:58
Define an abstract camera.
Helper class to handle information needed to display 3D board.
Definition: board_adapter.h:73
MAP_CONTAINER_2D_BASE m_layerHoleMap
Holes for each layer.
std::map< int, COLOR4D > m_BoardEditorColors
list of colors used by the board editor
double BiuTo3dUnits() const noexcept
Board integer units To 3D units.
BVH_CONTAINER_2D * m_offboardPadsBack
SFVEC4F m_BgColorTop
background top color
SFVEC4F m_ECO2Color
const SHAPE_POLY_SET * GetFrontPlatedPadAndGraphicPolys()
void SetVisibleLayers(const std::bitset< LAYER_3D_END > &aLayers)
float m_solderPasteLayerThickness3DU
const MAP_CONTAINER_2D_BASE & GetLayerHoleMap() const noexcept
std::map< PCB_LAYER_ID, float > m_layerZcoordBottom
Bottom (Start) Z position of each layer in 3D units.
S3D_CACHE * m_3dModelManager
void createLayers(REPORTER *aStatusReporter)
VECTOR2I m_boardPos
Board center position in board internal units.
float m_backCopperThickness3DU
SHAPE_POLY_SET m_TH_ODPolys
PTH outer diameters.
static KIGFX::COLOR4D g_DefaultComments
SFVEC4F m_SolderPasteColor
in realistic mode: solder paste color
static CUSTOM_COLORS_LIST g_PasteColors
BBOX_3D m_boardBoundingBox
3D bounding box of the board in 3D units.
static CUSTOM_COLORS_LIST g_FinishColors
static KIGFX::COLOR4D g_DefaultBoardBody
const SHAPE_POLY_SET & GetBoardPoly() const noexcept
Get the current polygon of the epoxy board.
const SHAPE_POLY_SET & GetNPTH_ODPolys() const noexcept
unsigned int m_viaCount
const BVH_CONTAINER_2D * GetOffboardPadsFront() const noexcept
COLOR_SETTINGS * m_colors
bool IsFootprintShown(FOOTPRINT_ATTR_T aFPAttributes) const
Test if footprint should be displayed in relation to attributes and the flags.
static KIGFX::COLOR4D g_DefaultSolderMask
std::map< int, COLOR4D > GetLayerColors() const
Build a color list which is used to store colors layers.
const SHAPE_POLY_SET & GetViaTH_ODPolys() const noexcept
const MAP_POLY & GetPolyMap() const noexcept
Get map of polygon's layers.
MAP_POLY m_layerHoleOdPolys
Hole outer diameters (per layer)
void addSolidAreasShapes(const ZONE *aZone, CONTAINER_2D_BASE *aDstContainer, PCB_LAYER_ID aLayerId)
VECTOR2I GetBoardSize() const noexcept
Get the board size.
const MAP_POLY & GetHoleOdPolysMap() const noexcept
SHAPE_POLY_SET * m_frontPlatedCopperPolys
MAP_CONTAINER_2D_BASE m_layerMap
2D elements for each layer.
BVH_CONTAINER_2D m_TH_ODs
List of PTH outer diameters.
float GetAverageTrackWidth() const noexcept
SHAPE_POLY_SET * m_frontPlatedPadAndGraphicPolys
unsigned int m_trackCount
const BBOX_3D & GetBBox() const noexcept
Get the board outling bounding box.
float m_averageTrackWidth
SHAPE_POLY_SET m_board_poly
Board outline polygon.
std::bitset< LAYER_3D_END > GetVisibleLayers() const
SFVEC4F m_SolderMaskColorBot
in realistic mode: solder mask color ( bot )
bool m_IsPreviewer
true if we're in a 3D preview panel, false for the standard 3D viewer
void addFootprintShapes(const FOOTPRINT *aFootprint, CONTAINER_2D_BASE *aDstContainer, PCB_LAYER_ID aLayerId, const std::bitset< LAYER_3D_END > &aVisibilityFlags)
void createArcSegments(const VECTOR2I &aCentre, const VECTOR2I &aStart, const EDA_ANGLE &aArcAngle, int aCircleToSegmentsCount, int aWidth, CONTAINER_2D_BASE *aContainer, const BOARD_ITEM &aOwner)
VECTOR2I GetBoardPos() const noexcept
Get the board center.
static CUSTOM_COLORS_LIST g_MaskColors
MAP_POLY m_layerHoleIdPolys
Hole inner diameters (per layer)
int GetHolePlatingThickness() const noexcept
Get the hole plating thickness (NB: in BOARD UNITS!).
void InitSettings(REPORTER *aStatusReporter, REPORTER *aWarningReporter)
Function to be called by the render when it need to reload the settings for the board.
const BVH_CONTAINER_2D & GetViaAnnuli() const noexcept
float GetLayerBottomZPos(PCB_LAYER_ID aLayerId) const noexcept
Get the bottom z position.
static KIGFX::COLOR4D g_DefaultECOs
const BVH_CONTAINER_2D * GetOffboardPadsBack() const noexcept
const BVH_CONTAINER_2D & GetTH_IDs() const noexcept
SFVEC4F m_SolderMaskColorTop
in realistic mode: solder mask color ( top )
SFVEC4F GetColor(const COLOR4D &aColor) const
SHAPE_POLY_SET m_viaAnnuliPolys
Via annular ring outer diameters.
BVH_CONTAINER_2D * m_offboardPadsFront
float m_averageViaHoleDiameter
BVH_CONTAINER_2D m_viaTH_ODs
List of via hole outer diameters.
static KIGFX::COLOR4D g_DefaultBackgroundTop
const BVH_CONTAINER_2D * GetPlatedPadsBack() const noexcept
static CUSTOM_COLORS_LIST g_SilkColors
const MAP_POLY & GetHoleIdPolysMap() const noexcept
float GetBackCopperThickness() const noexcept
float m_averageHoleDiameter
static KIGFX::COLOR4D g_DefaultSurfaceFinish
SFVEC4F m_CopperColor
in realistic mode: copper color
SHAPE_POLY_SET m_viaTH_ODPolys
Via hole outer diameters.
void ReloadColorSettings() noexcept
void createPadWithMargin(const PAD *aPad, CONTAINER_2D_BASE *aDstContainer, PCB_LAYER_ID aLayer, const VECTOR2I &aMargin) const
float GetAverageViaHoleDiameter() const noexcept
void addPads(const FOOTPRINT *aFootprint, CONTAINER_2D_BASE *aDstContainer, PCB_LAYER_ID aLayerId, bool aSkipPlatedPads, bool aSkipNonPlatedPads)
SFVEC2F GetSphericalCoord(int i) const
unsigned int GetViaCount() const noexcept
const BOARD * GetBoard() const noexcept
BVH_CONTAINER_2D * m_platedPadsBack
std::bitset< LAYER_3D_END > GetDefaultVisibleLayers() const
void createPadWithHole(const PAD *aPad, CONTAINER_2D_BASE *aDstContainer, int aInflateValue)
void SetBoard(BOARD *aBoard) noexcept
Set current board to be rendered.
void buildPadOutlineAsSegments(const PAD *aPad, PCB_LAYER_ID aLayer, CONTAINER_2D_BASE *aDstContainer, int aWidth)
const SFVEC3F & GetBoardCenter() const noexcept
The board center position in 3D units.
std::map< PCB_LAYER_ID, float > m_layerZcoordTop
Top (End) Z position of each layer in 3D units.
float GetFootprintZPos(bool aIsFlipped) const
Get the position of the footprint in 3d integer units considering if it is flipped or not.
float m_frontCopperThickness3DU
float GetNonCopperLayerThickness() const noexcept
Get the non copper layers thickness (in 3D units).
static KIGFX::COLOR4D g_DefaultSolderPaste
float GetLayerTopZPos(PCB_LAYER_ID aLayerId) const noexcept
Get the top z position.
const BVH_CONTAINER_2D & GetTH_ODs() const noexcept
float m_boardBodyThickness3DU
static CUSTOM_COLORS_LIST g_BoardColors
const MAP_CONTAINER_2D_BASE & GetLayerMap() const noexcept
Get the map of containers that have the objects per layer.
MAP_POLY m_layers_poly
Amalgamated polygon contours for various types of items.
VECTOR2I m_boardSize
Board size in board internal units.
SHAPE_POLY_SET * m_backPlatedCopperPolys
void SetLayerColors(const std::map< int, COLOR4D > &aColors)
EDA_3D_VIEWER_SETTINGS * m_Cfg
std::map< int, COLOR4D > m_ColorOverrides
allows to override color scheme colors
SFVEC4F m_SilkScreenColorTop
in realistic mode: SilkScreen color ( top )
void addTable(const PCB_TABLE *aTable, CONTAINER_2D_BASE *aContainer, const BOARD_ITEM *aOwner)
unsigned int GetHoleCount() const noexcept
SFVEC4F m_SilkScreenColorBot
in realistic mode: SilkScreen color ( bot )
SFVEC4F GetItemColor(int aItemId) const
Get the technical color of a layer.
const BVH_CONTAINER_2D * GetPlatedPadsFront() const noexcept
unsigned int GetCircleSegmentCount(float aDiameter3DU) const
float m_nonCopperLayerThickness3DU
float GetFrontCopperThickness() const noexcept
Get the copper layer thicknesses (in 3D units).
void createTrackWithMargin(const PCB_TRACK *aTrack, CONTAINER_2D_BASE *aDstContainer, int aMargin=0)
const BVH_CONTAINER_2D & GetViaTH_ODs() const noexcept
unsigned int m_holeCount
BVH_CONTAINER_2D m_viaAnnuli
List of via annular rings.
float GetBoardBodyThickness() const noexcept
Get the board body thickness, including internal copper layers (in 3D units).
SFVEC4F m_BoardBodyColor
in realistic mode: FR4 board color
bool createBoardPolygon(wxString *aErrorMsg)
Create the board outline polygon.
float GetAverageHoleDiameter() const noexcept
const SHAPE_POLY_SET & GetViaAnnuliPolys() const noexcept
unsigned int m_copperLayersCount
bool m_MousewheelPanning
std::map< int, COLOR4D > GetDefaultColors() const
BVH_CONTAINER_2D m_TH_IDs
List of PTH inner diameters.
SFVEC4F m_UserCommentsColor
static KIGFX::COLOR4D g_DefaultSilkscreen
BVH_CONTAINER_2D * m_platedPadsFront
void Set3dCacheManager(S3D_CACHE *aCacheMgr) noexcept
Update the cache manager pointer.
Definition: board_adapter.h:84
void addShape(const PCB_SHAPE *aShape, CONTAINER_2D_BASE *aContainer, const BOARD_ITEM *aOwner, PCB_LAYER_ID aLayer)
SFVEC3F m_boardCenter
3D center position of the board in 3D units.
SHAPE_POLY_SET m_NPTH_ODPolys
NPTH outer diameters.
SHAPE_POLY_SET * m_backPlatedPadAndGraphicPolys
static KIGFX::COLOR4D g_DefaultBackgroundBot
SFVEC4F GetLayerColor(PCB_LAYER_ID aLayerId) const
Get the technical color of a layer.
const SHAPE_POLY_SET * GetBackPlatedPadAndGraphicPolys()
bool Is3dLayerEnabled(PCB_LAYER_ID aLayer, const std::bitset< LAYER_3D_END > &aVisibilityFlags) const
Check if a layer is enabled.
SFVEC4F m_ECO1Color
SFVEC4F m_UserDrawingsColor
void GetBoardEditorCopperLayerColors(PCBNEW_SETTINGS *aCfg)
Build the copper color list used by the board editor, and store it in m_BoardEditorColors.
S3D_CACHE * Get3dCacheManager() const noexcept
Definition: board_adapter.h:85
double m_biuTo3Dunits
Scale factor to convert board internal units to 3D units normalized between -1.0 and 1....
SFVEC4F m_BgColorBot
background bottom color
const SHAPE_POLY_SET & GetTH_ODPolys() const noexcept
Get through hole outside diameter 2D polygons.
void addText(const EDA_TEXT *aText, CONTAINER_2D_BASE *aDstContainer, const BOARD_ITEM *aOwner)
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:80
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:290
A class used to derive camera objects from.
Definition: camera.h:103
Color settings are a bit different than most of the settings objects in that there can be more than o...
virtual BOARD_ADAPTER & GetAdapter()=0
virtual CAMERA & GetCurrentCamera()=0
virtual ~EDA_3D_BOARD_HOLDER()
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
Definition: eda_text.h:79
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:104
Definition: pad.h:54
Abstract dimension API.
A pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:72
Cache for storing the 3D shapes.
Definition: 3d_cache.h:55
Represent a set of closed polygons.
Handle a list of polygons defining a copper zone.
Definition: zone.h:73
std::vector< CUSTOM_COLOR_ITEM > CUSTOM_COLORS_LIST
FOOTPRINT_ATTR_T
The set of attributes allowed within a FOOTPRINT, using FOOTPRINT::SetAttributes() and FOOTPRINT::Get...
Definition: footprint.h:73
static const wxChar * m_logTrace
Trace mask used to enable or disable debug output for this class.
@ LAYER_3D_END
Definition: layer_ids.h:478
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:60
STL namespace.
Manage a bounding box defined by two SFVEC3F min max points.
Definition: bbox_3d.h:43
glm::vec2 SFVEC2F
Definition: xv3d_types.h:42
glm::vec3 SFVEC3F
Definition: xv3d_types.h:44
glm::vec4 SFVEC4F
Definition: xv3d_types.h:46