104        std::pair<EDA_ITEM*, int> connectedStart = { 
nullptr, 
STARTPOINT };
 
  105        std::pair<EDA_ITEM*, int> connectedEnd = { 
nullptr, 
STARTPOINT };
 
  123                connectedStart = { testLine, 
ENDPOINT };
 
  131                connectedEnd = { testLine, 
ENDPOINT };
 
 
  147                     std::vector<EDA_ITEM*>& aUpdatedItems )
 override 
  154        if( connected.first )
 
  157            aUpdatedItems.push_back( connected.first );
 
  160                static_cast<SCH_LINE*
>( connected.first )->SetStartPoint( 
m_line.GetStartPoint() );
 
  161            else if( connected.second == 
ENDPOINT )
 
  162                static_cast<SCH_LINE*
>( connected.first )->SetEndPoint( 
m_line.GetStartPoint() );
 
  167        if( connected.first )
 
  170            aUpdatedItems.push_back( connected.first );
 
  173                static_cast<SCH_LINE*
>( connected.first )->SetStartPoint( 
m_line.GetEndPoint() );
 
  174            else if( connected.second == 
ENDPOINT )
 
  175                static_cast<SCH_LINE*
>( connected.first )->SetEndPoint( 
m_line.GetEndPoint() );
 
 
 
  221                     std::vector<EDA_ITEM*>& aUpdatedItems )
 override 
  234            const VECTOR2I newOffset = xfrmOrigin - ( topLeft + botRight ) / 2;
 
  249                oldCorner -= oldSize / 2;
 
  253                newCorner = topRight;
 
  254                oldCorner -= 
VECTOR2I( -oldSize.
x, oldSize.
y ) / 2;
 
  259                oldCorner -= 
VECTOR2I( oldSize.
x, -oldSize.
y ) / 2;
 
  263                newCorner = botRight;
 
  264                oldCorner += oldSize / 2;
 
  270                *newCorner -= xfrmOrigin;
 
  271                oldCorner -= oldOrigin;
 
  274                if( 
sign( newCorner->x ) != 
sign( oldCorner.
x )
 
  275                    || 
sign( newCorner->y ) != 
sign( oldCorner.
y ) )
 
  283                double ratio = oldLength > 0 ? ( newLength / oldLength ) : 1.0;
 
  289                ratio = std::min( newWidth / oldSize.
x, newHeight / oldSize.
y );
 
  295        aUpdatedItems.push_back( &
m_bitmap );
 
 
 
  314                     std::vector<EDA_ITEM*>& aUpdatedItems )
 override 
  317        bool       rotated = !
m_cell.GetTextAngle().IsHorizontal();
 
  320        aUpdatedItems.push_back( &
table );
 
  330                for( 
int ii = 0; ii < 
m_cell.GetColSpan() - 1; ++ii )
 
  331                    colWidth -= 
table.GetColWidth( 
m_cell.GetColumn() + ii );
 
  339                int rowHeight = 
m_cell.GetRectangleWidth();
 
  341                for( 
int ii = 0; ii < 
m_cell.GetRowSpan() - 1; ++ii )
 
  342                    rowHeight -= 
table.GetRowHeight( 
m_cell.GetRow() + ii );
 
  353                int colWidth = 
m_cell.GetRectangleWidth();
 
  355                for( 
int ii = 0; ii < 
m_cell.GetColSpan() - 1; ++ii )
 
  356                    colWidth -= 
table.GetColWidth( 
m_cell.GetColumn() + ii );
 
  364                int rowHeight = 
m_cell.GetRectangleHeight();
 
  366                for( 
int ii = 0; ii < 
m_cell.GetRowSpan() - 1; ++ii )
 
  367                    rowHeight -= 
table.GetRowHeight( 
m_cell.GetRow() + ii );
 
 
 
  444            topLeft.
x = std::min( topLeft.
x, botRight.
x - minWidth );
 
  445            topLeft.
