KiCad PCB EDA Suite
Loading...
Searching...
No Matches
EDA_SHAPE Class Reference

#include <eda_shape.h>

Inheritance diagram for EDA_SHAPE:
SERIALIZABLE EDA_SHAPE_MOCK PCB_SHAPE SCH_SHAPE PCB_TEXTBOX SCH_RULE_AREA SCH_TEXTBOX PCB_TABLECELL SCH_TABLECELL

Public Member Functions

 EDA_SHAPE (SHAPE_T aType, int aLineWidth, FILL_T aFill)
 
 EDA_SHAPE (const SHAPE &aShape)
 
virtual ~EDA_SHAPE ()
 
void SwapShape (EDA_SHAPE *aImage)
 
void Serialize (google::protobuf::Any &aContainer) const override
 Serializes this object to the given Any message.
 
bool Deserialize (const google::protobuf::Any &aContainer) override
 Deserializes the given protobuf message into this object.
 
wxString ShowShape () const
 
wxString SHAPE_T_asString () const
 
virtual bool IsProxyItem () const
 
virtual void SetIsProxyItem (bool aIsProxy=true)
 
bool IsFilled () const
 
virtual bool IsFilledForHitTesting () const
 
void SetFilled (bool aFlag)
 
void SetFillMode (FILL_T aFill)
 
FILL_T GetFillMode () const
 
bool IsClosed () const
 
COLOR4D GetFillColor () const
 
void SetFillColor (const COLOR4D &aColor)
 
void SetWidth (int aWidth)
 
virtual int GetWidth () const
 
virtual int GetEffectiveWidth () const
 
void SetLineStyle (const LINE_STYLE aStyle)
 
LINE_STYLE GetLineStyle () const
 
void SetLineColor (const COLOR4D &aColor)
 
COLOR4D GetLineColor () const
 
void SetShape (SHAPE_T aShape)
 
SHAPE_T GetShape () const
 
const VECTOR2IGetStart () const
 Return the starting point of the graphic.
 
int GetStartY () const
 
int GetStartX () const
 
void SetStart (const VECTOR2I &aStart)
 
void SetStartY (int y)
 
void SetStartX (int x)
 
void SetCenterY (int y)
 
void SetCenterX (int x)
 
const VECTOR2IGetEnd () const
 Return the ending point of the graphic.
 
int GetEndY () const
 
int GetEndX () const
 
void SetEnd (const VECTOR2I &aEnd)
 
void SetEndY (int aY)
 
void SetEndX (int aX)
 
void SetRadius (int aX)
 
virtual VECTOR2I GetTopLeft () const
 
virtual VECTOR2I GetBotRight () const
 
virtual void SetTop (int val)
 
virtual void SetLeft (int val)
 
virtual void SetRight (int val)
 
virtual void SetBottom (int val)
 
void SetBezierC1 (const VECTOR2I &aPt)
 
const VECTOR2IGetBezierC1 () const
 
void SetBezierC2 (const VECTOR2I &aPt)
 
const VECTOR2IGetBezierC2 () const
 
VECTOR2I getCenter () const
 
void SetCenter (const VECTOR2I &aCenter)
 
void SetArcAngleAndEnd (const EDA_ANGLE &aAngle, bool aCheckNegativeAngle=false)
 Set the end point from the angle center and start.
 
EDA_ANGLE GetArcAngle () const
 
EDA_ANGLE GetSegmentAngle () const
 
bool EndsSwapped () const
 Have the start and end points been swapped since they were set?
 
VECTOR2I GetArcMid () const
 
std::vector< VECTOR2IGetRectCorners () const
 
void CalcArcAngles (EDA_ANGLE &aStartAngle, EDA_ANGLE &aEndAngle) const
 Calc arc start and end angles such that aStartAngle < aEndAngle.
 
int GetRadius () const
 
void SetArcGeometry (const VECTOR2I &aStart, const VECTOR2I &aMid, const VECTOR2I &aEnd)
 Set the three controlling points for an arc.
 
void SetCachedArcData (const VECTOR2I &aStart, const VECTOR2I &aMid, const VECTOR2I &aEnd, const VECTOR2I &aCenter)
 Set the data used for mid point caching.
 
const std::vector< VECTOR2I > & GetBezierPoints () const
 
void DupPolyPointsList (std::vector< VECTOR2I > &aBuffer) const
 Duplicate the list of corners in a std::vector<VECTOR2I>
 
int GetPointCount () const
 
SHAPE_POLY_SETGetPolyShape ()
 
const SHAPE_POLY_SETGetPolyShape () const
 
bool IsPolyShapeValid () const
 
void SetPolyShape (const SHAPE_POLY_SET &aShape)
 
void SetPolyPoints (const std::vector< VECTOR2I > &aPoints)
 
void RebuildBezierToSegmentsPointsList (int aMaxError)
 Rebuild the m_bezierPoints vertex list that approximate the Bezier curve by a list of segments.
 
virtual std::vector< SHAPE * > MakeEffectiveShapes (bool aEdgeOnly=false) const
 Make a set of SHAPE objects representing the EDA_SHAPE.
 
void ShapeGetMsgPanelInfo (EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList)
 
void SetLength (const double &aLength)
 
void SetRectangleHeight (const int &aHeight)
 
void SetRectangleWidth (const int &aWidth)
 
void SetRectangle (const long long int &aHeight, const long long int &aWidth)
 
void SetSegmentAngle (const EDA_ANGLE &aAngle)
 
bool IsClockwiseArc () const
 
double GetLength () const
 
int GetRectangleHeight () const
 
int GetRectangleWidth () const
 
void TransformShapeToPolygon (SHAPE_POLY_SET &aBuffer, int aClearance, int aError, ERROR_LOC aErrorLoc, bool ignoreLineWidth=false) const
 Convert the shape to a closed polygon.
 
int Compare (const EDA_SHAPE *aOther) const
 
double Similarity (const EDA_SHAPE &aOther) const
 
bool operator== (const EDA_SHAPE &aOther) const
 

Protected Member Functions

wxString getFriendlyName () const
 
void setPosition (const VECTOR2I &aPos)
 
VECTOR2I getPosition () const
 
virtual void setFilled (bool aFlag)
 
void move (const VECTOR2I &aMoveVector)
 
void rotate (const VECTOR2I &aRotCentre, const EDA_ANGLE &aAngle)
 
void flip (const VECTOR2I &aCentre, FLIP_DIRECTION aFlipDirection)
 
void scale (double aScale)
 
const BOX2I getBoundingBox () const
 
void computeArcBBox (BOX2I &aBBox) const
 
bool hitTest (const VECTOR2I &aPosition, int aAccuracy=0) const
 
bool hitTest (const BOX2I &aRect, bool aContained, int aAccuracy=0) const
 
const std::vector< VECTOR2IbuildBezierToSegmentsPointsList (int aMaxError) const
 
void beginEdit (const VECTOR2I &aStartPoint)
 
bool continueEdit (const VECTOR2I &aPosition)
 
