KiCad PCB EDA Suite
ZONE_CREATE_HELPER Class Reference

This class is an adjuct helper to the DRAWING_TOOL interactive tool, which handles incoming geometry changes from a POLYGON_GEOM_MANAGER and translates that into a ZONE_CONTAINER based on given parameters. More...

#include <zone_create_helper.h>

Inheritance diagram for ZONE_CREATE_HELPER:
POLYGON_GEOM_MANAGER::CLIENT

Classes

struct  PARAMS
 Parameters used to fully describe a zone creation process. More...
 

Public Member Functions

 ZONE_CREATE_HELPER (DRAWING_TOOL &aTool, PARAMS &aParams)
 
 ~ZONE_CREATE_HELPER ()
 
void OnGeometryChange (const POLYGON_GEOM_MANAGER &aMgr) override
 

Sent when the polygon geometry changes

More...
 
bool OnFirstPoint (POLYGON_GEOM_MANAGER &aMgr) override
 Called before the first point is added - clients can do initialisation here, and can veto the start of the process (e.g. More...
 
void OnComplete (const POLYGON_GEOM_MANAGER &aMgr) override
 

Called when the polygon is complete

More...
 
std::unique_ptr< ZONE_CONTAINERcreateNewZone (bool aKeepout)
 Function createNewZone() More...
 
std::unique_ptr< ZONE_CONTAINERcreateZoneFromExisting (const ZONE_CONTAINER &aSrcZone)
 Function createZoneFromExisting. More...
 
void performZoneCutout (ZONE_CONTAINER &aZone, ZONE_CONTAINER &aCutout)
 Function performZoneCutout() More...
 
void commitZone (std::unique_ptr< ZONE_CONTAINER > aZone)
 Commit the current zone-in-progress to the BOARD. More...
 

Private Attributes

DRAWING_TOOLm_tool
 
PARAMSm_params
 

Parameters of the zone to be drawn

More...
 
KIGFX::PREVIEW::POLYGON_ITEM m_previewItem
 

The preview item to display

More...
 
KIGFX::VIEWm_parentView
 

view that show the preview item

More...
 
std::unique_ptr< ZONE_CONTAINERm_zone
 

The zone-in-progress

More...
 

Detailed Description

This class is an adjuct helper to the DRAWING_TOOL interactive tool, which handles incoming geometry changes from a POLYGON_GEOM_MANAGER and translates that into a ZONE_CONTAINER based on given parameters.

Definition at line 43 of file zone_create_helper.h.

Constructor & Destructor Documentation

◆ ZONE_CREATE_HELPER()

ZONE_CREATE_HELPER::ZONE_CREATE_HELPER ( DRAWING_TOOL aTool,
PARAMS aParams 
)
Parameters
aToolthe DRAWING_TOOL to provide the zone tool to
aParamsthe parameters to use to guide the zone creation

Definition at line 35 of file zone_create_helper.cpp.

35  :
36  m_tool( aTool ),
37  m_params( aParams ),
38  m_parentView( *aTool.getView() )
39 {
41 }
KIGFX::PREVIEW::POLYGON_ITEM m_previewItem
The preview item to display
KIGFX::VIEW & m_parentView
view that show the preview item
KIGFX::VIEW * getView() const
Function getView()
Definition: tool_base.cpp:36
PARAMS & m_params
Parameters of the zone to be drawn
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Function Add() Adds a VIEW_ITEM to the view.
Definition: view.cpp:346

References KIGFX::VIEW::Add(), m_parentView, and m_previewItem.

◆ ~ZONE_CREATE_HELPER()

ZONE_CREATE_HELPER::~ZONE_CREATE_HELPER ( )

Definition at line 44 of file zone_create_helper.cpp.

45 {
46  // remove the preview from the view
49 }
virtual void Remove(VIEW_ITEM *aItem)
Function Remove() Removes a VIEW_ITEM from the view.
Definition: view.cpp:376
KIGFX::PREVIEW::POLYGON_ITEM m_previewItem
The preview item to display
KIGFX::VIEW & m_parentView
view that show the preview item
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Sets the item visibility.
Definition: view.cpp:1486

References m_parentView, m_previewItem, KIGFX::VIEW::Remove(), and KIGFX::VIEW::SetVisible().

Member Function Documentation

◆ commitZone()

void ZONE_CREATE_HELPER::commitZone ( std::unique_ptr< ZONE_CONTAINER aZone)

Commit the current zone-in-progress to the BOARD.

This might be adding a new zone, or modifying an existing zone with a cutout, depending on parameters.

Parameters
aZone- the drawn zone outline to commit

Definition at line 154 of file zone_create_helper.cpp.

155 {
156  switch ( m_params.m_mode )
157  {
158  case ZONE_MODE::CUTOUT:
159  // For cutouts, subtract from the source
161  break;
162 
163  case ZONE_MODE::ADD:
164  case ZONE_MODE::SIMILAR:
165  {
166  BOARD_COMMIT bCommit( &m_tool );
167 
168  aZone->Hatch();
169 
170  if( !m_params.m_keepout )
171  {
172  ZONE_FILLER filler( m_tool.getModel<BOARD>() );
173  filler.Fill( { aZone.get() } );
174  }
175 
176  bCommit.Add( aZone.get() );
177  bCommit.Push( _( "Add a zone" ) );
178  m_tool.GetManager()->RunAction( PCB_ACTIONS::selectItem, true, aZone.release() );
179  break;
180  }
181 
183  {
184  BOARD_COMMIT bCommit( &m_tool );
186 
187  if( m_tool.getDrawingLayer() != Edge_Cuts )
188  {
189  auto poly = m_tool.m_editModules ? new EDGE_MODULE( (MODULE *) parent )
190  : new DRAWSEGMENT();
191  poly->SetShape ( S_POLYGON );
192  poly->SetLayer( m_tool.getDrawingLayer() );
193  poly->SetPolyShape ( *aZone->Outline() );
194  bCommit.Add( poly );
196  }
197  else
198  {
199  auto outline = aZone->Outline();
200 
201  for( auto seg = outline->CIterateSegments( 0 ); seg; seg++ )
202  {
203  auto new_seg = m_tool.m_editModules ? new EDGE_MODULE( (MODULE *) parent )
204  : new DRAWSEGMENT();
205  new_seg->SetShape( S_SEGMENT );
206  new_seg->SetLayer( m_tool.getDrawingLayer() );
207  new_seg->SetStart( wxPoint( seg.Get().A.x, seg.Get().A.y ) );
208  new_seg->SetEnd( wxPoint( seg.Get().B.x, seg.Get().B.y ) );
209  bCommit.Add( new_seg );
210  }
211  }
212 
213  bCommit.Push( _( "Add a graphical polygon" ) );
214 
215  break;
216  }
217  }
218 }
void SetShape(STROKE_T aShape)
Add a new zone with the same settings as an existing one.
T * getModel() const
Function getModel()
Definition: tool_base.h:201
polygon (not yet used for tracks, but could be in microwave apps)
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
usual segment : line with rounded ends
TOOL_MANAGER * GetManager() const
Function GetManager() Returns the instance of TOOL_MANAGER that takes care of the tool.
Definition: tool_base.h:143
void performZoneCutout(ZONE_CONTAINER &aZone, ZONE_CONTAINER &aCutout)
Function performZoneCutout()
ZONE_CONTAINER * m_sourceZone
Zone settings source (for similar and cutout zones)
Add a new zone/keepout with fresh settings.
#define _(s)
Make a cutout to an existing zone.
PCB_BASE_EDIT_FRAME * m_frame
Definition: drawing_tool.h:226
PARAMS & m_params
Parameters of the zone to be drawn
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
PCB_LAYER_ID getDrawingLayer() const
Selects a non-copper layer for drawing
static TOOL_ACTION selectItem
Selects an item (specified as the event parameter).
Definition: pcb_actions.h:76
virtual BOARD_ITEM_CONTAINER * GetModel() const =0
Function GetModel()
Abstract interface for BOARD_ITEMs capable of storing other items inside.
bool m_keepout
Should create a keepout zone?
ZONE_MODE m_mode
The zone mode to operate in

References _, ADD, COMMIT::Add(), CUTOUT, Edge_Cuts, ZONE_FILLER::Fill(), DRAWING_TOOL::getDrawingLayer(), TOOL_BASE::GetManager(), PCB_BASE_EDIT_FRAME::GetModel(), TOOL_BASE::getModel(), GRAPHIC_POLYGON, PCB_TOOL_BASE::m_editModules, DRAWING_TOOL::m_frame, ZONE_CREATE_HELPER::PARAMS::m_keepout, ZONE_CREATE_HELPER::PARAMS::m_mode, m_params, ZONE_CREATE_HELPER::PARAMS::m_sourceZone, m_tool, performZoneCutout(), BOARD_COMMIT::Push(), TOOL_MANAGER::RunAction(), S_POLYGON, S_SEGMENT, PCB_ACTIONS::selectItem, and SIMILAR.

Referenced by OnComplete().

◆ createNewZone()

std::unique_ptr< ZONE_CONTAINER > ZONE_CREATE_HELPER::createNewZone ( bool  aKeepout)

Function createNewZone()

Prompt the user for new zone settings, and create a new zone with those settings

Parameters
aKeepoutshould the zone be a keepout
Returns
the new zone, can be null if the user aborted

Definition at line 52 of file zone_create_helper.cpp.

53 {
54  auto& frame = *m_tool.getEditFrame<PCB_BASE_FRAME>();
55  auto& board = *m_tool.getModel<BOARD>();
57 
58  // Get the current default settings for zones
59  ZONE_SETTINGS zoneInfo = frame.GetZoneSettings();
61  zoneInfo.m_NetcodeSelection = board.GetHighLightNetCode();
62  zoneInfo.SetIsKeepout( m_params.m_keepout );
63 
65  {
66  // Get the current default settings for zones
67 
68  // Show options dialog
69  int dialogResult;
70 
71  if( m_params.m_keepout )
72  dialogResult = InvokeKeepoutAreaEditor( &frame, &zoneInfo );
73  else
74  {
75  if( IsCopperLayer( zoneInfo.m_CurrentZone_Layer ) )
76  dialogResult = InvokeCopperZonesEditor( &frame, &zoneInfo );
77  else
78  dialogResult = InvokeNonCopperZonesEditor( &frame, &zoneInfo );
79  }
80 
81  if( dialogResult == wxID_CANCEL )
82  return nullptr;
83 
84  controls->WarpCursor( controls->GetCursorPosition(), true );
85  }
86 
87  auto newZone = std::make_unique<ZONE_CONTAINER>( &board );
88 
89  // Apply the selected settings
90  zoneInfo.ExportSetting( *newZone );
91 
92  return newZone;
93 }
int InvokeKeepoutAreaEditor(PCB_BASE_FRAME *aCaller, ZONE_SETTINGS *aSettings)
Function InvokeKeepoutAreaEditor invokes up a modal dialog window for copper zone editing.
T * getModel() const
Function getModel()
Definition: tool_base.h:201
int InvokeNonCopperZonesEditor(PCB_BASE_FRAME *aParent, ZONE_SETTINGS *aSettings)
Function InvokeNonCopperZonesEditor invokes up a modal dialog window for non-copper zone editing.
PCB_LAYER_ID m_layer
Layer to begin drawing
TOOL_MANAGER * GetManager() const
Function GetManager() Returns the instance of TOOL_MANAGER that takes care of the tool.
Definition: tool_base.h:143
int m_NetcodeSelection
Net code selection for the current zone.
Definition: zone_settings.h:74
Class VIEW_CONTROLS is an interface for classes handling user events controlling the view behaviour (...
void SetIsKeepout(bool aEnable)
void ExportSetting(ZONE_CONTAINER &aTarget, bool aFullExport=true) const
Function ExportSetting copy settings to a given zone.
Class ZONE_SETTINGS handles zones parameters.
Definition: zone_settings.h:49
PARAMS & m_params
Parameters of the zone to be drawn
KIGFX::VIEW_CONTROLS * GetViewControls() const
Definition: tool_manager.h:246
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
T * getEditFrame() const
Function getEditFrame()
Definition: tool_base.h:187
bool IsCopperLayer(LAYER_NUM aLayerId)
Function IsCopperLayer tests whether a layer is a copper layer.
int InvokeCopperZonesEditor(PCB_BASE_FRAME *aCaller, ZONE_SETTINGS *aSettings)
Function InvokeCopperZonesEditor invokes up a modal dialog window for copper zone editing.
bool m_keepout
Should create a keepout zone?
PCB_LAYER_ID m_CurrentZone_Layer
Layer used to create the current zone.
Definition: zone_settings.h:78
class PCB_BASE_FRAME basic PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
ZONE_MODE m_mode
The zone mode to operate in

References ZONE_SETTINGS::ExportSetting(), TOOL_BASE::getEditFrame(), TOOL_BASE::GetManager(), TOOL_BASE::getModel(), TOOL_MANAGER::GetViewControls(), GRAPHIC_POLYGON, InvokeCopperZonesEditor(), InvokeKeepoutAreaEditor(), InvokeNonCopperZonesEditor(), IsCopperLayer(), ZONE_SETTINGS::m_CurrentZone_Layer, ZONE_CREATE_HELPER::PARAMS::m_keepout, ZONE_CREATE_HELPER::PARAMS::m_layer, ZONE_CREATE_HELPER::PARAMS::m_mode, ZONE_SETTINGS::m_NetcodeSelection, m_params, m_tool, and ZONE_SETTINGS::SetIsKeepout().

Referenced by OnFirstPoint().

◆ createZoneFromExisting()

std::unique_ptr< ZONE_CONTAINER > ZONE_CREATE_HELPER::createZoneFromExisting ( const ZONE_CONTAINER aSrcZone)

Function createZoneFromExisting.

Create a new zone with the settings from an existing zone

Parameters
aSrcZonethe zone to copy settings from
Returns
the new zone

Definition at line 96 of file zone_create_helper.cpp.

98 {
99  auto& board = *m_tool.getModel<BOARD>();
100 
101  auto newZone = std::make_unique<ZONE_CONTAINER>( &board );
102 
103  ZONE_SETTINGS zoneSettings;
104  zoneSettings << aSrcZone;
105 
106  zoneSettings.ExportSetting( *newZone );
107 
108  return newZone;
109 }
T * getModel() const
Function getModel()
Definition: tool_base.h:201
void ExportSetting(ZONE_CONTAINER &aTarget, bool aFullExport=true) const
Function ExportSetting copy settings to a given zone.
Class ZONE_SETTINGS handles zones parameters.
Definition: zone_settings.h:49
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161

References ZONE_SETTINGS::ExportSetting(), TOOL_BASE::getModel(), and m_tool.

Referenced by OnFirstPoint().

◆ OnComplete()

void ZONE_CREATE_HELPER::OnComplete ( const POLYGON_GEOM_MANAGER aMgr)
overridevirtual

Called when the polygon is complete

Implements POLYGON_GEOM_MANAGER::CLIENT.

Definition at line 262 of file zone_create_helper.cpp.

263 {
264  auto& finalPoints = aMgr.GetLockedInPoints();
265 
266  if( finalPoints.PointCount() < 3 )
267  {
268  // just scrap the zone in progress
269  m_zone = nullptr;
270  }
271  else
272  {
273  // if m_params.m_mode == DRAWING_TOOL::ZONE_MODE::CUTOUT, m_zone
274  // will be merged to the existing zone as a new hole.
275  m_zone->Outline()->NewOutline();
276  auto* outline = m_zone->Outline();
277 
278  for( int i = 0; i < finalPoints.PointCount(); ++i )
279  outline->Append( finalPoints.CPoint( i ) );
280 
281  outline->Outline( 0 ).SetClosed( true );
282  outline->RemoveNullSegments();
283 
284  // hand the zone over to the committer
285  commitZone( std::move( m_zone ) );
286  m_zone = nullptr;
287  }
288 
290 }
void commitZone(std::unique_ptr< ZONE_CONTAINER > aZone)
Commit the current zone-in-progress to the BOARD.
std::unique_ptr< ZONE_CONTAINER > m_zone
The zone-in-progress
KIGFX::PREVIEW::POLYGON_ITEM m_previewItem
The preview item to display
KIGFX::VIEW & m_parentView
view that show the preview item
size_t i
Definition: json11.cpp:597
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Sets the item visibility.
Definition: view.cpp:1486
const SHAPE_LINE_CHAIN & GetLockedInPoints() const
Get the "locked-in" points that describe the polygon itself.

References commitZone(), POLYGON_GEOM_MANAGER::GetLockedInPoints(), i, m_parentView, m_previewItem, m_zone, and KIGFX::VIEW::SetVisible().

◆ OnFirstPoint()

bool ZONE_CREATE_HELPER::OnFirstPoint ( POLYGON_GEOM_MANAGER aMgr)
overridevirtual

Called before the first point is added - clients can do initialisation here, and can veto the start of the process (e.g.

if user cancels a dialog)

Returns
false to veto start of new polygon

Implements POLYGON_GEOM_MANAGER::CLIENT.

Definition at line 221 of file zone_create_helper.cpp.

222 {
223  // if we don't have a zone, create one
224  // the user's choice here can affect things like the colour of the preview
225  if( !m_zone )
226  {
228 
229  if( m_params.m_sourceZone )
231  else
233 
234  if( m_zone )
235  {
236  // set up poperties from zone
237  const auto& settings = *m_parentView.GetPainter()->GetSettings();
238  COLOR4D color = settings.GetColor( nullptr, m_zone->GetLayer() );
239 
241  m_previewItem.SetFillColor( color.WithAlpha( 0.2 ) );
242 
244 
247  }
248  }
249 
250  return m_zone != nullptr;
251 }
static TOOL_ACTION selectionClear
Clears the current selection.
Definition: pcb_actions.h:73
std::unique_ptr< ZONE_CONTAINER > createZoneFromExisting(const ZONE_CONTAINER &aSrcZone)
Function createZoneFromExisting.
void SetStrokeColor(const COLOR4D &aNewColor)
Set the stroke colour to set before drawing preview
int color
Definition: DXF_plotter.cpp:62
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
std::unique_ptr< ZONE_CONTAINER > m_zone
The zone-in-progress
KIGFX::PREVIEW::POLYGON_ITEM m_previewItem
The preview item to display
void SetLeaderMode(LEADER_MODE aMode)
Set the leader mode to use when calculating the leader/returner lines.
PAINTER * GetPainter() const
Function GetPainter() Returns the painter object used by the view for drawing VIEW_ITEMS.
Definition: view.h:199
TOOL_MANAGER * GetManager() const
Function GetManager() Returns the instance of TOOL_MANAGER that takes care of the tool.
Definition: tool_base.h:143
Unconstrained point-to-point
ZONE_CONTAINER * m_sourceZone
Zone settings source (for similar and cutout zones)
KIGFX::VIEW & m_parentView
view that show the preview item
void SetFillColor(const COLOR4D &aNewColor)
Set the fill colour to set before drawing preview
PARAMS & m_params
Parameters of the zone to be drawn
virtual RENDER_SETTINGS * GetSettings()=0
Function GetSettings Returns pointer to current settings that are going to be used when drawing items...
std::unique_ptr< ZONE_CONTAINER > createNewZone(bool aKeepout)
Function createNewZone()
Definition: colors.h:49
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Sets the item visibility.
Definition: view.cpp:1486
bool m_keepout
Should create a keepout zone?
Class COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:39

References color, createNewZone(), createZoneFromExisting(), POLYGON_GEOM_MANAGER::DEG45, POLYGON_GEOM_MANAGER::DIRECT, TOOL_BASE::GetManager(), KIGFX::VIEW::GetPainter(), KIGFX::PAINTER::GetSettings(), ZONE_CREATE_HELPER::PARAMS::m_keepout, m_params, m_parentView, m_previewItem, ZONE_CREATE_HELPER::PARAMS::m_sourceZone, m_tool, m_zone, TOOL_MANAGER::RunAction(), PCB_ACTIONS::selectionClear, KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM::SetFillColor(), POLYGON_GEOM_MANAGER::SetLeaderMode(), KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM::SetStrokeColor(), KIGFX::VIEW::SetVisible(), and WHITE.

◆ OnGeometryChange()

void ZONE_CREATE_HELPER::OnGeometryChange ( const POLYGON_GEOM_MANAGER aMgr)
overridevirtual

Sent when the polygon geometry changes

Implements POLYGON_GEOM_MANAGER::CLIENT.

Definition at line 254 of file zone_create_helper.cpp.

255 {
256  // send the points to the preview item
259 }
const SHAPE_LINE_CHAIN & GetLeaderLinePoints() const
Get the points comprising the leader line (the line from the last locked-in point to the current curs...
KIGFX::PREVIEW::POLYGON_ITEM m_previewItem
The preview item to display
KIGFX::VIEW & m_parentView
view that show the preview item
virtual void Update(VIEW_ITEM *aItem, int aUpdateFlags)
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1540
void SetPoints(const SHAPE_LINE_CHAIN &aLockedInPts, const SHAPE_LINE_CHAIN &aLeaderPts)
Set the polygon points.
const SHAPE_LINE_CHAIN & GetLockedInPoints() const
Get the "locked-in" points that describe the polygon itself.
Color has changed.
Definition: view_item.h:57

References KIGFX::GEOMETRY, POLYGON_GEOM_MANAGER::GetLeaderLinePoints(), POLYGON_GEOM_MANAGER::GetLockedInPoints(), m_parentView, m_previewItem, KIGFX::PREVIEW::POLYGON_ITEM::SetPoints(), and KIGFX::VIEW::Update().

◆ performZoneCutout()

void ZONE_CREATE_HELPER::performZoneCutout ( ZONE_CONTAINER aZone,
ZONE_CONTAINER aCutout 
)

Function performZoneCutout()

Cut one zone out of another one (i.e. subtraction) and update the zone.

Parameters
aZonethe zone to removed area from
aCutoutthe area to remove

Definition at line 112 of file zone_create_helper.cpp.

113 {
114  BOARD_COMMIT commit( &m_tool );
115  BOARD* board = m_tool.getModel<BOARD>();
116  std::vector<ZONE_CONTAINER*> newZones;
117 
118  // Clear the selection before removing the old zone
119  auto toolMgr = m_tool.GetManager();
120  toolMgr->RunAction( PCB_ACTIONS::selectionClear, true );
121 
122  SHAPE_POLY_SET originalOutline( *aZone.Outline() );
123  originalOutline.BooleanSubtract( *aCutout.Outline(), SHAPE_POLY_SET::PM_FAST );
124 
125  for( int i = 0; i < originalOutline.OutlineCount(); i++ )
126  {
127  auto newZoneOutline = new SHAPE_POLY_SET;
128  newZoneOutline->AddOutline( originalOutline.Outline( i ) );
129 
130  for (int j = 0; j < originalOutline.HoleCount(i) ; j++ )
131  newZoneOutline->AddHole( originalOutline.CHole(i, j), i );
132 
133  auto newZone = new ZONE_CONTAINER( aZone );
134  newZone->SetOutline( newZoneOutline );
135  newZone->SetLocalFlags( 1 );
136  newZone->Hatch();
137  newZones.push_back( newZone );
138  commit.Add( newZone );
139  }
140 
141  commit.Remove( &aZone );
142  commit.Push( _( "Add a zone cutout" ) );
143 
144  ZONE_FILLER filler( board );
145  filler.Fill( newZones );
146 
147  // Select the new zone and set it as the source for the next cutout
148  toolMgr->RunAction( PCB_ACTIONS::selectItem, true, newZones[0] );
149  m_params.m_sourceZone = newZones[0];
150 
151 }
static TOOL_ACTION selectionClear
Clears the current selection.
Definition: pcb_actions.h:73
Class ZONE_CONTAINER handles a list of polygons defining a copper zone.
Definition: class_zone.h:57
T * getModel() const
Function getModel()
Definition: tool_base.h:201
SHAPE_POLY_SET * Outline()
Definition: class_zone.h:237
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
TOOL_MANAGER * GetManager() const
Function GetManager() Returns the instance of TOOL_MANAGER that takes care of the tool.
Definition: tool_base.h:143
Class SHAPE_POLY_SET.
ZONE_CONTAINER * m_sourceZone
Zone settings source (for similar and cutout zones)
#define _(s)
PARAMS & m_params
Parameters of the zone to be drawn
int AddOutline(const SHAPE_LINE_CHAIN &aOutline)
Adds a new outline to the set and returns its index
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
size_t i
Definition: json11.cpp:597
static TOOL_ACTION selectItem
Selects an item (specified as the event parameter).
Definition: pcb_actions.h:76
void BooleanSubtract(const SHAPE_POLY_SET &b, POLYGON_MODE aFastMode)
Performs boolean polyset difference For aFastMode meaning, see function booleanOp

References _, COMMIT::Add(), SHAPE_POLY_SET::AddOutline(), SHAPE_POLY_SET::BooleanSubtract(), ZONE_FILLER::Fill(), TOOL_BASE::GetManager(), TOOL_BASE::getModel(), i, m_params, ZONE_CREATE_HELPER::PARAMS::m_sourceZone, m_tool, ZONE_CONTAINER::Outline(), SHAPE_POLY_SET::PM_FAST, BOARD_COMMIT::Push(), COMMIT::Remove(), TOOL_MANAGER::RunAction(), PCB_ACTIONS::selectionClear, and PCB_ACTIONS::selectItem.

Referenced by commitZone().

Member Data Documentation

◆ m_params

PARAMS& ZONE_CREATE_HELPER::m_params
private

Parameters of the zone to be drawn

Definition at line 129 of file zone_create_helper.h.

Referenced by commitZone(), createNewZone(), OnFirstPoint(), and performZoneCutout().

◆ m_parentView

KIGFX::VIEW& ZONE_CREATE_HELPER::m_parentView
private

view that show the preview item

Definition at line 135 of file zone_create_helper.h.

Referenced by OnComplete(), OnFirstPoint(), OnGeometryChange(), ZONE_CREATE_HELPER(), and ~ZONE_CREATE_HELPER().

◆ m_previewItem

KIGFX::PREVIEW::POLYGON_ITEM ZONE_CREATE_HELPER::m_previewItem
private

The preview item to display

Definition at line 132 of file zone_create_helper.h.

Referenced by OnComplete(), OnFirstPoint(), OnGeometryChange(), ZONE_CREATE_HELPER(), and ~ZONE_CREATE_HELPER().

◆ m_tool

DRAWING_TOOL& ZONE_CREATE_HELPER::m_tool
private

◆ m_zone

std::unique_ptr<ZONE_CONTAINER> ZONE_CREATE_HELPER::m_zone
private

The zone-in-progress

Definition at line 138 of file zone_create_helper.h.

Referenced by OnComplete(), and OnFirstPoint().


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