KiCad PCB EDA Suite
Loading...
Searching...
No Matches
PAIRWISE_LINE_ROUTINE Class Referenceabstract

A tool that acts on a pair of lines. More...

#include <item_modification_routine.h>

Inheritance diagram for PAIRWISE_LINE_ROUTINE:
ITEM_MODIFICATION_ROUTINE LINE_CHAMFER_ROUTINE LINE_EXTENSION_ROUTINE LINE_FILLET_ROUTINE

Public Member Functions

 PAIRWISE_LINE_ROUTINE (BOARD_ITEM *aBoard, CHANGE_HANDLER &aHandler)
 
virtual void ProcessLinePair (PCB_SHAPE &aLineA, PCB_SHAPE &aLineB)=0
 Perform the action on the pair of lines given.
 
unsigned GetSuccesses () const
 
unsigned GetFailures () const
 
virtual wxString GetCommitDescription () const =0
 
virtual std::optional< wxString > GetStatusMessage () const =0
 Get a status message to show when the routine is complete.
 

Protected Member Functions

BOARD_ITEMGetBoard () const
 The BOARD used when creating new shapes.
 
void AddSuccess ()
 Mark that one of the actions succeeded.
 
void AddFailure ()
 Mark that one of the actions failed.
 
bool ModifyLineOrDeleteIfZeroLength (PCB_SHAPE &aItem, const SEG &aSeg)
 Helper function useful for multiple tools: modify a line or delete it if it has zero length.
 
CHANGE_HANDLERGetHandler ()
 Access the handler for making changes to the board.
 

Private Attributes

BOARD_ITEMm_board
 
CHANGE_HANDLERm_handler
 
unsigned m_numSuccesses
 
unsigned m_numFailures
 

Detailed Description

A tool that acts on a pair of lines.

For example, fillets, chamfers, extensions, etc

Definition at line 219 of file item_modification_routine.h.

Constructor & Destructor Documentation

◆ PAIRWISE_LINE_ROUTINE()

PAIRWISE_LINE_ROUTINE::PAIRWISE_LINE_ROUTINE ( BOARD_ITEM aBoard,
CHANGE_HANDLER aHandler 
)
inline

Definition at line 222 of file item_modification_routine.h.

Member Function Documentation

◆ AddFailure()

void ITEM_MODIFICATION_ROUTINE::AddFailure ( )
inlineprotectedinherited

◆ AddSuccess()

void ITEM_MODIFICATION_ROUTINE::AddSuccess ( )
inlineprotectedinherited

◆ GetBoard()

BOARD_ITEM * ITEM_MODIFICATION_ROUTINE::GetBoard ( ) const
inlineprotectedinherited

◆ GetCommitDescription()

virtual wxString ITEM_MODIFICATION_ROUTINE::GetCommitDescription ( ) const
pure virtualinherited

◆ GetFailures()

◆ GetHandler()

◆ GetStatusMessage()

virtual std::optional< wxString > ITEM_MODIFICATION_ROUTINE::GetStatusMessage ( ) const
pure virtualinherited

Get a status message to show when the routine is complete.

Usually this will be an error or nothing.

Implemented in LINE_FILLET_ROUTINE, LINE_CHAMFER_ROUTINE, LINE_EXTENSION_ROUTINE, POLYGON_MERGE_ROUTINE, POLYGON_SUBTRACT_ROUTINE, and POLYGON_INTERSECT_ROUTINE.

◆ GetSuccesses()

◆ ModifyLineOrDeleteIfZeroLength()

bool ITEM_MODIFICATION_ROUTINE::ModifyLineOrDeleteIfZeroLength ( PCB_SHAPE aItem,
const SEG aSeg 
)
protectedinherited

Helper function useful for multiple tools: modify a line or delete it if it has zero length.

Parameters
aItemthe line to modify
aSegthe new line geometry

Definition at line 41 of file item_modification_routine.cpp.

References SEG::A, SEG::B, ITEM_MODIFICATION_ROUTINE::CHANGE_HANDLER::DeleteItem(), ITEM_MODIFICATION_ROUTINE::GetHandler(), EDA_SHAPE::GetShape(), SEG::Length(), ITEM_MODIFICATION_ROUTINE::CHANGE_HANDLER::MarkItemModified(), EDA_SHAPE::SetEnd(), and EDA_SHAPE::SetStart().

Referenced by LINE_FILLET_ROUTINE::ProcessLinePair(), and LINE_CHAMFER_ROUTINE::ProcessLinePair().

◆ ProcessLinePair()

virtual void PAIRWISE_LINE_ROUTINE::ProcessLinePair ( PCB_SHAPE aLineA,
PCB_SHAPE aLineB 
)
pure virtual

Perform the action on the pair of lines given.

The routine will be called repeatedly with all possible pairs of lines in the selection. The tools should handle the ones it's interested in. This means that the same line can appear multiple times with different partners.

The routine can skip lines that it's not interested in by returning without adding to the success or failure count.

Parameters
aLineAthe first line
aLineBthe second line
Returns
did the action succeed

Implemented in LINE_FILLET_ROUTINE, LINE_CHAMFER_ROUTINE, and LINE_EXTENSION_ROUTINE.

Member Data Documentation

◆ m_board

BOARD_ITEM* ITEM_MODIFICATION_ROUTINE::m_board
privateinherited

Definition at line 209 of file item_modification_routine.h.

Referenced by ITEM_MODIFICATION_ROUTINE::GetBoard().

◆ m_handler

CHANGE_HANDLER& ITEM_MODIFICATION_ROUTINE::m_handler
privateinherited

Definition at line 210 of file item_modification_routine.h.

Referenced by ITEM_MODIFICATION_ROUTINE::GetHandler().

◆ m_numFailures

unsigned ITEM_MODIFICATION_ROUTINE::m_numFailures
privateinherited

◆ m_numSuccesses

unsigned ITEM_MODIFICATION_ROUTINE::m_numSuccesses
privateinherited

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