y = std::min( topLeft.
y, botRight.
y - minHeight );
 
  448            topRight.
y = topLeft.
y;
 
  449            botLeft.
x = topLeft.
x;
 
  454            topRight.
x = std::max( topRight.
x, botLeft.
x + minWidth );
 
  455            topRight.
y = std::min( topRight.
y, botLeft.
y - minHeight );
 
  458            topLeft.
y = topRight.
y;
 
  459            botRight.
x = topRight.
x;
 
  464            botLeft.
x = std::min( botLeft.
x, topRight.
x - minWidth );
 
  465            botLeft.
y = std::max( botLeft.
y, topRight.
y + minHeight );
 
  468            botRight.
y = botLeft.
y;
 
  469            topLeft.
x = botLeft.
x;
 
  474            botRight.
x = std::max( botRight.
x, topLeft.
x + minWidth );
 
  475            botRight.
y = std::max( botRight.
y, topLeft.
y + minHeight );
 
  478            botLeft.
y = botRight.
y;
 
  479            topRight.
x = botRight.
x;
 
  483            topLeft.
y = std::min( topLeft.
y, botRight.
y - minHeight );
 
  487            topLeft.
x = std::min( topLeft.
x, botRight.
x - minWidth );
 
  491            botRight.
y = std::max( botRight.
y, topLeft.
y + minHeight );
 
  495            botRight.
x = std::max( botRight.
x, topLeft.
x + minWidth );
 
 
  507                         topLeft, topRight, botLeft, botRight );
 
  534        for( 
unsigned i = 0; i < aPoints.
LinesSize(); ++i )
 
 
  557                     std::vector<EDA_ITEM*>& aUpdatedItems )
 override 
  565                         topLeft, topRight, botLeft, botRight );
 
  568        std::vector<SEG>      oldSegs;
 
  569        std::vector<VECTOR2I> moveVecs;
 
  580            m_rect.SetPosition( topLeft );
 
  581            m_rect.SetEnd( botRight );
 
  590            int width = 
std::abs( botRight.
x - topLeft.
x );
 
  591            int height = 
std::abs( botRight.
y - topLeft.
y );
 
  592            int maxRadius = std::min( width, height ) / 2;
 
  594            x = std::clamp( x, botRight.
x - maxRadius, botRight.
x );
 
  596            m_rect.SetCornerRadius( botRight.
x - x );
 
  601            moveVecs.emplace_back( 0, topLeft.
y - oldBox.
GetTop() );
 
  607            moveVecs.emplace_back( topLeft.
x - oldBox.
GetLeft(), 0 );
 
  613            moveVecs.emplace_back( 0, botRight.
y - oldBox.
GetBottom() );
 
  619            moveVecs.emplace_back( botRight.
x - oldBox.
GetRight(), 0 );
 
  625        for( 
unsigned i = 0; i < aPoints.
LinesSize(); ++i )
 
 
  635    void dragPinsOnEdge( 
const std::vector<SEG>& aOldEdges, 
const std::vector<VECTOR2I>& aMoveVecs,
 
  636                         int aEdgeUnit, 
COMMIT& aCommit, std::vector<EDA_ITEM*>& aUpdatedItems )
 const 
  638        wxCHECK( aOldEdges.size() == aMoveVecs.size(),  );
 
  647        if( !
editor.GetSettings()->m_dragPinsAlongWithEdges )
 
  652        wxCHECK( aEdgeUnit == 0 || aEdgeUnit == 
editor.GetUnit(),  );
 
  657        const auto getPinsOnSeg =
 
  659                    bool aIncludeEnds ) -> std::vector<SCH_PIN*>
 
  661                    std::vector<SCH_PIN*> pins;
 
  668                        if( aSeg.Contains( pinRootPos ) )
 
  670                            if( aIncludeEnds || ( pinRootPos != aSeg.A && pinRootPos != aSeg.B ) )
 
  672                                pins.push_back( 
pin );
 
  682        for( std::size_t i = 0; i < aOldEdges.size(); ++i )
 
  684            if( aMoveVecs[i] == 
VECTOR2I( 0, 0 ) || !symbol )
 
  687            const std::vector<SCH_PIN*> pins = getPinsOnSeg( *symbol, aEdgeUnit, aOldEdges[i], 
false );
 
  692                aUpdatedItems.push_back( 
pin );
 
  695                pin->Move( aMoveVecs[i] );
 
 
 
  730                     std::vector<EDA_ITEM*>& aUpdatedItems )
 override 
 
 
  781                     std::vector<EDA_ITEM*>& aUpdatedItems )
 override 
  795            editedTopRight = 
