26#ifndef PCBNEW_IMPORTERS_IMPORT_FABMASTER_H_ 
   27#define PCBNEW_IMPORTERS_IMPORT_FABMASTER_H_ 
   39#include <unordered_map> 
   43#include <wx/filename.h> 
   69    bool Read( 
const std::string& aFile );
 
   95    std::deque<single_row> 
rows;
 
  134                return std::hash<std::string>{}( aPad.
name );
 
 
 
 
  139    std::unordered_map<std::string, FM_PAD> 
pads;
 
  229                    const std::unique_ptr<GRAPHIC_ITEM>& rhs)
 const 
  231                if( lhs->refdes != rhs->refdes )
 
  232                    return lhs->refdes < rhs->refdes;
 
  234                if( lhs->layer != rhs->layer )
 
  235                    return lhs->layer < rhs->layer;
 
  237                return lhs->seq < rhs->seq;
 
 
 
 
  329                return lhs->
id < rhs->
id;
 
 
 
 
  334    std::map<std::string, FABMASTER_LAYER> 
layers;
 
  351            std::size_t 
operator()( 
const std::unique_ptr<FABMASTER_PAD_SHAPE>& aPad )
 const 
  353                return std::hash<std::string>{}( aPad->name );
 
 
 
 
  358    std::unordered_map<std::string, FABMASTER_PAD_SHAPE> 
pad_shapes;
 
  379                return std::hash<std::string>{}( aSym.
name );
 
 
 
 
  401    std::unordered_map<std::string, SYMBOL> 
symbols;
 
  421                return lhs.
id < rhs.
id;
 
 
 
 
  441    std::vector<std::unique_ptr<FM_VIA>> 
vias;
 
  457            bool operator()(
const std::unique_ptr<TRACE>& lhs, 
const std::unique_ptr<TRACE>& rhs)
 const 
  459                return lhs->id < rhs->id;
 
 
 
 
  497                return std::hash<std::string>{}( aCmp.
refdes );
 
 
 
 
  503    std::map<std::string, std::vector<std::unique_ptr<COMPONENT>>> 
components;
 
  523                    const std::unique_ptr<PIN>& rhs)
 const 
  525                return lhs->pin_number < rhs->pin_number;
 
 
 
 
  591    double readDouble( 
const std::string& aStr ) 
const;
 
  592    int readInt( 
const std::string& aStr ) 
const;
 
  613    bool loadEtch( 
BOARD* aBoard, 
const std::unique_ptr<TRACE>& aLine);
 
  614    bool loadZone( 
BOARD* aBoard, 
const std::unique_ptr<FABMASTER::TRACE>& aLine);
 
  615    bool loadPolygon( 
BOARD* aBoard, 
const std::unique_ptr<FABMASTER::TRACE>& aLine);
 
  631    static std::vector<std::unique_ptr<BOARD_ITEM>>
 
 
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.
 
size_t processFootprints(size_t aRow)
A!REFDES!COMP_CLASS!COMP_PART_NUMBER!COMP_HEIGHT!COMP_DEVICE_LABEL!COMP_INSERTION_CODE!...
 
size_t processPins(size_t aRow)
A!SYM_NAME!SYM_MIRROR!PIN_NAME!PIN_NUMBER!PIN_X!PIN_Y!PAD_STACK_NAME!REFDES!PIN_ROTATION!
 
int readInt(const std::string &aStr) const
 
GRAPHIC_OBLONG * processOblong(const GRAPHIC_DATA &aData, double aScale)
 
size_t processGeometry(size_t aRow)
A!GRAPHIC_DATA_NAME!GRAPHIC_DATA_NUMBER!RECORD_TAG!GRAPHIC_DATA_1!GRAPHIC_DATA_2!GRAPHIC_DATA_3!
 
std::map< std::string, PCB_LAYER_ID > layer_map
 
static std::vector< std::unique_ptr< BOARD_ITEM > > createBoardItems(BOARD &aBoard, PCB_LAYER_ID aLayer, FABMASTER::GRAPHIC_ITEM &aGraphic)
Convert one Fabmaster graphic item to one or more PCB items.
 
bool Read(const std::string &aFile)
 
bool loadNets(BOARD *aBoard)
 
std::map< std::string, std::map< int, GEOM_GRAPHIC > > comp_graphics
 
GRAPHIC_CROSS * processCross(const GRAPHIC_DATA &aData, double aScale)
 
unsigned m_lastProgressCount
 