void calcEdit (const VECTOR2I &aPosition)
 
void endEdit (bool aClosed=true)
 Finishes editing the shape.
 
void setEditState (int aState)
 
std::vector< SHAPE * > makeEffectiveShapes (bool aEdgeOnly, bool aLineChainOnly=false) const
 Make a set of SHAPE objects representing the EDA_SHAPE.
 

Protected Attributes

bool m_endsSwapped
 
SHAPE_T m_shape
 
STROKE_PARAMS m_stroke
 
FILL_T m_fill
 
COLOR4D m_fillColor
 
long long int m_rectangleHeight
 
long long int m_rectangleWidth
 
double m_segmentLength
 
EDA_ANGLE m_segmentAngle
 
VECTOR2I m_start
 
VECTOR2I m_end
 
VECTOR2I m_arcCenter
 
ARC_MID m_arcMidData
 
VECTOR2I m_bezierC1
 
VECTOR2I m_bezierC2
 
std::vector< VECTOR2Im_bezierPoints
 
SHAPE_POLY_SET m_poly
 
int m_editState
 
bool m_proxyItem
 

Detailed Description

Definition at line 73 of file eda_shape.h.

Constructor & Destructor Documentation

◆ EDA_SHAPE() [1/2]

EDA_SHAPE::EDA_SHAPE ( SHAPE_T  aType,
int  aLineWidth,
FILL_T  aFill 
)

Definition at line 47 of file eda_shape.cpp.

◆ EDA_SHAPE() [2/2]

◆ ~EDA_SHAPE()

EDA_SHAPE::~EDA_SHAPE ( )
virtual

Definition at line 62 of file eda_shape.cpp.

Member Function Documentation

◆ beginEdit()

◆ buildBezierToSegmentsPointsList()

const std::vector< VECTOR2I > EDA_SHAPE::buildBezierToSegmentsPointsList ( int  aMaxError) const
protected

◆ CalcArcAngles()

void EDA_SHAPE::CalcArcAngles ( EDA_ANGLE aStartAngle,
EDA_ANGLE aEndAngle 
) const

Calc arc start and end angles such that aStartAngle < aEndAngle.

Each may be between -360.0 and 360.0.

Definition at line 810 of file eda_shape.cpp.

References ANGLE_360, getCenter(), GetEnd(), and GetStart().

