KiCad PCB EDA Suite
pl_point_editor.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2019 CERN
5 * Copyright (C) 2019-2021 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#ifndef PL_POINT_EDITOR_H
26#define PL_POINT_EDITOR_H
27
29#include <tool/edit_points.h>
30#include <tool/selection.h>
31#include <tool/tool_menu.h>
32
34class PL_EDITOR_FRAME;
35
40{
41public:
43
45 void Reset( RESET_REASON aReason ) override;
46
48 bool Init() override;
49
50 int Main( const TOOL_EVENT& aEvent );
51
56 bool HasPoint() { return m_editedPoint != nullptr; }
57
59 void setTransitions() override;
60
61private:
63 void updateItem() const;
64
66 void updatePoints();
67
69 void updateEditedPoint( const TOOL_EVENT& aEvent );
70
72 void setEditedPoint( EDIT_POINT* aPoint );
73
75 inline bool isModified( const EDIT_POINT& aPoint ) const
76 {
77 return m_editedPoint == &aPoint;
78 }
79
80 inline int getEditedPointIndex() const
81 {
82 for( unsigned i = 0; i < m_editPoints->PointsSize(); ++i )
83 {
84 if( m_editedPoint == &m_editPoints->Point( i ) )
85 return i;
86 }
87
88 return wxNOT_FOUND;
89 }
90
91 int modifiedSelection( const TOOL_EVENT& aEvent );
92
93private:
96
99
101 std::shared_ptr<EDIT_POINTS> m_editPoints;
102};
103
104#endif // PL_POINT_EDITOR_H
Represent a single point that can be used for modifying items.
Definition: edit_points.h:48
The main window used in the drawing sheet editor.
Tool that displays edit points allowing to modify items by dragging the points.
void setTransitions() override
This method is meant to be overridden in order to specify handlers for events.
PL_EDITOR_FRAME * m_frame
PL_SELECTION_TOOL * m_selectionTool
Currently edited point, NULL if there is none.
int modifiedSelection(const TOOL_EVENT &aEvent)
int getEditedPointIndex() const
void updateItem() const
< Update item's points with edit points.
bool HasPoint()
Indicate the cursor is over an edit point.
bool isModified(const EDIT_POINT &aPoint) const
void Reset(RESET_REASON aReason) override
Bring the tool to a known, initial state.
void updateEditedPoint(const TOOL_EVENT &aEvent)
Set the current point being edited. NULL means none.
EDIT_POINT * m_editedPoint
Currently available edit points.
bool Init() override
Init() is called once upon a registration of the tool.
int Main(const TOOL_EVENT &aEvent)
void updatePoints()
Update which point is being edited.
void setEditedPoint(EDIT_POINT *aPoint)
Return true if aPoint is the currently modified point.
std::shared_ptr< EDIT_POINTS > m_editPoints
RESET_REASON
Determine the reason of reset for a tool.
Definition: tool_base.h:78
Generic, UI-independent tool event.
Definition: tool_event.h:156