KiCad PCB EDA Suite
|
#include <pcb_grid_helper.h>
Public Types | |
enum | ANCHOR_FLAGS { CORNER = 1 , OUTLINE = 2 , SNAPPABLE = 4 , ORIGIN = 8 , VERTICAL = 16 , HORIZONTAL = 32 , ALL = CORNER | OUTLINE | SNAPPABLE | ORIGIN | VERTICAL | HORIZONTAL } |
Public Member Functions | |
PCB_GRID_HELPER (TOOL_MANAGER *aToolMgr, MAGNETIC_SETTINGS *aMagneticSettings) | |
BOARD_ITEM * | GetSnapped () const |
Function GetSnapped If the PCB_GRID_HELPER has highlighted a snap point (target shown), this function will return a pointer to the item to which it snapped. More... | |
VECTOR2I | AlignToSegment (const VECTOR2I &aPoint, const SEG &aSeg) |
VECTOR2I | BestDragOrigin (const VECTOR2I &aMousePos, std::vector< BOARD_ITEM * > &aItem, const SELECTION_FILTER_OPTIONS *aSelectionFilter=nullptr) |
VECTOR2I | AlignToArc (const VECTOR2I &aPoint, const SHAPE_ARC &aSeg) |
VECTOR2I | AlignToNearestPad (const VECTOR2I &aMousePos, PADS &aPads) |
VECTOR2I | BestSnapAnchor (const VECTOR2I &aOrigin, BOARD_ITEM *aReferenceItem) |
Chooses the "best" snap anchor around the given point, optionally taking layers from the reference item. More... | |
VECTOR2I | BestSnapAnchor (const VECTOR2I &aOrigin, const LSET &aLayers, const std::vector< BOARD_ITEM * > &aSkip={}) |
VECTOR2I | GetGrid () const |
VECTOR2I | GetVisibleGrid () const |
VECTOR2I | GetOrigin () const |
void | SetAuxAxes (bool aEnable, const VECTOR2I &aOrigin=VECTOR2I(0, 0)) |
virtual VECTOR2I | Align (const VECTOR2I &aPoint) const |
VECTOR2I | AlignGrid (const VECTOR2I &aPoint) const |
void | SetSkipPoint (const VECTOR2I &aPoint) |
void | ClearSkipPoint () |
We clear the skip point by setting it to an unreachable position, thereby preventing matching. More... | |
void | SetSnap (bool aSnap) |
bool | GetSnap () const |
void | SetUseGrid (bool aSnapToGrid) |
bool | GetUseGrid () const |
void | SetSnapLine (bool aSnap) |
void | SetMask (int aMask) |
void | SetMaskFlag (int aFlag) |
void | ClearMaskFlag (int aFlag) |
Protected Member Functions | |
void | addAnchor (const VECTOR2I &aPos, int aFlags, EDA_ITEM *aItem) |
void | clearAnchors () |
bool | canUseGrid () const |
Check whether it is possible to use the grid – this depends both on local grid helper settings and global (tool manager) KiCad settings. More... | |
Protected Attributes | |
std::vector< ANCHOR > | m_anchors |
TOOL_MANAGER * | m_toolMgr |
std::optional< VECTOR2I > | m_auxAxis |
int | m_maskTypes |
bool | m_enableSnap |
bool | m_enableGrid |
bool | m_enableSnapLine |
ANCHOR * | m_snapItem |
VECTOR2I | m_skipPoint |
KIGFX::ORIGIN_VIEWITEM | m_viewSnapPoint |
KIGFX::ORIGIN_VIEWITEM | m_viewSnapLine |
KIGFX::ORIGIN_VIEWITEM | m_viewAxis |
Private Member Functions | |
std::set< BOARD_ITEM * > | queryVisible (const BOX2I &aArea, const std::vector< BOARD_ITEM * > &aSkip) const |
ANCHOR * | nearestAnchor (const VECTOR2I &aPos, int aFlags, LSET aMatchLayers) |
void | computeAnchors (BOARD_ITEM *aItem, const VECTOR2I &aRefPos, bool aFrom=false, const SELECTION_FILTER_OPTIONS *aSelectionFilter=nullptr) |
computeAnchors inserts the local anchor points in to the grid helper for the specified board item, given the reference point and the direction of use for the point. More... | |
Private Attributes | |
MAGNETIC_SETTINGS * | m_magneticSettings |
Definition at line 35 of file pcb_grid_helper.h.
|
inherited |
Enumerator | |
---|---|
CORNER | |
OUTLINE | |
SNAPPABLE | |
ORIGIN | |
VERTICAL | |
HORIZONTAL | |
ALL |
Definition at line 77 of file grid_helper.h.
PCB_GRID_HELPER::PCB_GRID_HELPER | ( | TOOL_MANAGER * | aToolMgr, |
MAGNETIC_SETTINGS * | aMagneticSettings | ||
) |
Definition at line 49 of file pcb_grid_helper.cpp.
References KIGFX::VIEW::Add(), KIGFX::ORIGIN_VIEWITEM::CIRCLE_CROSS, KIGFX::ORIGIN_VIEWITEM::CROSS, KIGFX::ORIGIN_VIEWITEM::DASH_LINE, KIGFX::RENDER_SETTINGS::GetLayerColor(), KIGFX::VIEW::GetPainter(), KIGFX::PAINTER::GetSettings(), TOOL_MANAGER::GetView(), LAYER_ANCHOR, LAYER_AUX_ITEMS, GRID_HELPER::m_toolMgr, GRID_HELPER::m_viewAxis, GRID_HELPER::m_viewSnapLine, GRID_HELPER::m_viewSnapPoint, KIGFX::ORIGIN_VIEWITEM::SetColor(), KIGFX::ORIGIN_VIEWITEM::SetDrawAtZero(), KIGFX::ORIGIN_VIEWITEM::SetSize(), KIGFX::ORIGIN_VIEWITEM::SetStyle(), KIGFX::VIEW::SetVisible(), and KIGFX::COLOR4D::WithAlpha().
|
inlineprotectedinherited |
Definition at line 107 of file grid_helper.h.
References GRID_HELPER::m_anchors, and GRID_HELPER::m_maskTypes.
Referenced by computeAnchors(), and EE_GRID_HELPER::computeAnchors().
Definition at line 103 of file grid_helper.cpp.
References std::abs(), GRID_HELPER::AlignGrid(), GRID_HELPER::canUseGrid(), GRID_HELPER::m_auxAxis, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by AlignToArc(), AlignToSegment(), BestSnapAnchor(), EE_GRID_HELPER::BestSnapAnchor(), EE_GRID_HELPER::computeAnchors(), PNS::TOOL_BASE::snapToItem(), and PNS::TOOL_BASE::updateEndItem().
Definition at line 91 of file grid_helper.cpp.
References GRID_HELPER::GetGrid(), GRID_HELPER::GetOrigin(), grid, KiROUND(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by GRID_HELPER::Align(), EC_VERTICAL::Apply(), EC_HORIZONTAL::Apply(), EC_45DEGREE::Apply(), EC_LINE::Apply(), and EE_POINT_EDITOR::pinEditedCorner().
Definition at line 134 of file pcb_grid_helper.cpp.
References GRID_HELPER::Align(), VECTOR2< int >::ECOORD_MAX, SHAPE_ARC::GetP0(), SHAPE_ARC::GetP1(), SHAPE_ARC::IntersectLine(), and GRID_HELPER::m_enableSnap.
Referenced by PNS::TOOL_BASE::snapToItem().
Definition at line 179 of file pcb_grid_helper.cpp.
References GRID_HELPER::clearAnchors(), computeAnchors(), EDA_ITEM::HitTest(), GRID_HELPER::m_anchors, GRID_HELPER::ORIGIN, and GRID_HELPER::ANCHOR::pos.
Definition at line 79 of file pcb_grid_helper.cpp.
References SEG::A, GRID_HELPER::Align(), SEG::B, VECTOR2< int >::ECOORD_MAX, SEG::IntersectLines(), GRID_HELPER::m_enableSnap, and SEG::SquaredDistance().
Referenced by DRAWING_TOOL::DrawVia(), and PNS::TOOL_BASE::snapToItem().
VECTOR2I PCB_GRID_HELPER::BestDragOrigin | ( | const VECTOR2I & | aMousePos, |
std::vector< BOARD_ITEM * > & | aItem, | ||
const SELECTION_FILTER_OPTIONS * | aSelectionFilter = nullptr |
||
) |
Definition at line 212 of file pcb_grid_helper.cpp.
References LSET::AllLayersMask(), GRID_HELPER::clearAnchors(), computeAnchors(), GRID_HELPER::CORNER, GRID_HELPER::ANCHOR::Distance(), KIGFX::VIEW::GetGAL(), TOOL_MANAGER::GetView(), KIGFX::GAL::GetWorldScale(), GRID_HELPER::m_toolMgr, nearestAnchor(), GRID_HELPER::ORIGIN, GRID_HELPER::OUTLINE, and GRID_HELPER::ANCHOR::pos.
VECTOR2I PCB_GRID_HELPER::BestSnapAnchor | ( | const VECTOR2I & | aOrigin, |
BOARD_ITEM * | aReferenceItem | ||
) |
Chooses the "best" snap anchor around the given point, optionally taking layers from the reference item.
The reference item will not be snapped to (it is being dragged or created) and we choose the layers that can be snapped based on the reference item layer
aOrigin | Point we want to snap from |
aReferenceItem | Reference item for layer/type special casing |
Definition at line 259 of file pcb_grid_helper.cpp.
References LSET::AllLayersMask(), BestSnapAnchor(), and BOARD_ITEM::GetLayerSet().
Referenced by BestSnapAnchor().
VECTOR2I PCB_GRID_HELPER::BestSnapAnchor | ( | const VECTOR2I & | aOrigin, |
const LSET & | aLayers, | ||
const std::vector< BOARD_ITEM * > & | aSkip = {} |
||
) |
Allows de-snapping from the line if you are closer to another snap point
Definition at line 278 of file pcb_grid_helper.cpp.
References std::abs(), GRID_HELPER::Align(), GRID_HELPER::clearAnchors(), computeAnchors(), GRID_HELPER::ANCHOR::Distance(), KIGFX::GEOMETRY, KIGFX::VIEW::GetGAL(), KIGFX::ORIGIN_VIEWITEM::GetPosition(), TOOL_MANAGER::GetView(), GRID_HELPER::GetVisibleGrid(), KIGFX::GAL::GetWorldScale(), KIGFX::VIEW::IsVisible(), KiROUND(), GRID_HELPER::m_enableGrid, GRID_HELPER::m_enableSnap, GRID_HELPER::m_enableSnapLine, GRID_HELPER::m_skipPoint, GRID_HELPER::m_snapItem, GRID_HELPER::m_toolMgr, GRID_HELPER::m_viewSnapLine, GRID_HELPER::m_viewSnapPoint, nearestAnchor(), GRID_HELPER::ANCHOR::pos, queryVisible(), BOX2< Vec >::SetEnd(), KIGFX::ORIGIN_VIEWITEM::SetEndPosition(), BOX2< Vec >::SetOrigin(), KIGFX::ORIGIN_VIEWITEM::SetPosition(), KIGFX::VIEW::SetVisible(), GRID_HELPER::SNAPPABLE, KIGFX::VIEW::Update(), VECTOR2< T >::x, and VECTOR2< T >::y.
|
inlineprotectedinherited |
Check whether it is possible to use the grid – this depends both on local grid helper settings and global (tool manager) KiCad settings.
Definition at line 123 of file grid_helper.h.
References KIGFX::VIEW::GetGAL(), KIGFX::GAL::GetGridSnapping(), TOOL_MANAGER::GetView(), GRID_HELPER::m_enableGrid, and GRID_HELPER::m_toolMgr.
Referenced by GRID_HELPER::Align(), and EE_GRID_HELPER::BestSnapAnchor().
|
inlineprotectedinherited |
Definition at line 113 of file grid_helper.h.
References GRID_HELPER::m_anchors, and GRID_HELPER::m_snapItem.
Referenced by AlignToNearestPad(), EE_GRID_HELPER::BestDragOrigin(), BestDragOrigin(), BestSnapAnchor(), and EE_GRID_HELPER::BestSnapAnchor().
|
inlineinherited |
Definition at line 75 of file grid_helper.h.
References GRID_HELPER::m_maskTypes.
|
inlineinherited |
We clear the skip point by setting it to an unreachable position, thereby preventing matching.
Definition at line 60 of file grid_helper.h.
References GRID_HELPER::m_skipPoint.
|
private |
computeAnchors inserts the local anchor points in to the grid helper for the specified board item, given the reference point and the direction of use for the point.
aItem | The board item for which to compute the anchors |
aRefPos | The point for which to compute the anchors (if used by the component) |
aFrom | Is this for an anchor that is designating a source point (aFrom=true) or not |
If we are getting a drag point, we don't want to center the edge of pads
Definition at line 416 of file pcb_grid_helper.cpp.
References SEG::A, GRID_HELPER::addAnchor(), ANGLE_90, SHAPE_LINE_CHAIN::Append(), SEG::B, SEG::Center(), BOX2< Vec >::Centre(), SHAPE_POLY_SET::CIterateWithHoles(), computeAnchors(), GRID_HELPER::CORNER, SELECTION_FILTER_OPTIONS::dimensions, EuclideanNorm(), SELECTION_FILTER_OPTIONS::footprints, FOOTPRINT::GetBoundingBox(), BOARD_ITEM::GetCenter(), PCB_DIM_ALIGNED::GetCrossbarEnd(), PCB_DIM_ALIGNED::GetCrossbarStart(), PCB_DIMENSION_BASE::GetEnd(), PCB_TRACK::GetEnd(), GRID_HELPER::GetGrid(), KIGFX::RENDER_SETTINGS::GetHighContrast(), KIGFX::RENDER_SETTINGS::GetHighContrastLayers(), PCB_DIM_RADIAL::GetKnee(), KIGFX::VIEW::GetPainter(), EDA_ITEM::GetPosition(), FOOTPRINT::GetPosition(), KIGFX::VIEW::GetScale(), SHAPE_LINE_CHAIN::GetSegment(), SHAPE_LINE_CHAIN::GetSegmentCount(), KIGFX::PAINTER::GetSettings(), PCB_DIMENSION_BASE::GetStart(), PCB_TRACK::GetStart(), EDA_TEXT::GetTextPos(), TOOL_MANAGER::GetView(), SELECTION_FILTER_OPTIONS::graphics, MAGNETIC_SETTINGS::graphics, grid, group, KIGFX::VIEW::IsVisible(), KI_FALLTHROUGH, m_magneticSettings, GRID_HELPER::m_toolMgr, SHAPE_LINE_CHAIN::Move(), SHAPE_LINE_CHAIN::NearestPoint(), normal, GRID_HELPER::ORIGIN, GRID_HELPER::OUTLINE, pad, SELECTION_FILTER_OPTIONS::pads, FOOTPRINT::Pads(), MAGNETIC_SETTINGS::pads, PCB_ARC_T, PCB_DIM_ALIGNED_T, PCB_DIM_CENTER_T, PCB_DIM_LEADER_T, PCB_DIM_ORTHOGONAL_T, PCB_DIM_RADIAL_T, PCB_FOOTPRINT_T, PCB_GROUP_T, PCB_MARKER_T, PCB_PAD_T, PCB_SHAPE_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TEXTBOX_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_T, SHAPE_LINE_CHAIN::Rotate(), RotatePoint(), SHAPE_LINE_CHAIN::SetClosed(), GRID_HELPER::SNAPPABLE, SELECTION_FILTER_OPTIONS::text, SELECTION_FILTER_OPTIONS::tracks, MAGNETIC_SETTINGS::tracks, EDA_ITEM::Type(), SELECTION_FILTER_OPTIONS::vias, VECTOR2< T >::x, VECTOR2< T >::y, and SELECTION_FILTER_OPTIONS::zones.
Referenced by AlignToNearestPad(), BestDragOrigin(), BestSnapAnchor(), and computeAnchors().
|
inherited |
Definition at line 51 of file grid_helper.cpp.
References KIGFX::VIEW::GetGAL(), KIGFX::GAL::GetGridSize(), TOOL_MANAGER::GetView(), KiROUND(), GRID_HELPER::m_toolMgr, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by GRID_HELPER::AlignGrid(), and computeAnchors().
|
inherited |
Definition at line 67 of file grid_helper.cpp.
References KIGFX::VIEW::GetGAL(), KIGFX::GAL::GetGridOrigin(), TOOL_MANAGER::GetView(), and GRID_HELPER::m_toolMgr.
Referenced by GRID_HELPER::AlignGrid().
|
inlineinherited |
Definition at line 66 of file grid_helper.h.
References GRID_HELPER::m_enableSnap.
Referenced by DRAWING_TOOL::DrawVia(), EE_POINT_EDITOR::pinEditedCorner(), and PNS::TOOL_BASE::updateEndItem().
BOARD_ITEM * PCB_GRID_HELPER::GetSnapped | ( | ) | const |
Function GetSnapped If the PCB_GRID_HELPER has highlighted a snap point (target shown), this function will return a pointer to the item to which it snapped.
Definition at line 367 of file pcb_grid_helper.cpp.
References GRID_HELPER::ANCHOR::item, and GRID_HELPER::m_snapItem.
|
inlineinherited |
Definition at line 69 of file grid_helper.h.
References GRID_HELPER::m_enableGrid.
Referenced by PNS::TOOL_BASE::updateStartItem().
|
inherited |
Definition at line 59 of file grid_helper.cpp.
References KIGFX::VIEW::GetGAL(), TOOL_MANAGER::GetView(), KIGFX::GAL::GetVisibleGridSize(), KiROUND(), GRID_HELPER::m_toolMgr, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by BestSnapAnchor().
|
private |
Definition at line 860 of file pcb_grid_helper.cpp.
References BOARD_ITEM::GetLayerSet(), and GRID_HELPER::m_anchors.
Referenced by BestDragOrigin(), and BestSnapAnchor().
|
private |
Definition at line 376 of file pcb_grid_helper.cpp.
References TOOL_MANAGER::GetCurrentTool(), KIGFX::RENDER_SETTINGS::GetHighContrast(), KIGFX::RENDER_SETTINGS::GetHighContrastLayers(), KIGFX::VIEW::GetPainter(), KIGFX::VIEW::GetScale(), KIGFX::PAINTER::GetSettings(), TOOL_MANAGER::GetView(), PCB_TOOL_BASE::IsFootprintEditor(), KIGFX::VIEW::IsVisible(), GRID_HELPER::m_toolMgr, PCB_FOOTPRINT_T, KIGFX::VIEW::Query(), EDA_ITEM::Type(), and KIGFX::VIEW_ITEM::ViewGetLOD().
Referenced by BestSnapAnchor().
|
inherited |
Definition at line 75 of file grid_helper.cpp.
References TOOL_MANAGER::GetView(), GRID_HELPER::m_auxAxis, GRID_HELPER::m_toolMgr, GRID_HELPER::m_viewAxis, KIGFX::ORIGIN_VIEWITEM::SetPosition(), and KIGFX::VIEW::SetVisible().
Referenced by ROUTER_TOOL::InlineDrag(), and ROUTER_TOOL::performDragging().
|
inlineinherited |
Definition at line 73 of file grid_helper.h.
References GRID_HELPER::m_maskTypes.
|
inlineinherited |
Definition at line 74 of file grid_helper.h.
References GRID_HELPER::m_maskTypes.
|
inlineinherited |
Definition at line 52 of file grid_helper.h.
References GRID_HELPER::m_skipPoint.
|
inlineinherited |
Definition at line 65 of file grid_helper.h.
References GRID_HELPER::m_enableSnap.
Referenced by DRAWING_TOOL::DrawVia(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), PNS::TOOL_BASE::updateEndItem(), EE_POINT_EDITOR::updateParentItem(), and PNS::TOOL_BASE::updateStartItem().
|
inlineinherited |
Definition at line 71 of file grid_helper.h.
References GRID_HELPER::m_enableSnapLine.
|
inlineinherited |
Definition at line 68 of file grid_helper.h.
References GRID_HELPER::m_enableGrid.
Referenced by ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), PNS::TOOL_BASE::updateEndItem(), and PNS::TOOL_BASE::updateStartItem().
|
protectedinherited |
Definition at line 129 of file grid_helper.h.
Referenced by GRID_HELPER::addAnchor(), AlignToNearestPad(), GRID_HELPER::clearAnchors(), EE_GRID_HELPER::nearestAnchor(), and nearestAnchor().
|
protectedinherited |
Definition at line 132 of file grid_helper.h.
Referenced by GRID_HELPER::Align(), and GRID_HELPER::SetAuxAxes().
|
protectedinherited |
Definition at line 137 of file grid_helper.h.
Referenced by BestSnapAnchor(), GRID_HELPER::canUseGrid(), GRID_HELPER::GetUseGrid(), GRID_HELPER::GRID_HELPER(), and GRID_HELPER::SetUseGrid().
|
protectedinherited |
Definition at line 136 of file grid_helper.h.
Referenced by AlignToArc(), AlignToSegment(), BestSnapAnchor(), EE_GRID_HELPER::BestSnapAnchor(), GRID_HELPER::GetSnap(), GRID_HELPER::GRID_HELPER(), and GRID_HELPER::SetSnap().
|
protectedinherited |
Definition at line 138 of file grid_helper.h.
Referenced by BestSnapAnchor(), EE_GRID_HELPER::BestSnapAnchor(), GRID_HELPER::GRID_HELPER(), and GRID_HELPER::SetSnapLine().
|
private |
Definition at line 89 of file pcb_grid_helper.h.
Referenced by computeAnchors().
|
protectedinherited |
Definition at line 134 of file grid_helper.h.
Referenced by GRID_HELPER::addAnchor(), GRID_HELPER::ClearMaskFlag(), GRID_HELPER::GRID_HELPER(), GRID_HELPER::SetMask(), and GRID_HELPER::SetMaskFlag().
|
protectedinherited |
Definition at line 141 of file grid_helper.h.
Referenced by BestSnapAnchor(), EE_GRID_HELPER::BestSnapAnchor(), GRID_HELPER::ClearSkipPoint(), and GRID_HELPER::SetSkipPoint().
|
protectedinherited |
Definition at line 139 of file grid_helper.h.
Referenced by BestSnapAnchor(), EE_GRID_HELPER::BestSnapAnchor(), GRID_HELPER::clearAnchors(), EE_GRID_HELPER::GetSnapped(), GetSnapped(), and GRID_HELPER::GRID_HELPER().
|
protectedinherited |
Definition at line 131 of file grid_helper.h.
Referenced by EE_GRID_HELPER::BestDragOrigin(), BestDragOrigin(), BestSnapAnchor(), EE_GRID_HELPER::BestSnapAnchor(), GRID_HELPER::canUseGrid(), computeAnchors(), EE_GRID_HELPER::EE_GRID_HELPER(), GRID_HELPER::GetGrid(), GRID_HELPER::GetOrigin(), GRID_HELPER::GetVisibleGrid(), PCB_GRID_HELPER(), EE_GRID_HELPER::queryVisible(), queryVisible(), and GRID_HELPER::SetAuxAxes().
|
protectedinherited |
Definition at line 145 of file grid_helper.h.
Referenced by EE_GRID_HELPER::EE_GRID_HELPER(), PCB_GRID_HELPER(), and GRID_HELPER::SetAuxAxes().
|
protectedinherited |
Definition at line 144 of file grid_helper.h.
Referenced by BestSnapAnchor(), EE_GRID_HELPER::BestSnapAnchor(), EE_GRID_HELPER::EE_GRID_HELPER(), and PCB_GRID_HELPER().
|
protectedinherited |
Definition at line 143 of file grid_helper.h.
Referenced by BestSnapAnchor(), EE_GRID_HELPER::BestSnapAnchor(), EE_GRID_HELPER::EE_GRID_HELPER(), and PCB_GRID_HELPER().