Referenced by CreepageGraph::Addshape(), computeArcBBox(), KIGFX::PCB_PAINTER::draw(), GetArcAngle(), hitTest(), SCH_SHAPE::Print(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveArc(), SegmentIntersectsBoard(), and CreepageGraph::TransformEdgeToCreepShapes().

◆ calcEdit()

◆ Compare()

◆ computeArcBBox()

void EDA_SHAPE::computeArcBBox ( BOX2I aBBox) const
protected

◆ continueEdit()

◆ Deserialize()

bool EDA_SHAPE::Deserialize ( const google::protobuf::Any &  aContainer)
overridevirtual

Deserializes the given protobuf message into this object.

Parameters
aContaineris an Any which should have a concrete type matching this object
Returns
true if unpacking and deserialization succeeded

Reimplemented from SERIALIZABLE.

Reimplemented in PCB_SHAPE, and PCB_TEXTBOX.

Definition at line 234 of file eda_shape.cpp.

References ARC_HIGH_DEF, m_arcCenter, m_arcMidData, m_bezierC1, m_bezierC2, m_editState, m_end, m_endsSwapped, m_proxyItem, m_start, RebuildBezierToSegmentsPointsList(), SetArcGeometry(), SetBezierC1(), SetBezierC2(), SetEnd(), SetFilled(), SetLineStyle(), SetPolyShape(), SetShape(), SetStart(), and SetWidth().

Referenced by PCB_SHAPE::Deserialize().

◆ DupPolyPointsList()

void EDA_SHAPE::DupPolyPointsList ( std::vector< VECTOR2I > &  aBuffer) const

Duplicate the list of corners in a std::vector<VECTOR2I>

It must be used only to convert the SHAPE_POLY_SET internal corner buffer to a list of VECTOR2Is, and nothing else, because it duplicates the buffer, that is inefficient to know for instance the corner count

Definition at line 1554 of file eda_shape.cpp.

References SHAPE_POLY_SET::CIterate(), SHAPE_POLY_SET::COutline(), m_poly, SHAPE_POLY_SET::OutlineCount(), and SHAPE_LINE_CHAIN::PointCount().

Referenced by PCB_GRID_HELPER::computeAnchors(), SegmentIntersectsBoard(), and CreepageGraph::TransformEdgeToCreepShapes().

◆ endEdit()

void EDA_SHAPE::endEdit ( bool  aClosed = true)
protected

Finishes editing the shape.

Parameters
aClosedShould polygon shapes be closed (yes for pcbnew/fpeditor, no for libedit)

Definition at line 1815 of file eda_shape.cpp.

References SHAPE_LINE_CHAIN::CLastPoint(), SHAPE_LINE_CHAIN::CPoint(), SHAPE_LINE_CHAIN::GetPointCount(), GetShape(), m_poly, SHAPE_POLY_SET::Outline(), SHAPE_LINE_CHAIN::Remove(), SHAPE_LINE_CHAIN::SetClosed(), SHAPE_T_asString(), and UNIMPLEMENTED_FOR.

Referenced by SCH_SHAPE::EndEdit().

◆ EndsSwapped()

bool EDA_SHAPE::EndsSwapped ( ) const
inline

Have the start and end points been swapped since they were set?

Returns
true if they have

Definition at line 234 of file eda_shape.h.

References m_endsSwapped.

Referenced by BOOST_AUTO_TEST_CASE().

◆ flip()

◆ GetArcAngle()

◆ GetArcMid()

◆ GetBezierC1()

◆ GetBezierC2()

◆ GetBezierPoints()

const std::vector< VECTOR2I > & EDA_SHAPE::GetBezierPoints ( ) const
inline

◆ GetBotRight()

virtual VECTOR2I EDA_SHAPE::GetBotRight ( ) const
inlinevirtual

◆ getBoundingBox()

◆ getCenter()

◆ GetEffectiveWidth()

virtual int EDA_SHAPE::GetEffectiveWidth ( ) const
inlinevirtual

Reimplemented in SCH_SHAPE.

Definition at line 123 of file eda_shape.h.

References GetWidth().

Referenced by makeEffectiveShapes().

◆ GetEnd()

const VECTOR2I & EDA_SHAPE::GetEnd ( ) const
inline

Return the ending point of the graphic.

Definition at line 174 of file eda_shape.h.

References m_end.

Referenced by PCB_GRID_HELPER::AddConstructionItems(), PCB_POINT_EDITOR::addCorner(), FEATURES_MANAGER::AddShape(), BOARD_ADAPTER::addShape(), PCB_IO_IPC2581::addShape(), GRAPHICS_CLEANER::areEquivalent(), BOOST_AUTO_TEST_CASE(), CalcArcAngles(), calcEdit(), KI_TEST::CheckFpShape(), CheckLibSymbolGraphics(), PCB_GRID_HELPER::computeAnchors(), ConnectBoardShapes(), PCB_EDIT_TABLE_TOOL::copyCell(), SCH_EDIT_TABLE_TOOL::copyCell(), doConvertOutlineToPolygon(), KIGFX::PCB_PAINTER::draw(), KIGFX::SCH_PAINTER::draw(), DRAWING_TOOL::DrawBezier(), DRAWING_TOOL::DrawLine(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepCenter(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepTangent(), GENCAD_EXPORTER::FootprintWriteShape(), PCB_IO_KICAD_SEXPR::format(), formatArc(), formatBezier(), formatRect(), GetBotRight(), PCB_TEXTBOX::GetBotRight(), getBoundingBox(), PCB_SHAPE::GetConnectionPoints(), PCB_TABLE::GetEffectiveShape(), GetLength(), SCH_TABLECELL::GetMsgPanelInfo(), SCH_TEXTBOX::GetMsgPanelInfo(), PCB_TABLECELL::GetMsgPanelInfo(), PCB_TEXTBOX::GetMsgPanelInfo(), GetRectCorners(), CADSTAR_SCH_ARCHIVE_LOADER::getScaledLibPart(), GetSegmentAngle(), GraphConnection::GetShapes(), SCH_TEXTBOX::GetShownText(), CONVERT_TOOL::getStartEndPoints(), PCB_TEXTBOX::GetTopLeft(), hash_fp_item(), hitTest(), idf_export_outline(), GRAPHICS_CLEANER::isNullShape(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadArc(), SCH_IO_EAGLE::loadSymbolRectangle(), makeEffectiveShapes(), DSN::SPECCTRA_DB::makeIMAGE(), ARC_POINT_EDIT_BEHAVIOR::MakePoints(), EDA_SEGMENT_POINT_EDIT_BEHAVIOR::MakePoints(), EDA_CIRCLE_POINT_EDIT_BEHAVIOR::MakePoints(), EDA_BEZIER_POINT_EDIT_BEHAVIOR::MakePoints(), EDA_TABLECELL_POINT_EDIT_BEHAVIOR::MakePoints(), RECTANGLE_POINT_EDIT_BEHAVIOR::MakePoints(), CONVERT_TOOL::makePolysFromChainedSegs(), GRAPHICS_CLEANER::mergeRects(), SCH_SHAPE::Normalize(), SCH_TABLE::Normalize(), PCB_SHAPE::Normalize(), PCB_TABLE::Normalize(), PCB_SHAPE::NormalizeForCompare(), FOOTPRINT::cmp_drawings::operator()(), SCH_EDITOR_CONTROL::Paste(), BRDITEMS_PLOTTER::PlotShape(), BRDITEMS_PLOTTER::PlotTableBorders(), SCH_SHAPE::Print(), SCH_TEXTBOX::Print(), SCH_SHAPE::PrintBackground(), OUTSET_ROUTINE::ProcessItem(), LINE_FILLET_ROUTINE::ProcessLinePair(), LINE_CHAMFER_ROUTINE::ProcessLinePair(), LINE_EXTENSION_ROUTINE::ProcessLinePair(), DOGBONE_CORNER_ROUTINE::ProcessLinePair(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveBezier(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveRectangle(), SCH_IO_KICAD_SEXPR::saveTextBox(), SCH_IO_KICAD_SEXPR_LIB_CACHE::saveTextBox(), SegmentIntersectsBoard(), PCB_SELECTION_TOOL::selectAllConnectedShapes(), Serialize(), PCB_TEXTBOX::Serialize(), ShapeGetMsgPanelInfo(), shapeNeedsUpdate(), PLOTTER::ThickArc(), AR_MATRIX::TraceSegmentPcb(), CreepageGraph::TransformEdgeToCreepShapes(), TransformShapeToPolygon(), BEZIER_GEOM_SYNCER::updateBezier(), CIRCLE_GEOM_SYNCER::updateCenterPoint(), RECTANGLE_GEOM_SYNCER::updateCorners(), LINE_GEOM_SYNCER::updateEnds(), RECTANGLE_POINT_EDIT_BEHAVIOR::UpdateItem(), ARC_POINT_EDIT_BEHAVIOR::UpdatePoints(), EDA_SEGMENT_POINT_EDIT_BEHAVIOR::UpdatePoints(), EDA_CIRCLE_POINT_EDIT_BEHAVIOR::UpdatePoints(), EDA_BEZIER_POINT_EDIT_BEHAVIOR::UpdatePoints(), EDA_TABLECELL_POINT_EDIT_BEHAVIOR::UpdatePoints(), RECTANGLE_POINT_EDIT_BEHAVIOR::UpdatePoints(), LINE_GEOM_SYNCER::updatePolar(), and ARC_GEOM_SYNCER::updateSME().

◆ GetEndX()

◆ GetEndY()

◆ GetFillColor()

◆ GetFillMode()

◆ getFriendlyName()

wxString EDA_SHAPE::getFriendlyName ( ) const
protected

Definition at line 939 of file eda_shape.cpp.

References _, IsProxyItem(), and m_shape.

Referenced by PCB_SHAPE::GetFriendlyName(), and ShapeGetMsgPanelInfo().

◆ GetLength()

◆ GetLineColor()

COLOR4D EDA_SHAPE::GetLineColor ( ) const
inline

Definition at line 129 of file eda_shape.h.

References STROKE_PARAMS::GetColor(), and m_stroke.

Referenced by EDA_SHAPE_DESC::EDA_SHAPE_DESC().

◆ GetLineStyle()

LINE_STYLE EDA_SHAPE::GetLineStyle ( ) const

◆ GetPointCount()

int EDA_SHAPE::GetPointCount ( ) const
Returns
the number of corners of the polygonal shape

Definition at line 1578 of file eda_shape.cpp.

References GetPolyShape(), SHAPE_POLY_SET::OutlineCount(), and SHAPE_POLY_SET::VertexCount().

Referenced by GRAPHICS_CLEANER::isNullShape(), and SCH_IO_KICAD_SEXPR_PARSER::ParseSchematic().

◆ GetPolyShape() [1/2]

◆ GetPolyShape() [2/2]

const SHAPE_POLY_SET & EDA_SHAPE::GetPolyShape ( ) const
inline

Definition at line 287 of file eda_shape.h.

References m_poly.

◆ getPosition()

VECTOR2I EDA_SHAPE::getPosition ( ) const
protected

◆ GetRadius()

◆ GetRectangleHeight()

◆ GetRectangleWidth()

◆ GetRectCorners()

◆ GetSegmentAngle()

EDA_ANGLE EDA_SHAPE::GetSegmentAngle ( ) const

Definition at line 887 of file eda_shape.cpp.

References GetEnd(), GetStart(), and RADIANS_T.

◆ GetShape()

SHAPE_T EDA_SHAPE::GetShape ( ) const
inline

Definition at line 132 of file eda_shape.h.

References m_shape.

Referenced by PCB_GRID_HELPER::AddConstructionItems(), PCB_POINT_EDITOR::addCorner(), EE_POINT_EDITOR::addCornerCondition(), PCB_IO_IPC2581::addLocationNode(), PCB_IO_IPC2581::addPackage(), SCH_SHAPE::AddPoint(), FEATURES_MANAGER::AddShape(), BOARD_ADAPTER::addShape(), PCB_IO_IPC2581::addShape(), ARC_POINT_EDIT_BEHAVIOR::ARC_POINT_EDIT_BEHAVIOR(), GRAPHICS_CLEANER::areEquivalent(), beginEdit(), calcEdit(), canAddCorner(), canChamferCorner(), PCB_POINT_EDITOR::chamferCorner(), KI_TEST::CheckFpShape(), CheckLibSymbolGraphics(), PCB_GRID_HELPER::computeAnchors(), ConnectBoardShapes(), continueEdit(), DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), doConvertOutlineToPolygon(), KIGFX::PCB_PAINTER::draw(), KIGFX::SCH_PAINTER::draw(), EDA_BEZIER_POINT_EDIT_BEHAVIOR::EDA_BEZIER_POINT_EDIT_BEHAVIOR(), EDA_CIRCLE_POINT_EDIT_BEHAVIOR::EDA_CIRCLE_POINT_EDIT_BEHAVIOR(), EDA_POLYGON_POINT_EDIT_BEHAVIOR::EDA_POLYGON_POINT_EDIT_BEHAVIOR(), EDA_SEGMENT_POINT_EDIT_BEHAVIOR::EDA_SEGMENT_POINT_EDIT_BEHAVIOR(), EDA_SHAPE_DESC::EDA_SHAPE_DESC(), EDA_TABLECELL_POINT_EDIT_BEHAVIOR::EDA_TABLECELL_POINT_EDIT_BEHAVIOR(), endEdit(), PAD_TOOL::explodePad(), CADSTAR_SCH_ARCHIVE_LOADER::fixUpLibraryPins(), EDIT_TOOL::Flip(), GENCAD_EXPORTER::FootprintWriteShape(), PCB_IO_KICAD_SEXPR::format(), PCB_SHAPE::GetCorners(), FOOTPRINT::GetCoverageArea(), SCH_SHAPE::GetItemDescription(), SCH_SHAPE::GetMenuImage(), CADSTAR_SCH_ARCHIVE_LOADER::getScaledLibPart(), ODB::GetShapePosition(), CONVERT_TOOL::getStartEndPoints(), EE_SELECTION_TOOL::GuessSelectionCandidates(), hash_fp_item(), idf_export_outline(), PCB_SELECTION_TOOL::isExpandableGraphicShape(), GRAPHICS_CLEANER::isNullShape(), DSN::SPECCTRA_DB::makeIMAGE(), RECTANGLE_POINT_EDIT_BEHAVIOR::MakePoints(), PCB_POINT_EDITOR::makePoints(), TEXTBOX_POINT_EDIT_BEHAVIOR::MakePoints(), EE_POINT_EDITOR::makePointsAndBehavior(), CONVERT_TOOL::makePolysFromChainedSegs(), GRAPHICS_CLEANER::mergeRects(), PCB_SHAPE::Mirror(), ITEM_MODIFICATION_ROUTINE::ModifyLineOrDeleteIfZeroLength(), SCH_SHAPE::Normalize(), PCB_SHAPE::cmp_drawings::operator()(), FOOTPRINT::cmp_drawings::operator()(), operator==(), ALTIUM_PCB::Parse(), SCH_EDITOR_CONTROL::Paste(), SCH_RULE_AREA::Plot(), SCH_SHAPE::Plot(), BRDITEMS_PLOTTER::PlotShape(), SCH_SHAPE::Print(), SCH_SHAPE::PrintBackground(), OUTSET_ROUTINE::ProcessItem(), POLYGON_BOOLEAN_ROUTINE::ProcessShape(), RECTANGLE_POINT_EDIT_BEHAVIOR::RECTANGLE_POINT_EDIT_BEHAVIOR(), PCB_POINT_EDITOR::removeCorner(), PCB_POINT_EDITOR::removeCornerCondition(), PCB_TEXTBOX::Rotate(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::Run(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveBezier(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveCircle(), SCH_IO_KICAD_LEGACY_LIB_CACHE::savePolyLine(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveRectangle(), SCH_IO_KICAD_SEXPR::saveShape(), SCH_IO_KICAD_LEGACY_LIB_CACHE::SaveSymbol(), SCH_IO_KICAD_SEXPR_LIB_CACHE::saveSymbolDrawItem(), SegmentIntersectsBoard(), Serialize(), PCB_SHAPE::SetIsProxyItem(), SetLibShapeFillAndColor(), SetSchShapeFillAndColor(), shapeNeedsUpdate(), Similarity(), AR_MATRIX::TraceSegmentPcb(), CreepageGraph::TransformEdgeToCreepShapes(), PCB_TEXTBOX::TransformShapeToPolygon(), TEXTBOX_POINT_EDIT_BEHAVIOR::UpdateItem(), TEXTBOX_POINT_EDIT_BEHAVIOR::UpdatePoints(), and DIALOG_SHAPE_PROPERTIES::Validate().

◆ GetStart()

const VECTOR2I & EDA_SHAPE::GetStart ( ) const
inline

Return the starting point of the graphic.

Definition at line 137 of file eda_shape.h.

References m_start.

Referenced by PCB_GRID_HELPER::AddConstructionItems(), PCB_POINT_EDITOR::addCorner(), PCB_IO_IPC2581::addPadStack(), FEATURES_MANAGER::AddShape(), BOARD_ADAPTER::addShape(), PCB_IO_IPC2581::addShape(), GRAPHICS_CLEANER::areEquivalent(), BOOST_AUTO_TEST_CASE(), CalcArcAngles(), calcEdit(), KI_TEST::CheckFpShape(), PCB_GRID_HELPER::computeAnchors(), ConnectBoardShapes(), ALTIUM_PCB::ConvertArcs6ToBoardItemOnLayer(), PCB_EDIT_TABLE_TOOL::copyCell(), SCH_EDIT_TABLE_TOOL::copyCell(), doConvertOutlineToPolygon(), KIGFX::PCB_PAINTER::draw(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepCenter(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepTangent(), GENCAD_EXPORTER::FootprintWriteShape(), PCB_IO_KICAD_SEXPR::format(), formatArc(), formatBezier(), formatCircle(), formatRect(), PCB_TEXTBOX::GetBotRight(), getBoundingBox(), PCB_SHAPE::GetConnectionPoints(), PCB_SHAPE::GetFocusPosition(), GetLength(), SCH_TABLECELL::GetMsgPanelInfo(), SCH_TEXTBOX::GetMsgPanelInfo(), PCB_TABLECELL::GetMsgPanelInfo(), PCB_TEXTBOX::GetMsgPanelInfo(), GetRectCorners(), CADSTAR_SCH_ARCHIVE_LOADER::getScaledLibPart(), GetSegmentAngle(), GraphConnection::GetShapes(), SCH_TEXTBOX::GetShownText(), CONVERT_TOOL::getStartEndPoints(), GetTopLeft(), PCB_TEXTBOX::GetTopLeft(), hash_fp_item(), hitTest(), idf_export_outline(), GRAPHICS_CLEANER::isNullShape(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadArc(), DSN::SPECCTRA_DB::makeIMAGE(), ARC_POINT_EDIT_BEHAVIOR::MakePoints(), EDA_SEGMENT_POINT_EDIT_BEHAVIOR::MakePoints(), EDA_BEZIER_POINT_EDIT_BEHAVIOR::MakePoints(), CONVERT_TOOL::makePolysFromChainedSegs(), GRAPHICS_CLEANER::mergeRects(), PCB_SHAPE::Normalize(), PCB_SHAPE::NormalizeForCompare(), FOOTPRINT::cmp_drawings::operator()(), SCH_IO_ALTIUM::ParseEllipse(), SCH_EDITOR_CONTROL::Paste(), BRDITEMS_PLOTTER::PlotPcbTarget(), BRDITEMS_PLOTTER::PlotShape(), SCH_SHAPE::Print(), SCH_TEXTBOX::Print(), SCH_SHAPE::PrintBackground(), OUTSET_ROUTINE::ProcessItem(), LINE_FILLET_ROUTINE::ProcessLinePair(), LINE_CHAMFER_ROUTINE::ProcessLinePair(), LINE_EXTENSION_ROUTINE::ProcessLinePair(), DOGBONE_CORNER_ROUTINE::ProcessLinePair(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveBezier(), SCH_IO_KICAD_SEXPR::saveTextBox(), SCH_IO_KICAD_SEXPR_LIB_CACHE::saveTextBox(), SegmentIntersectsBoard(), PCB_SELECTION_TOOL::selectAllConnectedShapes(), Serialize(), ShapeGetMsgPanelInfo(), shapeNeedsUpdate(), PLOTTER::ThickArc(), AR_MATRIX::TraceSegmentPcb(), CreepageGraph::TransformEdgeToCreepShapes(), TransformShapeToPolygon(), BEZIER_GEOM_SYNCER::updateBezier(), RECTANGLE_GEOM_SYNCER::updateCorners(), RECTANGLE_GEOM_SYNCER::updateCornerSize(), ARC_GEOM_SYNCER::updateCSA(), LINE_GEOM_SYNCER::updateEnds(), RECTANGLE_POINT_EDIT_BEHAVIOR::UpdateItem(), ARC_POINT_EDIT_BEHAVIOR::UpdatePoints(), EDA_SEGMENT_POINT_EDIT_BEHAVIOR::UpdatePoints(), EDA_BEZIER_POINT_EDIT_BEHAVIOR::UpdatePoints(), LINE_GEOM_SYNCER::updatePolar(), ARC_GEOM_SYNCER::updateSME(), and LINE_GEOM_SYNCER::updateStartMidpoint().

◆ GetStartX()

◆ GetStartY()

◆ GetTopLeft()

virtual VECTOR2I EDA_SHAPE::GetTopLeft ( ) const
inlinevirtual

◆ GetWidth()

◆ hitTest() [1/2]

◆ hitTest() [2/2]

◆ IsClockwiseArc()

bool EDA_SHAPE::IsClockwiseArc ( ) const

◆ IsClosed()

◆ IsFilled()

◆ IsFilledForHitTesting()

virtual bool EDA_SHAPE::IsFilledForHitTesting ( ) const
inlinevirtual

Reimplemented in SCH_RULE_AREA.

Definition at line 103 of file eda_shape.h.

References IsFilled().

Referenced by hitTest().

◆ IsPolyShapeValid()

bool EDA_SHAPE::IsPolyShapeValid ( ) const
Returns
true if the polygonal shape is valid (has more than 2 points)

Definition at line 1571 of file eda_shape.cpp.

References GetPolyShape(), SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), and SHAPE_LINE_CHAIN::PointCount().

Referenced by PCB_IO_KICAD_SEXPR::format(), BRDITEMS_PLOTTER::PlotShape(), and TransformShapeToPolygon().

◆ IsProxyItem()

virtual bool EDA_SHAPE::IsProxyItem ( ) const
inlinevirtual

Reimplemented in PCB_SHAPE.

Definition at line 95 of file eda_shape.h.

References m_proxyItem.

Referenced by getFriendlyName(), hitTest(), makeEffectiveShapes(), ShowShape(), and TransformShapeToPolygon().

◆ makeEffectiveShapes()

std::vector< SHAPE * > EDA_SHAPE::makeEffectiveShapes ( bool  aEdgeOnly,
bool  aLineChainOnly = false 
) const
protected

Make a set of SHAPE objects representing the EDA_SHAPE.

Caller owns the objects.

Parameters
aEdgeOnlyindicates only edges should be generated (even if 0 width), and no fill shapes.
aLineChainOnlyindicates SHAPE_POLY_SET is being abused slightly to represent a lineChain rather than a closed polygon

Definition at line 1461 of file eda_shape.cpp.

References ANGLE_360, buildBezierToSegmentsPointsList(), SHAPE_POLY_SET::COutline(), SHAPE_LINE_CHAIN::CSegment(), GetArcAngle(), getCenter(), GetEffectiveWidth(), GetEnd(), GetPolyShape(), GetRadius(), GetRectCorners(), SHAPE_LINE_CHAIN::IsClosed(), IsFilled(), IsProxyItem(), m_arcCenter, m_end, m_shape, m_start, SHAPE_POLY_SET::OutlineCount(), SHAPE_LINE_CHAIN::SegmentCount(), SHAPE_T_asString(), and UNIMPLEMENTED_FOR.

Referenced by MakeEffectiveShapes(), and SCH_SHAPE::MakeEffectiveShapes().

◆ MakeEffectiveShapes()

virtual std::vector< SHAPE * > EDA_SHAPE::MakeEffectiveShapes ( bool  aEdgeOnly = false) const
inlinevirtual

Make a set of SHAPE objects representing the EDA_SHAPE.

Caller owns the objects.

Parameters
aEdgeOnlyindicates only edges should be generated (even if 0 width), and no fill shapes.

Reimplemented in SCH_RULE_AREA, and SCH_SHAPE.

Definition at line 326 of file eda_shape.h.

References makeEffectiveShapes().

Referenced by BOARD_ADAPTER::addShape(), KIGFX::PCB_PAINTER::draw(), PCB_SHAPE::GetEffectiveShape(), EE_SELECTION_TOOL::GuessSelectionCandidates(), BRDITEMS_PLOTTER::PlotShape(), and PNS_KICAD_IFACE_BASE::syncGraphicalItem().

◆ move()

void EDA_SHAPE::move ( const VECTOR2I aMoveVector)
protected

◆ operator==()

◆ RebuildBezierToSegmentsPointsList()

void EDA_SHAPE::RebuildBezierToSegmentsPointsList ( int  aMaxError)

Rebuild the m_bezierPoints vertex list that approximate the Bezier curve by a list of segments.

Has meaning only for BEZIER shape.

Parameters
aMinSegLenis the max deviation between the polyline and the curve

Definition at line 725 of file eda_shape.cpp.

References buildBezierToSegmentsPointsList(), m_bezierPoints, and m_shape.

Referenced by beginEdit(), calcEdit(), Deserialize(), doConvertOutlineToPolygon(), flip(), GRAPHICS_CLEANER::isNullShape(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadBezier(), PCB_SHAPE::Mirror(), SCH_IO_ALTIUM::ParseBezier(), SCH_IO_ALTIUM::ParseEllipse(), SCH_IO_ALTIUM::ParseEllipticalArc(), scale(), updateBezierFromConstructionMgr(), and EDA_BEZIER_POINT_EDIT_BEHAVIOR::UpdateItem().

◆ rotate()

◆ scale()

◆ Serialize()

void EDA_SHAPE::Serialize ( google::protobuf::Any &  aContainer) const
overridevirtual

Serializes this object to the given Any message.

The Any message's concrete type will be specific to the object in question.

Parameters
aContainerwill be filled with a message describing this object

Reimplemented from SERIALIZABLE.

Reimplemented in PCB_SHAPE, and PCB_TEXTBOX.

Definition at line 146 of file eda_shape.cpp.

References GetArcMid(), GetBezierC1(), GetBezierC2(), GetEnd(), GetFillMode(), GetLineStyle(), GetPolyShape(), GetShape(), GetStart(), and GetWidth().

Referenced by API_HANDLER_COMMON::handleGetTextAsShapes(), and PCB_SHAPE::Serialize().

◆ SetArcAngleAndEnd()

void EDA_SHAPE::SetArcAngleAndEnd ( const EDA_ANGLE aAngle,
bool  aCheckNegativeAngle = false 
)

◆ SetArcGeometry()

void EDA_SHAPE::SetArcGeometry ( const VECTOR2I aStart,
const VECTOR2I aMid,
const VECTOR2I aEnd 
)

◆ SetBezierC1()

◆ SetBezierC2()

◆ SetBottom()

virtual void EDA_SHAPE::SetBottom ( int  val)
inlinevirtual

Reimplemented in PCB_TEXTBOX.

Definition at line 207 of file eda_shape.h.

References SetEndY().

Referenced by RECTANGLE_POINT_EDIT_BEHAVIOR::UpdateItem().

◆ SetCachedArcData()

void EDA_SHAPE::SetCachedArcData ( const VECTOR2I aStart,
const VECTOR2I aMid,
const VECTOR2I aEnd,
const VECTOR2I aCenter 
)

Set the data used for mid point caching.

If the controlling points remain constant, then we keep the midpoint the same as it was when read in. This minimizes VCS churn

Parameters
aStartCached start point
aMidCached mid point
aEndCached end point
aCenterCalculated center point using the preceeding three

Definition at line 849 of file eda_shape.cpp.

References ARC_MID::center, ARC_MID::end, m_arcMidData, ARC_MID::mid, and ARC_MID::start.

Referenced by SetArcGeometry().

◆ SetCenter()

◆ SetCenterX()

void EDA_SHAPE::SetCenterX ( int  x)
inline

Definition at line 165 of file eda_shape.h.

References m_end, m_start, and VECTOR2< T >::x.

Referenced by EDA_SHAPE_DESC::EDA_SHAPE_DESC().

◆ SetCenterY()

void EDA_SHAPE::SetCenterY ( int  y)
inline

Definition at line 159 of file eda_shape.h.

References m_end, m_start, and VECTOR2< T >::y.

Referenced by EDA_SHAPE_DESC::EDA_SHAPE_DESC().

◆ setEditState()

void EDA_SHAPE::setEditState ( int  aState)
inlineprotected

Definition at line 406 of file eda_shape.h.

References m_editState.

Referenced by SCH_SHAPE::SetEditState().

◆ SetEnd()

void EDA_SHAPE::SetEnd ( const VECTOR2I aEnd)
inline

Definition at line 178 of file eda_shape.h.

References m_end, and m_endsSwapped.

Referenced by PCB_POINT_EDITOR::addCorner(), SCH_IO_ALTIUM::AddLibTextBox(), PCB_IO_IPC2581::addPadStack(), SCH_IO_ALTIUM::AddTextBox(), PCAD2KICAD::PCAD_LINE::AddToBoard(), PCAD2KICAD::PCAD_POLYGON::AddToBoard(), beginEdit(), calcEdit(), SCH_EDIT_TOOL::ChangeTextType(), ConnectBoardShapes(), ALTIUM_PCB::ConvertArcs6ToPcbShape(), ALTIUM_PCB::ConvertFills6ToBoardItem(), ALTIUM_PCB::ConvertFills6ToFootprintItem(), ALTIUM_PCB::ConvertTracks6ToBoardItem(), ALTIUM_PCB::ConvertTracks6ToFootprintItem(), PCB_EDIT_TABLE_TOOL::copyCell(), SCH_EDIT_TABLE_TOOL::copyCell(), SCH_IO_LTSPICE_PARSER::CreateArc(), SCH_IO_LTSPICE_PARSER::CreateCircle(), MICROWAVE_TOOL::createMicrowaveInductor(), SCH_IO_LTSPICE_PARSER::CreateRect(), Deserialize(), PCB_TEXTBOX::Deserialize(), SCH_DRAWING_TOOLS::DrawTable(), DRAWING_TOOL::DrawTable(), EDA_SHAPE(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepCenter(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepTangent(), ARC_POINT_EDIT_BEHAVIOR::editArcMidKeepCenter(), PCB_IO_IPC2581::generateLayerSetNet(), CADSTAR_SCH_ARCHIVE_LOADER::getScaledLibPart(), CADSTAR_PCB_ARCHIVE_LOADER::getShapeFromVertex(), GraphConnection::GetShapes(), HelperGeneratePowerPortGraphics(), ALTIUM_PCB::HelperParsePad6NonCopper(), ALTIUM_PCB::HelperSetTextboxAlignmentAndPos(), FEATURES_MANAGER::InitFeatureList(), initTextTable(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadBezier(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadCircle(), FABMASTER::loadFootprints(), CADSTAR_SCH_ARCHIVE_LOADER::loadLibrarySymbolShapeVertices(), PCB_IO_EAGLE::loadPlain(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadRect(), SCH_IO_EAGLE::loadSymbolCircle(), SCH_IO_EAGLE::loadSymbolRectangle(), GRAPHICS_CLEANER::mergeRects(), ITEM_MODIFICATION_ROUTINE::ModifyLineOrDeleteIfZeroLength(), SCH_TABLE::Normalize(), PCB_SHAPE::Normalize(), PCB_TABLE::Normalize(), PCB_SHAPE::NormalizeForCompare(), BEZIER_GEOM_SYNCER::OnBezierChange(), CIRCLE_GEOM_SYNCER::OnCenterPointChange(), RECTANGLE_GEOM_SYNCER::OnCenterSizeChange(), RECTANGLE_GEOM_SYNCER::OnCornersChange(), RECTANGLE_GEOM_SYNCER::OnCornerSizeChange(), LINE_GEOM_SYNCER::OnEndsChange(), LINE_GEOM_SYNCER::OnPolarChange(), LINE_GEOM_SYNCER::OnStartMidpointChange(), PCB_IO_EAGLE::packageCircle(), PCB_IO_EAGLE::packageWire(), SCH_IO_ALTIUM::ParseArc(), SCH_IO_ALTIUM::ParseBezier(), SCH_IO_ALTIUM::ParseCircle(), SCH_IO_ALTIUM::ParseEllipse(), SCH_IO_ALTIUM::ParseEllipticalArc(), GPCB_FPL_CACHE::parseFOOTPRINT(), SCH_IO_ALTIUM::ParseRectangle(), SCH_IO_ALTIUM::ParseRoundRectangle(), SCH_IO_KICAD_SEXPR_PARSER::parseSchTextBoxContent(), PCB_IO_KICAD_SEXPR_PARSER::parseTextBoxContent(), DRAWING_TOOL::PlaceCharacteristics(), DRAWING_TOOL::PlaceStackup(), SCH_TEXTBOX::Plot(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotPcbTarget(), PCB_TEXTBOX::Rotate(), DRC_TEST_PROVIDER_CLEARANCE_BASE::ShowPathDRC(), DRC_TEST_PROVIDER_CREEPAGE::testCreepage(), PCB_TARGET::TransformShapeToPolygon(), updateArcFromConstructionMgr(), updateBezierFromConstructionMgr(), SCH_TABLECELL_POINT_EDIT_BEHAVIOR::UpdateItem(), EDA_SEGMENT_POINT_EDIT_BEHAVIOR::UpdateItem(), EDA_CIRCLE_POINT_EDIT_BEHAVIOR::UpdateItem(), EDA_BEZIER_POINT_EDIT_BEHAVIOR::UpdateItem(), PCB_TABLECELL_POINT_EDIT_BEHAVIOR::UpdateItem(), RECTANGLE_POINT_EDIT_BEHAVIOR::UpdateItem(), and updateSegmentFromGeometryMgr().

◆ SetEndX()

◆ SetEndY()

◆ SetFillColor()

◆ SetFilled()

◆ setFilled()

virtual void EDA_SHAPE::setFilled ( bool  aFlag)
inlineprotectedvirtual

Reimplemented in SCH_SHAPE.

Definition at line 378 of file eda_shape.h.

References m_fill.

Referenced by SetFilled().

◆ SetFillMode()

◆ SetIsProxyItem()

virtual void EDA_SHAPE::SetIsProxyItem ( bool  aIsProxy = true)
inlinevirtual

Reimplemented in PCB_SHAPE.

Definition at line 96 of file eda_shape.h.

References m_proxyItem.

◆ SetLeft()

virtual void EDA_SHAPE::SetLeft ( int  val)
inlinevirtual

Reimplemented in PCB_TEXTBOX.

Definition at line 205 of file eda_shape.h.

References SetStartX().

Referenced by RECTANGLE_POINT_EDIT_BEHAVIOR::UpdateItem().

◆ SetLength()

void EDA_SHAPE::SetLength ( const double &  aLength)

Definition at line 430 of file eda_shape.cpp.

References m_segmentLength, m_shape, SHAPE_T_asString(), and UNIMPLEMENTED_FOR.

◆ SetLineColor()

void EDA_SHAPE::SetLineColor ( const COLOR4D aColor)
inline

◆ SetLineStyle()

void EDA_SHAPE::SetLineStyle ( const LINE_STYLE  aStyle)

◆ SetPolyPoints()

◆ SetPolyShape()

◆ setPosition()

void EDA_SHAPE::setPosition ( const VECTOR2I aPos)
protected

Definition at line 357 of file eda_shape.cpp.

References getPosition(), and move.

Referenced by SCH_SHAPE::SetPosition(), and PCB_SHAPE::SetPosition().

◆ SetRadius()

void EDA_SHAPE::SetRadius ( int  aX)
inline

◆ SetRectangle()

void EDA_SHAPE::SetRectangle ( const long long int &  aHeight,
const long long int &  aWidth 
)

◆ SetRectangleHeight()

void EDA_SHAPE::SetRectangleHeight ( const int &  aHeight)

◆ SetRectangleWidth()

void EDA_SHAPE::SetRectangleWidth ( const int &  aWidth)

◆ SetRight()

virtual void EDA_SHAPE::SetRight ( int  val)
inlinevirtual

Reimplemented in PCB_TEXTBOX.

Definition at line 206 of file eda_shape.h.

References SetEndX().

Referenced by RECTANGLE_POINT_EDIT_BEHAVIOR::UpdateItem().

◆ SetSegmentAngle()

void EDA_SHAPE::SetSegmentAngle ( const EDA_ANGLE aAngle)

Definition at line 485 of file eda_shape.cpp.

References m_segmentAngle, m_shape, SHAPE_T_asString(), and UNIMPLEMENTED_FOR.

◆ SetShape()

◆ SetStart()

void EDA_SHAPE::SetStart ( const VECTOR2I aStart)
inline

Definition at line 141 of file eda_shape.h.

References m_endsSwapped, and m_start.

Referenced by PCB_POINT_EDITOR::addCorner(), SCH_IO_ALTIUM::AddLibTextBox(), PCB_IO_IPC2581::addPadStack(), SCH_IO_ALTIUM::AddTextBox(), PCAD2KICAD::PCAD_ARC::AddToBoard(), PCAD2KICAD::PCAD_LINE::AddToBoard(), PCAD2KICAD::PCAD_POLYGON::AddToBoard(), beginEdit(), BOOST_AUTO_TEST_CASE(), calcEdit(), ConnectBoardShapes(), ALTIUM_PCB::ConvertArcs6ToBoardItemOnLayer(), ALTIUM_PCB::ConvertArcs6ToPcbShape(), ALTIUM_PCB::ConvertFills6ToBoardItem(), ALTIUM_PCB::ConvertFills6ToFootprintItem(), ALTIUM_PCB::ConvertTracks6ToBoardItem(), ALTIUM_PCB::ConvertTracks6ToFootprintItem(), PCB_EDIT_TABLE_TOOL::copyCell(), SCH_EDIT_TABLE_TOOL::copyCell(), SCH_IO_LTSPICE_PARSER::CreateArc(), MICROWAVE_TOOL::createMicrowaveInductor(), Deserialize(), EDA_SHAPE(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepCenter(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepTangent(), ARC_POINT_EDIT_BEHAVIOR::editArcMidKeepCenter(), PCB_IO_IPC2581::generateLayerSetNet(), CADSTAR_SCH_ARCHIVE_LOADER::getScaledLibPart(), CADSTAR_PCB_ARCHIVE_LOADER::getShapeFromVertex(), GraphConnection::GetShapes(), HelperGeneratePowerPortGraphics(), ALTIUM_PCB::HelperParsePad6NonCopper(), FEATURES_MANAGER::InitFeatureList(), initTextTable(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadBezier(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadCircle(), FABMASTER::loadFootprints(), CADSTAR_SCH_ARCHIVE_LOADER::loadLibrarySymbolShapeVertices(), PCB_IO_EAGLE::loadPlain(), SCH_IO_EAGLE::loadSymbolWire(), GRAPHICS_CLEANER::mergeRects(), ITEM_MODIFICATION_ROUTINE::ModifyLineOrDeleteIfZeroLength(), PCB_SHAPE::Normalize(), PCB_SHAPE::NormalizeForCompare(), BEZIER_GEOM_SYNCER::OnBezierChange(), RECTANGLE_GEOM_SYNCER::OnCenterSizeChange(), RECTANGLE_GEOM_SYNCER::OnCornersChange(), RECTANGLE_GEOM_SYNCER::OnCornerSizeChange(), ARC_GEOM_SYNCER::OnCSAChange(), LINE_GEOM_SYNCER::OnEndsChange(), LINE_GEOM_SYNCER::OnPolarChange(), LINE_GEOM_SYNCER::OnStartMidpointChange(), PCB_IO_EAGLE::packageCircle(), PCB_IO_EAGLE::packageWire(), SCH_IO_ALTIUM::ParseArc(), SCH_IO_ALTIUM::ParseBezier(), SCH_IO_ALTIUM::ParseEllipse(), SCH_IO_ALTIUM::ParseEllipticalArc(), GPCB_FPL_CACHE::parseFOOTPRINT(), PCB_IO_KICAD_SEXPR_PARSER::parseTextBoxContent(), DRAWING_TOOL::PlaceCharacteristics(), DRAWING_TOOL::PlaceStackup(), SCH_TEXTBOX::Plot(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotPcbTarget(), PCB_TEXTBOX::Rotate(), DRC_TEST_PROVIDER_CLEARANCE_BASE::ShowPathDRC(), DRC_TEST_PROVIDER_CREEPAGE::testCreepage(), PCB_TARGET::TransformShapeToPolygon(), updateArcFromConstructionMgr(), updateBezierFromConstructionMgr(), EDA_SEGMENT_POINT_EDIT_BEHAVIOR::UpdateItem(), EDA_BEZIER_POINT_EDIT_BEHAVIOR::UpdateItem(), and updateSegmentFromGeometryMgr().

◆ SetStartX()

◆ SetStartY()

◆ SetTop()

virtual void EDA_SHAPE::SetTop ( int  val)
inlinevirtual

Reimplemented in PCB_TEXTBOX.

Definition at line 204 of file eda_shape.h.

References SetStartY().

Referenced by RECTANGLE_POINT_EDIT_BEHAVIOR::UpdateItem().

◆ SetWidth()

◆ SHAPE_T_asString()

◆ ShapeGetMsgPanelInfo()

◆ ShowShape()

wxString EDA_SHAPE::ShowShape ( ) const

Definition at line 313 of file eda_shape.cpp.

References _, IsProxyItem(), and m_shape.

◆ Similarity()

◆ SwapShape()

void EDA_SHAPE::SwapShape ( EDA_SHAPE aImage)

◆ TransformShapeToPolygon()

void EDA_SHAPE::TransformShapeToPolygon ( SHAPE_POLY_SET aBuffer,
int  aClearance,
int  aError,
ERROR_LOC  aErrorLoc,
bool  ignoreLineWidth = false 
) const

Convert the shape to a closed polygon.

Circles and arcs are approximated by segments.

Parameters
aBufferis a buffer to store the polygon.
aClearanceis the clearance around the pad.
aErroris the maximum deviation from a true arc.
aErrorLocwhether any approximation error shoule be placed inside or outside
ignoreLineWidthis used for edge cut items where the line width is only for visualization

Definition at line 1916 of file eda_shape.cpp.

References SEG::A, SHAPE_POLY_SET::Append(), SEG::B, ERROR_OUTSIDE, GetArcMid(), GetBezierC1(), GetBezierC2(), getCenter(), GetEnd(), SHAPE_LINE_CHAIN::GetPoint(), SHAPE_LINE_CHAIN::GetPointCount(), BEZIER_POLY::GetPoly(), GetRadius(), GetRectCorners(), SHAPE_LINE_CHAIN::GetSegment(), GetStart(), GetWidth(), SHAPE_POLY_SET::Inflate(), IsFilled(), IsPolyShapeValid(), IsProxyItem(), m_poly, m_shape, SHAPE_POLY_SET::NewOutline(), SHAPE_POLY_SET::Outline(), SHAPE_POLY_SET::OutlineCount(), SHAPE_LINE_CHAIN::SegmentCount(), SHAPE_T_asString(), TransformArcToPolygon(), TransformCircleToPolygon(), TransformOvalToPolygon(), TransformRingToPolygon(), and UNIMPLEMENTED_FOR.

Referenced by PCB_SHAPE::TransformShapeToPolygon().

Member Data Documentation

◆ m_arcCenter

◆ m_arcMidData

ARC_MID EDA_SHAPE::m_arcMidData
protected

◆ m_bezierC1

◆ m_bezierC2

◆ m_bezierPoints

◆ m_editState

int EDA_SHAPE::m_editState
protected

◆ m_end

◆ m_endsSwapped

bool EDA_SHAPE::m_endsSwapped
protected

◆ m_fill

◆ m_fillColor

COLOR4D EDA_SHAPE::m_fillColor
protected

Definition at line 424 of file eda_shape.h.

Referenced by GetFillColor(), operator==(), SetFillColor(), Similarity(), and SwapShape().

◆ m_poly

◆ m_proxyItem

bool EDA_SHAPE::m_proxyItem
protected

◆ m_rectangleHeight

long long int EDA_SHAPE::m_rectangleHeight
protected

Definition at line 426 of file eda_shape.h.

Referenced by SetRectangle(), and SetRectangleHeight().

◆ m_rectangleWidth

long long int EDA_SHAPE::m_rectangleWidth
protected

Definition at line 427 of file eda_shape.h.

Referenced by SetRectangle(), and SetRectangleWidth().

◆ m_segmentAngle

EDA_ANGLE EDA_SHAPE::m_segmentAngle
protected

Definition at line 430 of file eda_shape.h.

Referenced by SetSegmentAngle().

◆ m_segmentLength

double EDA_SHAPE::m_segmentLength
protected

Definition at line 429 of file eda_shape.h.

Referenced by SetLength().

◆ m_shape

◆ m_start

◆ m_stroke


The documentation for this class was generated from the following files: