KiCad PCB EDA Suite
KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER Class Referenceabstract

A geometry manager that works by accepting a sequence of points and advancing though stages of geometric construction with each point "locked in". More...

#include <multistep_geom_manager.h>

Inheritance diagram for KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER:
KIGFX::PREVIEW::ARC_GEOM_MANAGER

Public Member Functions

virtual ~MULTISTEP_GEOM_MANAGER ()
 
void AddPoint (const VECTOR2I &aPt, bool aLockIn)
 Add a point to the construction manager. More...
 
void RemoveLastPoint ()
 Undo the last point, and move the manager back to the previous step. More...
 
bool IsReset () const
 
void Reset ()
 Reset the manager to the initial state. More...
 
bool IsComplete () const
 
VECTOR2I GetLastPoint () const
 Get the last point added (locked in or not). More...
 
bool HasGeometryChanged () const
 
void ClearGeometryChanged ()
 Clear the geometry changed flag, call after the client code has updated everything as needed. More...
 

Protected Member Functions

void setGeometryChanged ()
 < Mark the geometry as changed for clients to notice More...
 
int getStep () const
 

Private Member Functions

virtual bool acceptPoint (const VECTOR2I &aPt)=0
 < Function that accepts a point for a stage, or rejects it to return to the previous stage More...
 
virtual int getMaxStep () const =0
 The highest step this manager has - used to recognize completion and to clamp the step as it advances. More...
 
void performStep (bool aForward)
 Has the geometry changed such that a client should redraw? More...
 

Private Attributes

bool m_changed = false
 The last (raw) point added, which is usually the cursor position. More...
 
VECTOR2I m_lastPoint
 
int m_step = 0
 The current manager step, from 0 to some highest number that depends on the manager. More...
 

Detailed Description

A geometry manager that works by accepting a sequence of points and advancing though stages of geometric construction with each point "locked in".

For example, constructing an arc might go:

  • Set origin
  • Set start point
  • Set end point

The exact steps and how the points translate to geometry depends on the subclass.

Definition at line 46 of file multistep_geom_manager.h.

Constructor & Destructor Documentation

◆ ~MULTISTEP_GEOM_MANAGER()

virtual KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::~MULTISTEP_GEOM_MANAGER ( )
inlinevirtual

Definition at line 49 of file multistep_geom_manager.h.

50  {}

Member Function Documentation

◆ acceptPoint()

virtual bool KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::acceptPoint ( const VECTOR2I aPt)
privatepure virtual

< Function that accepts a point for a stage, or rejects it to return to the previous stage

Implemented in KIGFX::PREVIEW::ARC_GEOM_MANAGER.

Referenced by AddPoint(), and RemoveLastPoint().

◆ AddPoint()

void KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::AddPoint ( const VECTOR2I aPt,
bool  aLockIn 
)
inline

Add a point to the construction manager.

Parameters
aPtthe new point
aLockInwhether to "lock in" the point, and move the geometry manager to the next (or previous) step. False to update geometry and not affect manager state.

Definition at line 60 of file multistep_geom_manager.h.

61  {
62  // hold onto the raw point separately to the managed geometry
63  m_lastPoint = aPt;
64 
65  // update the geometry
66  bool accepted = acceptPoint( aPt );
67 
68  // advance or regress the manager
69  if( aLockIn )
70  performStep( accepted );
71 
73  }
virtual bool acceptPoint(const VECTOR2I &aPt)=0
< Function that accepts a point for a stage, or rejects it to return to the previous stage
void setGeometryChanged()
< Mark the geometry as changed for clients to notice
void performStep(bool aForward)
Has the geometry changed such that a client should redraw?

References acceptPoint(), m_lastPoint, performStep(), and setGeometryChanged().

Referenced by DRAWING_TOOL::drawArc().

◆ ClearGeometryChanged()

void KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::ClearGeometryChanged ( )
inline

Clear the geometry changed flag, call after the client code has updated everything as needed.

Definition at line 136 of file multistep_geom_manager.h.

137  {
138  m_changed = false;
139  }
bool m_changed
The last (raw) point added, which is usually the cursor position.

References m_changed.

◆ GetLastPoint()

VECTOR2I KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::GetLastPoint ( ) const
inline

Get the last point added (locked in or not).

This can* be useful when drawing previews, as the point given isn't always what gets locked into the geometry, if that step doesn't have full degrees of freedom.

Definition at line 119 of file multistep_geom_manager.h.

120  {
121  return m_lastPoint;
122  }

References m_lastPoint.

Referenced by RemoveLastPoint(), and KIGFX::PREVIEW::ARC_ASSISTANT::ViewDraw().

◆ getMaxStep()

virtual int KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::getMaxStep ( ) const
privatepure virtual

The highest step this manager has - used to recognize completion and to clamp the step as it advances.

