22#include <schematic_lexer.h>
27using namespace TSCHEMATIC_T;
54 aFormatter->
Print(
"(fill (type %s) (color %d %d %d %s))",
63 aFormatter->
Print(
"(fill (type %s))",
74 return SCHEMATIC_LEXER::TokenName( T_input );
77 return SCHEMATIC_LEXER::TokenName( T_output );
80 return SCHEMATIC_LEXER::TokenName( T_bidirectional );
83 return SCHEMATIC_LEXER::TokenName( T_tri_state );
86 return SCHEMATIC_LEXER::TokenName( T_passive );
89 return SCHEMATIC_LEXER::TokenName( T_free );
92 return SCHEMATIC_LEXER::TokenName( T_unspecified );
95 return SCHEMATIC_LEXER::TokenName( T_power_in );
98 return SCHEMATIC_LEXER::TokenName( T_power_out );
101 return SCHEMATIC_LEXER::TokenName( T_open_collector );
104 return SCHEMATIC_LEXER::TokenName( T_open_emitter );
107 return SCHEMATIC_LEXER::TokenName( T_no_connect );
110 wxFAIL_MSG(
"Missing symbol library pin connection type" );
122 return SCHEMATIC_LEXER::TokenName( T_line );
125 return SCHEMATIC_LEXER::TokenName( T_inverted );
128 return SCHEMATIC_LEXER::TokenName( T_clock );
131 return SCHEMATIC_LEXER::TokenName( T_inverted_clock );
134 return SCHEMATIC_LEXER::TokenName( T_input_low );
137 return SCHEMATIC_LEXER::TokenName( T_clock_low );
140 return SCHEMATIC_LEXER::TokenName( T_output_low );
143 return SCHEMATIC_LEXER::TokenName( T_edge_clock_high );
146 return SCHEMATIC_LEXER::TokenName( T_non_logic );
149 wxFAIL_MSG(
"Missing symbol library pin shape type" );
158 switch( aOrientation )
164 default: wxFAIL_MSG(
"Missing symbol library pin orientation type" );
return ANGLE_0;
182 default: wxFAIL;
return SCHEMATIC_LEXER::TokenName( T_passive );
196 default: wxFAIL;
return ANGLE_0;
205 case SCH_TEXT_T:
return SCHEMATIC_LEXER::TokenName( T_text );
206 case SCH_LABEL_T:
return SCHEMATIC_LEXER::TokenName( T_label );
208 case SCH_HIER_LABEL_T:
return SCHEMATIC_LEXER::TokenName( T_hierarchical_label );
210 default: wxFAIL;
return SCHEMATIC_LEXER::TokenName( T_text );
230 bool aInvertY,
const KIID& aUuid )
232 aFormatter->
Print(
"(arc %s (start %s) (mid %s) (end %s)",
233 aIsPrivate ?
"private" :
"",
239 formatFill( aFormatter, aFillMode, aFillColor );
244 aFormatter->
Print(
")" );
250 bool aInvertY,
const KIID& aUuid )
252 aFormatter->
Print(
"(circle %s (center %s) (radius %s)",
253 aIsPrivate ?
"private" :
"",
258 formatFill( aFormatter, aFillMode, aFillColor );
263 aFormatter->
Print(
")" );
269 bool aInvertY,
const KIID& aUuid )
271 aFormatter->
Print(
"(rectangle %s (start %s) (end %s)",
272 aIsPrivate ?
"private" :
"",
276 aFormatter->
Print(
"(radius %s)",
279 formatFill( aFormatter, aFillMode, aFillColor );
284 aFormatter->
Print(
")" );
290 bool aInvertY,
const KIID& aUuid )
292 aFormatter->
Print(
"(bezier %s (pts ",
293 aIsPrivate ?
"private" :
"" );
298 aFormatter->
Print(
"(xy %s)",
formatIU( pt, aInvertY ).c_str() );
301 aFormatter->
Print(
")" );
304 formatFill( aFormatter, aFillMode, aFillColor );
309 aFormatter->
Print(
")" );
315 bool aInvertY,
const KIID& aUuid )
317 aFormatter->
Print(
"(polyline %s (pts ",
318 aIsPrivate ?
"private" :
"" );
326 wxFAIL_MSG(
"Polyline has no outlines" );
331 aFormatter->
Print(
"(xy %s)",
formatIU( pt, aInvertY ).c_str() );
334 aFormatter->
Print(
")" );
337 formatFill( aFormatter, aFillMode, aFillColor );
342 aFormatter->
Print(
")" );
constexpr EDA_IU_SCALE schIUScale
constexpr BOX2I KiROUND(const BOX2D &aBoxD)
const VECTOR2I & GetBezierC2() const
SHAPE_POLY_SET & GetPolyShape()
const VECTOR2I & GetEnd() const
Return the ending point of the graphic.
const VECTOR2I & GetStart() const
Return the starting point of the graphic.
const VECTOR2I & GetBezierC1() const
int GetCornerRadius() const
VECTOR2I GetArcMid() const
A color representation with 4 components: red, green, blue, alpha.
wxString AsString() const
const std::vector< VECTOR2I > & CPoints() const
Represent a set of closed polygons.
SHAPE_LINE_CHAIN & Outline(int aIndex)
Return the reference to aIndex-th outline in the set.
int OutlineCount() const
Return the number of outlines in the set.
Simple container to manage line stroke parameters.
void Format(OUTPUTFORMATTER *out, const EDA_IU_SCALE &aIuScale) const
static constexpr EDA_ANGLE ANGLE_0
static constexpr EDA_ANGLE ANGLE_90
static constexpr EDA_ANGLE ANGLE_270
static constexpr EDA_ANGLE ANGLE_180
@ FILLED_WITH_BG_BODYCOLOR
@ FILLED_SHAPE
Fill with object color.
This file contains miscellaneous commonly used macros and functions.
KICOMMON_API std::string FormatInternalUnits(const EDA_IU_SCALE &aIuScale, int aValue, EDA_DATA_TYPE aDataType=EDA_DATA_TYPE::DISTANCE)
Converts aValue from internal units to a string appropriate for writing to file.
ELECTRICAL_PINTYPE
The symbol library pin object electrical types used in ERC tests.
@ PT_INPUT
usual pin input: must be connected
@ PT_NC
not connected (must be left open)
@ PT_TRISTATE
tri state bus pin
@ PT_NIC
not internally connected (may be connected to anything)
@ PT_BIDI
input or output (like port for a microprocessor)
@ PT_OPENEMITTER
pin type open emitter
@ PT_POWER_OUT
output of a regulator: intended to be connected to power input pins
@ PT_OPENCOLLECTOR
pin type open collector
@ PT_POWER_IN
power input (GND, VCC for ICs). Must be connected to a power output.
@ PT_UNSPECIFIED
unknown electrical properties: creates always a warning when connected
@ PT_PASSIVE
pin for passive symbols: must be connected, and can be connected to any pin.
PIN_ORIENTATION
The symbol library pin object orientations.
@ PIN_UP
The pin extends upwards from the connection point: Probably on the bottom side of the symbol.
@ PIN_RIGHT
The pin extends rightwards from the connection point.
@ PIN_LEFT
The pin extends leftwards from the connection point: Probably on the right side of the symbol.
@ PIN_DOWN
The pin extends downwards from the connection: Probably on the top side of the symbol.
EDA_ANGLE getPinAngle(PIN_ORIENTATION aOrientation)
void formatArc(OUTPUTFORMATTER *aFormatter, EDA_SHAPE *aArc, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, bool aInvertY, const KIID &aUuid)
const char * getSheetPinShapeToken(LABEL_FLAG_SHAPE aShape)
void formatCircle(OUTPUTFORMATTER *aFormatter, EDA_SHAPE *aCircle, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, bool aInvertY, const KIID &aUuid)
const char * getPinElectricalTypeToken(ELECTRICAL_PINTYPE aType)
const char * getTextTypeToken(KICAD_T aType)
void formatBezier(OUTPUTFORMATTER *aFormatter, EDA_SHAPE *aBezier, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, bool aInvertY, const KIID &aUuid)
void formatRect(OUTPUTFORMATTER *aFormatter, EDA_SHAPE *aRect, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, bool aInvertY, const KIID &aUuid)
std::string formatIU(const int &aValue)
void formatPoly(OUTPUTFORMATTER *aFormatter, EDA_SHAPE *aPolyLine, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, bool aInvertY, const KIID &aUuid)
EDA_ANGLE getSheetPinAngle(SHEET_SIDE aSide)
void formatFill(OUTPUTFORMATTER *aFormatter, FILL_T aFillMode, const COLOR4D &aFillColor)
Fill token formatting helper.
const char * getPinShapeToken(GRAPHIC_PINSHAPE aShape)
static const char * emptyString
SHEET_SIDE
Define the edge of the sheet that the sheet pin is positioned.
std::string FormatDouble2Str(double aValue)
Print a float number without using scientific notation and no trailing 0 This function is intended in...
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
VECTOR2< int32_t > VECTOR2I