true;
 
  797            editedBotLeft = 
true;
 
  800                aEditedPoint, aPoints, 
m_sheet.GetMinWidth( editedTopRight || editedBotRight ),
 
  801                m_sheet.GetMinHeight( editedBotLeft || editedBotRight ), topLeft, topRight, botLeft,
 
  809            sheetNewPos = topLeft;
 
  810            sheetNewSize = 
VECTOR2I( botRight.
x - topLeft.
x, botRight.
y - topLeft.
y );
 
  831        for( 
unsigned i = 0; i < aPoints.
LinesSize(); ++i )
 
  839        if( 
m_sheet.GetPosition() != sheetNewPos )
 
  840            m_sheet.SetPositionIgnoringPins( sheetNewPos );
 
  842        if( 
m_sheet.GetSize() != sheetNewSize )
 
  843            m_sheet.Resize( sheetNewSize );
 
 
 
  860    switch( aItem->
Type() )
 
  873            m_editBehavior = std::make_unique<EDA_CIRCLE_POINT_EDIT_BEHAVIOR>( *shape );
 
  879            m_editBehavior = std::make_unique<EDA_POLYGON_POINT_EDIT_BEHAVIOR>( *shape );
 
  886                maxError = schematic->Settings().m_MaxError;
 
  888            m_editBehavior = std::make_unique<EDA_BEZIER_POINT_EDIT_BEHAVIOR>( *shape, maxError );
 
  901        m_editBehavior = std::make_unique<EDA_POLYGON_POINT_EDIT_BEHAVIOR>( *shape );
 
  907        m_editBehavior = std::make_unique<TEXTBOX_POINT_EDIT_BEHAVIOR>( *textbox );
 
  913        m_editBehavior = std::make_unique<SCH_TABLECELL_POINT_EDIT_BEHAVIOR>( *cell, *
m_frame->GetScreen() );
 
  919        m_editBehavior = std::make_unique<SHEET_POINT_EDIT_BEHAVIOR>( sheet );
 
  925        m_editBehavior = std::make_unique<BITMAP_POINT_EDIT_BEHAVIOR>( bitmap );
 
 
  984    const auto arcIsEdited = [&]( 
const SELECTION& aSelection ) -> 
bool 
  986        const EDA_ITEM* item = aSelection.Front();
 
 
 1051        if( !
editor->IsSymbolEditable() || 
editor->IsSymbolAlias() )
 
 1081    bool inDrag = 
false;
 
 1089            grid->SetUseGrid( 
getView()->GetGAL()->GetGridSnapping()
 
 1090                              && !evt->DisableGridSnapping() );
 
 1096            wxCHECK( 
false, 0 );
 
 1114                    shape->SetHatchingDirty();
 
 1115                    shape->UpdateHatching();
 
 1121            bool snap = !evt->DisableGridSnapping();
 
 1132        else if( inDrag && evt->IsMouseUp( 
BUT_LEFT ) )
 
 1134            if( !commit.
Empty() )
 
 1135                commit.
