26#ifndef CADSTAR_ARCHIVE_PARSER_H_ 
   27#define CADSTAR_ARCHIVE_PARSER_H_ 
   42#define THROW_MISSING_NODE_IO_ERROR( nodename, location ) \ 
   43    THROW_IO_ERROR( wxString::Format( _( "Missing node '%s' in '%s'" ), nodename, location ) ) 
 
   45#define THROW_UNKNOWN_NODE_IO_ERROR( nodename, location ) \ 
   46    THROW_IO_ERROR( wxString::Format( _( "Unknown node '%s' in '%s'" ), nodename, location ) ) 
 
   48#define THROW_MISSING_PARAMETER_IO_ERROR( param, location ) \ 
   49    THROW_IO_ERROR( wxString::Format( _( "Missing Parameter '%s' in '%s'" ), param, location ) ) 
 
   51#define THROW_UNKNOWN_PARAMETER_IO_ERROR( param, location ) \ 
   52    THROW_IO_ERROR( wxString::Format( _( "Unknown Parameter '%s' in '%s'" ), param, location ) ) 
 
   54#define THROW_PARSING_IO_ERROR( param, location ) \ 
   55    THROW_IO_ERROR( wxString::Format( _( "Unable to parse '%s' in '%s'" ), param, location ) ) 
 
 
   60#define UNDEFINED_LAYER_ID ( LAYER_ID ) wxEmptyString 
   66#define COMPONENT_NAME_ATTRID ( ATTRIBUTE_ID ) wxT( "__COMPONENT_NAME__" ) 
   72#define COMPONENT_NAME_2_ATTRID ( ATTRIBUTE_ID ) wxT( "__COMPONENT_NAME_2__" ) 
   77#define SYMBOL_NAME_ATTRID ( ATTRIBUTE_ID ) wxT( "__SYMBOL_NAME__" ) 
   78#define LINK_ORIGIN_ATTRID ( ATTRIBUTE_ID ) wxT( "__LINK_ORIGIN__" ) 
   79#define SIGNALNAME_ORIGIN_ATTRID ( ATTRIBUTE_ID ) wxT( "__SIGNALNAME_ORIGIN__" ) 
   80#define PART_NAME_ATTRID ( ATTRIBUTE_ID ) wxT( "__PART_NAME__" ) 
  216    static wxString 
ParseTextFields( 
const wxString& aTextString, PARSER_CONTEXT* aParserContext );
 
  336        wxString 
Name  = wxT( 
"CADSTAR" );
 
 
  459                            const std::function<
VECTOR2I( 
const VECTOR2I& )> aCadstarToKicadPointCallback,
 
  460                            int aAccuracy ) 
const;
 
  463                            const std::function<
VECTOR2I( 
const VECTOR2I& )> aCadstarToKicadPointCallback ) 
const;
 
 
  497                                         int aAccuracy ) 
const;
 
  500                                         int aAccuracy  ) 
const;
 
 
 1095            std::map<PART_DEFINITION_PIN_ID, PIN>   
Pins;
 
 
 
 1315                                             bool aIsRequired = 
true );
 
 1359                                                   bool aTestAllChildNodes = 
false,
 
 1374                                                      bool aTestAllChildNodes = 
false );
 
 1388                                                     bool aTestAllChildNodes = 
false );
 
 1393                                              std::vector<wxString> aSubNodeChildrenToCount );
 
 1398        wxString ret = aFieldText;
 
 1399        ret.Replace( wxT( 
"\n" ), wxT( 
"\\n" ) );
 
 1400        ret.Replace( wxT( 
"\r" ), wxT( 
"\\r" ) );
 
 1401        ret.Replace( wxT( 
"\t" ), wxT( 
"\\t" ) );
 
 
 1423    static wxString 
generateLibName( 
const wxString& aRefName, 
const wxString& aAlternateName );
 
 
CADSTAR_PIN_POSITION
Positioning of pin names can be in one of four quadrants.
 
CADSTAR_PIN_TYPE
file: cadstar_archive_objects.h Contains common object definitions
 
