40 EDA_SHAPE( aShape, aLineWidth, aFillType )
74 m_fill = FILL_T::FILLED_SHAPE;
76 m_fill = FILL_T::FILLED_WITH_COLOR;
88 if(
GetShape() == SHAPE_T::RECTANGLE )
109 flip(
VECTOR2I( aCenter, 0 ), FLIP_DIRECTION::LEFT_RIGHT );
115 flip(
VECTOR2I( 0, aCenter ), FLIP_DIRECTION::TOP_BOTTOM );
127 return hitTest( aPosition, aAccuracy );
136 return hitTest( aRect, aContained, aAccuracy );
141 int aUnit,
int aBodyStyle,
const VECTOR2I& aOffset,
bool aDimmed )
152 static std::vector<VECTOR2I> ptList;
161 else if(
GetShape() == SHAPE_T::BEZIER )
178 case FILL_T::FILLED_SHAPE:
183 case FILL_T::REVERSE_HATCH:
184 case FILL_T::CROSS_HATCH:
191 case FILL_T::FILLED_WITH_COLOR:
199 case FILL_T::FILLED_WITH_BG_BODYCOLOR:
212 lineStyle = LINE_STYLE::SOLID;
219 if( lineStyle == LINE_STYLE::DEFAULT )
220 lineStyle = LINE_STYLE::SOLID;
222 if(
m_fill == FILL_T::FILLED_SHAPE )
225 fill = FILL_T::NO_FILL;
230 if( bg == COLOR4D::UNSPECIFIED || !aPlotter->
GetColorMode() )
250 aPlotter->
SetDash( pen_size, lineStyle );
260 aPlotter->
Arc( start, mid,
end, fill, pen_size );
263 case SHAPE_T::CIRCLE:
268 case SHAPE_T::RECTANGLE:
269 aPlotter->
Rect( start,
end, fill, pen_size );
273 case SHAPE_T::BEZIER:
274 aPlotter->
PlotPoly( ptList, fill, pen_size );
281 aPlotter->
SetDash( pen_size, LINE_STYLE::SOLID );
325 return wxString::Format(
_(
"Arc, radius %s" ),
328 case SHAPE_T::CIRCLE:
329 return wxString::Format(
_(
"Circle, radius %s" ),
332 case SHAPE_T::RECTANGLE:
333 return wxString::Format(
_(
"Rectangle, width %s height %s" ),
338 return wxString::Format(
_(
"Polyline, %d points" ),
341 case SHAPE_T::BEZIER:
342 return wxString::Format(
_(
"Bezier Curve, %d points" ),
347 return wxEmptyString;
356 case SHAPE_T::SEGMENT:
return BITMAPS::add_line;
357 case SHAPE_T::ARC:
return BITMAPS::add_arc;
358 case SHAPE_T::CIRCLE:
return BITMAPS::add_circle;
359 case SHAPE_T::RECTANGLE:
return BITMAPS::add_rectangle;
360 case SHAPE_T::POLY:
return BITMAPS::add_graphical_segments;
361 case SHAPE_T::BEZIER:
return BITMAPS::add_bezier;
365 return BITMAPS::question_mark;
372 std::vector<int> layers( 3 );
378 if(
m_fill == FILL_T::FILLED_WITH_BG_BODYCOLOR )
444 int cmpFlags = aCompareFlags;
483 if( fillEnum.
Choices().GetCount() == 0 )
485 fillEnum.
Map( FILL_T::NO_FILL,
_HKI(
"None" ) )
486 .
Map( FILL_T::FILLED_SHAPE,
_HKI(
"Body outline color" ) )
487 .
Map( FILL_T::FILLED_WITH_BG_BODYCOLOR,
_HKI(
"Body background color" ) )
488 .
Map( FILL_T::FILLED_WITH_COLOR,
_HKI(
"Fill color" ) );
504 return shape->GetShape() == SHAPE_T::POLY;
518 auto isSchematicItem =
527 auto isFillColorEditable =
532 if( shape->GetParentSymbol() )
533 return shape->GetFillMode() == FILL_T::FILLED_WITH_COLOR;
535 return shape->IsSolidFill();
542 _HKI(
"Position X" ), isPolygon );
544 _HKI(
"Position Y" ), isPolygon );
547 _HKI(
"Filled" ), isSchematicItem );
550 _HKI(
"Fill Color" ), isFillColorEditable );
556 fillModeSetter, fillModeGetter ),
557 _HKI(
"Shape Properties" ) )
558 .SetAvailableFunc( isSymbolItem );
constexpr EDA_IU_SCALE schIUScale
BITMAPS
A list of all bitmap identifiers.
The base class for create windows for drawing purpose.
A base class for most all the KiCad significant classes used in schematics and boards.
KICAD_T Type() const
Returns the type of object.
virtual void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
VECTOR2I getCenter() const
void rotate(const VECTOR2I &aRotCentre, const EDA_ANGLE &aAngle)
const SHAPE_POLY_SET & GetHatching() const
FILL_T GetFillMode() const
void ShapeGetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
bool operator==(const EDA_SHAPE &aOther) const
bool IsHatchedFill() const
bool hitTest(const VECTOR2I &aPosition, int aAccuracy=0) const
void flip(const VECTOR2I &aCentre, FLIP_DIRECTION aFlipDirection)
const VECTOR2I & GetEnd() const
Return the ending point of the graphic.
COLOR4D GetFillColor() const
void SwapShape(EDA_SHAPE *aImage)
std::vector< VECTOR2I > m_bezierPoints
wxString SHAPE_T_asString() const
double Similarity(const EDA_SHAPE &aOther) const
const BOX2I getBoundingBox() const
void SetFillMode(FILL_T aFill)
int Compare(const EDA_SHAPE *aOther) const
VECTOR2I GetArcMid() const
ENUM_MAP & Map(T aValue, const wxString &aName)
static ENUM_MAP< T > & Instance()
Class that other classes need to inherit from, in order to be inspectable.
A color representation with 4 components: red, green, blue, alpha.
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
Base plotter engine class.
virtual void Circle(const VECTOR2I &pos, int diametre, FILL_T fill, int width=USE_DEFAULT_LINE_WIDTH)=0
virtual void Arc(const VECTOR2D &aStart, const VECTOR2D &aMid, const VECTOR2D &aEnd, FILL_T aFill, int aWidth=USE_DEFAULT_LINE_WIDTH)
virtual void SetDash(int aLineWidth, LINE_STYLE aLineStyle)=0
bool GetColorMode() const
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
virtual void PlotPoly(const std::vector< VECTOR2I > &aCornerList, FILL_T aFill, int aWidth=USE_DEFAULT_LINE_WIDTH, void *aData=nullptr)=0
Draw a polygon ( filled or not ).
virtual void Rect(const VECTOR2I &p1, const VECTOR2I &p2, FILL_T fill, int width=USE_DEFAULT_LINE_WIDTH)=0
virtual void SetColor(const COLOR4D &color)=0
Provide class metadata.Helper macro to map type hashes to names.
void InheritsAfter(TYPE_ID aDerived, TYPE_ID aBase)
Declare an inheritance relationship between types.
static PROPERTY_MANAGER & Instance()
PROPERTY_BASE & AddProperty(PROPERTY_BASE *aProperty, const wxString &aGroup=wxEmptyString)
Register a property.
void OverrideAvailability(TYPE_ID aDerived, TYPE_ID aBase, const wxString &aName, std::function< bool(INSPECTABLE *)> aFunc)
Sets an override availability functor for a base class property of a given derived class.
void OverrideWriteability(TYPE_ID aDerived, TYPE_ID aBase, const wxString &aName, std::function< bool(INSPECTABLE *)> aFunc)
Sets an override writeability functor for a base class property of a given derived class.
void AddTypeCast(TYPE_CAST_BASE *aCast)
Register a type converter.
Holds all the data relating to one schematic.
SCHEMATIC_SETTINGS & Settings() const
Base class for any item which can be embedded within the SCHEMATIC container class,...
SCH_RENDER_SETTINGS * getRenderSettings(PLOTTER *aPlotter) const
const SYMBOL * GetParentSymbol() const
SCHEMATIC * Schematic() const
Search the item hierarchy to find a SCHEMATIC.
virtual bool operator==(const SCH_ITEM &aOther) const
void SetLayer(SCH_LAYER_ID aLayer)
virtual int compare(const SCH_ITEM &aOther, int aCompareFlags=0) const
Provide the draw object specific comparison called by the == and < operators.
void SwapFlags(SCH_ITEM *aItem)
Swap the non-temp and non-edit flags.
int GetEffectivePenWidth(const SCH_RENDER_SETTINGS *aSettings) const
double SimilarityBase(const SCH_ITEM &aItem) const
Calculate the boilerplate similarity for all LIB_ITEMs without preventing the use above of a pure vir...
void getSymbolEditorMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
VECTOR2I TransformCoordinate(const VECTOR2I &aPoint) const
const KIGFX::COLOR4D & GetBackgroundColor() const override
Return current background color settings.
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
void SetFilled(bool aFilled) override
void Move(const VECTOR2I &aOffset) override
Move the item by aMoveVector to a new position.
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
void SetStroke(const STROKE_PARAMS &aStroke) override
void swapData(SCH_ITEM *aItem) override
Swap the internal data structures aItem with the schematic item.
double Similarity(const SCH_ITEM &aOther) const override
Return a measure of how likely the other object is to represent the same object.
void Plot(PLOTTER *aPlotter, bool aBackground, const SCH_PLOT_OPTS &aPlotOpts, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aDimmed) override
Plot the item to aPlotter.
SCH_SHAPE(SHAPE_T aShape=SHAPE_T::UNDEFINED, SCH_LAYER_ID aLayer=LAYER_NOTES, int aLineWidth=0, FILL_T aFillType=FILL_T::NO_FILL, KICAD_T aType=SCH_SHAPE_T)
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
void AddPoint(const VECTOR2I &aPosition)
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
void Rotate(const VECTOR2I &aCenter, bool aRotateCCW) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
bool operator==(const SCH_ITEM &aOther) const override
std::vector< int > ViewGetLayers() const override
Return the layers the item is drawn on (which may be more than its "home" layer)
int GetPenWidth() const override
STROKE_PARAMS GetStroke() const override
VECTOR2I GetPosition() const override
int GetEffectiveWidth() const override
int compare(const SCH_ITEM &aOther, int aCompareFlags=0) const override
Provide the draw object specific comparison called by the == and < operators.
void SetClosed(bool aClosed)
Mark the line chain as closed (i.e.
virtual size_t GetPointCount() const override
void Append(int aX, int aY, bool aAllowDuplication=false)
Append a new point at the end of the line chain.
const std::vector< VECTOR2I > & CPoints() const
bool IsEmpty() const
Return true if the set is empty (no polygons at all)
SHAPE_LINE_CHAIN & Outline(int aIndex)
Return the reference to aIndex-th outline in the set.
int NewOutline()
Creates a new empty polygon in the set and returns its index.
int OutlineCount() const
Return the number of outlines in the set.
const SHAPE_LINE_CHAIN & COutline(int aIndex) const
Simple container to manage line stroke parameters.
LINE_STYLE GetLineStyle() const
KIGFX::COLOR4D GetColor() const
wxString MessageTextFromValue(double aValue, bool aAddUnitLabel=true, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE) const
A lower-precision version of StringFromValue().
#define DEFAULT_LINE_WIDTH_MILS
The default wire width in mils. (can be changed in preference menu)
static constexpr EDA_ANGLE ANGLE_90
static constexpr EDA_ANGLE ANGLE_270
#define STRUCT_DELETED
flag indication structures to be erased
#define SKIP_STRUCT
flag indicating that the structure should be ignored
SCH_LAYER_ID
Eeschema drawing layers.
@ LAYER_SHAPES_BACKGROUND
@ LAYER_DEVICE_BACKGROUND
@ LAYER_SELECTION_SHADOWS
This file contains miscellaneous commonly used macros and functions.
#define UNIMPLEMENTED_FOR(type)
Message panel definition file.
EDA_ANGLE abs(const EDA_ANGLE &aAngle)
#define ENUM_TO_WXANY(type)
Macro to define read-only fields (no setter method available)
static struct SCH_SHAPE_DESC _SCH_SHAPE_DESC
LINE_STYLE
Dashed line types.
constexpr int MilsToIU(int mils) const
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
VECTOR2< int32_t > VECTOR2I