Push( 
_( 
"Move Point" ) );
 
 1142                shape->SetHatchingDirty();
 
 1143                shape->UpdateHatching();
 
 1148        else if( evt->IsCancelInteractive() || evt->IsActivate() )
 
 1167            else if( evt->IsCancelInteractive() )
 
 1172            if( evt->IsActivate() )
 
 1177            evt->SetPassEvent();
 
 1187        shape->SetHatchingDirty();
 
 1188        shape->UpdateHatching();
 
 1202        m_frame->GetCanvas()->Refresh();
 
 
 1221    std::vector<EDA_ITEM*> updatedItems;
 
 1224    for( 
EDA_ITEM* updatedItem : updatedItems )
 
 
 1272        if( 
m_frame->ToolStackIsEmpty() )
 
 
 1322    return shape->
HitTest( cursorPos, (
int) threshold );
 
 
 1338    int      currentMinDistance = INT_MAX;
 
 1339    int      closestLineStart = 0;
 
 1345    for( 
unsigned i = 0; i < numPoints; ++i )
 
 1350        if( 
distance < currentMinDistance )
 
 1353            closestLineStart = i;
 
 1362    commit.
Push( 
_( 
"Add Corner" ) );
 
 
 1403    commit.
Push( 
_( 
"Remove Corner" ) );
 
 
ARC_EDIT_MODE
Settings for arc editing.
 
@ KEEP_CENTER_ADJUST_ANGLE_RADIUS
When editing endpoints, the angle and radius are adjusted.
 
constexpr EDA_IU_SCALE schIUScale
 
constexpr double ARC_LOW_DEF_MM
 
static TOOL_ACTION cycleArcEditMode
 
static TOOL_ACTION pointEditorArcKeepCenter
 
static TOOL_ACTION pointEditorArcKeepRadius
 
static TOOL_ACTION activatePointEditor
 
static TOOL_ACTION pointEditorArcKeepEndpoint
 
void MakePoints(EDIT_POINTS &aPoints) override
Construct the initial set of edit points for the item and append to the given list.
 
void UpdateItem(const EDIT_POINT &aEditedPoint, EDIT_POINTS &aPoints, COMMIT &aCommit, std::vector< EDA_ITEM * > &aUpdatedItems) override
Update the item with the new positions of the edit points.
 
bool UpdatePoints(EDIT_POINTS &aPoints) override
Update the list of the edit points for the item.
 
BITMAP_POINT_EDIT_BEHAVIOR(SCH_BITMAP &aBitmap)
 
static constexpr BOX2< VECTOR2I > ByCorners(const VECTOR2I &aCorner1, const VECTOR2I &aCorner2)
 
constexpr const Vec GetCenter() const
 
constexpr coord_type GetLeft() const
 
constexpr coord_type GetRight() const
 
constexpr coord_type GetTop() const
 
constexpr coord_type GetBottom() const
 