SYMTYPE parseSymType(const std::string &aSymType)
 
GRAPHIC_TEXT * processText(const GRAPHIC_DATA &aData, double aScale)
 
bool loadLayers(BOARD *aBoard)
 
static void setupText(const FABMASTER::GRAPHIC_TEXT &aGraphicText, PCB_LAYER_ID aLayer, PCB_TEXT &aText, const BOARD &aBoard, const OPT_VECTOR2I &aMirrorPoint)
Set parameters for graphic text.
 
PCB_LAYER_ID getLayer(const std::string &aLayerName)
 
GRAPHIC_RECTANGLE * processSquare(const GRAPHIC_DATA &aData, double aScale)
 
int execute_recordbuffer(int filetype)
 
static bool traceIsOpen(const FABMASTER::TRACE &aLine)
 
bool loadZones(BOARD *aBoard)
Loads sections of the database into the board.
 
GRAPHIC_RECTANGLE * processRectangle(const GRAPHIC_DATA &aData, double aScale)
 
std::vector< std::string > single_row
 
size_t processSimpleLayers(size_t aRow)
 
PROGRESS_REPORTER * m_progressReporter
optional; may be nullptr
 
bool loadFootprints(BOARD *aBoard)
 
std::set< std::unique_ptr< TRACE >, TRACE::BY_ID > polygons
 
GRAPHIC_ARC * processCircle(const GRAPHIC_DATA &aData, double aScale)
 
std::unordered_map< std::string, FM_PAD > pads
 
int getColFromName(size_t aRow, const std::string &aStr)
 
bool loadVias(BOARD *aBoard)
 
size_t processLayers(size_t aRow)
A!LAYER_SORT!LAYER_SUBCLASS!LAYER_ARTWORK!LAYER_USE!LAYER_CONDUCTOR!LAYER_DIELECTRIC_CONSTANT!
 
size_t processSymbols(size_t aRow)
 
std::map< std::string, FABMASTER_LAYER > layers
 
COMPCLASS parseCompClass(const std::string &aCompClass)
 
bool loadEtch(BOARD *aBoard, const std::unique_ptr< TRACE > &aLine)
 
GRAPHIC_RECTANGLE * processFigRectangle(const GRAPHIC_DATA &aData, double aScale)
 
std::map< std::string, std::set< std::unique_ptr< PIN >, PIN::BY_NUM > > pins
 
std::set< std::unique_ptr< GRAPHIC_ITEM >, GRAPHIC_ITEM::SEQ_CMP > graphic_element
 
std::map< std::pair< std::string, std::string >, NETNAME > pin_nets
 
GRAPHIC_ITEM * processGraphic(const GRAPHIC_DATA &aData, double aScale)
Specialty functions for processing graphical data rows into the internal database.
 
std::deque< single_row > rows
 
GRAPHIC_POLYGON * processPolygon(const GRAPHIC_DATA &aData, double aScale)
 
bool loadOutline(BOARD *aBoard, const std::unique_ptr< TRACE > &aLine)
 
size_t processPadStacks(size_t aRow)
A!PADNAME!RECNUMBER!LAYER!FIXFLAG!VIAFLAG!PADSHAPE1!PADWIDTH!PADHGHT!
 
std::vector< GEOM_GRAPHIC > board_graphics
 
section_type detectType(size_t aOffset)
 
double readDouble(const std::string &aStr) const
Reads the double/integer value from a std string independent of the user locale.
 
bool loadZone(BOARD *aBoard, const std::unique_ptr< FABMASTER::TRACE > &aLine)
 
GRAPHIC_ARC * processArc(const GRAPHIC_DATA &aData, double aScale)
 
std::unordered_map< std::string, SYMBOL > symbols
 
SHAPE_POLY_SET loadShapePolySet(const graphic_element &aLine)
 
bool loadGraphics(BOARD *aBoard)
 
std::unordered_map< std::string, FABMASTER_PAD_SHAPE > pad_shapes
 
bool LoadBoard(BOARD *aBoard, PROGRESS_REPORTER *aProgressReporter)
 
std::vector< std::unique_ptr< FM_VIA > > vias
 
std::set< std::unique_ptr< TRACE >, TRACE::BY_ID > traces
 
std::set< std::unique_ptr< TRACE >, TRACE::BY_ID > zones
 
std::map< std::string, std::vector< std::unique_ptr< COMPONENT > > > components
 
bool loadPolygon(BOARD *aBoard, const std::unique_ptr< FABMASTER::TRACE > &aLine)
 
std::set< std::unique_ptr< TRACE >, TRACE::BY_ID > refdes
 
@ GR_SHAPE_OBLONG
!< Actually 360° arcs (for both arcs where start==end and real circles)
 
@ GR_SHAPE_CROSS
!< X/Y oblongs
 
size_t processPadStackLayers(size_t aRow)
 
std::set< std::string > netnames
 
size_t processTraces(size_t aRow)
A!CLASS!SUBCLASS!GRAPHIC_DATA_NAME!GRAPHIC_DATA_NUMBER!RECORD_TAG!GRAPHIC_DATA_1!GRAPHIC_DATA_2!
 
size_t processNets(size_t aRow)
A!NET_NAME!REFDES!PIN_NUMBER!PIN_NAME!PIN_GROUND!PIN_POWER!
 
bool orderZones(BOARD *aBoard)
Sets zone priorities based on zone BB size.
 
double processScaleFactor(size_t aRow)
Processes data from text vectors into internal database for further ordering.
 
size_t processVias(size_t aRow)
A!VIA_X!VIA_Y!PAD_STACK_NAME!NET_NAME!TEST_POINT!
 
unsigned m_totalCount
for progress reporting
 
size_t processCustomPads(size_t aRow)
A!SUBCLASS!PAD_SHAPE_NAME!GRAPHIC_DATA_NAME!GRAPHIC_DATA_NUMBER!RECORD_TAG!GRAPHIC_DATA_1!
 
GRAPHIC_LINE * processLine(const GRAPHIC_DATA &aData, double aScale)
 
A progress reporter interface for use in multi-threaded environments.
 
Represent a set of closed polygons.
 
PCB_LAYER_ID
A quick note on layer IDs:
 
PAD_SHAPE
The set of pad shapes, used with PAD::{Set,Get}Shape()
 
std::optional< VECTOR2I > OPT_VECTOR2I
 
std::string subclass
!< CLASS
 
std::size_t operator()(const FABMASTER::COMPONENT &aCmp) const
 
std::string dev_label
! COMP_DEVICE_LABEL
 
double rotate
! SYM_ROTATE (degrees)
 
std::string name
! SYM_NAME
 
std::string pn
! COMP_PART_NUMBER
 
std::string value
! COMP_VALUE
 
std::string insert_code
! COMP_INSERTION_CODE
 
std::string voltage
! COMP_VOLTAGE
 
std::string height
! COMP_HEIGHT
 
COMPCLASS cclass
! COMP_CLASS
 
std::string tol
! COMP_TOL
 
std::string refdes
! REFDES
 
bool operator()(const FABMASTER_LAYER *lhs, const FABMASTER_LAYER *rhs) const
 
A!LAYER_SORT!LAYER_SUBCLASS!LAYER_ARTWORK!LAYER_USE!LAYER_CONDUCTOR!LAYER_DIELECTRIC_CONSTANT !...
 
bool disable
! if true, prevent the layer elements from being used
 
std::string name
! LAYER_SUBCLASS
 
double thickness
! LAYER_THICKNESS
 
bool shield
! LAYER_SHIELD_LAYER
 
std::string material
! LAYER_MATERIAL
 
int layerid
! pcbnew layer (assigned)
 
bool conductive
! LAYER_CONDUCTOR
 
bool positive
! LAYER_ARTWORK (either POSITIVE or NEGATIVE)
 
double conductivity
! LAYER_ELECTRICAL_CONDUCTIVITY
 
std::string use
! LAYER_USE
 
double thermal_cond
! LAYER_THERMAL_CONDUCTIVITY
 
double er
! LAYER_DIELECTRIC_CONSTANT
 
std::size_t operator()(const std::unique_ptr< FABMASTER_PAD_SHAPE > &aPad) const
 
A!SUBCLASS!PAD_SHAPE_NAME!GRAPHIC_DATA_NAME!GRAPHIC_DATA_NUMBER!RECORD_TAG!GRAPHIC_DATA_1!
 
std::map< int, graphic_element > elements
 
std::string name
! PAD_SHAPE_NAME
 
std::string padstack
! PAD_STACK_NAME
 
std::string refdes
! REFDES
 
std::string pinnum
! PIN_NUMBER
 
std::size_t operator()(const FM_PAD &aPad) const
 
std::string padstack
! PAD_STACK_NAME
 
bool mirror
! VIA_MIRROR (VIA_MIRROR is an optional component)
 
bool test_point
! TEST_POINT
 
std::string net
! NET_NAME
 
bool operator()(const GEOM_GRAPHIC &lhs, const GEOM_GRAPHIC &rhs) const
 
std::string name
! SYM_NAME
 
std::string refdes
! REFDES
 
std::string subclass
! SUBCLASS
 
std::unique_ptr< graphic_element > elements
 
int end_x
! GRAPHIC_DATA_3
 
SHAPE_ARC result
! KiCad-style arc representation
 
int center_x
! GRAPHIC_DATA_5
 
bool clockwise
! GRAPHIC_DATA_9
 
int center_y
! GRAPHIC_DATA_6
 
int end_y
! GRAPHIC_DATA_4
 
int size_y
! GRAPHIC_DATA_4
 
int size_x
! GRAPHIC_DATA_3
 
bool oblong_x
! OBLONG_X (as opposed to OBLONG_Y)
 
std::string graphic_data8
 
std::string graphic_data1
 
std::string graphic_dataname
 
std::string graphic_data6
 
std::string graphic_data7
 
std::string graphic_data2
 
std::string graphic_data3
 
std::string graphic_data10
 
std::string graphic_datanum
 
std::string graphic_data4
 
std::string graphic_data5
 
std::string graphic_data9
 
bool operator()(const std::unique_ptr< GRAPHIC_ITEM > &lhs, const std::unique_ptr< GRAPHIC_ITEM > &rhs) const
 
std::string layer
! SUBCLASS
 
int subseq
! RECORD_TAG[1]
 
int width
! Various sections depending on type
 
GRAPHIC_SHAPE shape
! Shape of the graphic_item
 
std::string symbol
! SYMBOL
 
int start_y
! GRAPHIC_DATA_2
 
int start_x
! GRAPHIC_DATA_1
 
GRAPHIC_TYPE type
! Type of graphic item
 
std::string refdes
! REFDES
 
int end_x
! GRAPHIC_DATA_3
 
bool oblong_x
! OBLONG_X (as opposed to OBLONG_Y)
 
int size_x
! GRAPHIC_DATA_3
 
int size_y
! GRAPHIC_DATA_4
 
std::vector< VECTOR2I > m_pts
 
bool fill
! GRAPHIC_DATA_5
 
int end_y
! GRAPHIC_DATA_4
 
int end_x
! GRAPHIC_DATA_3
 
double rotation
! GRAPHIC_DATA_3
 
std::string text
! GRAPHIC_DATA_7
 
int height
! GRAPHIC_DATA_6[2]
 
int thickness
! GRAPHIC_DATA_6[6]
 
GR_TEXT_H_ALIGN_T orient
! GRAPHIC_DATA_5
 
bool ital
! GRAPHIC_DATA_6[4] != 0.0
 
bool mirror
! GRAPHIC_DATA_4
 
bool operator()(const NETNAME &lhs, const NETNAME &rhs) const
 
std::string refdes
!< NET_NAME
 
std::string pin_num
!< REFDES
 
std::string pin_name
!< PIN_NUMBER
 
bool operator()(const std::unique_ptr< PIN > &lhs, const std::unique_ptr< PIN > &rhs) const
 
int pin_x
! PIN_X - Absolute board units
 
int pin_y
! PIN_Y - Absolute board units
 
double rotation
! PIN_ROTATION
 
std::string padstack
! PAD_STACK
 
std::string name
! SYM_NAME
 
std::string pin_name
! PIN_NAME
 
std::string refdes
! REFDES
 
std::string pin_number
! PIN_NUMBER
 
std::size_t operator()(const FABMASTER::SYMBOL &aSym) const
 
std::string refdes
! REFDES
 
std::map< int, graphic_element > elements
 
std::string name
! SYM_NAME
 
int subseq_id
! RECORD_TAG[2] (RECORD_TAG is of the form "x y z")
 
int seq_id
! RECORD_TAG[1] (RECORD_TAG is of the form "x y z")
 
int sym_id
! RECORD_TAG[0]
 
bool operator()(const std::unique_ptr< TRACE > &lhs, const std::unique_ptr< TRACE > &rhs) const
 
std::string layer
! SUBCLASS
 
std::string lclass
! CLASS
 
std::string netname
! NET_NAME
 
graphic_element segment
! GRAPHIC_DATA (can be either LINE or ARC)
 
GR_TEXT_H_ALIGN_T
This is API surface mapped to common.types.HorizontalAlignment.