78 bool aMirror,
double aResize = 1.0 );
113 wxString sym =
"donut_r" + aOuterDim +
ODB_DIM_X + aInnerDim;
119 wxString sym =
"rect" + aWidth +
ODB_DIM_X + aHeight;
125 wxString sym =
"oval" + aWidth +
ODB_DIM_X + aHeight;
130 const wxString& aRadius )
137 const wxString& aLineWidth,
const wxString& aRadius )
139 wxString sym =
"donut_rc" + aOuterWidth +
ODB_DIM_X + aOuterHeight +
ODB_DIM_X + aLineWidth
145 const wxString& aRadius,
int aPositions )
166 uint32_t
GetSymbolIndex( std::map<wxString, uint32_t>& aSymMap,
const wxString& aKey )
168 if( aSymMap.count( aKey ) )
170 return aSymMap.at( aKey );
176 aSymMap.emplace( aKey,
index );
193 template <
typename T,
typename... Args>
196 auto feature = std::make_unique<T>(
m_featuresList.size(), std::forward<Args>( args )... );
241 ODB_LINE( uint32_t aIndex,
const std::pair<wxString, wxString>& aStart,
242 const std::pair<wxString, wxString>& aEnd, uint32_t aSym ) :
256 std::pair<wxString, wxString>
m_end;
267 ODB_ARC( uint32_t aIndex,
const std::pair<wxString, wxString>& aStart,
268 const std::pair<wxString, wxString>& aEnd,
269 const std::pair<wxString, wxString>& aCenter, uint32_t aSym,
284 std::pair<wxString, wxString>
m_end;
293 ODB_PAD( uint32_t aIndex,
const std::pair<wxString, wxString>& aCenter, uint32_t aSym,
369 void WriteData( std::ostream& ost )
const;
ATTR_RECORD_WRITER()=default
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Information pertinent to a Pcbnew printed circuit board.
void AddPadShape(const PAD &aPad, PCB_LAYER_ID aLayer)
uint32_t AddRoundRectDonutSymbol(const wxString &aOuterWidth, const wxString &aOuterHeight, const wxString &aLineWidth, const wxString &aRadius)
std::map< wxString, uint32_t > m_circleSymMap
uint32_t AddRectSymbol(const wxString &aWidth, const wxString &aHeight)
void AddPad(PCB_LAYER_ID aLayer, PAD *pad)
std::map< wxString, uint32_t > m_chamRectSymMap
void AddVia(const PCB_VIA *aVia, PCB_LAYER_ID aLayer)
void AddDimension(PCB_LAYER_ID aLayer, PCB_DIMENSION_BASE *dimension)
std::map< wxString, uint32_t > m_rectSymMap
PCB_IO_ODBPP * GetODBPlugin()
void AddShape(PCB_LAYER_ID aLayer, PCB_SHAPE *shape)
void InitFeatureList(PCB_LAYER_ID aLayer, std::vector< BOARD_ITEM * > &aItems)
void AddFeatureLine(const VECTOR2I &aStart, const VECTOR2I &aEnd, uint64_t aWidth)
void AddViaProtection(const PCB_VIA *aVia, bool drill, PCB_LAYER_ID aLayer)
void AddFeatureArc(const VECTOR2I &aStart, const VECTOR2I &aEnd, const VECTOR2I &aCenter, uint64_t aWidth, ODB_DIRECTION aDirection)
uint32_t GetSymbolIndex(std::map< wxString, uint32_t > &aSymMap, const wxString &aKey)
std::map< uint32_t, wxString > m_allSymMap
bool AddPolygon(const SHAPE_POLY_SET::POLYGON &aPolygon, FILL_T aFillType, int aWidth, LINE_STYLE aDashType)
void GenerateFeatureFile(std::ostream &ost) const
std::map< BOARD_ITEM *, std::vector< uint32_t > > m_featureIDMap
void AddViaDrillHole(const PCB_VIA *aVia, PCB_LAYER_ID aLayer)
std::map< wxString, uint32_t > m_roundRectDonutSymMap
FEATURES_MANAGER(BOARD *aBoard, PCB_IO_ODBPP *aPlugin, const wxString &aLayerName)
std::map< wxString, uint32_t > m_ovalSymMap
void AddPadCircle(const VECTOR2I &aCenter, uint64_t aDiameter, const EDA_ANGLE &aAngle, bool aMirror, double aResize=1.0)
std::map< wxString, uint32_t > m_roundDonutSymMap
void AddTrack(PCB_LAYER_ID aLayer, PCB_TRACK *track)
void AddZone(PCB_LAYER_ID aLayer, ZONE *zone)
std::map< wxString, uint32_t > m_roundRectSymMap
void AddText(PCB_LAYER_ID aLayer, BOARD_ITEM *item, RESOLUTION_CONTEXT aContext)
void AddFeatureSurface(const SHAPE_POLY_SET::POLYGON &aPolygon, FILL_T aFillType=FILL_T::FILLED_SHAPE)
uint32_t AddRoundRectSymbol(const wxString &aWidth, const wxString &aHeight, const wxString &aRadius)
uint32_t AddOvalSymbol(const wxString &aWidth, const wxString &aHeight)
void GenerateProfileFeatures(std::ostream &ost) const
std::list< std::unique_ptr< ODB_FEATURE > > m_featuresList
void AddFeature(Args &&... args)
bool AddPolygonCutouts(const SHAPE_POLY_SET::POLYGON &aPolygon)
virtual ~FEATURES_MANAGER()
uint32_t AddCircleSymbol(const wxString &aDiameter)
uint32_t AddChamferRectSymbol(const wxString &aWidth, const wxString &aHeight, const wxString &aRadius, int aPositions)
std::map< wxString, uint32_t > m_padSymMap
uint32_t AddRoundDonutSymbol(const wxString &aOuterDim, const wxString &aInnerDim)
bool AddContour(const SHAPE_POLY_SET &aPolySet, int aOutline=0, FILL_T aFillType=FILL_T::FILLED_SHAPE)
std::pair< wxString, wxString > m_end
std::pair< wxString, wxString > m_start
ODB_ARC(uint32_t aIndex, const std::pair< wxString, wxString > &aStart, const std::pair< wxString, wxString > &aEnd, const std::pair< wxString, wxString > &aCenter, uint32_t aSym, ODB_DIRECTION aDirection)
virtual void WriteRecordContent(std::ostream &ost) override
virtual FEATURE_TYPE GetFeatureType() override
ODB_DIRECTION m_direction
std::pair< wxString, wxString > m_center
virtual void WriteRecordContent(std::ostream &ost)=0
virtual ~ODB_FEATURE()=default
virtual void WriteFeatures(std::ostream &ost)
virtual FEATURE_TYPE GetFeatureType()=0
ODB_FEATURE(uint32_t aIndex)
virtual void WriteRecordContent(std::ostream &ost) override
ODB_LINE(uint32_t aIndex, const std::pair< wxString, wxString > &aStart, const std::pair< wxString, wxString > &aEnd, uint32_t aSym)
virtual FEATURE_TYPE GetFeatureType() override
std::pair< wxString, wxString > m_start
std::pair< wxString, wxString > m_end
ODB_PAD(uint32_t aIndex, const std::pair< wxString, wxString > &aCenter, uint32_t aSym, EDA_ANGLE aAngle=ANGLE_0, bool aMirror=false, double aResize=1.0)
virtual void WriteRecordContent(std::ostream &ost) override
virtual FEATURE_TYPE GetFeatureType() override
std::pair< wxString, wxString > m_center
void WriteData(std::ostream &ost) const
std::vector< std::vector< SURFACE_LINE > > m_polygons
ODB_SURFACE_DATA(const SHAPE_POLY_SET::POLYGON &aPolygon)
void AddPolygonHoles(const SHAPE_POLY_SET::POLYGON &aPolygon)
std::unique_ptr< ODB_SURFACE_DATA > m_surfaces
virtual void WriteRecordContent(std::ostream &ost) override
virtual FEATURE_TYPE GetFeatureType() override
virtual ~ODB_SURFACE()=default
ODB_SURFACE(uint32_t aIndex, const SHAPE_POLY_SET::POLYGON &aPolygon, FILL_T aFillType=FILL_T::FILLED_SHAPE)
Represent a set of closed polygons.
std::vector< SHAPE_LINE_CHAIN > POLYGON
represents a single polygon outline with holes.
Handle a list of polygons defining a copper zone.
@ RECT_CHAMFER_BOTTOM_RIGHT
@ RECT_CHAMFER_BOTTOM_LEFT
static constexpr EDA_ANGLE ANGLE_0
@ FILLED_SHAPE
Fill with object color.
PCB_LAYER_ID
A quick note on layer IDs:
LINE_STYLE
Dashed line types.
ODB_DIRECTION m_direction
SURFACE_LINE(const VECTOR2I &aEnd)
SURFACE_LINE(const VECTOR2I &aEnd, const VECTOR2I &aCenter, ODB_DIRECTION aDirection)
VECTOR2< int32_t > VECTOR2I