23#include <schematic_lexer.h>
28using namespace TSCHEMATIC_T;
50 aFormatter->
Print( aNestLevel,
"(fill (type %s) (color %d %d %d %s))",
59 aFormatter->
Print( aNestLevel,
"(fill (type %s))",
70 return SCHEMATIC_LEXER::TokenName( T_input );
73 return SCHEMATIC_LEXER::TokenName( T_output );
76 return SCHEMATIC_LEXER::TokenName( T_bidirectional );
79 return SCHEMATIC_LEXER::TokenName( T_tri_state );
82 return SCHEMATIC_LEXER::TokenName( T_passive );
85 return SCHEMATIC_LEXER::TokenName( T_free );
88 return SCHEMATIC_LEXER::TokenName( T_unspecified );
91 return SCHEMATIC_LEXER::TokenName( T_power_in );
94 return SCHEMATIC_LEXER::TokenName( T_power_out );
97 return SCHEMATIC_LEXER::TokenName( T_open_collector );
100 return SCHEMATIC_LEXER::TokenName( T_open_emitter );
103 return SCHEMATIC_LEXER::TokenName( T_no_connect );
106 wxFAIL_MSG(
"Missing symbol library pin connection type" );
118 return SCHEMATIC_LEXER::TokenName( T_line );
121 return SCHEMATIC_LEXER::TokenName( T_inverted );
124 return SCHEMATIC_LEXER::TokenName( T_clock );
127 return SCHEMATIC_LEXER::TokenName( T_inverted_clock );
130 return SCHEMATIC_LEXER::TokenName( T_input_low );
133 return SCHEMATIC_LEXER::TokenName( T_clock_low );
136 return SCHEMATIC_LEXER::TokenName( T_output_low );
139 return SCHEMATIC_LEXER::TokenName( T_edge_clock_high );
142 return SCHEMATIC_LEXER::TokenName( T_non_logic );
145 wxFAIL_MSG(
"Missing symbol library pin shape type" );
154 switch( aOrientation )
160 default: wxFAIL_MSG(
"Missing symbol library pin orientation type" );
return ANGLE_0;
178 default: wxFAIL;
return SCHEMATIC_LEXER::TokenName( T_passive );
192 default: wxFAIL;
return ANGLE_0;
201 case SCH_TEXT_T:
return SCHEMATIC_LEXER::TokenName( T_text );
202 case SCH_LABEL_T:
return SCHEMATIC_LEXER::TokenName( T_label );
204 case SCH_HIER_LABEL_T:
return SCHEMATIC_LEXER::TokenName( T_hierarchical_label );
206 default: wxFAIL;
return SCHEMATIC_LEXER::TokenName( T_text );
215 aFormatter->
Print( aNestLevel,
"(arc%s (start %s) (mid %s) (end %s)\n",
216 aIsPrivate ?
" private" :
"",
222 aFormatter->
Print( 0,
"\n" );
223 formatFill( aFormatter, aNestLevel + 1, aFillMode, aFillColor );
224 aFormatter->
Print( 0,
"\n" );
229 aFormatter->
Print( aNestLevel,
")\n" );
237 aFormatter->
Print( aNestLevel,
"(circle%s (center %s %s) (radius %s)\n",
238 aIsPrivate ?
" private" :
"",
244 aFormatter->
Print( 0,
"\n" );
245 formatFill( aFormatter, aNestLevel + 1, aFillMode, aFillColor );
246 aFormatter->
Print( 0,
"\n" );
251 aFormatter->
Print( aNestLevel,
")\n" );
259 aFormatter->
Print( aNestLevel,
"(rectangle%s (start %s %s) (end %s %s)\n",
260 aIsPrivate ?
" private" :
"",
266 aFormatter->
Print( 0,
"\n" );
267 formatFill( aFormatter, aNestLevel + 1, aFillMode, aFillColor );
268 aFormatter->
Print( 0,
"\n" );
273 aFormatter->
Print( aNestLevel,
")\n" );
281 aFormatter->
Print( aNestLevel,
"(bezier%s (pts ",
282 aIsPrivate ?
" private" :
"" );
287 aFormatter->
Print( 0,
" (xy %s %s)",
292 aFormatter->
Print( 0,
")\n" );
295 aFormatter->
Print( 0,
"\n" );
296 formatFill( aFormatter, aNestLevel + 1, aFillMode, aFillColor );
297 aFormatter->
Print( 0,
"\n" );
302 aFormatter->
Print( aNestLevel,
")\n" );
312 aFormatter->
Print( aNestLevel,
"(polyline%s\n",
313 aIsPrivate ?
" private" :
"" );
314 aFormatter->
Print( aNestLevel + 1,
"(pts" );
320 aFormatter->
Print( 0,
"\n" );
321 aFormatter->
Print( aNestLevel + 2,
"(xy %s %s)",
329 aFormatter->
Print( 0,
" (xy %s %s)",
339 aFormatter->
Print( 0,
")\n" );
343 aFormatter->
Print( 0,
"\n" );
344 aFormatter->
Print( aNestLevel + 1,
")\n" );
348 aFormatter->
Print( 0,
"\n" );
349 formatFill( aFormatter, aNestLevel + 1, aFillMode, aFillColor );
350 aFormatter->
Print( 0,
"\n" );
355 aFormatter->
Print( aNestLevel,
")\n" );
constexpr EDA_IU_SCALE schIUScale
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
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
VECTOR2I GetArcMid() const
A color representation with 4 components: red, green, blue, alpha.
wxString AsString() const
const std::vector< VECTOR2I > & CPoints() const
SHAPE_LINE_CHAIN & Outline(int aIndex)
Return the reference to aIndex-th outline in the set.
Simple container to manage line stroke parameters.
void Format(OUTPUTFORMATTER *out, const EDA_IU_SCALE &aIuScale, int nestLevel) const
static constexpr EDA_ANGLE & ANGLE_180
static constexpr EDA_ANGLE & ANGLE_90
static constexpr EDA_ANGLE & ANGLE_0
static constexpr EDA_ANGLE & ANGLE_270
@ FILLED_WITH_BG_BODYCOLOR
This file contains miscellaneous commonly used macros and functions.
KICOMMON_API std::string FormatInternalUnits(const EDA_IU_SCALE &aIuScale, int aValue)
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
tris 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.
EDA_ANGLE getPinAngle(PIN_ORIENTATION aOrientation)
void formatCircle(OUTPUTFORMATTER *aFormatter, int aNestLevel, EDA_SHAPE *aCircle, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, const KIID &aUuid)
void formatArc(OUTPUTFORMATTER *aFormatter, int aNestLevel, EDA_SHAPE *aArc, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, const KIID &aUuid)
const char * getSheetPinShapeToken(LABEL_FLAG_SHAPE aShape)
const char * getPinElectricalTypeToken(ELECTRICAL_PINTYPE aType)
void formatFill(OUTPUTFORMATTER *aFormatter, int aNestLevel, FILL_T aFillMode, const COLOR4D &aFillColor)
Fill token formatting helper.
const char * getTextTypeToken(KICAD_T aType)
void formatRect(OUTPUTFORMATTER *aFormatter, int aNestLevel, EDA_SHAPE *aRect, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, const KIID &aUuid)
void formatBezier(OUTPUTFORMATTER *aFormatter, int aNestLevel, EDA_SHAPE *aBezier, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, const KIID &aUuid)
void formatPoly(OUTPUTFORMATTER *aFormatter, int aNestLevel, EDA_SHAPE *aPolyLine, bool aIsPrivate, const STROKE_PARAMS &aStroke, FILL_T aFillMode, const COLOR4D &aFillColor, const KIID &aUuid)
EDA_ANGLE getSheetPinAngle(SHEET_SIDE aSide)
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...
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".