Moves the manager forward or backward through the stages

Implemented in KIGFX::PREVIEW::ARC_GEOM_MANAGER.

Referenced by IsComplete(), and performStep().

◆ getStep()

int KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::getStep ( ) const
inlineprotected

Definition at line 150 of file multistep_geom_manager.h.

151  {
152  return m_step;
153  }
int m_step
The current manager step, from 0 to some highest number that depends on the manager.

References m_step.

Referenced by KIGFX::PREVIEW::ARC_GEOM_MANAGER::acceptPoint(), and KIGFX::PREVIEW::ARC_GEOM_MANAGER::GetStep().

◆ HasGeometryChanged()

bool KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::HasGeometryChanged ( ) const
inline
Returns
true if the geometry has changed, eg such that a client should redraw.

Definition at line 127 of file multistep_geom_manager.h.

128  {
129  return m_changed;
130  }
bool m_changed
The last (raw) point added, which is usually the cursor position.

References m_changed.

Referenced by DRAWING_TOOL::drawArc().

◆ IsComplete()

bool KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::IsComplete ( ) const
inline
Returns
true if the manager reached the final state.

Definition at line 108 of file multistep_geom_manager.h.

109  {
110  return m_step == getMaxStep();
111  }
virtual int getMaxStep() const =0
The highest step this manager has - used to recognize completion and to clamp the step as it advances...
int m_step
The current manager step, from 0 to some highest number that depends on the manager.

References getMaxStep(), and m_step.

Referenced by DRAWING_TOOL::drawArc().

◆ IsReset()

bool KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::IsReset ( ) const
inline
Returns
true if the manager is in the initial state

Definition at line 91 of file multistep_geom_manager.h.

92  {
93  return m_step == 0;
94  }
int m_step
The current manager step, from 0 to some highest number that depends on the manager.

References m_step.

Referenced by KIGFX::PREVIEW::ARC_ASSISTANT::ViewBBox(), and KIGFX::PREVIEW::ARC_ASSISTANT::ViewDraw().

◆ performStep()

void KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::performStep ( bool  aForward)
inlineprivate

Has the geometry changed such that a client should redraw?

Definition at line 168 of file multistep_geom_manager.h.

References getMaxStep(), and m_step.

Referenced by AddPoint(), and RemoveLastPoint().

◆ RemoveLastPoint()

void KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::RemoveLastPoint ( )
inline

Undo the last point, and move the manager back to the previous step.

Definition at line 78 of file multistep_geom_manager.h.

79  {
80  performStep( false );
81 
82  // process the last point again, but in the previous step mode it doesn't matter if
83  // accepted or not, as long as the geometry is regenerated if needed.
86  }
virtual bool acceptPoint(const VECTOR2I &aPt)=0
< Function that accepts a point for a stage, or rejects it to return to the previous stage
void setGeometryChanged()
< Mark the geometry as changed for clients to notice
VECTOR2I GetLastPoint() const
Get the last point added (locked in or not).
void performStep(bool aForward)
Has the geometry changed such that a client should redraw?

References acceptPoint(), GetLastPoint(), performStep(), and setGeometryChanged().

Referenced by DRAWING_TOOL::drawArc().

◆ Reset()

void KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::Reset ( )
inline

Reset the manager to the initial state.

Definition at line 99 of file multistep_geom_manager.h.

100  {
101  m_step = 0;
103  }
int m_step
The current manager step, from 0 to some highest number that depends on the manager.
void setGeometryChanged()
< Mark the geometry as changed for clients to notice

References m_step, and setGeometryChanged().

◆ setGeometryChanged()

void KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::setGeometryChanged ( )
inlineprotected

< Mark the geometry as changed for clients to notice

Get the current stage of the manager

Definition at line 144 of file multistep_geom_manager.h.

References m_changed.

Referenced by AddPoint(), RemoveLastPoint(), Reset(), KIGFX::PREVIEW::ARC_GEOM_MANAGER::SetClockwise(), and KIGFX::PREVIEW::ARC_GEOM_MANAGER::ToggleClockwise().

Member Data Documentation

◆ m_changed

bool KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::m_changed = false
private

The last (raw) point added, which is usually the cursor position.

Definition at line 177 of file multistep_geom_manager.h.

Referenced by ClearGeometryChanged(), HasGeometryChanged(), and setGeometryChanged().

◆ m_lastPoint

VECTOR2I KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::m_lastPoint
private

Definition at line 180 of file multistep_geom_manager.h.

Referenced by AddPoint(), and GetLastPoint().

◆ m_step

int KIGFX::PREVIEW::MULTISTEP_GEOM_MANAGER::m_step = 0
private

The current manager step, from 0 to some highest number that depends on the manager.

Definition at line 185 of file multistep_geom_manager.h.

Referenced by getStep(), IsComplete(), IsReset(), performStep(), and Reset().


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