Represent a set of changes (additions, deletions or modifications) of a data model (e....
 
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
 
EDIT_CONSTRAINT for a EDIT_LINE, that constrains the line to move perpendicular to the line itself.
 
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 bool IsType(const std::vector< KICAD_T > &aScanTypes) const
Check whether the item is one of the listed types.
 
SHAPE_POLY_SET & GetPolyShape()
 
const VECTOR2I & GetEnd() const
Return the ending point of the graphic.
 
void SetEnd(const VECTOR2I &aEnd)
 
wxString SHAPE_T_asString() const
 
int GetCornerRadius() const
 
EDA_TABLECELL_POINT_EDIT_BEHAVIOR(EDA_SHAPE &aCell)
 
void SetConstraint(EDIT_CONSTRAINT< EDIT_LINE > *aConstraint)
Set a constraint for and EDIT_POINT.
 
EDIT_POINTS is a VIEW_ITEM that manages EDIT_POINTs and EDIT_LINEs and draws them.
 
void AddPoint(const EDIT_POINT &aPoint)
Add an EDIT_POINT.
 
EDIT_LINE & Line(unsigned int aIndex)
 
unsigned int LinesSize() const
Return number of stored EDIT_LINEs.
 
EDIT_POINT & Point(unsigned int aIndex)
 
void AddLine(const EDIT_LINE &aLine)
Adds an EDIT_LINE.
 
Represent a single point that can be used for modifying items.
 
virtual std::pair< EDA_ITEM *, int > GetConnected() const
Return a connected item record comprising an EDA_ITEM* and a STARTPOINT/ENDPOINT flag.
 
int GetY() const
Return Y coordinate of an EDIT_POINT.
 
static const int POINT_SIZE
Single point size in pixels.
 
virtual void SetPosition(const VECTOR2I &aPosition)
Set new coordinates for an EDIT_POINT.
 
virtual VECTOR2I GetPosition() const
Return coordinates of an EDIT_POINT.
 
int GetX() const
Return X coordinate of an EDIT_POINT.
 
void SetDrawCircle(bool aDrawCircle=true)
 
static const TOOL_EVENT ClearedEvent
 
static const TOOL_EVENT SelectedEvent
 
static const TOOL_EVENT SelectedItemsModified
Selected items were moved, this can be very high frequency on the canvas, use with care.
 
static const TOOL_EVENT PointSelectedEvent
 
An interface for classes handling user events controlling the view behavior such as zooming,...
 
virtual void CaptureCursor(bool aEnabled)
Force the cursor to stay within the drawing panel area.
 
virtual void ForceCursorPosition(bool aEnabled, const VECTOR2D &aPosition=VECTOR2D(0, 0))
Place the cursor immediately at a given point.
 
virtual void ShowCursor(bool aEnabled)
Enable or disables display of cursor.
 
VECTOR2D GetCursorPosition() const
Return the current cursor position in world coordinates.
 
virtual VECTOR2D GetMousePosition(bool aWorldCoordinates=true) const =0
Return the current mouse pointer position.
 
virtual void SetAutoPan(bool aEnabled)
Turn on/off auto panning (this feature is used when there is a tool active (eg.
 
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
 
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
 
virtual void Remove(VIEW_ITEM *aItem)
Remove a VIEW_ITEM from the view.
 
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
 
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Converts a screen space point/vector to a point/vector in world space coordinates.
 
Define a library symbol object.
 
std::vector< SCH_PIN * > GetGraphicalPins(int aUnit=0, int aBodyStyle=0) const
Graphical pins: Return schematic pin objects as drawn (unexpanded), filtered by unit/body.
 
bool UpdatePoints(EDIT_POINTS &aPoints) override
Update the list of the edit points for the item.
 
void UpdateItem(const EDIT_POINT &aEditedPoints, EDIT_POINTS &aPoints, COMMIT &aCommit, std::vector< EDA_ITEM * > &aUpdatedItems) override
Update the item with the new positions of the edit points.
 
void MakePoints(EDIT_POINTS &aPoints) override
Construct the initial set of edit points for the item and append to the given list.
 
LINE_POINT_EDIT_BEHAVIOR(SCH_LINE &aLine, SCH_SCREEN &aScreen)
 
A helper class interface to manage the edit points for a single item.
 
static bool isModified(const EDIT_POINT &aEditedPoint, const EDIT_POINT &aPoint)
Checks if two points are the same instance - which means the point is being edited.
 
static void UpdateItem(SCH_SHAPE &aRect, const EDIT_POINT &aEditedPoint, EDIT_POINTS &aPoints)
 
bool UpdatePoints(EDIT_POINTS &aPoints) override
Update the list of the edit points for the item.
 
static void UpdatePoints(SCH_SHAPE &aRect, EDIT_POINTS &aPoints)
 
static void PinEditedCorner(const EDIT_POINT &aEditedPoint, const EDIT_POINTS &aPoints, int minWidth, int minHeight, VECTOR2I &topLeft, VECTOR2I &topRight, VECTOR2I &botLeft, VECTOR2I &botRight)
Update the coordinates of 4 corners of a rectangle, according to constraints and the moved corner.
 
static void MakePoints(SCH_SHAPE &aRect, EDIT_POINTS &aPoints)
 
void UpdateItem(const EDIT_POINT &aEditedPoint, EDIT_POINTS &aPoints, COMMIT &aCommit, std::vector< EDA_ITEM * > &aUpdatedItems) override
Update the item with the new positions of the edit points.
 
void MakePoints(EDIT_POINTS &aPoints) override
Construct the initial set of edit points for the item and append to the given list.
 
RECTANGLE_POINT_EDIT_BEHAVIOR(SCH_SHAPE &aRect, EDA_DRAW_FRAME &aFrame)
 
void dragPinsOnEdge(const std::vector< SEG > &aOldEdges, const std::vector< VECTOR2I > &aMoveVecs, int aEdgeUnit, COMMIT &aCommit, std::vector< EDA_ITEM * > &aUpdatedItems) const
 
A REFERENCE_IMAGE is a wrapper around a BITMAP_IMAGE that is displayed in an editor as a reference fo...
 
void SetTransformOriginOffset(const VECTOR2I &aCenter)
 
VECTOR2I GetTransformOriginOffset() const
Get the center of scaling, etc, relative to the image center (GetPosition()).
 
VECTOR2I GetPosition() const
 
double GetImageScale() const
 
void SetImageScale(double aScale)
Set the image "zoom" value.
 
Holds all the data relating to one schematic.
 
static TOOL_ACTION pointEditorAddCorner
 
static TOOL_ACTION pointEditorRemoveCorner
 
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
 
Object to handle a bitmap image that can be inserted in a schematic.
 
virtual void Push(const wxString &aMessage=wxT("A commit"), int aCommitFlags=0) override
Execute the changes.
 
virtual void Revert() override
Revert the commit by restoring the modified items state.
 
Base class for any item which can be embedded within the SCHEMATIC container class,...
 
SCHEMATIC * Schematic() const
Search the item hierarchy to find a SCHEMATIC.
 
Segment description base class to describe items which have 2 end points (track, wire,...
 
VECTOR2I GetEndPoint() const
 
VECTOR2I GetStartPoint() const
 
void updatePoints()
Update which point is being edited.
 
void Reset(RESET_REASON aReason) override
Bring the tool to a known, initial state.
 
void setEditedPoint(EDIT_POINT *aPoint)
Return true if aPoint is the currently modified point.
 
bool Init() override
Init() is called once upon a registration of the tool.
 
ARC_EDIT_MODE m_arcEditMode
Re-entrancy guards.
 
void updateParentItem(bool aSnapToGrid, SCH_COMMIT &aCommit) const
< Update item's points with edit points.
 
void updateEditedPoint(const TOOL_EVENT &aEvent)
Clear references to the points.
 
bool addCornerCondition(const SELECTION &aSelection)
 
std::unique_ptr< POINT_EDIT_BEHAVIOR > m_editBehavior
 
EDIT_POINT * m_editedPoint
 
int modifiedSelection(const TOOL_EVENT &aEvent)
 
int Main(const TOOL_EVENT &aEvent)
 
int getEditedPointIndex() const
 
std::shared_ptr< EDIT_POINTS > m_editPoints
 
int clearEditedPoints(const TOOL_EVENT &aEvent)
Set the current point being edited. NULL means none.
 
bool removeCornerCondition(const SELECTION &aSelection)
 
bool m_inPointEditor
Currently available edit points.
 
void setTransitions() override
This method is meant to be overridden in order to specify handlers for events.
 
void makePointsAndBehavior(EDA_ITEM *aItem)
Currently edited point, NULL if there is none.
 
std::unique_ptr< KIGFX::PREVIEW::ANGLE_ITEM > m_angleItem
Current item-specific edit behavior.
 
int changeArcEditMode(const TOOL_EVENT &aEvent)
 
int removeCorner(const TOOL_EVENT &aEvent)
 
int addCorner(const TOOL_EVENT &aEvent)
TOOL_ACTION handlers.
 
void SetPosition(const VECTOR2I &aPos) override
 
VECTOR2I GetCenter() const
 
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
 
VECTOR2I GetPosition() const override
 
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
 
SCH_TABLECELL_POINT_EDIT_BEHAVIOR(SCH_TABLECELL &aCell, SCH_SCREEN &aScreen)
 
void UpdateItem(const EDIT_POINT &aEditedPoint, EDIT_POINTS &aPoints, COMMIT &aCommit, std::vector< EDA_ITEM * > &aUpdatedItems) override
Update the item with the new positions of the edit points.
 
int Distance(const SEG &aSeg) const
Compute minimum Euclidean distance to segment aSeg.
 
Class that groups generic conditions for selected items.
 
static SELECTION_CONDITION Count(int aNumber)
Create a functor that tests if the number of selected items is equal to the value given as parameter.
 
int Size() const
Returns the number of selected parts.
 
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
 
virtual const VECTOR2I GetPoint(int aIndex) const override
 
void SetPoint(int aIndex, const VECTOR2I &aPos)
Move a point to a specific location.
 
virtual size_t GetPointCount() const override
 
virtual const SEG GetSegment(int aIndex) const override
 
void Remove(int aStartIndex, int aEndIndex)
Remove the range of points [start_index, end_index] from the line chain.
 
void Insert(size_t aVertex, const VECTOR2I &aP)
 
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.
 
SHEET_POINT_EDIT_BEHAVIOR(SCH_SHEET &aSheet)
 
void UpdateItem(const EDIT_POINT &aEditedPoint, EDIT_POINTS &aPoints, COMMIT &aCommit, std::vector< EDA_ITEM * > &aUpdatedItems) override
Update the item with the new positions of the edit points.
 
bool UpdatePoints(EDIT_POINTS &aPoints) override
Update the list of the edit points for the item.
 
void MakePoints(EDIT_POINTS &aPoints) override
Construct the initial set of edit points for the item and append to the given list.
 
The symbol library editor main window.
 
void MakePoints(EDIT_POINTS &aPoints) override
Construct the initial set of edit points for the item and append to the given list.
 
bool UpdatePoints(EDIT_POINTS &aPoints) override
Update the list of the edit points for the item.
 
void UpdateItem(const EDIT_POINT &aEditedPoint, EDIT_POINTS &aPoints, COMMIT &aCommit, std::vector< EDA_ITEM * > &aUpdatedItems) override
Update the item with the new positions of the edit points.
 
TEXTBOX_POINT_EDIT_BEHAVIOR(SCH_TEXTBOX &aTextbox)
 
T EuclideanNorm() const
Compute the Euclidean norm of the vector, which is defined as sqrt(x ** 2 + y ** 2).
 
#define ENDPOINT
ends. (Used to support dragging.)
 
#define IS_MOVING
Item being moved.
 
#define STARTPOINT
When a line is selected, these flags indicate which.
 
@ RECTANGLE
Use RECTANGLE instead of RECT to avoid collision in a Windows header.
 
@ FRAME_SCH_SYMBOL_EDITOR
 
#define UNIMPLEMENTED_FOR(type)
 
constexpr int Mils2IU(const EDA_IU_SCALE &aIuScale, int mils)
 
std::vector< SEG > GetSegsInDirection(const BOX2I &aBox, DIRECTION_45::Directions aDir)
Get the segments of a box that are in the given direction.
 
EDA_ANGLE abs(const EDA_ANGLE &aAngle)
 
ARC_EDIT_MODE IncrementArcEditMode(ARC_EDIT_MODE aMode)
 
static float distance(const SFVEC2UI &a, const SFVEC2UI &b)
 
static const std::vector< KICAD_T > pointEditorTypes
 
std::optional< VECTOR2I > OPT_VECTOR2I
 
Utility functions for working with shapes.
 
@ SCH_ITEM_LOCATE_GRAPHIC_LINE_T
 
constexpr int sign(T val)
 
VECTOR2< int32_t > VECTOR2I