@ UNCOMMITTED
Uncommitted pin (default)
 
READABILITY
Sets the readability direction of text.
 
@ BOTTOM_TO_TOP
When text is vertical, show it rotated 90 degrees anticlockwise.
 
@ TOP_TO_BOTTOM
When text is vertical, show it rotated 90 degrees clockwise.
 
@ ANTICLOCKWISE_SEMICIRCLE
 
wxString DOCUMENTATION_SYMBOL_ID
 
static wxString EscapeFieldText(const wxString &aFieldText)
 
@ STEPGRID
Param1 = X Step, Param2 = Y Step. A standard x,y grid.
 
@ FRACTIONALGRID
Param1 = Units, Param2 = Divisor.
 
SWAP_RULE
Corresponds to "Display when" Item property.
 
@ USE_SWAP_LAYER
Display when Mirrored.
 
@ BOTH
Always display (Mirrored and Unmirrored)
 
@ NO_SWAP
Display when Unmirrored.
 
static UNITS ParseUnits(XNODE *aNode)
 
static ALIGNMENT ParseAlignment(XNODE *aNode)
 
static const long FONT_BOLD
 
static const std::map< TEXT_FIELD_NAME, wxString > CADSTAR_TO_KICAD_FIELDS
Map between CADSTAR fields and KiCad text variables.
 
long TERMINAL_ID
Terminal is the pin identifier in the schematic.
 
TEXT_FIELD_NAME
These are special fields in text objects enclosed between the tokens '<@' and '>' such as <@[FIELD_NA...
 
@ NONE
Synthetic for flagging.
 
static SWAP_RULE ParseSwapRule(XNODE *aNode)
 
ALIGNMENT
From CADSTAR Help: "Text Alignment enables you to define the position of an alignment origin for all ...
 
@ NO_ALIGNMENT
NO_ALIGNMENT has different meaning depending on the object type.
 
static const long UNDEFINED_VALUE
 
static wxString generateLibName(const wxString &aRefName, const wxString &aAlternateName)
 
static void CheckNoNextNodes(XNODE *aNode)
 
static std::vector< CUTOUT > ParseAllChildCutouts(XNODE *aNode, PARSER_CONTEXT *aContext, bool aTestAllChildNodes=false)
If no children are present, it just returns an empty vector (without throwing an exception).
 
static XNODE * LoadArchiveFile(const wxString &aFileName, const wxString &aFileTypeIdentifier, PROGRESS_REPORTER *aProgressReporter=nullptr)
Reads a CADSTAR Archive file (S-parameter format).
 
static JUSTIFICATION ParseJustification(XNODE *aNode)
 
static wxString ParseTextFields(const wxString &aTextString, PARSER_CONTEXT *aParserContext)
Replaces CADSTAR fields for the equivalent in KiCad and stores the field values in aParserContext.
 
@ UNDEFINED
Note: It seems that some attribute have no "ATTRUSAGE" defined.
 
@ BOTH
From CADSTAR Help: Assigned to both Schematic symbols and PCB components, and displayed on Schematic ...
 
@ PART_LIBRARY
From CADSTAR Help: Only used by non-Cadstar applications.
 
wxString LAYER_ID
ID of a Sheet (if schematic) or board Layer (if PCB)
 
static std::vector< VERTEX > ParseAllChildVertices(XNODE *aNode, PARSER_CONTEXT *aContext, bool aTestAllChildNodes=false)
If no children are present, it just returns an empty vector (without throwing an exception).
 
static void FixTextPositionNoAlignment(EDA_TEXT *aKiCadTextItem)
Correct the position of a text element that had NO_ALIGNMENT in CADSTAR.
 
static ANGUNITS ParseAngunits(XNODE *aNode)
 
long PART_DEFINITION_PIN_ID
Pin identifier in the part definition.
 
@ OUTLINE
Unfilled closed shape.
 
@ OPENSHAPE
Unfilled open shape. Cannot have cutouts.
 
@ HATCHED
Filled closed shape (hatch fill).
 
static const double TXT_HEIGHT_RATIO
CADSTAR fonts are drawn on a 24x24 integer matrix, where the each axis goes from 0 to 24.
 
static wxString GetXmlAttributeIDString(XNODE *aNode, unsigned int aID, bool aIsRequired=true)
 
void checkPoint()
Updates m_progressReporter or throws if user canceled.
 
static bool IsValidAttribute(wxXmlAttribute *aAttribute)
 
static READABILITY ParseReadability(XNODE *aNode)
 
static std::vector< POINT > ParseAllChildPoints(XNODE *aNode, PARSER_CONTEXT *aContext, bool aTestAllChildNodes=false, int aExpectedNumPoints=UNDEFINED_VALUE)
If no children are present, it just returns an empty vector (without throwing an exception).
 
@ DESIGN
Inherits from design units (assumed Assignments->Technology->Units)
 
static const long FONT_NORMAL
 
static wxString HandleTextOverbar(wxString aCadstarString)
Convert a string with CADSTAR overbar characters to equivalent in KiCad.
 
static void CheckNoChildNodes(XNODE *aNode)
 
static long GetXmlAttributeIDLong(XNODE *aNode, unsigned int aID, bool aIsRequired=true)
 
JUSTIFICATION
From CADSTAR Help: "Multi Line Text can also be justified as Left, Centre or Right.
 
static void ParseChildEValue(XNODE *aNode, PARSER_CONTEXT *aContext, EVALUE &aValueToParse)
 
static long GetNumberOfStepsForReporting(XNODE *aRootNode, std::vector< wxString > aSubNodeChildrenToCount)
 
long PART_PIN_ID
Pin identifier in the part.
 
PROGRESS_REPORTER * m_progressReporter
 
static long GetNumberOfChildNodes(XNODE *aNode)
 
static void InsertAttributeAtEnd(XNODE *aNode, wxString aValue)
 
virtual ~CADSTAR_ARCHIVE_PARSER()
 
@ PART_DEFINITION
Only library Attributes.
 
wxString SPACING_CLASS_ID
 
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
 
A progress reporter interface for use in multi-threaded environments.
 
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
 
Represent a set of closed polygons.
 
An extension of wxXmlNode that can format its contents as KiCad-style s-expressions.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
DFLTSETTINGS DefaultSettings
 
std::map< ATTRIBUTE_ID, ATTRCOL > AttributeColors
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void ParseIdentifiers(XNODE *aNode, PARSER_CONTEXT *aContext)
 
virtual void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
JUSTIFICATION Justification
Note: Justification has no effect on single lines of text.
 
ALIGNMENT Alignment
In CADSTAR The default alignment for a TEXT object (when "(No Alignment()" is selected) Bottom Left o...
 
bool ParseSubNode(XNODE *aChildNode, PARSER_CONTEXT *aContext)
 
ATTRIBUTE_LOCATION AttributeLocation
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
bool HasLocation
Flag to know if this ATTRIBUTE_VALUE has a location i.e.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
NOTE from CADSTAR help: To convert a Part Definition Attribute into a hyperlink, prefix the attribute...
 
std::vector< COLUMNWIDTH > ColumnWidths
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
bool NoTransfer
True="All Design Types", False="Current Design Type" "All Design Types" Description from CADSTAR Help...
 
std::vector< COLUMNORDER > ColumnOrders
 
wxString Name
Parenthesis aren't permitted in user attributes in CADSTAR.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::vector< ATTRIBUTE_VALUE > Attributes
 
std::map< SPACING_CLASS_ID, SPCCLASSNAME > SpacingClassNames
 
std::map< LINECODE_ID, LINECODE > LineCodes
 
std::map< NETCLASS_ID, CADSTAR_NETCLASS > NetClasses
 
bool ParseSubNode(XNODE *aChildNode, PARSER_CONTEXT *aContext)
 
std::map< HATCHCODE_ID, HATCHCODE > HatchCodes
 
std::map< ATTRIBUTE_ID, ATTRNAME > AttributeNames
 
std::map< ROUTECODE_ID, ROUTECODE > RouteCodes
 
std::map< TEXTCODE_ID, TEXTCODE > TextCodes
 
Represent a cutout in a closed shape (e.g.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::vector< VERTEX > Vertices
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
long ScaleRatioNumerator
Documentation symbols can be arbitrarily scaled when added to a design.
 
std::map< ATTRIBUTE_ID, ATTRIBUTE_VALUE > AttributeValues
 
long ScaleRatioDenominator
Documentation symbols can be arbitrarily scaled when added to a design.
 
POINT Origin
Origin of the component (this is used as the reference point when placing the component in the design...
 
REUSEBLOCKREF ReuseBlockRef
 
GROUP_ID GroupID
If not empty, this component is part of a group.
 
LAYER_ID LayerID
Move all objects in the Symdef to this layer.
 
DOCUMENTATION_SYMBOL_ID ID
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
SYMDEF_ID SymdefID
Normally documentation symbols only have TEXT, FIGURE and TEXT_LOCATION objects which are all drawn o...
 
Represent a floating value in E notation.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
long Modifier2
It seems this is always 0 regardless of settings.
 
bool KerningPairs
From CADSTAR Help: "Kerning Pairs is for causing the       system to automatically reduce the spacing...
 
long Modifier1
It seems this is related to weight. 400=Normal, 700=Bold.
 
GRID ScreenGrid
From CADSTAR Help: "There is one Screen Grid, which is visible as dots on the screen.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::vector< GRID > UserGrids
List of predefined grids created by the user.
 
static bool IsGrid(XNODE *aNode)
 
long Param1
Either Units or X step, depending on Type (see GRID_TYPE for more details)
 
long Param2
Either Divisor or Y step, depending on Type (see GRID_TYPE for more details)
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
GROUP_ID GroupID
If not empty, this GROUP is part of another GROUP.
 
bool Transfer
If true, the group is transferred to PCB.
 
REUSEBLOCKREF ReuseBlockRef
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::vector< HATCH > Hatches
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
long OrientAngle
1/1000 of a Degree
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::map< ATTRIBUTE_ID, ATTRIBUTE_VALUE > AttributeValues
It is possible to add attributes solely to a particular connection.
 
REUSEBLOCKREF ReuseBlockRef
 
void ParseIdentifiers(XNODE *aNode, PARSER_CONTEXT *aContext)
 
GROUP_ID GroupID
If not empty, this connection is part of a group.
 
bool ParseSubNode(XNODE *aChildNode, PARSER_CONTEXT *aContext)
 
GROUP_ID GroupID
If not empty, this JUNCTION is part of a group.
 
bool ParseSubNode(XNODE *aChildNode, PARSER_CONTEXT *aContext)
 
virtual void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void ParseIdentifiers(XNODE *aNode, PARSER_CONTEXT *aContext)
 
NETELEMENT_ID ID
First character is "J".
 
REUSEBLOCKREF ReuseBlockRef
 
ROUTECODE_ID RouteCodeID
"NETCODE" subnode
 
bool ParseSubNode(XNODE *aChildNode, PARSER_CONTEXT *aContext)
 
wxString Name
This is undefined (wxEmptyString) if the net is unnamed.
 
std::map< NETELEMENT_ID, JUNCTION > Junctions
 
void ParseIdentifiers(XNODE *aNode, PARSER_CONTEXT *aContext)
 
NETCLASS_ID NetClassID
The net might not have a net class, in which case it will be wxEmptyString ("NETCLASSREF" subnode)
 
SPACING_CLASS_ID SpacingClassID
The net might not have a spacing class, in which case it will be wxEmptyString ("SPACINGCLASS" subnod...
 
std::map< ATTRIBUTE_ID, ATTRIBUTE_VALUE > AttributeValues
 
long SignalNum
This is undefined if the net has been given a name.
 
std::map< TEXT_FIELD_NAME, wxString > TextFieldToValuesMap
Values for the text field elements used in the CADSTAR design extracted from the text element instanc...
 
std::map< wxString, wxString > FilenamesToTextMap
CADSTAR doesn't have user defined text fields but does allow loading text from a file.
 
std::map< wxString, wxString > TextToHyperlinksMap
KiCad doesn't support hyperlinks but we use this map to display warning messages after import.
 
std::set< TEXT_FIELD_NAME > InconsistentTextFields
Text fields need to be updated in CADSTAR and it is possible that they are not consistent across text...
 
std::function< void()> CheckPointCallback
Callback function to report progress.
 
virtual void Parse(XNODE *aNode, PARSER_CONTEXT *aContext)=0
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::map< PART_ID, PART > PartDefinitions
 
< "GATEDEFINITION" node name
 
long PinCount
Number of pins (terminals) in the symbol.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
GATE_ID ID
Usually "A", "B", "C", etc.
 
wxString Alternate
Symbol alternate name in the symbol library.
 
wxString Name
Symbol name in the symbol library.
 
< "PINEQUIVALENCE" Node name
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::vector< PART_DEFINITION_PIN_ID > PinIDs
All the pins in this vector are equivalent and can be swapped with each other.
 
< "PARTDEFINITIONPIN" node name
 
wxString Label
This Can be empty (subnode= "PINLABEL") From CADSTAR Help: "Pin Labels are an optional replacement fo...
 
wxString Name
Can be empty.
 
long Load
The electrical current expected on the pin (It is unclear what the units are, but only accepted value...
 
CADSTAR_PIN_POSITION Position
The pin names will use these positions when the symbol is added to a design subnode="PINPOSITION".
 
TERMINAL_ID TerminalPin
(subnode="PINTERM", param1)
 
wxString Identifier
This should match a pad identifier in the component footprint subnode="PINIDENTIFIER".
 
GATE_ID TerminalGate
(subnode="PINTERM", param0)
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
wxString Signal
Usually for Power/Ground pins, (subnode="PINSIGNAL")
 
PART_DEFINITION_PIN_ID ID
 
CADSTAR_PIN_TYPE Type
subnode="PINTYPE"
 
< "SWAPGATE" Node name (represents an "Element")
 
std::vector< PART_DEFINITION_PIN_ID > PinIDs
The pins in this vector describe a "gate".
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
wxString GateName
Optional.
 
std::vector< SWAP_GATE > SwapGates
Each of the elements in this vector can be swapped with each other - i.e.
 
bool External
Determines if this swap group is external (and internal) or internal only.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
< "PARTDEFINITION" node name
 
bool HidePinNames
Specifies whether to display the pin names/identifier in the schematic symbol or not.
 
std::map< GATE_ID, GATE > GateSymbols
 
std::vector< PIN_EQUIVALENCE > PinEquivalences
 
wxString Name
This name can be different to the PART name.
 
long MaxPinCount
Optional parameter which is used for specifying the number of electrical pins on the PCB component sy...
 
std::map< ATTRIBUTE_ID, ATTRIBUTE_VALUE > AttributeValues
Some attributes are defined within the part definition, whilst others are defined in the part.
 
std::map< PART_DEFINITION_PIN_ID, PIN > Pins
 
std::vector< SWAP_GROUP > SwapGroups
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
static CADSTAR_PIN_TYPE GetPinType(XNODE *aNode)
 
std::map< PART_PIN_ID, PART_PIN > PartPins
It is unclear why there are two "Pin" structures in CPA files... PART_PIN seems to be a reduced versi...
 
std::map< ATTRIBUTE_ID, ATTRIBUTE_VALUE > AttributeValues
Some attributes are defined within the part definition, whilst others are defined in the part itself.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
bool HidePinNames
This seems to be a duplicate of DEFINITION::HidePinNames Possibly only used in older file formats?
 
Represent a point in x,y coordinates.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
References an element from a design reuse block.
 
REUSEBLOCK_ID ReuseBlockID
 
wxString ItemReference
For Components, this references the designator in the reuse file.
 
bool IsEmpty()
Determines if this is empty (i.e. no design reuse associated)
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
wxString FileName
Filename of the reuse block (usually a .pcb). Used for reloading.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::vector< ROUTEREASSIGN > RouteReassigns
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
UNITS Units
Units to display for linear dimensions.
 
long PinNoAngle
The angle at which the Pin ID is positioned relative to a terminal.
 
long InterlineGap
For CADSTAR font only, distance between lines of text, expressed as a percentage of the text height (...
 
long BarlineGap
For CADSTAR font only, distance between top bar and character, expressed as a percentage of the text ...
 
virtual void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
bool AllowBarredText
Specifies if barring is allowed in the design.
 
LONGPOINT DesignRef
Appears to be 0,0 always.
 
std::pair< POINT, POINT > DesignArea
 
long AngularPrecision
Number of decimal points to display for angular dimensions.
 
long UnitDisplPrecision
Number of decimal points to display for linear dimensions.
 
bool ParseSubNode(XNODE *aChildNode, PARSER_CONTEXT *aContext)
 
long PinNoOffset
The distance, of a Pin Name/Identifier from its parent terminal.
 
SHAPE_POLY_SET ConvertToPolySet(const std::function< VECTOR2I(const VECTOR2I &)> aCadstarToKicadPointCallback, int aAccuracy) const
 
std::vector< VERTEX > Vertices
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
wxString HatchCodeID
Only Applicable for HATCHED Type.
 
static bool IsShape(XNODE *aNode)
 
std::vector< CUTOUT > Cutouts
Not Applicable to OPENSHAPE Type.
 
SHAPE_LINE_CHAIN OutlineAsChain(const std::function< VECTOR2I(const VECTOR2I &)> aCadstarToKicadPointCallback, int aAccuracy) const
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::map< FIGURE_ID, FIGURE > Figures
 
std::map< ATTRIBUTE_ID, TEXT_LOCATION > TextLocations
This contains location of any attributes, including designator position.
 
POINT Origin
Origin of the component (this is used as the reference point when placing the component in the design...
 
wxString Alternate
This is in addition to ReferenceName.
 
bool ParseSubNode(XNODE *aChildNode, PARSER_CONTEXT *aContext)
 
std::map< TEXT_ID, TEXT > Texts
 
bool Stub
When the CADSTAR Archive file is exported without the component library, if components on the board a...
 
wxString ReferenceName
This is the name which identifies the symbol in the library Multiple components may exist with the sa...
 
void ParseIdentifiers(XNODE *aNode, PARSER_CONTEXT *aContext)
 
std::map< ATTRIBUTE_ID, ATTRIBUTE_VALUE > AttributeValues
These attributes might also have a location.
 
wxString BuildLibName() const
 
long Version
Version is a sequential integer number to identify discrepancies between the library and the design.
 
long Width
Defaults to 0 if using system fonts or, if using CADSTAR font, default to equal height (1:1 aspect ra...
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
REUSEBLOCKREF ReuseBlockRef
 
ALIGNMENT Alignment
In CADSTAR The default alignment for a TEXT object (when "(No Alignment()" is selected) Bottom Left o...
 
JUSTIFICATION Justification
Note: Justification has no effect on single lines of text.
 
GROUP_ID GroupID
If not empty, this FIGURE is part of a group.
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
std::map< VARIANT_ID, VARIANT > Variants
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
< Nodename = "VARIANT" or "VMASTER" (master variant
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
VARIANT_ID ParentID
if empty, then this one is the master
 
static bool IsVertex(XNODE *aNode)
 
SHAPE_ARC BuildArc(const VECTOR2I &aPrevPoint, const std::function< VECTOR2I(const VECTOR2I &)> aCadstarToKicadPointCallback) const
 
void Parse(XNODE *aNode, PARSER_CONTEXT *aContext) override
 
VERTEX(VERTEX_TYPE aType=VERTEX_TYPE::VT_POINT, POINT aEnd=POINT(), POINT aCenter=POINT())
 
void AppendToChain(SHAPE_LINE_CHAIN *aChainToAppendTo, const std::function< VECTOR2I(const VECTOR2I &)> aCadstarToKicadPointCallback, int aAccuracy) const
 
VECTOR2< int32_t > VECTOR2I