KiCad PCB EDA Suite
|
Extend VIEW_ITEM by possibility of grouping items into a single object. More...
#include <view_group.h>
Public Member Functions | |
VIEW_GROUP (VIEW *aView=nullptr) | |
virtual | ~VIEW_GROUP () |
virtual unsigned int | GetSize () const |
Return the number of stored items. | |
virtual void | Add (VIEW_ITEM *aItem) |
Add an item to the group. | |
virtual void | Remove (VIEW_ITEM *aItem) |
Remove an item from the group. | |
virtual void | Clear () |
Remove all the stored items from the group. | |
virtual VIEW_ITEM * | GetItem (unsigned int aIdx) const |
virtual const BOX2I | ViewBBox () const override |
Return the bounding box for all stored items covering all its layers. | |
virtual void | ViewDraw (int aLayer, VIEW *aView) const override |
Draw all the stored items in the group on the given layer. | |
std::vector< int > | ViewGetLayers () const override |
Return the all the layers within the VIEW the object is painted on. | |
virtual void | SetLayer (int aLayer) |
Set layer used to draw the group. | |
void | FreeItems () |
Free all the items that were added to the group. | |
bool | IsSCH_ITEM () const |
bool | IsBOARD_ITEM () const |
virtual double | ViewGetLOD (int aLayer, const VIEW *aView) const |
Return the level of detail (LOD) of the item. | |
VIEW_ITEM_DATA * | viewPrivData () const |
void | SetForcedTransparency (double aForcedTransparency) |
double | GetForcedTransparency () const |
bool | Set (PROPERTY_BASE *aProperty, wxAny &aValue, bool aNotify=true) |
template<typename T > | |
bool | Set (PROPERTY_BASE *aProperty, T aValue, bool aNotify=true) |
template<typename T > | |
bool | Set (const wxString &aProperty, T aValue, bool aNotify=true) |
wxAny | Get (PROPERTY_BASE *aProperty) const |
template<typename T > | |
T | Get (PROPERTY_BASE *aProperty) const |
template<typename T > | |
std::optional< T > | Get (const wxString &aProperty) const |
Protected Member Functions | |
virtual const std::vector< VIEW_ITEM * > | updateDrawList () const |
Static Protected Member Functions | |
static constexpr double | lodScaleForThreshold (int aWhatIu, int aThresholdIu) |
Get the scale at which aWhatIu would be drawn at the same size as aThresholdIu on screen. | |
Protected Attributes | |
int | m_layer |
std::vector< VIEW_ITEM * > | m_groupItems |
Static Protected Attributes | |
static constexpr double | LOD_HIDE = std::numeric_limits<double>::max() |
Return this constant from ViewGetLOD() to hide the item unconditionally. | |
static constexpr double | LOD_SHOW = 0.0 |
Return this constant from ViewGetLOD() to show the item unconditionally. | |
Private Attributes | |
bool | m_isSCH_ITEM |
bool | m_isBOARD_ITEM |
VIEW_ITEM_DATA * | m_viewPrivData |
double | m_forcedTransparency |
Additional transparency for diff'ing items. | |
Extend VIEW_ITEM by possibility of grouping items into a single object.
VIEW_GROUP does not take over ownership of the held items. The main purpose of this class is to group items and draw them on a single layer (in particular the overlay).
Definition at line 47 of file view_group.h.
VIEW_GROUP::VIEW_GROUP | ( | VIEW * | aView = nullptr | ) |
Definition at line 45 of file view_group.cpp.
|
virtual |
Definition at line 52 of file view_group.cpp.
|
virtual |
Add an item to the group.
Definition at line 58 of file view_group.cpp.
References m_groupItems.
Referenced by PNS_PCBNEW_DEBUG_DECORATOR::AddItem(), PNS_PCBNEW_DEBUG_DECORATOR::AddShape(), PNS_KICAD_IFACE::DisplayItem(), PNS_KICAD_IFACE::DisplayPathLine(), PNS_KICAD_IFACE::DisplayRatline(), PCB_TOOL_BASE::doInteractiveItemPlacement(), and PCB_SELECTION_TOOL::EnterGroup().
|
virtual |
Remove all the stored items from the group.
Reimplemented in SELECTION.
Definition at line 70 of file view_group.cpp.
References m_groupItems.
Referenced by PCB_SELECTION_TOOL::ExitGroup(), FreeItems(), and PCB_SELECTION_TOOL::RebuildSelection().
void VIEW_GROUP::FreeItems | ( | ) |
Free all the items that were added to the group.
Definition at line 211 of file view_group.cpp.
References Clear(), GetItem(), and GetSize().
Referenced by PNS_PCBNEW_DEBUG_DECORATOR::Clear(), PNS_KICAD_IFACE::EraseView(), PCB_POINT_EDITOR::OnSelectionChange(), DRAWING_TOOL::PlaceTuningPattern(), PNS_KICAD_IFACE::SetView(), PCB_POINT_EDITOR::updateItem(), and PNS_KICAD_IFACE::~PNS_KICAD_IFACE().
|
inlineinherited |
Definition at line 120 of file inspectable.h.
References PROPERTY_BASE::get(), PROPERTY_MANAGER::GetProperty(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().
|
inlineinherited |
Definition at line 100 of file inspectable.h.
References PROPERTY_BASE::getter(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().
Referenced by BOOST_AUTO_TEST_CASE(), CLASS_D_DESC::CLASS_D_DESC(), PROPERTIES_PANEL::getItemValue(), PCBEXPR_VAR_REF::GetValue(), and SCHEMATIC::SCHEMATIC().
|
inlineinherited |
Definition at line 108 of file inspectable.h.
References PROPERTY_BASE::get(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().
|
inlineinherited |
Definition at line 165 of file view_item.h.
Referenced by KIGFX::SCH_PAINTER::draw(), EDA_ITEM::EDA_ITEM(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), and EDA_ITEM::operator=().
|
virtual |
Reimplemented in SELECTION.
Definition at line 82 of file view_group.cpp.
References m_groupItems.
Referenced by KIGFX::VIEW::draw(), and FreeItems().
|
virtual |
Return the number of stored items.
Reimplemented in SELECTION.
Definition at line 76 of file view_group.cpp.
References m_groupItems.
Referenced by KIGFX::VIEW::draw(), and FreeItems().
|
inlineinherited |
Definition at line 102 of file view_item.h.
Referenced by KIGFX::PCB_VIEW::Add(), PCB_BASE_EDIT_FRAME::ClearListAndDeleteItems(), CONVERT_TOOL::CreatePolys(), EDIT_TOOL::doMoveSelection(), KIGFX::PCB_PAINTER::Draw(), PCB_SELECTION_TOOL::highlightInternal(), PCB_TEST_SELECTION_TOOL::highlightInternal(), GENERAL_COLLECTOR::Inspect(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectConstraints(), BOARD_COMMIT::MakeImage(), BOARD::Move(), DRAWING_TOOL::PlaceImportedGraphics(), EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), KIGFX::PCB_VIEW::Remove(), EDIT_TOOL::removeNonRootItems(), BOARD_COMMIT::Revert(), PCB_EDIT_FRAME::SetActiveLayer(), PCB_BASE_FRAME::SetPlotSettings(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), EDIT_TOOL::Swap(), PCB_SELECTION_TOOL::unhighlightInternal(), PCB_TEST_SELECTION_TOOL::unhighlightInternal(), KIGFX::PCB_VIEW::Update(), EDIT_TOOL::updateModificationPoint(), and DIALOG_POSITION_RELATIVE::UpdatePickedItem().
|
inlineinherited |
Definition at line 101 of file view_item.h.
|
inlinestaticconstexprprotectedinherited |
Get the scale at which aWhatIu would be drawn at the same size as aThresholdIu on screen.
This is useful when a level-of-detail is defined in terms of a threshold size (i.e. 'only draw X when it will be bigger than Y size on screen').
E.g. if aWhatIu is 1000 and aThresholdIu is 100, then the item will be the same size as the threshold at 0.1 scale. Returning that 0.1 as the LoD will hide the item when the scale is less than 0.1 - i.e. smaller than the threshold.
Because even at zoom 1.0, 1mm in KiCad may not be exactly 1mm on a physical screen, the threshold may not be exact in practice.
Definition at line 196 of file view_item.h.
Referenced by SCH_LINE::ViewGetLOD(), GERBER_DRAW_ITEM::ViewGetLOD(), PAD::ViewGetLOD(), and PCB_TRACK::ViewGetLOD().
|
virtual |
Remove an item from the group.
Definition at line 64 of file view_group.cpp.
References alg::delete_matching(), and m_groupItems.
|
inlineinherited |
Definition at line 77 of file inspectable.h.
References PROPERTY_MANAGER::GetProperty(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_MANAGER::PropertyChanged(), PROPERTY_BASE::set(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().
|
inlineinherited |
Definition at line 60 of file inspectable.h.
References PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_MANAGER::PropertyChanged(), PROPERTY_BASE::set(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().
|
inlineinherited |
Definition at line 43 of file inspectable.h.
References PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_MANAGER::PropertyChanged(), PROPERTY_BASE::setter(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().
Referenced by SCH_PROPERTIES_PANEL::valueChanged(), and PCB_PROPERTIES_PANEL::valueChanged().
|
inlineinherited |
Definition at line 160 of file view_item.h.
Referenced by EDA_ITEM::EDA_ITEM(), SYMBOL_DIFF_WIDGET::onSlider(), FOOTPRINT_DIFF_WIDGET::onSlider(), and EDA_ITEM::operator=().
|
inlinevirtual |
Set layer used to draw the group.
Definition at line 94 of file view_group.h.
Referenced by SELECTION_TOOL::doSelectionMenu(), PNS_PCBNEW_DEBUG_DECORATOR::SetView(), and PNS_KICAD_IFACE::SetView().
|
protectedvirtual |
Reimplemented in EE_SELECTION, SELECTION, and PCB_SELECTION.
Definition at line 220 of file view_group.cpp.
References m_groupItems.
Referenced by ViewDraw().
|
overridevirtual |
Return the bounding box for all stored items covering all its layers.
Implements KIGFX::VIEW_ITEM.
Reimplemented in GERBVIEW_SELECTION, and SELECTION.
Definition at line 88 of file view_group.cpp.
References m_groupItems, BOX2< Vec >::Merge(), and BOX2< Vec >::SetMaximum().
|
overridevirtual |
Draw all the stored items in the group on the given layer.
aLayer | is the layer which should be drawn. |
aView | is the VIEW that should be used for drawing. |
Reimplemented from KIGFX::VIEW_ITEM.
Definition at line 108 of file view_group.cpp.
References KIGFX::GAL::AdvanceDepth(), KIGFX::PAINTER::Draw(), KIGFX::VIEW::GetGAL(), KIGFX::VIEW::GetPainter(), IsClearanceLayer(), KIGFX::VIEW::IsHiddenOnOverlay(), KIGFX::VIEW::IsLayerVisible(), IsPadCopperLayer(), IsViaCopperLayer(), IsZoneFillLayer(), LAYER_CLEARANCE_START, KIGFX::GAL_SCOPED_ATTRS::LAYER_DEPTH, LAYER_ID_COUNT, LAYER_PAD_COPPER_START, LAYER_PAD_HOLEWALLS, LAYER_PAD_PLATEDHOLES, LAYER_SELECT_OVERLAY, LAYER_VIA_COPPER_START, LAYER_ZONE_START, KIGFX::VIEW_ITEM::LOD_HIDE, m_layer, KIGFX::VIEW::SortLayers(), and updateDrawList().
|
overridevirtual |
Return the all the layers within the VIEW the object is painted on.
For instance, a PAD spans zero or more copper layers and a few technical layers. ViewDraw() or PAINTER::Draw() is repeatedly called for each of the layers returned by ViewGetLayers(), depending on the rendering order.
Implements KIGFX::VIEW_ITEM.
Definition at line 204 of file view_group.cpp.
References m_layer.
|
inlinevirtualinherited |
Return the level of detail (LOD) of the item.
A level of detail is the minimal VIEW scale that is sufficient for an item to be shown on a given layer.
Use LOD_HIDE and LOD_SHOW constants to hide or show the item unconditionally.
Use lodScaleForThreshold() to calculate the LOD scale for when the item passes a certain threshold size on screen.
aLayer | is the current drawing layer. |
aView | is a pointer to the VIEW device we are drawing on. |
Reimplemented in SCH_LINE, GERBER_DRAW_ITEM, FOOTPRINT, PAD, PCB_FIELD, PCB_GROUP, PCB_REFERENCE_IMAGE, PCB_SHAPE, PCB_TEXT, PCB_TEXTBOX, PCB_TRACK, PCB_VIA, and ZONE.
Definition at line 149 of file view_item.h.
Referenced by PCB_GRID_HELPER::computeAnchors(), PNS_KICAD_IFACE::IsItemVisible(), KIGFX::VIEW::DRAW_ITEM_VISITOR::operator()(), EE_GRID_HELPER::queryVisible(), and PCB_GRID_HELPER::queryVisible().
|
inlineinherited |
Definition at line 155 of file view_item.h.
Referenced by KIGFX::VIEW::Add(), KIGFX::VIEW::draw(), KIGFX::VIEW::HasItem(), KIGFX::VIEW::Hide(), KIGFX::VIEW::invalidateItem(), KIGFX::VIEW::IsHiddenOnOverlay(), KIGFX::VIEW::IsVisible(), KIGFX::VIEW::UPDATE_COLOR_VISITOR::operator()(), KIGFX::VIEW::UPDATE_DEPTH_VISITOR::operator()(), KIGFX::VIEW::DRAW_ITEM_VISITOR::operator()(), KIGFX::VIEW::RECACHE_ITEM_VISITOR::operator()(), KIGFX::VIEW::CLEAR_LAYER_CACHE_VISITOR::operator()(), KIGFX::VIEW::SetVisible(), KIGFX::VIEW::Update(), KIGFX::VIEW::updateItemColor(), KIGFX::VIEW::updateItemGeometry(), and KIGFX::VIEW::updateLayers().
|
staticconstexprprotectedinherited |
Return this constant from ViewGetLOD() to hide the item unconditionally.
Definition at line 174 of file view_item.h.
Referenced by ViewDraw(), SCH_LINE::ViewGetLOD(), FOOTPRINT::ViewGetLOD(), PAD::ViewGetLOD(), PCB_FIELD::ViewGetLOD(), PCB_GROUP::ViewGetLOD(), PCB_REFERENCE_IMAGE::ViewGetLOD(), PCB_SHAPE::ViewGetLOD(), PCB_TEXT::ViewGetLOD(), PCB_TEXTBOX::ViewGetLOD(), PCB_TRACK::ViewGetLOD(), PCB_VIA::ViewGetLOD(), and ZONE::ViewGetLOD().
|
staticconstexprprotectedinherited |
Return this constant from ViewGetLOD() to show the item unconditionally.
Definition at line 179 of file view_item.h.
Referenced by SCH_LINE::ViewGetLOD(), GERBER_DRAW_ITEM::ViewGetLOD(), FOOTPRINT::ViewGetLOD(), PAD::ViewGetLOD(), PCB_FIELD::ViewGetLOD(), PCB_GROUP::ViewGetLOD(), PCB_REFERENCE_IMAGE::ViewGetLOD(), PCB_SHAPE::ViewGetLOD(), PCB_TEXT::ViewGetLOD(), PCB_TEXTBOX::ViewGetLOD(), PCB_TRACK::ViewGetLOD(), PCB_VIA::ViewGetLOD(), and ZONE::ViewGetLOD().
|
privateinherited |
Additional transparency for diff'ing items.
Definition at line 210 of file view_item.h.
Referenced by KIGFX::VIEW::DRAW_ITEM_VISITOR::operator()().
|
protected |
Definition at line 109 of file view_group.h.
Referenced by Add(), Clear(), GetItem(), GetSize(), Remove(), updateDrawList(), and ViewBBox().
|
privateinherited |
Definition at line 208 of file view_item.h.
|
privateinherited |
Definition at line 207 of file view_item.h.
|
protected |
Definition at line 108 of file view_group.h.
Referenced by ViewDraw(), and ViewGetLayers().
|
privateinherited |
Definition at line 209 of file view_item.h.
Referenced by KIGFX::VIEW::Add(), KIGFX::VIEW::OnDestroy(), KIGFX::VIEW::Remove(), KIGFX::VIEW::updateBbox(), KIGFX::VIEW::updateLayers(), and KIGFX::VIEW_ITEM::~VIEW_ITEM().