KiCad PCB EDA Suite
KIGFX::SCH_VIEW Class Reference

#include <sch_view.h>

Inheritance diagram for KIGFX::SCH_VIEW:
KIGFX::VIEW

Public Types

typedef std::pair< VIEW_ITEM *, int > LAYER_ITEM_PAIR
 

Public Member Functions

 SCH_VIEW (bool aIsDynamic, SCH_BASE_FRAME *aFrame)
 
 ~SCH_VIEW ()
 
void Cleanup ()
 
void DisplaySheet (const SCH_SCREEN *aScreen)
 
void DisplaySymbol (LIB_SYMBOL *aSymbol)
 
void ResizeSheetWorkingArea (const SCH_SCREEN *aScreen)
 
void SetScale (double aScale, VECTOR2D aAnchor={ 0, 0 }) override
 Set the scaling factor, zooming around a given anchor point. More...
 
void ClearHiddenFlags ()
 Clear the hide flag of all items in the view. More...
 
void HideDrawingSheet ()
 
DS_PROXY_VIEW_ITEMGetDrawingSheet () const
 
virtual void Add (VIEW_ITEM *aItem, int aDrawPriority=-1)
 Add a VIEW_ITEM to the view. More...
 
virtual void Remove (VIEW_ITEM *aItem)
 Remove a VIEW_ITEM from the view. More...
 
virtual int Query (const BOX2I &aRect, std::vector< LAYER_ITEM_PAIR > &aResult) const
 Find all visible items that touch or are within the rectangle aRect. More...
 
void SetVisible (VIEW_ITEM *aItem, bool aIsVisible=true)
 Set the item visibility. More...
 
void Hide (VIEW_ITEM *aItem, bool aHide=true)
 Temporarily hide the item in the view (e.g. More...
 
bool IsVisible (const VIEW_ITEM *aItem) const
 Return information if the item is visible (or not). More...
 
virtual void Update (const VIEW_ITEM *aItem, int aUpdateFlags) const
 For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has changed. More...
 
virtual void Update (const VIEW_ITEM *aItem) const
 
void SetRequired (int aLayerId, int aRequiredId, bool aRequired=true)
 Mark the aRequiredId layer as required for the aLayerId layer. More...
 
void CopySettings (const VIEW *aOtherView)
 Copy layers and visibility settings from another view. More...
 
void SetGAL (GAL *aGal)
 Assign a rendering device for the VIEW. More...
 
GALGetGAL () const
 Return the #GAL this view is using to draw graphical primitives. More...
 
void SetPainter (PAINTER *aPainter)
 Set the painter object used by the view for drawing #VIEW_ITEMS. More...
 
PAINTERGetPainter () const
 Return the painter object used by the view for drawing #VIEW_ITEMS. More...
 
void SetViewport (const BOX2D &aViewport)
 Set the visible area of the VIEW. More...
 
BOX2D GetViewport () const
 Return the current viewport visible area rectangle. More...
 
void SetMirror (bool aMirrorX, bool aMirrorY)
 Control the mirroring of the VIEW. More...
 
bool IsMirroredX () const
 Return true if view is flipped across the X axis. More...
 
bool IsMirroredY () const
 Return true if view is flipped across the Y axis. More...
 
double GetScale () const
 
void SetBoundary (const BOX2D &aBoundary)
 Set limits for view area. More...
 
void SetBoundary (const BOX2I &aBoundary)
 Set limits for view area. More...
 
const BOX2DGetBoundary () const
 
void SetScaleLimits (double aMaximum, double aMinimum)
 Set minimum and maximum values for scale. More...
 
void SetCenter (const VECTOR2D &aCenter)
 Set the center point of the VIEW (i.e. More...
 
void SetCenter (const VECTOR2D &aCenter, const BOX2D &occultingScreenRect)
 Set the center point of the VIEW, attempting to avoid occultingScreenRect (for instance, the screen rect of a modeless dialog in front of the VIEW). More...
 
const VECTOR2DGetCenter () const
 Return the center point of this VIEW (in world space coordinates). More...
 
VECTOR2D ToWorld (const VECTOR2D &aCoord, bool aAbsolute=true) const
 Converts a screen space point/vector to a point/vector in world space coordinates. More...
 
double ToWorld (double aSize) const
 Converts a screen space one dimensional size to a one dimensional size in world space coordinates. More...
 
VECTOR2D ToScreen (const VECTOR2D &aCoord, bool aAbsolute=true) const
 Convert a world space point/vector to a point/vector in screen space coordinates. More...
 
double ToScreen (double aSize) const
 Convert a world space one dimensional size to a one dimensional size in screen space. More...
 
const VECTOR2IGetScreenPixelSize () const
 Return the size of the our rendering area in pixels. More...
 
void Clear ()
 Remove all items from the view. More...
 
void SetLayerVisible (int aLayer, bool aVisible=true)
 Control the visibility of a particular layer. More...
 
bool IsLayerVisible (int aLayer) const
 Return information about visibility of a particular layer. More...
 
void SetLayerDiff (int aLayer, bool aDiff=true)
 Set the whether the layer should drawn differentially. More...
 
void SetLayerHasNegatives (int aLayer, bool aNegatives=true)
 Set the status of negatives presense in a particular layer. More...
 
void SetLayerDisplayOnly (int aLayer, bool aDisplayOnly=true)
 
void SetLayerTarget (int aLayer, RENDER_TARGET aTarget)
 Change the rendering target for a particular layer. More...
 
void SetLayerOrder (int aLayer, int aRenderingOrder)
 Set rendering order of a particular layer. More...
 
int GetLayerOrder (int aLayer) const
 Return rendering order of a particular layer. More...
 
void SortLayers (int aLayers[], int &aCount) const
 Change the order of given layer ids, so after sorting the order corresponds to layers rendering order (descending, ie. More...
 
void ReorderLayerData (std::unordered_map< int, int > aReorderMap)
 Remap the data between layer ids without invalidating that data. More...
 
void UpdateLayerColor (int aLayer)
 Apply the new coloring scheme held by RENDER_SETTINGS in case that it has changed. More...
 
void UpdateAllLayersColor ()
 Apply the new coloring scheme to all layers. More...
 
virtual void SetTopLayer (int aLayer, bool aEnabled=true)
 Set given layer to be displayed on the top or sets back the default order of layers. More...
 
virtual void EnableTopLayer (bool aEnable)
 Enable or disable display of the top layer. More...
 
virtual int GetTopLayer () const
 
void ClearTopLayers ()
 Remove all layers from the on-the-top set (they are no longer displayed over the rest of layers). More...
 
void UpdateAllLayersOrder ()
 Do everything that is needed to apply the rendering order of layers. More...
 
void ClearTargets ()
 Clear targets that are marked as dirty. More...
 
virtual void Redraw ()
 Immediately redraws the whole view. More...
 
void RecacheAllItems ()
 Rebuild GAL display lists. More...
 
bool IsDynamic () const
 Tell if the VIEW is dynamic (ie. More...
 
bool IsDirty () const
 Return true if any of the VIEW layers needs to be refreshened. More...
 
bool IsTargetDirty (int aTarget) const
 Return true if any of layers belonging to the target or the target itself should be redrawn. More...
 
void MarkTargetDirty (int aTarget)
 Set or clear target 'dirty' flag. More...
 
bool IsCached (int aLayer) const
 Return true if the layer is cached. More...
 
void MarkDirty ()
 Force redraw of view on the next rendering. More...
 
void MarkClean ()
 Force redraw of view on the next rendering. More...
 
void MarkForUpdate (VIEW_ITEM *aItem)
 Add an item to a list of items that are going to be refreshed upon the next frame rendering. More...
 
void UpdateItems ()
 Iterate through the list of items that asked for updating and updates them. More...
 
void UpdateAllItems (int aUpdateFlags)
 Update all items in the view according to the given flags. More...
 
void UpdateAllItemsConditionally (int aUpdateFlags, std::function< bool(VIEW_ITEM *)> aCondition)
 Update items in the view according to the given flags and condition. More...
 
bool IsUsingDrawPriority () const
 
void UseDrawPriority (bool aFlag)
 
bool IsDrawOrderReversed () const
 
void ReverseDrawOrder (bool aFlag)
 Only takes effect if UseDrawPriority is true. More...
 
std::shared_ptr< VIEW_OVERLAYMakeOverlay ()
 
void InitPreview ()
 
void ClearPreview ()
 
void AddToPreview (EDA_ITEM *aItem, bool aTakeOwnership=true)
 
void ShowPreview (bool aShow=true)
 
std::unique_ptr< VIEWDataReference () const
 Return a new VIEW object that shares the same set of VIEW_ITEMs and LAYERs. More...
 

Static Public Member Functions

static void OnDestroy (VIEW_ITEM *aItem)
 Nasty hack, invoked by the destructor of VIEW_ITEM to auto-remove the item from the owning VIEW if there is any. More...
 

Static Public Attributes

static constexpr int VIEW_MAX_LAYERS = 512
 maximum number of layers that may be shown More...
 

Protected Member Functions

void redrawRect (const BOX2I &aRect)
 
void markTargetClean (int aTarget)
 
void draw (VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
 Draw an item, but on a specified layers. More...
 
void draw (VIEW_ITEM *aItem, bool aImmediate=false)
 Draw an item on all layers that the item uses. More...
 
void draw (VIEW_GROUP *aGroup, bool aImmediate=false)
 Draw a group of items on all layers that those items use. More...
 
void sortLayers ()
 Clear cached GAL group numbers (ONLY numbers stored in VIEW_ITEMs, not group objects used by GAL) More...
 
void clearGroupCache ()
 
void invalidateItem (VIEW_ITEM *aItem, int aUpdateFlags)
 Manage dirty flags & redraw queuing when updating an item. More...
 
void updateItemColor (VIEW_ITEM *aItem, int aLayer)
 Update all information needed to draw an item. More...
 
void updateItemGeometry (VIEW_ITEM *aItem, int aLayer)
 Update bounding box of an item. More...
 
void updateBbox (VIEW_ITEM *aItem)
 Update set of layers that an item occupies. More...
 
void updateLayers (VIEW_ITEM *aItem)
 Determine rendering order of layers. Used in display order sorting function. More...
 
bool areRequiredLayersEnabled (int aLayerId) const
 

Static Protected Member Functions

static bool compareRenderingOrder (VIEW_LAYER *aI, VIEW_LAYER *aJ)
 Check if every layer required by the aLayerId layer is enabled. More...
 

Protected Attributes

std::unique_ptr< KIGFX::VIEW_GROUPm_preview
 
std::vector< EDA_ITEM * > m_ownedItems
 Whether to use rendering order modifier or not. More...
 
bool m_enableOrderModifier
 The set of possible displayed layers and its properties. More...
 
std::vector< VIEW_LAYERm_layers
 Sorted list of pointers to members of m_layers. More...
 
std::vector< VIEW_LAYER * > m_orderedLayers
 Flat list of all items. More...
 
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
 The set of layers that are displayed on the top. More...
 
std::set< unsigned int > m_topLayers
 Center point of the VIEW (the point at which we are looking at). More...
 
VECTOR2D m_center
 Scale of displayed VIEW_ITEMs. More...
 
double m_scale
 View boundaries. More...
 
BOX2D m_boundary
 Scale lower limit. More...
 
double m_minScale
 Scale upper limit. More...
 
double m_maxScale
 Horizontal flip flag. More...
 
bool m_mirrorX
 Vertical flip flag. More...
 
bool m_mirrorY
 PAINTER contains information how do draw items. More...
 
PAINTERm_painter
 Interface to #PAINTER that is used to draw items. More...
 
GALm_gal
 Dynamic VIEW (eg. More...
 
bool m_dynamic
 Flag to mark targets as dirty so they have to be redrawn on the next refresh event. More...
 
bool m_dirtyTargets [TARGETS_NUMBER]
 Rendering order modifier for layers that are marked as top layers. More...
 
bool m_useDrawPriority
 The next sequential drawing priority. More...
 
int m_nextDrawPriority
 Flag to reverse the draw order when using draw priority. More...
 
bool m_reverseDrawOrder
 

Static Protected Attributes

static const int TOP_LAYER_MODIFIER = -VIEW_MAX_LAYERS
 Flag to respect draw priority when drawing items. More...
 

Private Attributes

SCH_BASE_FRAMEm_frame
 
std::unique_ptr< DS_PROXY_VIEW_ITEMm_drawingSheet
 

Detailed Description

Definition at line 72 of file sch_view.h.

Member Typedef Documentation

◆ LAYER_ITEM_PAIR

typedef std::pair<VIEW_ITEM*, int> KIGFX::VIEW::LAYER_ITEM_PAIR
inherited

Definition at line 73 of file view.h.

Constructor & Destructor Documentation

◆ SCH_VIEW()

KIGFX::SCH_VIEW::SCH_VIEW ( bool  aIsDynamic,
SCH_BASE_FRAME aFrame 
)

Definition at line 46 of file sch_view.cpp.

46  :
47  VIEW( aIsDynamic )
48 {
49  m_frame = aFrame;
50  // Set m_boundary to define the max working area size. The default value is acceptable for
51  // Pcbnew and Gerbview, but too large for Eeschema due to very different internal units.
52  // A full size = 3 * MAX_PAGE_SIZE_MILS size allows a wide margin around the drawing-sheet.
53  double max_size = Mils2iu( MAX_PAGE_SIZE_MILS ) * 3.0;
54  m_boundary.SetOrigin( -max_size/4, -max_size/4 );
55  m_boundary.SetSize( max_size, max_size );
56 }
void SetSize(const Vec &size)
Definition: box2.h:195
BOX2D m_boundary
Scale lower limit.
Definition: view.h:855
void SetOrigin(const Vec &pos)
Definition: box2.h:193
SCH_BASE_FRAME * m_frame
Definition: sch_view.h:100
#define MAX_PAGE_SIZE_MILS
Definition: page_info.h:41
VIEW(bool aIsDynamic=true)
Definition: view.cpp:263

References KIGFX::VIEW::m_boundary, m_frame, MAX_PAGE_SIZE_MILS, BOX2< Vec >::SetOrigin(), and BOX2< Vec >::SetSize().

◆ ~SCH_VIEW()

KIGFX::SCH_VIEW::~SCH_VIEW ( )

Definition at line 59 of file sch_view.cpp.

60 {
61 }

Member Function Documentation

◆ Add()

void KIGFX::VIEW::Add ( VIEW_ITEM aItem,
int  aDrawPriority = -1 
)
virtualinherited

Add a VIEW_ITEM to the view.

Set aDrawPriority to -1 to assign sequential priorities.

Parameters
aItemitem to be added. No ownership is given
aDrawPrioritypriority to draw this item on its layer, lowest first.

Reimplemented in KIGFX::PCB_VIEW.

Definition at line 323 of file view.cpp.

324 {
325  int layers[VIEW_MAX_LAYERS], layers_count;
326 
327  if( aDrawPriority < 0 )
328  aDrawPriority = m_nextDrawPriority++;
329 
330  if( !aItem->m_viewPrivData )
331  aItem->m_viewPrivData = new VIEW_ITEM_DATA;
332 
333  aItem->m_viewPrivData->m_view = this;
334  aItem->m_viewPrivData->m_drawPriority = aDrawPriority;
335 
336  aItem->ViewGetLayers( layers, layers_count );
337  aItem->viewPrivData()->saveLayers( layers, layers_count );
338 
339  m_allItems->push_back( aItem );
340 
341  for( int i = 0; i < layers_count; ++i )
342  {
343  VIEW_LAYER& l = m_layers[layers[i]];
344  l.items->Insert( aItem );
345  MarkTargetDirty( l.target );
346  }
347 
348  SetVisible( aItem, true );
349  Update( aItem, KIGFX::INITIAL_ADD );
350 }
Item is being added to the view.
Definition: view_item.h:56
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
int m_nextDrawPriority
Flag to reverse the draw order when using draw priority.
Definition: view.h:889
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Set the item visibility.
Definition: view.cpp:1464
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1518

References KIGFX::INITIAL_ADD, KIGFX::VIEW::VIEW_LAYER::items, KIGFX::VIEW::m_allItems, KIGFX::VIEW_ITEM_DATA::m_drawPriority, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_nextDrawPriority, KIGFX::VIEW_ITEM_DATA::m_view, KIGFX::VIEW_ITEM::m_viewPrivData, KIGFX::VIEW::MarkTargetDirty(), KIGFX::VIEW_ITEM_DATA::saveLayers(), KIGFX::VIEW::SetVisible(), KIGFX::VIEW::VIEW_LAYER::target, KIGFX::VIEW::Update(), KIGFX::VIEW::VIEW_MAX_LAYERS, KIGFX::VIEW_ITEM::ViewGetLayers(), and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by KIGFX::PCB_VIEW::Add(), SCH_BASE_FRAME::AddToScreen(), PANEL_EESCHEMA_COLOR_SETTINGS::createPreviewItems(), EDA_DRAW_PANEL_GAL::DebugOverlay(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PCB_DRAW_PANEL_GAL::DisplayBoard(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), SYMBOL_PREVIEW_WIDGET::DisplayPart(), DisplaySheet(), SYMBOL_PREVIEW_WIDGET::DisplaySymbol(), DisplaySymbol(), PCB_SELECTION_TOOL::doSelectionMenu(), EDIT_TOOL::DragArcTrack(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::drawSegment(), SYMBOL_EDITOR_EDIT_TOOL::Duplicate(), EE_GRID_HELPER::EE_GRID_HELPER(), KIGFX::VIEW::InitPreview(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), KIGFX::VIEW::MakeOverlay(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_POINT_EDITOR::OnSelectionChange(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), PCB_GRID_HELPER::PCB_GRID_HELPER(), DRAWING_TOOL::PlaceImportedGraphics(), DIALOG_PAD_PROPERTIES::prepareCanvas(), BOARD_COMMIT::Push(), GERBVIEW_FRAME::Read_EXCELLON_File(), GERBVIEW_FRAME::Read_GERBER_File(), DIALOG_PAD_PROPERTIES::redraw(), BOARD_EDITOR_CONTROL::Reset(), PCB_CONTROL::Reset(), GERBVIEW_SELECTION_TOOL::Reset(), EE_SELECTION_TOOL::Reset(), BOARD_COMMIT::Revert(), GERBVIEW_SELECTION_TOOL::select(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), ZOOM_TOOL::selectRegion(), PCB_DRAW_PANEL_GAL::SetDrawingSheet(), GERBVIEW_DRAW_PANEL_GAL::SetDrawingSheet(), PNS_KICAD_IFACE::SetView(), PNS_PCBNEW_DEBUG_DECORATOR::SetView(), GERBVIEW_DRAW_PANEL_GAL::SwitchBackend(), DS_DATA_ITEM::SyncDrawItems(), DS_DATA_ITEM_POLYGONS::SyncDrawItems(), DS_DATA_ITEM_TEXT::SyncDrawItems(), DS_DATA_ITEM_BITMAP::SyncDrawItems(), DIALOG_ERC::testErc(), EE_POINT_EDITOR::updatePoints(), PCB_POINT_EDITOR::updatePoints(), SYMBOL_VIEWER_FRAME::updatePreviewSymbol(), KIGFX::VIEW::VIEW(), and ZONE_CREATE_HELPER::ZONE_CREATE_HELPER().

◆ AddToPreview()

void KIGFX::VIEW::AddToPreview ( EDA_ITEM aItem,
bool  aTakeOwnership = true 
)
inherited

Definition at line 1562 of file view.cpp.

1563 {
1564  Hide( aItem, false );
1565  m_preview->Add( aItem );
1566 
1567  if( aTakeOwnership )
1568  m_ownedItems.push_back( aItem );
1569 
1570  SetVisible( m_preview.get(), true );
1571  Hide( m_preview.get(), false );
1572  Update( m_preview.get() );
1573 }
void Hide(VIEW_ITEM *aItem, bool aHide=true)
Temporarily hide the item in the view (e.g.
Definition: view.cpp:1485
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:828
std::vector< EDA_ITEM * > m_ownedItems
Whether to use rendering order modifier or not.
Definition: view.h:831
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Set the item visibility.
Definition: view.cpp:1464
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1518

References KIGFX::VIEW::Hide(), KIGFX::VIEW::m_ownedItems, KIGFX::VIEW::m_preview, KIGFX::VIEW::SetVisible(), and KIGFX::VIEW::Update().

Referenced by SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), ROUTER_TOOL::InlineDrag(), DRAWING_TOOL::InteractivePlaceWithPreview(), SCH_DRAWING_TOOLS::PlaceImage(), SCH_DRAWING_TOOLS::SingleClickPlace(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ areRequiredLayersEnabled()

bool KIGFX::VIEW::areRequiredLayersEnabled ( int  aLayerId) const
protectedinherited

Definition at line 1377 of file view.cpp.

1378 {
1379  wxCHECK( (unsigned) aLayerId < m_layers.size(), false );
1380 
1381  std::set<int>::const_iterator it, it_end;
1382 
1383  for( it = m_layers.at( aLayerId ).requiredLayers.begin(),
1384  it_end = m_layers.at( aLayerId ).requiredLayers.end(); it != it_end; ++it )
1385  {
1386  // That is enough if just one layer is not enabled
1387  if( !m_layers.at( *it ).visible || !areRequiredLayersEnabled( *it ) )
1388  return false;
1389  }
1390 
1391  return true;
1392 }
bool areRequiredLayersEnabled(int aLayerId) const
Definition: view.cpp:1377
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers.

Referenced by KIGFX::VIEW::redrawRect().

◆ Cleanup()

void KIGFX::SCH_VIEW::Cleanup ( )

Definition at line 64 of file sch_view.cpp.

65 {
66  Clear();
67  m_drawingSheet.reset();
68  m_preview.reset();
69 }
std::unique_ptr< DS_PROXY_VIEW_ITEM > m_drawingSheet
Definition: sch_view.h:103
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:828
void Clear()
Remove all items from the view.
Definition: view.cpp:1107

References KIGFX::VIEW::Clear(), m_drawingSheet, and KIGFX::VIEW::m_preview.

Referenced by SCH_DRAW_PANEL::DisplaySheet().

◆ Clear()

void KIGFX::VIEW::Clear ( )
inherited

Remove all items from the view.

Definition at line 1107 of file view.cpp.

1108 {
1109  BOX2I r;
1110  r.SetMaximum();
1111  m_allItems->clear();
1112 
1113  for( VIEW_LAYER& layer : m_layers )
1114  layer.items->RemoveAll();
1115 
1116  m_nextDrawPriority = 0;
1117 
1118  m_gal->ClearCache();
1119 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843
void SetMaximum()
Definition: box2.h:57
int m_nextDrawPriority
Flag to reverse the draw order when using draw priority.
Definition: view.h:889
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
virtual void ClearCache()
Delete all data created during caching of graphic items.

References KIGFX::GAL::ClearCache(), KIGFX::VIEW::m_allItems, KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_nextDrawPriority, and BOX2< Vec >::SetMaximum().

Referenced by Cleanup(), GERBVIEW_FRAME::Clear_DrawLayers(), PCB_DRAW_PANEL_GAL::DisplayBoard(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), SCH_DRAW_PANEL::DisplaySheet(), SCH_DRAW_PANEL::DisplaySymbol(), DisplaySymbol(), GERBVIEW_FRAME::doCloseWindow(), DISPLAY_FOOTPRINTS_FRAME::InitDisplay(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), DS_PROXY_UNDO_ITEM::Restore(), PCB_BASE_EDIT_FRAME::SetBoard(), SYMBOL_EDIT_FRAME::SetCurSymbol(), GERBVIEW_DRAW_PANEL_GAL::SwitchBackend(), DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME(), FOOTPRINT_PREVIEW_PANEL::~FOOTPRINT_PREVIEW_PANEL(), FOOTPRINT_VIEWER_FRAME::~FOOTPRINT_VIEWER_FRAME(), GERBVIEW_FRAME::~GERBVIEW_FRAME(), and PCB_BASE_EDIT_FRAME::~PCB_BASE_EDIT_FRAME().

◆ clearGroupCache()

void KIGFX::VIEW::clearGroupCache ( )
protectedinherited

Definition at line 1196 of file view.cpp.

1197 {
1198  BOX2I r;
1199 
1200  r.SetMaximum();
1201  CLEAR_LAYER_CACHE_VISITOR visitor( this );
1202 
1203  for( VIEW_LAYER& layer : m_layers )
1204  layer.items->Query( r, visitor );
1205 }
void SetMaximum()
Definition: box2.h:57
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers, and BOX2< Vec >::SetMaximum().

Referenced by KIGFX::VIEW::SetGAL().

◆ ClearHiddenFlags()

void KIGFX::SCH_VIEW::ClearHiddenFlags ( )

Clear the hide flag of all items in the view.

Definition at line 171 of file sch_view.cpp.

172 {
173  for( auto item : *m_allItems )
174  Hide( item, false );
175 }
void Hide(VIEW_ITEM *aItem, bool aHide=true)
Temporarily hide the item in the view (e.g.
Definition: view.cpp:1485
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843

References KIGFX::VIEW::Hide(), and KIGFX::VIEW::m_allItems.

Referenced by SCH_EDIT_FRAME::AddJunction(), SCH_EDIT_FRAME::PutDataInPreviousState(), SYMBOL_EDIT_FRAME::RebuildView(), and SYMBOL_EDIT_FRAME::SetCurSymbol().

◆ ClearPreview()

void KIGFX::VIEW::ClearPreview ( )
inherited

Definition at line 1540 of file view.cpp.

1541 {
1542  if( !m_preview )
1543  return;
1544 
1545  m_preview->Clear();
1546 
1547  for( EDA_ITEM *item : m_ownedItems )
1548  delete item;
1549 
1550  m_ownedItems.clear();
1551  Update( m_preview.get() );
1552 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:828
std::vector< EDA_ITEM * > m_ownedItems
Whether to use rendering order modifier or not.
Definition: view.h:831
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:100
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1518

References KIGFX::VIEW::m_ownedItems, KIGFX::VIEW::m_preview, and KIGFX::VIEW::Update().

Referenced by SCH_EDIT_FRAME::AddJunction(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), ROUTER_TOOL::InlineDrag(), DRAWING_TOOL::InteractivePlaceWithPreview(), SCH_DRAWING_TOOLS::PlaceImage(), SCH_DRAWING_TOOLS::SingleClickPlace(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ClearTargets()

void KIGFX::VIEW::ClearTargets ( )
inherited

Clear targets that are marked as dirty.

Definition at line 1122 of file view.cpp.

1123 {
1125  {
1126  // TARGET_CACHED and TARGET_NONCACHED have to be redrawn together, as they contain
1127  // layers that rely on each other (eg. netnames are noncached, but tracks - are cached)
1130 
1131  MarkDirty();
1132  }
1133 
1134  if( IsTargetDirty( TARGET_OVERLAY ) )
1135  {
1137  }
1138 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
Auxiliary rendering target (noncached)
Definition: definitions.h:49
bool IsTargetDirty(int aTarget) const
Return true if any of layers belonging to the target or the target itself should be redrawn.
Definition: view.h:598
virtual void ClearTarget(RENDER_TARGET aTarget)
Clear the target for rendering.
Items that may change while the view stays the same (noncached)
Definition: definitions.h:50
Main rendering target (cached)
Definition: definitions.h:48
void MarkDirty()
Force redraw of view on the next rendering.
Definition: view.h:633

References KIGFX::GAL::ClearTarget(), KIGFX::VIEW::IsTargetDirty(), KIGFX::VIEW::m_gal, KIGFX::VIEW::MarkDirty(), KIGFX::TARGET_CACHED, KIGFX::TARGET_NONCACHED, and KIGFX::TARGET_OVERLAY.

Referenced by EDA_DRAW_PANEL_GAL::DoRePaint().

◆ ClearTopLayers()

void KIGFX::VIEW::ClearTopLayers ( )
inherited

Remove all layers from the on-the-top set (they are no longer displayed over the rest of layers).

Definition at line 891 of file view.cpp.

892 {
893  std::set<unsigned int>::iterator it;
894 
896  {
897  // Restore the previous rendering order for layers that were marked as top
898  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
899  m_layers[*it].renderingOrder -= TOP_LAYER_MODIFIER;
900  }
901 
902  m_topLayers.clear();
903 }
static const int TOP_LAYER_MODIFIER
Flag to respect draw priority when drawing items.
Definition: view.h:883
std::set< unsigned int > m_topLayers
Center point of the VIEW (the point at which we are looking at).
Definition: view.h:846
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
bool m_enableOrderModifier
The set of possible displayed layers and its properties.
Definition: view.h:834

References KIGFX::VIEW::m_enableOrderModifier, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_topLayers, and KIGFX::VIEW::TOP_LAYER_MODIFIER.

Referenced by GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), PL_DRAW_PANEL_GAL::SetTopLayer(), PCB_DRAW_PANEL_GAL::SetTopLayer(), and EDA_DRAW_PANEL_GAL::SetTopLayer().

◆ compareRenderingOrder()

static bool KIGFX::VIEW::compareRenderingOrder ( VIEW_LAYER aI,
VIEW_LAYER aJ 
)
inlinestaticprotectedinherited

Check if every layer required by the aLayerId layer is enabled.

Definition at line 815 of file view.h.

References KIGFX::VIEW::VIEW_LAYER::renderingOrder.

Referenced by KIGFX::VIEW::sortLayers().

◆ CopySettings()

void KIGFX::VIEW::CopySettings ( const VIEW aOtherView)
inherited

Copy layers and visibility settings from another view.

Parameters
aOtherViewview from which settings will be copied.

Definition at line 490 of file view.cpp.

491 {
492  wxASSERT_MSG( false, wxT( "This is not implemented" ) );
493 }

◆ DataReference()

std::unique_ptr< VIEW > KIGFX::VIEW::DataReference ( ) const
inherited

Return a new VIEW object that shares the same set of VIEW_ITEMs and LAYERs.

GAL, PAINTER and other properties are left uninitialized.

Definition at line 1454 of file view.cpp.

1455 {
1456  std::unique_ptr<VIEW> ret = std::make_unique<VIEW>();
1457  ret->m_allItems = m_allItems;
1458  ret->m_layers = m_layers;
1459  ret->sortLayers();
1460  return ret;
1461 }
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_allItems, and KIGFX::VIEW::m_layers.

Referenced by BOARD_PRINTOUT::DrawPage().

◆ DisplaySheet()

void KIGFX::SCH_VIEW::DisplaySheet ( const SCH_SCREEN aScreen)

Definition at line 92 of file sch_view.cpp.

93 {
94  for( SCH_ITEM* item : aScreen->Items() )
95  Add( item );
96 
97  m_drawingSheet.reset( new DS_PROXY_VIEW_ITEM( static_cast<int>( IU_PER_MILS ),
98  &aScreen->GetPageSettings(),
99  &aScreen->Schematic()->Prj(),
100  &aScreen->GetTitleBlock() ) );
101  m_drawingSheet->SetPageNumber( TO_UTF8( aScreen->GetPageNumber() ) );
102  m_drawingSheet->SetSheetCount( aScreen->GetPageCount() );
103  m_drawingSheet->SetFileName( TO_UTF8( aScreen->GetFileName() ) );
105  m_drawingSheet->SetPageBorderColorLayer( LAYER_SCHEMATIC_GRID );
106  m_drawingSheet->SetIsFirstPage( aScreen->GetVirtualPageNumber() == 1 );
107 
108  if( m_frame && m_frame->IsType( FRAME_SCH ) )
109  m_drawingSheet->SetSheetName( TO_UTF8( m_frame->GetScreenDesc() ) );
110  else
111  m_drawingSheet->SetSheetName( "" );
112 
113  ResizeSheetWorkingArea( aScreen );
114 
115  Add( m_drawingSheet.get() );
116 
117  InitPreview();
118 }
std::unique_ptr< DS_PROXY_VIEW_ITEM > m_drawingSheet
Definition: sch_view.h:103
const wxString & GetFileName() const
Definition: sch_screen.h:145
int GetVirtualPageNumber() const
Definition: base_screen.h:75
void InitPreview()
Definition: view.cpp:1555
int GetPageCount() const
Definition: base_screen.h:72
const TITLE_BLOCK & GetTitleBlock() const
Definition: sch_screen.h:150
const PAGE_INFO & GetPageSettings() const
Definition: sch_screen.h:132
const wxString & GetPageNumber() const
Definition: base_screen.cpp:71
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
Definition: macros.h:96
void ResizeSheetWorkingArea(const SCH_SCREEN *aScreen)
Definition: sch_view.cpp:82
PROJECT & Prj() const override
Return a reference to the project this schematic is part of.
Definition: schematic.h:75
bool IsType(FRAME_T aType) const
SCHEMATIC * Schematic() const
Definition: sch_screen.cpp:90
EE_RTREE & Items()
Gets the full RTree, usually for iterating.
Definition: sch_screen.h:110
#define IU_PER_MILS
Definition: plotter.cpp:136
SCH_BASE_FRAME * m_frame
Definition: sch_view.h:100
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:323
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:193
virtual wxString GetScreenDesc() const

References KIGFX::VIEW::Add(), FRAME_SCH, SCH_SCREEN::GetFileName(), BASE_SCREEN::GetPageCount(), BASE_SCREEN::GetPageNumber(), SCH_SCREEN::GetPageSettings(), EDA_DRAW_FRAME::GetScreenDesc(), SCH_SCREEN::GetTitleBlock(), BASE_SCREEN::GetVirtualPageNumber(), KIGFX::VIEW::InitPreview(), EDA_BASE_FRAME::IsType(), SCH_SCREEN::Items(), IU_PER_MILS, LAYER_SCHEMATIC_DRAWINGSHEET, LAYER_SCHEMATIC_GRID, m_drawingSheet, m_frame, SCHEMATIC::Prj(), ResizeSheetWorkingArea(), SCH_SCREEN::Schematic(), and TO_UTF8.

Referenced by SCH_DRAW_PANEL::DisplaySheet().

◆ DisplaySymbol()

void KIGFX::SCH_VIEW::DisplaySymbol ( LIB_SYMBOL aSymbol)

Definition at line 121 of file sch_view.cpp.

122 {
123  Clear();
124 
125  if( !aSymbol )
126  return;
127 
128  std::shared_ptr< LIB_SYMBOL > parent;
129  LIB_SYMBOL* drawnSymbol = aSymbol;
130 
131  // Draw the mandatory fields for aliases and parent symbols.
132  for( LIB_ITEM& item : aSymbol->GetDrawItems() )
133  {
134  if( item.Type() != LIB_FIELD_T )
135  continue;
136 
137  LIB_FIELD* field = static_cast< LIB_FIELD* >( &item );
138 
139  wxCHECK2( field, continue );
140 
141  if( field->GetText().IsEmpty() )
142  continue;
143 
144  Add( &item );
145  }
146 
147  // Draw the parent items if the symbol is inherited from another symbol.
148  if( aSymbol->IsAlias() )
149  {
150  parent = aSymbol->GetParent().lock();
151 
152  wxCHECK( parent, /* void */ );
153 
154  drawnSymbol = parent.get();
155  }
156 
157  for( LIB_ITEM& item : drawnSymbol->GetDrawItems() )
158  {
159  // Don't show parent symbol fields. Users may be confused by shown fields that can not
160  // be edited.
161  if( aSymbol->IsAlias() && item.Type() == LIB_FIELD_T )
162  continue;
163 
164  Add( &item );
165  }
166 
167  InitPreview();
168 }
LIB_SYMBOL_REF & GetParent()
Definition: lib_symbol.h:124
Field object used in symbol libraries.
Definition: lib_field.h:59
bool IsAlias() const
Definition: lib_symbol.h:172
void InitPreview()
Definition: view.cpp:1555
Define a library symbol object.
Definition: lib_symbol.h:96
The base class for drawable items used by schematic library symbols.
Definition: lib_item.h:61
void Clear()
Remove all items from the view.
Definition: view.cpp:1107
LIB_ITEMS_CONTAINER & GetDrawItems()
Return a reference to the draw item list.
Definition: lib_symbol.h:473
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:323
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:133

References KIGFX::VIEW::Add(), KIGFX::VIEW::Clear(), LIB_SYMBOL::GetDrawItems(), LIB_SYMBOL::GetParent(), EDA_TEXT::GetText(), KIGFX::VIEW::InitPreview(), LIB_SYMBOL::IsAlias(), and LIB_FIELD_T.

Referenced by SCH_DRAW_PANEL::DisplaySymbol().

◆ draw() [1/3]

void KIGFX::VIEW::draw ( VIEW_ITEM aItem,
int  aLayer,
bool  aImmediate = false 
)
protectedinherited

Draw an item, but on a specified layers.

It has to be marked that some of drawing settings are based on the layer on which an item is drawn.

Parameters
aItemis the item to be drawn.
aLayeris the layer which should be drawn.
aImmediatedictates the way of drawing - it allows one to force immediate drawing mode for cached items.

Definition at line 1023 of file view.cpp.

1024 {
1025  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1026 
1027  if( !viewData )
1028  return;
1029 
1030  if( IsCached( aLayer ) && !aImmediate )
1031  {
1032  // Draw using cached information or create one
1033  int group = viewData->getGroup( aLayer );
1034 
1035  if( group >= 0 )
1036  m_gal->DrawGroup( group );
1037  else
1038  Update( aItem );
1039  }
1040  else
1041  {
1042  // Immediate mode
1043  if( !m_painter->Draw( aItem, aLayer ) )
1044  aItem->ViewDraw( aLayer, this ); // Alternative drawing method
1045  }
1046 }
virtual void DrawGroup(int aGroupNumber)
Draw the stored group.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:870
virtual bool Draw(const VIEW_ITEM *aItem, int aLayer)=0
Takes an instance of VIEW_ITEM and passes it to a function that knows how to draw the item.
bool IsCached(int aLayer) const
Return true if the layer is cached.
Definition: view.h:616
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1518

References KIGFX::PAINTER::Draw(), KIGFX::GAL::DrawGroup(), KIGFX::VIEW_ITEM_DATA::getGroup(), group, KIGFX::VIEW::IsCached(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_painter, KIGFX::VIEW::Update(), KIGFX::VIEW_ITEM::ViewDraw(), and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by KIGFX::VIEW::DRAW_ITEM_VISITOR::deferredDraw(), KIGFX::VIEW::draw(), and KIGFX::VIEW::DRAW_ITEM_VISITOR::operator()().

◆ draw() [2/3]

void KIGFX::VIEW::draw ( VIEW_ITEM aItem,
bool  aImmediate = false 
)
protectedinherited

Draw an item on all layers that the item uses.

Parameters
aItemis the item to be drawn.
aImmediatedictates the way of drawing - it allows one to force immediate drawing mode for cached items.

Definition at line 1049 of file view.cpp.

1050 {
1051  int layers[VIEW_MAX_LAYERS], layers_count;
1052 
1053  aItem->ViewGetLayers( layers, layers_count );
1054 
1055  // Sorting is needed for drawing order dependent GALs (like Cairo)
1056  SortLayers( layers, layers_count );
1057 
1058  for( int i = 0; i < layers_count; ++i )
1059  {
1060  m_gal->SetLayerDepth( m_layers.at( layers[i] ).renderingOrder );
1061  draw( aItem, layers[i], aImmediate );
1062  }
1063 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
virtual void SetLayerDepth(double aLayerDepth)
Set the depth of the layer (position on the z-axis)
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
void SortLayers(int aLayers[], int &aCount) const
Change the order of given layer ids, so after sorting the order corresponds to layers rendering order...
Definition: view.cpp:656
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
void draw(VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
Draw an item, but on a specified layers.
Definition: view.cpp:1023

References KIGFX::VIEW::draw(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::GAL::SetLayerDepth(), KIGFX::VIEW::SortLayers(), KIGFX::VIEW::VIEW_MAX_LAYERS, and KIGFX::VIEW_ITEM::ViewGetLayers().

◆ draw() [3/3]

void KIGFX::VIEW::draw ( VIEW_GROUP aGroup,
bool  aImmediate = false 
)
protectedinherited

Draw a group of items on all layers that those items use.

Parameters
aGroupis the group to be drawn.
aImmediatedictates the way of drawing - it allows one to force immediate drawing mode for cached items.Sort m_orderedLayers when layer rendering order has changed

Definition at line 1066 of file view.cpp.

1067 {
1068  for( unsigned int i = 0; i < aGroup->GetSize(); i++)
1069  draw( aGroup->GetItem(i), aImmediate );
1070 }
void draw(VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
Draw an item, but on a specified layers.
Definition: view.cpp:1023

References KIGFX::VIEW::draw(), KIGFX::VIEW_GROUP::GetItem(), and KIGFX::VIEW_GROUP::GetSize().

◆ EnableTopLayer()

void KIGFX::VIEW::EnableTopLayer ( bool  aEnable)
virtualinherited

Enable or disable display of the top layer.

When disabled, layers are rendered as usual with no influence from SetTopLayer function. Otherwise on the top there is displayed the layer set previously with SetTopLayer function.

Parameters
aEnablewhether to enable or disable display of the top layer.

Definition at line 866 of file view.cpp.

867 {
868  if( aEnable == m_enableOrderModifier )
869  return;
870 
871  m_enableOrderModifier = aEnable;
872 
873  std::set<unsigned int>::iterator it;
874 
875  if( aEnable )
876  {
877  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
878  m_layers[*it].renderingOrder += TOP_LAYER_MODIFIER;
879  }
880  else
881  {
882  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
883  m_layers[*it].renderingOrder -= TOP_LAYER_MODIFIER;
884  }
885 
888 }
static const int TOP_LAYER_MODIFIER
Flag to respect draw priority when drawing items.
Definition: view.h:883
std::set< unsigned int > m_topLayers
Center point of the VIEW (the point at which we are looking at).
Definition: view.h:846
void UpdateAllLayersOrder()
Do everything that is needed to apply the rendering order of layers.
Definition: view.cpp:906
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
bool m_enableOrderModifier
The set of possible displayed layers and its properties.
Definition: view.h:834
void UpdateAllLayersColor()
Apply the new coloring scheme to all layers.
Definition: view.cpp:775

References KIGFX::VIEW::m_enableOrderModifier, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_topLayers, KIGFX::VIEW::TOP_LAYER_MODIFIER, KIGFX::VIEW::UpdateAllLayersColor(), and KIGFX::VIEW::UpdateAllLayersOrder().

Referenced by PCB_DRAW_PANEL_GAL::SetTopLayer().

◆ GetBoundary()

const BOX2D& KIGFX::VIEW::GetBoundary ( ) const
inlineinherited
Returns
Current view area boundary.

Definition at line 293 of file view.h.

294  {
295  return m_boundary;
296  }
BOX2D m_boundary
Scale lower limit.
Definition: view.h:855

References KIGFX::VIEW::m_boundary.

Referenced by KIGFX::WX_VIEW_CONTROLS::onScroll(), and KIGFX::WX_VIEW_CONTROLS::UpdateScrollbars().

◆ GetCenter()

const VECTOR2D& KIGFX::VIEW::GetCenter ( ) const
inlineinherited

Return the center point of this VIEW (in world space coordinates).

Returns
center point of the view

Definition at line 334 of file view.h.

335  {
336  return m_center;
337  }
VECTOR2D m_center
Scale of displayed VIEW_ITEMs.
Definition: view.h:849

References KIGFX::VIEW::m_center.

Referenced by EDA_DRAW_PANEL_GAL::DoRePaint(), KIGFX::WX_VIEW_CONTROLS::onButton(), KIGFX::WX_VIEW_CONTROLS::onScroll(), KIGFX::WX_VIEW_CONTROLS::onTimer(), KIGFX::WX_VIEW_CONTROLS::onWheel(), and SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor().

◆ GetDrawingSheet()

DS_PROXY_VIEW_ITEM* KIGFX::SCH_VIEW::GetDrawingSheet ( ) const
inline

Definition at line 97 of file sch_view.h.

97 { return m_drawingSheet.get(); }
std::unique_ptr< DS_PROXY_VIEW_ITEM > m_drawingSheet
Definition: sch_view.h:103

References m_drawingSheet.

Referenced by SCH_EDIT_FRAME::GetDocumentExtents(), SCH_EDIT_TOOL::Init(), SCH_EDIT_TOOL::Properties(), and DIALOG_ERC::testErc().

◆ GetGAL()

GAL* KIGFX::VIEW::GetGAL ( ) const
inlineinherited

Return the #GAL this view is using to draw graphical primitives.

Returns
Pointer to the currently used GAL instance.

Definition at line 190 of file view.h.

191  {
192  return m_gal;
193  }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873

References KIGFX::VIEW::m_gal.

Referenced by PCB_GRID_HELPER::BestDragOrigin(), EE_GRID_HELPER::BestDragOrigin(), PCB_GRID_HELPER::BestSnapAnchor(), GRID_HELPER::canUseGrid(), KIGFX::WX_VIEW_CONTROLS::CenterOnCursor(), COMMON_TOOLS::CursorControl(), PCB_CONTROL::DoSetGridOrigin(), COMMON_TOOLS::doZoomInOut(), drawBacksideTicks(), KIGFX::PREVIEW::CENTRELINE_RECT_ITEM::drawPreviewShape(), KIGFX::PREVIEW::POLYGON_ITEM::drawPreviewShape(), KIGFX::PREVIEW::DrawTextNextToCursor(), drawTicksAlongLine(), KIGFX::VIEW_OVERLAY::COMMAND_LINE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_RECTANGLE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_CIRCLE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_ARC::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_POLYGON::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_POLY_POLYGON::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_POINT_POLYGON::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_SET_STROKE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_SET_FILL::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_SET_COLOR::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_SET_WIDTH::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_GLYPH_SIZE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_BITMAP_TEXT::Execute(), GRID_HELPER::GetGrid(), GRID_HELPER::GetOrigin(), KIGFX::WX_VIEW_CONTROLS::GetRawCursorPosition(), ROUTER_TOOL::handleCommonEvents(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), PCB_VIEWER_TOOLS::MeasureTool(), COMMON_TOOLS::OnGridChanged(), COMMON_TOOLS::PanControl(), DIALOG_PAD_PROPERTIES::prepareCanvas(), KIGFX::WX_VIEW_CONTROLS::SetCrossHairCursorPosition(), KIGFX::VIEW_CONTROLS::ShowCursor(), PNS::TOOL_BASE::updateEndItem(), PNS::TOOL_BASE::updateStartItem(), RATSNEST_VIEW_ITEM::ViewDraw(), KIGFX::PREVIEW::RULER_ITEM::ViewDraw(), KIGFX::PREVIEW::ARC_ASSISTANT::ViewDraw(), KIGFX::ORIGIN_VIEWITEM::ViewDraw(), KIGFX::PREVIEW::TWO_POINT_ASSISTANT::ViewDraw(), KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM::ViewDraw(), MY_DRAWING::ViewDraw(), KIGFX::PREVIEW::SELECTION_AREA::ViewDraw(), KIGFX::VIEW_GROUP::ViewDraw(), ROUTER_PREVIEW_ITEM::ViewDraw(), DS_PROXY_VIEW_ITEM::ViewDraw(), EDIT_POINTS::ViewDraw(), and KIGFX::WX_VIEW_CONTROLS::WarpCursor().

◆ GetLayerOrder()

int KIGFX::VIEW::GetLayerOrder ( int  aLayer) const
inherited

Return rendering order of a particular layer.

Lower values are rendered first.

Parameters
aLayeris the layer.
Returns
Rendering order of a particular layer.

Definition at line 650 of file view.cpp.

651 {
652  return m_layers.at( aLayer ).renderingOrder;
653 }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers.

Referenced by PCB_DRAW_PANEL_GAL::SetTopLayer(), and KIGFX::VIEW::SortLayers().

◆ GetPainter()

PAINTER* KIGFX::VIEW::GetPainter ( ) const
inlineinherited

Return the painter object used by the view for drawing #VIEW_ITEMS.

Returns
Pointer to the currently used Painter instance.

Definition at line 208 of file view.h.

209  {
210  return m_painter;
211  }
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:870

References KIGFX::VIEW::m_painter.

Referenced by PCB_BASE_FRAME::ActivateGalCanvas(), DS_PROXY_VIEW_ITEM::buildDrawList(), DIALOG_NET_INSPECTOR::buildNetsList(), BOARD_INSPECTION_TOOL::ClearHighlight(), PL_EDITOR_FRAME::CommonSettingsChanged(), PCB_BASE_FRAME::CommonSettingsChanged(), PCB_GRID_HELPER::computeAnchors(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), SYMBOL_PREVIEW_WIDGET::DisplayPart(), SYMBOL_PREVIEW_WIDGET::DisplaySymbol(), BOARD_INSPECTION_TOOL::doHideNet(), KIGFX::PREVIEW::POLYGON_ITEM::drawPreviewShape(), KIGFX::PREVIEW::DrawTextNextToCursor(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), GERBVIEW_DRAW_PANEL_GAL::GERBVIEW_DRAW_PANEL_GAL(), FOOTPRINT_PREVIEW_PANEL::GetBackgroundColor(), FOOTPRINT_PREVIEW_PANEL::GetForegroundColor(), ROUTER_PREVIEW_ITEM::getLayerColor(), SCH_BASE_FRAME::GetRenderSettings(), BOARD_INSPECTION_TOOL::HighlightNet(), PNS::TOOL_BASE::highlightNet(), BOARD_INSPECTION_TOOL::highlightNet(), PNS_KICAD_IFACE::IsItemVisible(), PCB_BASE_FRAME::LoadSettings(), DIALOG_PAD_PROPERTIES::onChangePadMode(), ZONE_CREATE_HELPER::OnFirstPoint(), APPEARANCE_CONTROLS::OnLayerAlphaChanged(), GERBER_LAYER_WIDGET::OnLayerColorChange(), GERBER_LAYER_WIDGET::OnLayerSelect(), APPEARANCE_CONTROLS::onNetclassColorChanged(), APPEARANCE_CONTROLS::onNetclassContextMenu(), DIALOG_NET_INSPECTOR::onSelChanged(), GERBVIEW_DRAW_PANEL_GAL::OnShow(), PCB_DRAW_PANEL_GAL::OnShow(), DIALOG_NET_INSPECTOR::onSortingChanged(), PCB_GRID_HELPER::PCB_GRID_HELPER(), DIALOG_PAD_PROPERTIES::prepareCanvas(), PCB_GRID_HELPER::queryVisible(), NET_GRID_TABLE::Rebuild(), APPEARANCE_CONTROLS::rebuildNets(), DIALOG_PAD_PROPERTIES::redraw(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), GERBVIEW_SELECTION_TOOL::Reset(), EE_SELECTION_TOOL::Reset(), PCB_SELECTION_TOOL::Reset(), PCB_SELECTION_TOOL::Selectable(), GERBVIEW_DRAW_PANEL_GAL::SetHighContrastLayer(), PCB_DRAW_PANEL_GAL::SetHighContrastLayer(), EDA_DRAW_PANEL_GAL::SetHighContrastLayer(), PCBNEW_PRINTOUT::setupViewLayers(), SYMBOL_PREVIEW_WIDGET::SYMBOL_PREVIEW_WIDGET(), PANEL_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_PL_EDITOR_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_EDIT_OPTIONS::TransferDataFromWindow(), PANEL_SYM_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_EESCHEMA_COLOR_SETTINGS::TransferDataFromWindow(), PCB_DRAW_PANEL_GAL::UpdateColors(), KIGFX::PCB_VIEW::UpdateDisplayOptions(), NET_GRID_TABLE::updateNetColor(), PANEL_PCBNEW_COLOR_SETTINGS::updatePreview(), PANEL_EESCHEMA_COLOR_SETTINGS::updatePreview(), RATSNEST_VIEW_ITEM::ViewDraw(), KIGFX::PREVIEW::RULER_ITEM::ViewDraw(), KIGFX::PREVIEW::SELECTION_AREA::ViewDraw(), KIGFX::VIEW_GROUP::ViewDraw(), DS_PROXY_VIEW_ITEM::ViewDraw(), EDIT_POINTS::ViewDraw(), PCB_TRACK::ViewGetLOD(), FP_TEXT::ViewGetLOD(), PCB_VIA::ViewGetLOD(), and PAD::ViewGetLOD().

◆ GetScale()

◆ GetScreenPixelSize()

const VECTOR2I & KIGFX::VIEW::GetScreenPixelSize ( ) const
inherited

Return the size of the our rendering area in pixels.

Returns
viewport screen size.

Definition at line 1172 of file view.cpp.

1173 {
1174  return m_gal->GetScreenPixelSize();
1175 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
const VECTOR2I & GetScreenPixelSize() const
Return GAL canvas size in pixels.

References KIGFX::GAL::GetScreenPixelSize(), and KIGFX::VIEW::m_gal.

Referenced by KIGFX::WX_VIEW_CONTROLS::handleAutoPanning(), KIGFX::WX_VIEW_CONTROLS::onScroll(), KIGFX::WX_VIEW_CONTROLS::onTimer(), and KIGFX::WX_VIEW_CONTROLS::onWheel().

◆ GetTopLayer()

int KIGFX::VIEW::GetTopLayer ( ) const
virtualinherited

Definition at line 830 of file view.cpp.

831 {
832  if( m_topLayers.size() == 0 )
833  return 0;
834 
835  return *m_topLayers.begin();
836 }
std::set< unsigned int > m_topLayers
Center point of the VIEW (the point at which we are looking at).
Definition: view.h:846

References KIGFX::VIEW::m_topLayers.

Referenced by ROUTER_TOOL::getStartLayer(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), PNS::TOOL_BASE::pickSingleItem(), and PNS::TOOL_BASE::updateStartItem().

◆ GetViewport()

BOX2D KIGFX::VIEW::GetViewport ( ) const
inherited

Return the current viewport visible area rectangle.

Returns
Current viewport rectangle.

Definition at line 515 of file view.cpp.

516 {
517  BOX2D rect;
518  VECTOR2D screenSize = m_gal->GetScreenPixelSize();
519 
520  rect.SetOrigin( ToWorld( VECTOR2D( 0, 0 ) ) );
521  rect.SetEnd( ToWorld( screenSize ) );
522 
523  return rect.Normalize();
524 }
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:452
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
const VECTOR2I & GetScreenPixelSize() const
Return GAL canvas size in pixels.
VECTOR2< double > VECTOR2D
Definition: vector2d.h:622
BOX2< Vec > & Normalize()
Ensure that the height ant width are positive.
Definition: box2.h:112
void SetEnd(coord_type x, coord_type y)
Definition: box2.h:207
void SetOrigin(const Vec &pos)
Definition: box2.h:193

References KIGFX::GAL::GetScreenPixelSize(), KIGFX::VIEW::m_gal, BOX2< Vec >::Normalize(), BOX2< Vec >::SetEnd(), BOX2< Vec >::SetOrigin(), and KIGFX::VIEW::ToWorld().

Referenced by drawBacksideTicks(), drawTicksAlongLine(), SCH_EDITOR_CONTROL::FindSymbolAndItem(), EDA_DRAW_FRAME::FocusOnLocation(), PCB_SELECTION_TOOL::hitTestDistance(), and KIGFX::WX_VIEW_CONTROLS::UpdateScrollbars().

◆ Hide()

void KIGFX::VIEW::Hide ( VIEW_ITEM aItem,
bool  aHide = true 
)
inherited

Temporarily hide the item in the view (e.g.

for overlaying).

Parameters
aItemthe item to modify.
aHidewhether the item is hidden (on all layers), or not.

Definition at line 1485 of file view.cpp.

1486 {
1487  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1488 
1489  if( !viewData )
1490  return;
1491 
1492  if( !( viewData->m_flags & VISIBLE ) )
1493  return;
1494 
1495  if( aHide )
1496  viewData->m_flags |= HIDDEN;
1497  else
1498  viewData->m_flags &= ~HIDDEN;
1499 
1500  Update( aItem, APPEARANCE );
1501 }
Item is temporarily hidden (e.g.
Definition: view_item.h:66
Visibility flag has changed.
Definition: view_item.h:52
Item is visible (in general)
Definition: view_item.h:65
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1518

References KIGFX::APPEARANCE, KIGFX::HIDDEN, KIGFX::VIEW_ITEM_DATA::m_flags, KIGFX::VIEW::Update(), KIGFX::VIEW_ITEM::viewPrivData(), and KIGFX::VISIBLE.

Referenced by KIGFX::VIEW::AddToPreview(), ClearHiddenFlags(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PCB_SELECTION_TOOL::highlightInternal(), ROUTER_TOOL::InlineDrag(), SCH_MOVE_TOOL::moveItem(), SCH_EDITOR_CONTROL::Paste(), GERBVIEW_SELECTION_TOOL::selectVisually(), PCB_SELECTION_TOOL::unhighlightInternal(), and GERBVIEW_SELECTION_TOOL::unselectVisually().

◆ HideDrawingSheet()

void KIGFX::SCH_VIEW::HideDrawingSheet ( )

Definition at line 178 of file sch_view.cpp.

179 {
180  // SetVisible( m_drawingSheet.get(), false );
181 }

Referenced by SYMBOL_EDIT_FRAME::RebuildView(), and SYMBOL_EDIT_FRAME::SetCurSymbol().

◆ InitPreview()

void KIGFX::VIEW::InitPreview ( )
inherited

Definition at line 1555 of file view.cpp.

1556 {
1557  m_preview.reset( new KIGFX::VIEW_GROUP() );
1558  Add( m_preview.get() );
1559 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:828
Extend VIEW_ITEM by possibility of grouping items into a single object.
Definition: view_group.h:46
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:323

References KIGFX::VIEW::Add(), and KIGFX::VIEW::m_preview.

Referenced by DisplaySheet(), DisplaySymbol(), ROUTER_TOOL::InlineDrag(), DRAWING_TOOL::InteractivePlaceWithPreview(), and PCB_BASE_EDIT_FRAME::SetBoard().

◆ invalidateItem()

void KIGFX::VIEW::invalidateItem ( VIEW_ITEM aItem,
int  aUpdateFlags 
)
protectedinherited

Manage dirty flags & redraw queuing when updating an item.

Parameters
aItemis the item to be updated.
aUpdateFlagsdetermines the way an item is refreshed.Update colors that are used for an item to be drawn

Definition at line 1208 of file view.cpp.

1209 {
1210  if( aUpdateFlags & INITIAL_ADD )
1211  {
1212  // Don't update layers or bbox, since it was done in VIEW::Add()
1213  // Now that we have initialized, set flags to ALL for the code below
1214  aUpdateFlags = ALL;
1215  }
1216  else
1217  {
1218  // updateLayers updates geometry too, so we do not have to update both of them at the
1219  // same time
1220  if( aUpdateFlags & LAYERS )
1221  {
1222  updateLayers( aItem );
1223  }
1224  else if( aUpdateFlags & GEOMETRY )
1225  {
1226  updateBbox( aItem );
1227  }
1228  }
1229 
1230  int layers[VIEW_MAX_LAYERS], layers_count;
1231  aItem->ViewGetLayers( layers, layers_count );
1232 
1233  // Iterate through layers used by the item and recache it immediately
1234  for( int i = 0; i < layers_count; ++i )
1235  {
1236  int layerId = layers[i];
1237 
1238  if( IsCached( layerId ) )
1239  {
1240  if( aUpdateFlags & ( GEOMETRY | LAYERS | REPAINT ) )
1241  updateItemGeometry( aItem, layerId );
1242  else if( aUpdateFlags & COLOR )
1243  updateItemColor( aItem, layerId );
1244  }
1245 
1246  // Mark those layers as dirty, so the VIEW will be refreshed
1247  MarkTargetDirty( m_layers[layerId].target );
1248  }
1249 
1250  aItem->viewPrivData()->clearUpdateFlags();
1251 }
Item is being added to the view.
Definition: view_item.h:56
void updateLayers(VIEW_ITEM *aItem)
Determine rendering order of layers. Used in display order sorting function.
Definition: view.cpp:1334
void updateItemColor(VIEW_ITEM *aItem, int aLayer)
Update all information needed to draw an item.
Definition: view.cpp:1269
Color has changed.
Definition: view_item.h:53
All except INITIAL_ADD.
Definition: view_item.h:58
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
Item needs to be redrawn.
Definition: view_item.h:57
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
void updateBbox(VIEW_ITEM *aItem)
Update set of layers that an item occupies.
Definition: view.cpp:1318
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
void updateItemGeometry(VIEW_ITEM *aItem, int aLayer)
Update bounding box of an item.
Definition: view.cpp:1288
bool IsCached(int aLayer) const
Return true if the layer is cached.
Definition: view.h:616
Layers have changed.
Definition: view_item.h:55
Position or shape has changed.
Definition: view_item.h:54

References KIGFX::ALL, KIGFX::VIEW_ITEM_DATA::clearUpdateFlags(), KIGFX::COLOR, KIGFX::GEOMETRY, KIGFX::INITIAL_ADD, KIGFX::VIEW::IsCached(), KIGFX::LAYERS, KIGFX::VIEW::m_layers, KIGFX::VIEW::MarkTargetDirty(), KIGFX::REPAINT, KIGFX::VIEW::updateBbox(), KIGFX::VIEW::updateItemColor(), KIGFX::VIEW::updateItemGeometry(), KIGFX::VIEW::updateLayers(), KIGFX::VIEW::VIEW_MAX_LAYERS, KIGFX::VIEW_ITEM::ViewGetLayers(), and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by KIGFX::VIEW::UpdateItems().

◆ IsCached()

bool KIGFX::VIEW::IsCached ( int  aLayer) const
inlineinherited

Return true if the layer is cached.

Definition at line 616 of file view.h.

617  {
618  wxCHECK( aLayer < (int) m_layers.size(), false );
619 
620  try
621  {
622  return m_layers.at( aLayer ).target == TARGET_CACHED;
623  }
624  catch( const std::out_of_range& )
625  {
626  return false;
627  }
628  }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
Main rendering target (cached)
Definition: definitions.h:48

References KIGFX::VIEW::m_layers, and KIGFX::TARGET_CACHED.

Referenced by KIGFX::VIEW::draw(), KIGFX::VIEW::invalidateItem(), KIGFX::VIEW::RecacheAllItems(), KIGFX::VIEW::updateItemColor(), KIGFX::VIEW::updateItemGeometry(), KIGFX::VIEW::UpdateLayerColor(), and KIGFX::VIEW::updateLayers().

◆ IsDirty()

bool KIGFX::VIEW::IsDirty ( ) const
inlineinherited

Return true if any of the VIEW layers needs to be refreshened.

Returns
True in case if any of layers is marked as dirty.

Definition at line 581 of file view.h.

582  {
583  for( int i = 0; i < TARGETS_NUMBER; ++i )
584  {
585  if( IsTargetDirty( i ) )
586  return true;
587  }
588 
589  return false;
590  }
Number of available rendering targets.
Definition: definitions.h:52
bool IsTargetDirty(int aTarget) const
Return true if any of layers belonging to the target or the target itself should be redrawn.
Definition: view.h:598

References KIGFX::VIEW::IsTargetDirty(), and KIGFX::TARGETS_NUMBER.

Referenced by EDA_DRAW_PANEL_GAL::DoRePaint(), and TOOL_MANAGER::ProcessEvent().

◆ IsDrawOrderReversed()

bool KIGFX::VIEW::IsDrawOrderReversed ( ) const
inlineinherited
Returns
true if draw order is reversed

Definition at line 695 of file view.h.

696  {
697  return m_reverseDrawOrder;
698  }
bool m_reverseDrawOrder
Definition: view.h:892

References KIGFX::VIEW::m_reverseDrawOrder.

◆ IsDynamic()

bool KIGFX::VIEW::IsDynamic ( ) const
inlineinherited

Tell if the VIEW is dynamic (ie.

can be changed, for example displaying PCBs in a window) or static (that cannot be modified, eg. displaying image/PDF).

Definition at line 571 of file view.h.

572  {
573  return m_dynamic;
574  }
bool m_dynamic
Flag to mark targets as dirty so they have to be redrawn on the next refresh event.
Definition: view.h:877

References KIGFX::VIEW::m_dynamic.

◆ IsLayerVisible()

◆ IsMirroredX()

◆ IsMirroredY()

bool KIGFX::VIEW::IsMirroredY ( ) const
inlineinherited

Return true if view is flipped across the Y axis.

Definition at line 246 of file view.h.

247  {
248  return m_mirrorY;
249  }
bool m_mirrorY
PAINTER contains information how do draw items.
Definition: view.h:867

References KIGFX::VIEW::m_mirrorY.

◆ IsTargetDirty()

bool KIGFX::VIEW::IsTargetDirty ( int  aTarget) const
inlineinherited

Return true if any of layers belonging to the target or the target itself should be redrawn.

Returns
True if the above condition is fulfilled.

Definition at line 598 of file view.h.

599  {
600  wxCHECK( aTarget < TARGETS_NUMBER, false );
601  return m_dirtyTargets[aTarget];
602  }
Number of available rendering targets.
Definition: definitions.h:52
bool m_dirtyTargets[TARGETS_NUMBER]
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:880

References KIGFX::VIEW::m_dirtyTargets, and KIGFX::TARGETS_NUMBER.

Referenced by KIGFX::VIEW::ClearTargets(), EDA_DRAW_PANEL_GAL::DoRePaint(), KIGFX::VIEW::IsDirty(), and KIGFX::VIEW::redrawRect().

◆ IsUsingDrawPriority()

bool KIGFX::VIEW::IsUsingDrawPriority ( ) const
inlineinherited
Returns
true if draw priority is being respected while redrawing.

Definition at line 679 of file view.h.

680  {
681  return m_useDrawPriority;
682  }
bool m_useDrawPriority
The next sequential drawing priority.
Definition: view.h:886

References KIGFX::VIEW::m_useDrawPriority.

◆ IsVisible()

bool KIGFX::VIEW::IsVisible ( const VIEW_ITEM aItem) const
inherited

Return information if the item is visible (or not).

Parameters
aItemthe item to test.
Returns
when true, the item is visible (i.e. to be displayed, not visible in the current viewport)

Definition at line 1504 of file view.cpp.

1505 {
1506  const VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1507 
1508  return viewData && ( viewData->m_flags & VISIBLE );
1509 }
Item is visible (in general)
Definition: view_item.h:65

References KIGFX::VIEW_ITEM_DATA::m_flags, KIGFX::VIEW_ITEM::viewPrivData(), and KIGFX::VISIBLE.

Referenced by EE_GRID_HELPER::BestSnapAnchor(), PCB_GRID_HELPER::BestSnapAnchor(), PCB_GRID_HELPER::computeAnchors(), PNS_KICAD_IFACE::HideItem(), PNS_KICAD_IFACE::IsItemVisible(), EE_GRID_HELPER::queryVisible(), PCB_GRID_HELPER::queryVisible(), and PCB_SELECTION_TOOL::Selectable().

◆ MakeOverlay()

std::shared_ptr< VIEW_OVERLAY > KIGFX::VIEW::MakeOverlay ( )
inherited

Definition at line 1531 of file view.cpp.

1532 {
1533  std::shared_ptr<VIEW_OVERLAY> overlay( new VIEW_OVERLAY );
1534 
1535  Add( overlay.get() );
1536  return overlay;
1537 }
std::shared_ptr< PNS_LOG_VIEWER_OVERLAY > overlay
Definition: playground.cpp:36
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:323

References KIGFX::VIEW::Add(), and overlay.

Referenced by AUTOPLACE_TOOL::autoplace().

◆ MarkClean()

void KIGFX::VIEW::MarkClean ( )
inlineinherited

Force redraw of view on the next rendering.

Definition at line 642 of file view.h.

643  {
644  for( int i = 0; i < TARGETS_NUMBER; ++i )
645  m_dirtyTargets[i] = false;
646  }
Number of available rendering targets.
Definition: definitions.h:52
bool m_dirtyTargets[TARGETS_NUMBER]
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:880

References KIGFX::VIEW::m_dirtyTargets, and KIGFX::TARGETS_NUMBER.

Referenced by KIGFX::VIEW::Redraw().

◆ MarkDirty()

◆ MarkForUpdate()

void KIGFX::VIEW::MarkForUpdate ( VIEW_ITEM aItem)
inherited

Add an item to a list of items that are going to be refreshed upon the next frame rendering.

Parameters
aItemis the item to be refreshed.

◆ markTargetClean()

void KIGFX::VIEW::markTargetClean ( int  aTarget)
inlineprotectedinherited

Definition at line 750 of file view.h.

751  {
752  wxCHECK( aTarget < TARGETS_NUMBER, /* void */ );
753  m_dirtyTargets[aTarget] = false;
754  }
Number of available rendering targets.
Definition: definitions.h:52
bool m_dirtyTargets[TARGETS_NUMBER]
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:880

References KIGFX::VIEW::m_dirtyTargets, and KIGFX::TARGETS_NUMBER.

◆ MarkTargetDirty()

◆ OnDestroy()

void KIGFX::VIEW::OnDestroy ( VIEW_ITEM aItem)
staticinherited

Nasty hack, invoked by the destructor of VIEW_ITEM to auto-remove the item from the owning VIEW if there is any.

KiCad relies too much on this mechanism. This is the only linking dependency now between EDA_ITEM and VIEW class. In near future I'll replace it with observers.

Definition at line 248 of file view.cpp.

249 {
250  VIEW_ITEM_DATA* data = aItem->viewPrivData();
251 
252  if( !data )
253  return;
254 
255  if( data->m_view )
256  data->m_view->VIEW::Remove( aItem );
257 
258  delete data;
259  aItem->ClearViewPrivData();
260 }

References KIGFX::VIEW_ITEM::ClearViewPrivData(), KIGFX::VIEW_ITEM_DATA::m_view, and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by KIGFX::VIEW_ITEM::~VIEW_ITEM().

◆ Query()

int KIGFX::VIEW::Query ( const BOX2I aRect,
std::vector< LAYER_ITEM_PAIR > &  aResult 
) const
virtualinherited

Find all visible items that touch or are within the rectangle aRect.

Parameters
aRectarea to search for items
aResultresult of the search, containing VIEW_ITEMs associated with their layers. Sorted according to the rendering order (items that are on top of the rendering stack as first).
Returns
Number of found items.

Definition at line 429 of file view.cpp.

430 {
431  if( m_orderedLayers.empty() )
432  return 0;
433 
434  std::vector<VIEW_LAYER*>::const_reverse_iterator i;
435 
436  // execute queries in reverse direction, so that items that are on the top of
437  // the rendering stack are returned first.
438  for( i = m_orderedLayers.rbegin(); i != m_orderedLayers.rend(); ++i )
439  {
440  // ignore layers that do not contain actual items (i.e. the selection box, menus, floats)
441  if( ( *i )->displayOnly || !( *i )->visible )
442  continue;
443 
444  QUERY_VISITOR<std::vector<LAYER_ITEM_PAIR> > visitor( aResult, ( *i )->id );
445  ( *i )->items->Query( aRect, visitor );
446  }
447 
448  return aResult.size();
449 }
std::vector< VIEW_LAYER * > m_orderedLayers
Flat list of all items.
Definition: view.h:840

References KIGFX::VIEW::m_orderedLayers.

Referenced by DRAWING_TOOL::DrawVia(), EE_GRID_HELPER::queryVisible(), PCB_GRID_HELPER::queryVisible(), PCB_SELECTION_TOOL::SelectAll(), EE_SELECTION_TOOL::SelectAll(), EE_SELECTION_TOOL::selectMultiple(), and PCB_SELECTION_TOOL::selectMultiple().

◆ RecacheAllItems()

void KIGFX::VIEW::RecacheAllItems ( )
inherited

Rebuild GAL display lists.

Definition at line 1395 of file view.cpp.

1396 {
1397  BOX2I r;
1398 
1399  r.SetMaximum();
1400 
1401  for( const VIEW_LAYER& l : m_layers )
1402  {
1403  if( IsCached( l.id ) )
1404  {
1405  RECACHE_ITEM_VISITOR visitor( this, m_gal, l.id );
1406  l.items->Query( r, visitor );
1407  }
1408  }
1409 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
void SetMaximum()
Definition: box2.h:57
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
bool IsCached(int aLayer) const
Return true if the layer is cached.
Definition: view.h:616

References KIGFX::VIEW::IsCached(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, and BOX2< Vec >::SetMaximum().

Referenced by PCB_BASE_FRAME::ActivateGalCanvas(), GERBVIEW_FRAME::ActivateGalCanvas(), PCB_CONTROL::FlipPcbView(), SCH_EDIT_TOOL::Mirror(), GERBVIEW_DRAW_PANEL_GAL::OnShow(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceImage(), SCH_EDIT_TOOL::Properties(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::Rotate(), and PANEL_GAL_DISPLAY_OPTIONS::TransferDataFromWindow().

◆ Redraw()

void KIGFX::VIEW::Redraw ( )
virtualinherited

Immediately redraws the whole view.

Definition at line 1141 of file view.cpp.

1142 {
1143 #ifdef KICAD_GAL_PROFILE
1144  PROF_COUNTER totalRealTime;
1145 #endif /* KICAD_GAL_PROFILE */
1146 
1147  VECTOR2D screenSize = m_gal->GetScreenPixelSize();
1148  BOX2D rect( ToWorld( VECTOR2D( 0, 0 ) ),
1149  ToWorld( screenSize ) - ToWorld( VECTOR2D( 0, 0 ) ) );
1150 
1151  rect.Normalize();
1152  BOX2I recti( rect.GetPosition(), rect.GetSize() );
1153 
1154  // The view rtree uses integer positions. Large screens can overflow
1155  // this size so in this case, simply set the rectangle to the full rtree
1156  if( rect.GetWidth() > std::numeric_limits<int>::max() ||
1157  rect.GetHeight() > std::numeric_limits<int>::max() )
1158  recti.SetMaximum();
1159 
1160  redrawRect( recti );
1161 
1162  // All targets were redrawn, so nothing is dirty
1163  MarkClean();
1164 
1165 #ifdef KICAD_GAL_PROFILE
1166  totalRealTime.Stop();
1167  wxLogTrace( traceGalProfile, "VIEW::Redraw(): %.1f ms", totalRealTime.msecs() );
1168 #endif /* KICAD_GAL_PROFILE */
1169 }
void Stop()
Save the time when this function was called, and set the counter stane to stop.
Definition: profile.h:85
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:452
double msecs(bool aSinceLast=false)
Definition: profile.h:146
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
const wxChar *const traceGalProfile
Flag to enable debug output of GAL performance profiling.
A small class to help profiling.
Definition: profile.h:45
const VECTOR2I & GetScreenPixelSize() const
Return GAL canvas size in pixels.
VECTOR2< double > VECTOR2D
Definition: vector2d.h:622
void SetMaximum()
Definition: box2.h:57
void redrawRect(const BOX2I &aRect)
Definition: view.cpp:990
void MarkClean()
Force redraw of view on the next rendering.
Definition: view.h:642

References BOX2< Vec >::GetHeight(), BOX2< Vec >::GetPosition(), KIGFX::GAL::GetScreenPixelSize(), BOX2< Vec >::GetSize(), BOX2< Vec >::GetWidth(), KIGFX::VIEW::m_gal, KIGFX::VIEW::MarkClean(), PROF_COUNTER::msecs(), BOX2< Vec >::Normalize(), KIGFX::VIEW::redrawRect(), BOX2< Vec >::SetMaximum(), PROF_COUNTER::Stop(), KIGFX::VIEW::ToWorld(), and traceGalProfile.

Referenced by EDA_DRAW_PANEL_GAL::DoRePaint().

◆ redrawRect()

void KIGFX::VIEW::redrawRect ( const BOX2I aRect)
protectedinherited
  • Redraws contents within rect aRect

Definition at line 990 of file view.cpp.

991 {
992  for( VIEW_LAYER* l : m_orderedLayers )
993  {
994  if( l->visible && IsTargetDirty( l->target ) && areRequiredLayersEnabled( l->id ) )
995  {
996  DRAW_ITEM_VISITOR drawFunc( this, l->id, m_useDrawPriority, m_reverseDrawOrder );
997 
998  m_gal->SetTarget( l->target );
999  m_gal->SetLayerDepth( l->renderingOrder );
1000 
1001  // Differential layer also work for the negatives, since both special layer types
1002  // will composite on separate layers (at least in Cairo)
1003  if( l->diffLayer )
1004  m_gal->StartDiffLayer();
1005  else if( l->hasNegatives )
1007 
1008 
1009  l->items->Query( aRect, drawFunc );
1010 
1011  if( m_useDrawPriority )
1012  drawFunc.deferredDraw();
1013 
1014  if( l->diffLayer )
1015  m_gal->EndDiffLayer();
1016  else if( l->hasNegatives )
1018  }
1019  }
1020 }
bool m_useDrawPriority
The next sequential drawing priority.
Definition: view.h:886
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
bool areRequiredLayersEnabled(int aLayerId) const
Definition: view.cpp:1377
virtual void SetLayerDepth(double aLayerDepth)
Set the depth of the layer (position on the z-axis)
virtual void EndDiffLayer()
Ends rendering of a differential layer.
bool IsTargetDirty(int aTarget) const
Return true if any of layers belonging to the target or the target itself should be redrawn.
Definition: view.h:598
virtual void StartNegativesLayer()
Begins rendering in a new layer that will be copied to the main layer in EndNegativesLayer().
bool m_reverseDrawOrder
Definition: view.h:892
virtual void StartDiffLayer()
Begins rendering of a differential layer.
std::vector< VIEW_LAYER * > m_orderedLayers
Flat list of all items.
Definition: view.h:840
virtual void EndNegativesLayer()
Ends rendering of a negatives layer and draws it to the main layer.
virtual void SetTarget(RENDER_TARGET aTarget)
Set the target for rendering.

References KIGFX::VIEW::areRequiredLayersEnabled(), KIGFX::VIEW::DRAW_ITEM_VISITOR::deferredDraw(), KIGFX::GAL::EndDiffLayer(), KIGFX::GAL::EndNegativesLayer(), KIGFX::VIEW::IsTargetDirty(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_orderedLayers, KIGFX::VIEW::m_reverseDrawOrder, KIGFX::VIEW::m_useDrawPriority, KIGFX::GAL::SetLayerDepth(), KIGFX::GAL::SetTarget(), KIGFX::GAL::StartDiffLayer(), and KIGFX::GAL::StartNegativesLayer().

Referenced by KIGFX::VIEW::Redraw().

◆ Remove()

void KIGFX::VIEW::Remove ( VIEW_ITEM aItem)
virtualinherited

Remove a VIEW_ITEM from the view.

Parameters
aItemitem to be removed. Caller must dispose the removed item if necessary

Reimplemented in KIGFX::PCB_VIEW.

Definition at line 353 of file view.cpp.

354 {
355  if( !aItem )
356  return;
357 
358  auto viewData = aItem->viewPrivData();
359 
360  if( !viewData )
361  return;
362 
363  wxCHECK( viewData->m_view == this, /*void*/ );
364  auto item = std::find( m_allItems->begin(), m_allItems->end(), aItem );
365 
366  if( item != m_allItems->end() )
367  {
368  m_allItems->erase( item );
369  viewData->clearUpdateFlags();
370  }
371 
372  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
373  viewData->getLayers( layers, layers_count );
374 
375  for( int i = 0; i < layers_count; ++i )
376  {
377  VIEW_LAYER& l = m_layers[layers[i]];
378  l.items->Remove( aItem );
379  MarkTargetDirty( l.target );
380 
381  // Clear the GAL cache
382  int prevGroup = viewData->getGroup( layers[i] );
383 
384  if( prevGroup >= 0 )
385  m_gal->DeleteGroup( prevGroup );
386  }
387 
388  viewData->deleteGroups();
389  viewData->m_view = nullptr;
390 }
virtual void DeleteGroup(int aGroupNumber)
Delete the group from the memory.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::GAL::DeleteGroup(), KIGFX::VIEW::VIEW_LAYER::items, KIGFX::VIEW::m_allItems, KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::VIEW::MarkTargetDirty(), KIGFX::VIEW::VIEW_LAYER::target, KIGFX::VIEW::VIEW_MAX_LAYERS, and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by EDA_DRAW_PANEL_GAL::ClearDebugOverlay(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), SYMBOL_PREVIEW_WIDGET::DisplayPart(), SYMBOL_PREVIEW_WIDGET::DisplaySymbol(), PL_EDIT_TOOL::DoDelete(), PCB_SELECTION_TOOL::doSelectionMenu(), EDIT_TOOL::DragArcTrack(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::drawSegment(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_POINT_EDITOR::OnSelectionChange(), DRAWING_TOOL::PlaceImportedGraphics(), BOARD_COMMIT::Push(), KIGFX::PCB_VIEW::Remove(), EDIT_TOOL::Remove(), SCH_BASE_FRAME::RemoveFromScreen(), BOARD_EDITOR_CONTROL::Reset(), PCB_CONTROL::Reset(), GERBVIEW_SELECTION_TOOL::Reset(), EE_SELECTION_TOOL::Reset(), BOARD_COMMIT::Revert(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), ZOOM_TOOL::selectRegion(), DS_DATA_ITEM::SyncDrawItems(), DS_DATA_ITEM_POLYGONS::SyncDrawItems(), DS_DATA_ITEM_TEXT::SyncDrawItems(), DS_DATA_ITEM_BITMAP::SyncDrawItems(), DIALOG_ERC::testErc(), GERBVIEW_SELECTION_TOOL::unselect(), EE_POINT_EDITOR::updatePoints(), PCB_POINT_EDITOR::updatePoints(), SYMBOL_VIEWER_FRAME::updatePreviewSymbol(), EE_SELECTION_TOOL::~EE_SELECTION_TOOL(), GERBVIEW_SELECTION_TOOL::~GERBVIEW_SELECTION_TOOL(), PCB_SELECTION_TOOL::~PCB_SELECTION_TOOL(), SYMBOL_PREVIEW_WIDGET::~SYMBOL_PREVIEW_WIDGET(), SYMBOL_VIEWER_FRAME::~SYMBOL_VIEWER_FRAME(), KIGFX::VIEW::~VIEW(), and ZONE_CREATE_HELPER::~ZONE_CREATE_HELPER().

◆ ReorderLayerData()

void KIGFX::VIEW::ReorderLayerData ( std::unordered_map< int, int >  aReorderMap)
inherited

Remap the data between layer ids without invalidating that data.

Used by GerbView for the "Sort by X2" functionality.

Parameters
aReorderMapis a mapping of old to new layer ids.

Definition at line 684 of file view.cpp.

685 {
686  std::vector<VIEW_LAYER> new_map;
687  new_map.reserve( m_layers.size() );
688 
689  for( int ii = 0; ii < VIEW_MAX_LAYERS; ++ii )
690  new_map.emplace_back();
691 
692  for( const VIEW_LAYER& layer : m_layers )
693  {
694  int orig_idx = layer.id;
695  int new_idx = orig_idx;
696 
697  if( aReorderMap.count( orig_idx ) )
698  new_idx = aReorderMap.at( orig_idx );
699 
700  new_map[new_idx] = layer;
701  new_map[new_idx].id = new_idx;
702  }
703 
704  m_layers = new_map;
705 
706  for( VIEW_ITEM* item : *m_allItems )
707  {
708  VIEW_ITEM_DATA* viewData = item->viewPrivData();
709 
710  if( !viewData )
711  continue;
712 
713  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
714 
715  item->ViewGetLayers( layers, layers_count );
716  viewData->saveLayers( layers, layers_count );
717 
718  viewData->reorderGroups( aReorderMap );
719 
720  viewData->m_requiredUpdate |= COLOR;
721  }
722 
723  UpdateItems();
724 }
friend class VIEW_ITEM
Definition: view.h:71
Color has changed.
Definition: view_item.h:53
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843
void UpdateItems()
Iterate through the list of items that asked for updating and updates them.
Definition: view.cpp:1412
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::COLOR, KIGFX::VIEW::m_allItems, KIGFX::VIEW::m_layers, KIGFX::VIEW_ITEM_DATA::m_requiredUpdate, KIGFX::VIEW_ITEM_DATA::reorderGroups(), KIGFX::VIEW_ITEM_DATA::saveLayers(), KIGFX::VIEW::UpdateItems(), and KIGFX::VIEW::VIEW_MAX_LAYERS.

Referenced by GERBVIEW_FRAME::SortLayersByX2Attributes().

◆ ResizeSheetWorkingArea()

void KIGFX::SCH_VIEW::ResizeSheetWorkingArea ( const SCH_SCREEN aScreen)

Definition at line 82 of file sch_view.cpp.

83 {
84  const PAGE_INFO& page_info = aScreen->GetPageSettings();
85  double max_size_x = page_info.GetWidthIU() * 3.0;
86  double max_size_y = page_info.GetHeightIU() * 3.0;
87  m_boundary.SetOrigin( -max_size_x / 4, -max_size_y / 4 );
88  m_boundary.SetSize( max_size_x, max_size_y );
89 }
void SetSize(const Vec &size)
Definition: box2.h:195
const PAGE_INFO & GetPageSettings() const
Definition: sch_screen.h:132
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:53
BOX2D m_boundary
Scale lower limit.
Definition: view.h:855
void SetOrigin(const Vec &pos)
Definition: box2.h:193

References SCH_SCREEN::GetPageSettings(), KIGFX::VIEW::m_boundary, BOX2< Vec >::SetOrigin(), and BOX2< Vec >::SetSize().

Referenced by DisplaySheet().

◆ ReverseDrawOrder()

void KIGFX::VIEW::ReverseDrawOrder ( bool  aFlag)
inlineinherited

Only takes effect if UseDrawPriority is true.

Parameters
aFlagis true if draw order should be reversed

Definition at line 705 of file view.h.

706  {
707  m_reverseDrawOrder = aFlag;
708  }
bool m_reverseDrawOrder
Definition: view.h:892

References KIGFX::VIEW::m_reverseDrawOrder.

Referenced by EDA_DRAW_PANEL_GAL::SwitchBackend().

◆ SetBoundary() [1/2]

void KIGFX::VIEW::SetBoundary ( const BOX2D aBoundary)
inlineinherited

Set limits for view area.

Parameters
aBoundaryis the box that limits view area.

Definition at line 274 of file view.h.

275  {
276  m_boundary = aBoundary;
277  }
BOX2D m_boundary
Scale lower limit.
Definition: view.h:855

References KIGFX::VIEW::m_boundary.

Referenced by PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), DIALOG_PAD_PROPERTIES::redraw(), and SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME().

◆ SetBoundary() [2/2]

void KIGFX::VIEW::SetBoundary ( const BOX2I aBoundary)
inlineinherited

Set limits for view area.

Parameters
aBoundaryis the box that limits view area.

Definition at line 284 of file view.h.

285  {
286  m_boundary.SetOrigin( aBoundary.GetOrigin() );
287  m_boundary.SetEnd( aBoundary.GetEnd() );
288  }
const Vec GetEnd() const
Definition: box2.h:178
void SetEnd(coord_type x, coord_type y)
Definition: box2.h:207
BOX2D m_boundary
Scale lower limit.
Definition: view.h:855
void SetOrigin(const Vec &pos)
Definition: box2.h:193
const Vec & GetOrigin() const
Definition: box2.h:176

References BOX2< Vec >::GetEnd(), BOX2< Vec >::GetOrigin(), KIGFX::VIEW::m_boundary, BOX2< Vec >::SetEnd(), and BOX2< Vec >::SetOrigin().

◆ SetCenter() [1/2]

void KIGFX::VIEW::SetCenter ( const VECTOR2D aCenter)
inherited

Set the center point of the VIEW (i.e.

the point in world space that will be drawn in the middle of the screen).

Parameters
aCenterthe new center point, in world space coordinates.

Definition at line 581 of file view.cpp.

582 {
583  m_center = aCenter;
584 
585  if( !m_boundary.Contains( aCenter ) )
586  {
587  if( m_center.x < m_boundary.GetLeft() )
589  else if( aCenter.x > m_boundary.GetRight() )
591 
592  if( m_center.y < m_boundary.GetTop() )
594  else if( m_center.y > m_boundary.GetBottom() )
596  }
597 
600 
601  // Redraw everything after the viewport has changed
602  MarkDirty();
603 }
coord_type GetTop() const
Definition: box2.h:187
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
coord_type GetRight() const
Definition: box2.h:182
coord_type GetBottom() const
Definition: box2.h:183
virtual void ComputeWorldScreenMatrix()
Compute the world <-> screen transformation matrix.
VECTOR2D m_center
Scale of displayed VIEW_ITEMs.
Definition: view.h:849
bool Contains(const Vec &aPoint) const
Definition: box2.h:134
BOX2D m_boundary
Scale lower limit.
Definition: view.h:855
void SetLookAtPoint(const VECTOR2D &aPoint)
Set the Point in world space to look at.
coord_type GetLeft() const
Definition: box2.h:186
void MarkDirty()
Force redraw of view on the next rendering.
Definition: view.h:633

References KIGFX::GAL::ComputeWorldScreenMatrix(), BOX2< Vec >::Contains(), BOX2< Vec >::GetBottom(), BOX2< Vec >::GetLeft(), BOX2< Vec >::GetRight(), BOX2< Vec >::GetTop(), KIGFX::VIEW::m_boundary, KIGFX::VIEW::m_center, KIGFX::VIEW::m_gal, KIGFX::VIEW::MarkDirty(), KIGFX::GAL::SetLookAtPoint(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by COMMON_TOOLS::CenterContents(), KIGFX::WX_VIEW_CONTROLS::CenterOnCursor(), SCH_BASE_FRAME::CenterScreen(), COMMON_TOOLS::doZoomFit(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), SYMBOL_PREVIEW_WIDGET::fitOnDrawArea(), EDA_DRAW_FRAME::FocusOnLocation(), KIGFX::WX_VIEW_CONTROLS::onMotion(), KIGFX::WX_VIEW_CONTROLS::onScroll(), EDA_DRAW_PANEL_GAL::onSize(), KIGFX::WX_VIEW_CONTROLS::onTimer(), KIGFX::WX_VIEW_CONTROLS::onWheel(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), SCH_BASE_FRAME::RedrawScreen(), ZOOM_TOOL::selectRegion(), KIGFX::VIEW::SetCenter(), KIGFX::WX_VIEW_CONTROLS::SetCrossHairCursorPosition(), KIGFX::VIEW::SetGAL(), KIGFX::VIEW::SetScale(), KIGFX::VIEW::SetViewport(), KIGFX::WX_VIEW_CONTROLS::WarpCursor(), PANEL_PCBNEW_COLOR_SETTINGS::zoomFitPreview(), PANEL_EESCHEMA_COLOR_SETTINGS::zoomFitPreview(), and PCB_SELECTION_TOOL::zoomFitSelection().

◆ SetCenter() [2/2]

void KIGFX::VIEW::SetCenter ( const VECTOR2D aCenter,
const BOX2D occultingScreenRect 
)
inherited

Set the center point of the VIEW, attempting to avoid occultingScreenRect (for instance, the screen rect of a modeless dialog in front of the VIEW).

Parameters
aCenterthe new center point, in world space coordinates.
occultingScreenRectthe occulting rect, in screen space coordinates.

Definition at line 606 of file view.cpp.

607 {
608  VECTOR2D center( aCenter );
609  BOX2D screenRect( VECTOR2D( 0, 0 ), m_gal->GetScreenPixelSize() );
610 
611  if( !screenRect.Intersects( occultingScreenRect ) )
612  {
613  SetCenter( aCenter );
614  return;
615  }
616 
617  BOX2D occultedRect = screenRect.Intersect( occultingScreenRect );
618  double topExposed = occultedRect.GetTop() - screenRect.GetTop();
619  double bottomExposed = screenRect.GetBottom() - occultedRect.GetBottom();
620  double leftExposed = occultedRect.GetLeft() - screenRect.GetLeft();
621  double rightExposed = screenRect.GetRight() - occultedRect.GetRight();
622 
623  if( std::max( topExposed, bottomExposed ) > std::max( leftExposed, rightExposed ) )
624  {
625  if( topExposed > bottomExposed )
626  center.y += ToWorld( screenRect.GetHeight() / 2 - topExposed / 2 );
627  else
628  center.y -= ToWorld( screenRect.GetHeight() / 2 - bottomExposed / 2 );
629  }
630  else
631  {
632  if( leftExposed > rightExposed )
633  center.x += ToWorld( screenRect.GetWidth() / 2 - leftExposed / 2 );
634  else
635  center.x -= ToWorld( screenRect.GetWidth() / 2 - rightExposed / 2 );
636  }
637 
638  SetCenter( center );
639 }
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:452
coord_type GetTop() const
Definition: box2.h:187
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
coord_type GetRight() const
Definition: box2.h:182
coord_type GetBottom() const
Definition: box2.h:183
const VECTOR2I & GetScreenPixelSize() const
Return GAL canvas size in pixels.
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:581
VECTOR2< double > VECTOR2D
Definition: vector2d.h:622
coord_type GetLeft() const
Definition: box2.h:186
BOX2< Vec > Intersect(const BOX2< Vec > &aRect)
Return the intersection of this with another rectangle.
Definition: box2.h:248

References BOX2< Vec >::GetBottom(), BOX2< Vec >::GetLeft(), BOX2< Vec >::GetRight(), KIGFX::GAL::GetScreenPixelSize(), BOX2< Vec >::GetTop(), BOX2< Vec >::Intersect(), KIGFX::VIEW::m_gal, KIGFX::VIEW::SetCenter(), KIGFX::VIEW::ToWorld(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ SetGAL()

void KIGFX::VIEW::SetGAL ( GAL aGal)
inherited

Assign a rendering device for the VIEW.

Parameters
aGalpointer to the GAL output device.

Definition at line 496 of file view.cpp.

497 {
498  bool recacheGroups = ( m_gal != nullptr ); // recache groups only if GAL is reassigned
499  m_gal = aGal;
500 
501  // clear group numbers, so everything is going to be recached
502  if( recacheGroups )
503  clearGroupCache();
504 
505  // every target has to be refreshed
506  MarkDirty();
507 
508  // force the new GAL to display the current viewport.
509  SetCenter( m_center );
510  SetScale( m_scale );
512 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
void SetMirror(bool aMirrorX, bool aMirrorY)
Control the mirroring of the VIEW.
Definition: view.cpp:542
VECTOR2D m_center
Scale of displayed VIEW_ITEMs.
Definition: view.h:849
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:581
bool m_mirrorX
Vertical flip flag.
Definition: view.h:864
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:555
void clearGroupCache()
Definition: view.cpp:1196
bool m_mirrorY
PAINTER contains information how do draw items.
Definition: view.h:867
double m_scale
View boundaries.
Definition: view.h:852
void MarkDirty()
Force redraw of view on the next rendering.
Definition: view.h:633

References KIGFX::VIEW::clearGroupCache(), KIGFX::VIEW::m_center, KIGFX::VIEW::m_gal, KIGFX::VIEW::m_mirrorX, KIGFX::VIEW::m_mirrorY, KIGFX::VIEW::m_scale, KIGFX::VIEW::MarkDirty(), KIGFX::VIEW::SetCenter(), KIGFX::VIEW::SetMirror(), and KIGFX::VIEW::SetScale().

Referenced by GERBVIEW_DRAW_PANEL_GAL::GERBVIEW_DRAW_PANEL_GAL(), PCB_DRAW_PANEL_GAL::PCB_DRAW_PANEL_GAL(), PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL(), SCH_DRAW_PANEL::SCH_DRAW_PANEL(), SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL(), and EDA_DRAW_PANEL_GAL::SwitchBackend().

◆ SetLayerDiff()

void KIGFX::VIEW::SetLayerDiff ( int  aLayer,
bool  aDiff = true 
)
inlineinherited

Set the whether the layer should drawn differentially.

Parameters
aLayeris the layer to set to be draw differentially
aDiffis the layer diff'ing state.

Definition at line 419 of file view.h.

420  {
421  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
422 
423  if( m_layers[aLayer].diffLayer != aDiff )
424  {
425  // Target has to be redrawn after changing its layers' diff status
426  MarkTargetDirty( m_layers[aLayer].target );
427  m_layers[aLayer].diffLayer = aDiff;
428  }
429  }
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers, and KIGFX::VIEW::MarkTargetDirty().

Referenced by GERBVIEW_FRAME::UpdateDiffLayers().

◆ SetLayerDisplayOnly()

void KIGFX::VIEW::SetLayerDisplayOnly ( int  aLayer,
bool  aDisplayOnly = true 
)
inlineinherited

Definition at line 449 of file view.h.

450  {
451  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
452  m_layers[aLayer].displayOnly = aDisplayOnly;
453  }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers.

Referenced by PL_DRAW_PANEL_GAL::setDefaultLayerDeps(), SCH_DRAW_PANEL::setDefaultLayerDeps(), SCH_PREVIEW_PANEL::setDefaultLayerDeps(), GERBVIEW_DRAW_PANEL_GAL::setDefaultLayerDeps(), and PCB_DRAW_PANEL_GAL::setDefaultLayerDeps().

◆ SetLayerHasNegatives()

void KIGFX::VIEW::SetLayerHasNegatives ( int  aLayer,
bool  aNegatives = true 
)
inlineinherited

Set the status of negatives presense in a particular layer.

Parameters
aLayeris the layer to set as containing negatives (or not).
aNegativesis the layer negatives state.

Definition at line 437 of file view.h.

438  {
439  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
440 
441  if( m_layers[aLayer].hasNegatives != aNegatives )
442  {
443  // Target has to be redrawn after changing a layers' negatives
444  MarkTargetDirty( m_layers[aLayer].target );
445  m_layers[aLayer].hasNegatives = aNegatives;
446  }
447  }
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers, and KIGFX::VIEW::MarkTargetDirty().

Referenced by GERBVIEW_FRAME::LoadListOfGerberAndDrillFiles(), and GERBVIEW_FRAME::unarchiveFiles().

◆ SetLayerOrder()

void KIGFX::VIEW::SetLayerOrder ( int  aLayer,
int  aRenderingOrder 
)
inherited

Set rendering order of a particular layer.

Lower values are rendered first.

Parameters
aLayeris the layer.
aRenderingOrderis an arbitrary number denoting the rendering order.

Definition at line 642 of file view.cpp.

643 {
644  m_layers[aLayer].renderingOrder = aRenderingOrder;
645 
646  sortLayers();
647 }
void sortLayers()
Clear cached GAL group numbers (ONLY numbers stored in VIEW_ITEMs, not group objects used by GAL)
Definition: view.cpp:1254
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers, and KIGFX::VIEW::sortLayers().

Referenced by SCH_DRAW_PANEL::setDefaultLayerOrder(), SCH_PREVIEW_PANEL::setDefaultLayerOrder(), PCB_DRAW_PANEL_GAL::setDefaultLayerOrder(), GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), and PCB_DRAW_PANEL_GAL::SetTopLayer().

◆ SetLayerTarget()

void KIGFX::VIEW::SetLayerTarget ( int  aLayer,
RENDER_TARGET  aTarget 
)
inlineinherited

Change the rendering target for a particular layer.

Parameters
aLayeris the layer.
aTargetis the rendering target.

Definition at line 461 of file view.h.

462  {
463  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
464  m_layers[aLayer].target = aTarget;
465  }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers.

Referenced by PL_DRAW_PANEL_GAL::setDefaultLayerDeps(), SCH_DRAW_PANEL::setDefaultLayerDeps(), SCH_PREVIEW_PANEL::setDefaultLayerDeps(), GERBVIEW_DRAW_PANEL_GAL::setDefaultLayerDeps(), PCB_DRAW_PANEL_GAL::setDefaultLayerDeps(), and BOARD_PRINTOUT::setupViewLayers().

◆ SetLayerVisible()

void KIGFX::VIEW::SetLayerVisible ( int  aLayer,
bool  aVisible = true 
)
inlineinherited

Control the visibility of a particular layer.

Parameters
aLayeris the layer to show/hide.
aVisibleis the layer visibility state.

Definition at line 388 of file view.h.

389  {
390  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
391 
392  if( m_layers[aLayer].visible != aVisible )
393  {
394  // Target has to be redrawn after changing its visibility
395  MarkTargetDirty( m_layers[aLayer].target );
396  m_layers[aLayer].visible = aVisible;
397  }
398  }
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers, and KIGFX::VIEW::MarkTargetDirty().

Referenced by APPEARANCE_CONTROLS::onLayerVisibilityChanged(), APPEARANCE_CONTROLS::onObjectVisibilityChanged(), GERBER_LAYER_WIDGET::OnRenderEnable(), PL_EDITOR_FRAME::OnSelectPage(), PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL(), GERBVIEW_FRAME::SetElementVisibility(), APPEARANCE_CONTROLS::SetLayerVisible(), APPEARANCE_CONTROLS::SetObjectVisible(), GERBVIEW_PRINTOUT::setupViewLayers(), PCBNEW_PRINTOUT::setupViewLayers(), BOARD_PRINTOUT::setupViewLayers(), GERBVIEW_FRAME::SetVisibleLayers(), APPEARANCE_CONTROLS::setVisibleLayers(), APPEARANCE_CONTROLS::setVisibleObjects(), PCB_DRAW_PANEL_GAL::SyncLayersVisibility(), and PCB_EDIT_FRAME::UpdateUserInterface().

◆ SetMirror()

void KIGFX::VIEW::SetMirror ( bool  aMirrorX,
bool  aMirrorY 
)
inherited

Control the mirroring of the VIEW.

Parameters
aMirrorXwhen true, the X axis is mirrored.
aMirrorYwhen true, the Y axis is mirrored.

Definition at line 542 of file view.cpp.

543 {
544  wxASSERT_MSG( !aMirrorY, _( "Mirroring for Y axis is not supported yet" ) );
545 
546  m_mirrorX = aMirrorX;
547  m_mirrorY = aMirrorY;
548  m_gal->SetFlip( aMirrorX, aMirrorY );
549 
550  // Redraw everything
551  MarkDirty();
552 }
void SetFlip(bool xAxis, bool yAxis)
Sets flipping of the screen.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
bool m_mirrorX
Vertical flip flag.
Definition: view.h:864
#define _(s)
bool m_mirrorY
PAINTER contains information how do draw items.
Definition: view.h:867
void MarkDirty()
Force redraw of view on the next rendering.
Definition: view.h:633

References _, KIGFX::VIEW::m_gal, KIGFX::VIEW::m_mirrorX, KIGFX::VIEW::m_mirrorY, KIGFX::VIEW::MarkDirty(), and KIGFX::GAL::SetFlip().

Referenced by GERBVIEW_CONTROL::DisplayControl(), PCB_CONTROL::FlipPcbView(), SCH_DRAW_PANEL::SCH_DRAW_PANEL(), SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL(), and KIGFX::VIEW::SetGAL().

◆ SetPainter()

void KIGFX::VIEW::SetPainter ( PAINTER aPainter)
inlineinherited

Set the painter object used by the view for drawing #VIEW_ITEMS.

Definition at line 198 of file view.h.

199  {
200  m_painter = aPainter;
201  }
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:870

References KIGFX::VIEW::m_painter.

Referenced by GERBVIEW_DRAW_PANEL_GAL::GERBVIEW_DRAW_PANEL_GAL(), PCB_DRAW_PANEL_GAL::PCB_DRAW_PANEL_GAL(), PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL(), SCH_DRAW_PANEL::SCH_DRAW_PANEL(), and SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL().

◆ SetRequired()

void KIGFX::VIEW::SetRequired ( int  aLayerId,
int  aRequiredId,
bool  aRequired = true 
)
inherited

Mark the aRequiredId layer as required for the aLayerId layer.

In order to display the layer, all of its required layers have to be enabled.

Parameters
aLayerIdis the id of the layer for which we enable/disable the required layer.
aRequiredIdis the id of the required layer.
aRequiredtells if the required layer should be added or removed from the list.

Definition at line 393 of file view.cpp.

394 {
395  wxCHECK( (unsigned) aLayerId < m_layers.size(), /*void*/ );
396  wxCHECK( (unsigned) aRequiredId < m_layers.size(), /*void*/ );
397 
398  if( aRequired )
399  m_layers[aLayerId].requiredLayers.insert( aRequiredId );
400  else
401  m_layers[aLayerId].requiredLayers.erase( aRequired );
402 }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::m_layers.

Referenced by PCB_DRAW_PANEL_GAL::setDefaultLayerDeps().

◆ SetScale()

void KIGFX::SCH_VIEW::SetScale ( double  aScale,
VECTOR2D  aAnchor = { 0, 0 } 
)
overridevirtual

Set the scaling factor, zooming around a given anchor point.

(depending on correct GAL unit length & DPI settings).

Parameters
aAnchoris the zooming anchor point.
aScaleis the scale factor.

Reimplemented from KIGFX::VIEW.

Definition at line 72 of file sch_view.cpp.

73 {
74  VIEW::SetScale( aScale, aAnchor );
75 
76  //Redraw selection halos since their width is dependent on zoom
77  if( m_frame )
79 }
void RefreshSelection()
Mark selected items for refresh.
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:555
SCH_BASE_FRAME * m_frame
Definition: sch_view.h:100

References m_frame, SCH_BASE_FRAME::RefreshSelection(), and KIGFX::VIEW::SetScale().

Referenced by SCH_EDIT_FRAME::DisplayCurrentSheet().

◆ SetScaleLimits()

void KIGFX::VIEW::SetScaleLimits ( double  aMaximum,
double  aMinimum 
)
inlineinherited

Set minimum and maximum values for scale.

Parameters
aMaximumis the maximum value for scale.
aMinimumis the minimum value for scale.

Definition at line 304 of file view.h.

305  {
306  wxASSERT_MSG( aMaximum > aMinimum, wxT( "I guess you passed parameters in wrong order" ) );
307 
308  m_minScale = aMinimum;
309  m_maxScale = aMaximum;
310  }
double m_minScale
Scale upper limit.
Definition: view.h:858
double m_maxScale
Horizontal flip flag.
Definition: view.h:861

References KIGFX::VIEW::m_maxScale, and KIGFX::VIEW::m_minScale.

Referenced by GERBVIEW_DRAW_PANEL_GAL::GERBVIEW_DRAW_PANEL_GAL(), PCB_DRAW_PANEL_GAL::PCB_DRAW_PANEL_GAL(), PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL(), SCH_DRAW_PANEL::SCH_DRAW_PANEL(), and SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL().

◆ SetTopLayer()

void KIGFX::VIEW::SetTopLayer ( int  aLayer,
bool  aEnabled = true 
)
virtualinherited

Set given layer to be displayed on the top or sets back the default order of layers.

Parameters
aEnabled= true to display aLayer on the top.
aLayeris the layer or -1 in case when no particular layer should be displayed on the top.

Definition at line 839 of file view.cpp.

840 {
841  if( aEnabled )
842  {
843  if( m_topLayers.count( aLayer ) == 1 )
844  return;
845 
846  m_topLayers.insert( aLayer );
847 
848  // Move the layer closer to front
850  m_layers[aLayer].renderingOrder += TOP_LAYER_MODIFIER;
851  }
852  else
853  {
854  if( m_topLayers.count( aLayer ) == 0 )
855  return;
856 
857  m_topLayers.erase( aLayer );
858 
859  // Restore the previous rendering order
861  m_layers[aLayer].renderingOrder -= TOP_LAYER_MODIFIER;
862  }
863 }
static const int TOP_LAYER_MODIFIER
Flag to respect draw priority when drawing items.
Definition: view.h:883
std::set< unsigned int > m_topLayers
Center point of the VIEW (the point at which we are looking at).
Definition: view.h:846
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
bool m_enableOrderModifier
The set of possible displayed layers and its properties.
Definition: view.h:834

References KIGFX::VIEW::m_enableOrderModifier, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_topLayers, and KIGFX::VIEW::TOP_LAYER_MODIFIER.

Referenced by DIALOG_PAD_PROPERTIES::redraw(), GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), PL_DRAW_PANEL_GAL::SetTopLayer(), PCB_DRAW_PANEL_GAL::SetTopLayer(), EDA_DRAW_PANEL_GAL::SetTopLayer(), PCBNEW_PRINTOUT::setupViewLayers(), and BOARD_PRINTOUT::setupViewLayers().

◆ SetViewport()

void KIGFX::VIEW::SetViewport ( const BOX2D aViewport)
inherited

Set the visible area of the VIEW.

Parameters
aViewportdesired visible area, in world space coordinates.

Definition at line 527 of file view.cpp.

528 {
529  VECTOR2D ssize = ToWorld( m_gal->GetScreenPixelSize(), false );
530 
531  wxCHECK( ssize.x > 0 && ssize.y > 0, /*void*/ );
532 
533  VECTOR2D centre = aViewport.Centre();
534  VECTOR2D vsize = aViewport.GetSize();
535  double zoom = 1.0 / std::max( fabs( vsize.x / ssize.x ), fabs( vsize.y / ssize.y ) );
536 
537  SetCenter( centre );
538  SetScale( GetScale() * zoom );
539 }
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:452
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
const VECTOR2I & GetScreenPixelSize() const
Return GAL canvas size in pixels.
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:581
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:555
Vec Centre() const
Definition: box2.h:63
const Vec & GetSize() const
Definition: box2.h:172
double GetScale() const
Definition: view.h:264

References BOX2< Vec >::Centre(), KIGFX::VIEW::GetScale(), KIGFX::GAL::GetScreenPixelSize(), BOX2< Vec >::GetSize(), KIGFX::VIEW::m_gal, KIGFX::VIEW::SetCenter(), KIGFX::VIEW::SetScale(), KIGFX::VIEW::ToWorld(), VECTOR2< T >::x, VECTOR2< T >::y, and zoom.

Referenced by DIALOG_PAD_PROPERTIES::redraw(), and FOOTPRINT_PREVIEW_PANEL::renderFootprint().

◆ SetVisible()

void KIGFX::VIEW::SetVisible ( VIEW_ITEM aItem,
bool  aIsVisible = true 
)
inherited

Set the item visibility.

Parameters
aItemthe item to modify.
aIsVisiblewhether the item is visible (on all layers), or not.

Definition at line 1464 of file view.cpp.

1465 {
1466  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1467 
1468  if( !viewData )
1469  return;
1470 
1471  bool cur_visible = viewData->m_flags & VISIBLE;
1472 
1473  if( cur_visible != aIsVisible )
1474  {
1475  if( aIsVisible )
1476  viewData->m_flags |= VISIBLE;
1477  else
1478  viewData->m_flags &= ~VISIBLE;
1479 
1480  Update( aItem, APPEARANCE | COLOR );
1481  }
1482 }
Visibility flag has changed.
Definition: view_item.h:52
Color has changed.
Definition: view_item.h:53
Item is visible (in general)
Definition: view_item.h:65
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1518

References KIGFX::APPEARANCE, KIGFX::COLOR, KIGFX::VIEW_ITEM_DATA::m_flags, KIGFX::VIEW::Update(), KIGFX::VIEW_ITEM::viewPrivData(), and KIGFX::VISIBLE.

Referenced by KIGFX::VIEW::Add(), KIGFX::VIEW::AddToPreview(), EE_GRID_HELPER::BestSnapAnchor(), PCB_GRID_HELPER::BestSnapAnchor(), MICROWAVE_TOOL::drawMicrowaveInductor(), EE_GRID_HELPER::EE_GRID_HELPER(), PNS_KICAD_IFACE::EraseView(), PNS_KICAD_IFACE::HideItem(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_VIEWER_TOOLS::MeasureTool(), ZONE_CREATE_HELPER::OnComplete(), ZONE_CREATE_HELPER::OnFirstPoint(), PCB_GRID_HELPER::PCB_GRID_HELPER(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), PCB_SELECTION_TOOL::selectMultiple(), ZOOM_TOOL::selectRegion(), GRID_HELPER::SetAuxAxes(), KIGFX::VIEW::ShowPreview(), and ZONE_CREATE_HELPER::~ZONE_CREATE_HELPER().

◆ ShowPreview()

void KIGFX::VIEW::ShowPreview ( bool  aShow = true)
inherited

Definition at line 1576 of file view.cpp.

1577 {
1578  SetVisible( m_preview.get(), aShow );
1579 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:828
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Set the item visibility.
Definition: view.cpp:1464

References KIGFX::VIEW::m_preview, and KIGFX::VIEW::SetVisible().

Referenced by SCH_EDIT_FRAME::AddJunction(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), ROUTER_TOOL::InlineDrag(), and DRAWING_TOOL::InteractivePlaceWithPreview().

◆ SortLayers()

void KIGFX::VIEW::SortLayers ( int  aLayers[],
int &  aCount 
) const
inherited

Change the order of given layer ids, so after sorting the order corresponds to layers rendering order (descending, ie.

order in which layers should be drawn - from the bottom to the top).

Parameters
aLayersstores id of layers to be sorted.
aCountstores the number of layers.

Definition at line 656 of file view.cpp.

657 {
658  int maxLay, maxOrd, maxIdx;
659 
660  for( int i = 0; i < aCount; ++i )
661  {
662  maxLay = aLayers[i];
663  maxOrd = GetLayerOrder( maxLay );
664  maxIdx = i;
665 
666  // Look for the max element in the range (j..aCount)
667  for( int j = i; j < aCount; ++j )
668  {
669  if( maxOrd < GetLayerOrder( aLayers[j] ) )
670  {
671  maxLay = aLayers[j];
672  maxOrd = GetLayerOrder( maxLay );
673  maxIdx = j;
674  }
675  }
676 
677  // Swap elements
678  aLayers[maxIdx] = aLayers[i];
679  aLayers[i] = maxLay;
680  }
681 }
int GetLayerOrder(int aLayer) const
Return rendering order of a particular layer.
Definition: view.cpp:650

References KIGFX::VIEW::GetLayerOrder().

Referenced by KIGFX::VIEW::draw(), and KIGFX::VIEW_GROUP::ViewDraw().

◆ sortLayers()

void KIGFX::VIEW::sortLayers ( )
protectedinherited

Clear cached GAL group numbers (ONLY numbers stored in VIEW_ITEMs, not group objects used by GAL)

Definition at line 1254 of file view.cpp.

1255 {
1256  int n = 0;
1257 
1258  m_orderedLayers.resize( m_layers.size() );
1259 
1260  for( VIEW_LAYER& layer : m_layers )
1261  m_orderedLayers[n++] = &layer;
1262 
1263  sort( m_orderedLayers.begin(), m_orderedLayers.end(), compareRenderingOrder );
1264 
1265  MarkDirty();
1266 }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
std::vector< VIEW_LAYER * > m_orderedLayers
Flat list of all items.
Definition: view.h:840
static bool compareRenderingOrder(VIEW_LAYER *aI, VIEW_LAYER *aJ)
Check if every layer required by the aLayerId layer is enabled.
Definition: view.h:815
void MarkDirty()
Force redraw of view on the next rendering.
Definition: view.h:633

References KIGFX::VIEW::compareRenderingOrder(), KIGFX::VIEW::m_layers, KIGFX::VIEW::m_orderedLayers, and KIGFX::VIEW::MarkDirty().

Referenced by KIGFX::VIEW::SetLayerOrder(), KIGFX::VIEW::UpdateAllLayersOrder(), and KIGFX::VIEW::VIEW().

◆ ToScreen() [1/2]

VECTOR2D KIGFX::VIEW::ToScreen ( const VECTOR2D aCoord,
bool  aAbsolute = true 
) const
inherited

Convert a world space point/vector to a point/vector in screen space coordinates.

Parameters
aCoordis the point/vector to be converted.
aAbsolutewhen true aCoord is treated as a point, otherwise as a direction (vector).

Definition at line 471 of file view.cpp.

472 {
473  const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix();
474 
475  if( aAbsolute )
476  return VECTOR2D( matrix * aCoord );
477  else
478  return VECTOR2D( matrix.GetScale().x * aCoord.x, matrix.GetScale().y * aCoord.y );
479 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:265
VECTOR2< double > VECTOR2D
Definition: vector2d.h:622
const MATRIX3x3D & GetWorldScreenMatrix() const
Get the world <-> screen transformation matrix.

References MATRIX3x3< T >::GetScale(), KIGFX::GAL::GetWorldScreenMatrix(), KIGFX::VIEW::m_gal, VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by KIGFX::WX_VIEW_CONTROLS::handleAutoPanning(), ROUTER_TOOL::handleLayerSwitch(), TOOL_DISPATCHER::handleMouseButton(), KIGFX::WX_VIEW_CONTROLS::SetCrossHairCursorPosition(), KIGFX::VIEW::SetScale(), and KIGFX::WX_VIEW_CONTROLS::WarpCursor().

◆ ToScreen() [2/2]

double KIGFX::VIEW::ToScreen ( double  aSize) const
inherited

Convert a world space one dimensional size to a one dimensional size in screen space.

Parameters
aSizethe size to be transformed.

Definition at line 482 of file view.cpp.

483 {
484  const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix();
485 
486  return matrix.GetScale().x * aSize;
487 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:265
const MATRIX3x3D & GetWorldScreenMatrix() const
Get the world <-> screen transformation matrix.

References MATRIX3x3< T >::GetScale(), KIGFX::GAL::GetWorldScreenMatrix(), KIGFX::VIEW::m_gal, and VECTOR2< T >::x.

◆ ToWorld() [1/2]

VECTOR2D KIGFX::VIEW::ToWorld ( const VECTOR2D aCoord,
bool  aAbsolute = true 
) const
inherited

Converts a screen space point/vector to a point/vector in world space coordinates.

Parameters
aCoordis the point/vector to be converted.
aAbsolutewhen true aCoord is treated as a point, otherwise as a direction (vector).

Definition at line 452 of file view.cpp.

453 {
454  const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix();
455 
456  if( aAbsolute )
457  return VECTOR2D( matrix * aCoord );
458  else
459  return VECTOR2D( matrix.GetScale().x * aCoord.x, matrix.GetScale().y * aCoord.y );
460 }
const MATRIX3x3D & GetScreenWorldMatrix() const
Get the screen <-> world transformation matrix.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:265
VECTOR2< double > VECTOR2D
Definition: vector2d.h:622

References MATRIX3x3< T >::GetScale(), KIGFX::GAL::GetScreenWorldMatrix(), KIGFX::VIEW::m_gal, VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by EE_POINT_EDITOR::addCornerCondition(), COMMON_TOOLS::CenterContents(), COMMON_TOOLS::doZoomFit(), KIGFX::PREVIEW::POLYGON_ITEM::drawPreviewShape(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), EDIT_POINTS::FindPoint(), SYMBOL_PREVIEW_WIDGET::fitOnDrawArea(), GENERAL_COLLECTORS_GUIDE::GENERAL_COLLECTORS_GUIDE(), KIGFX::WX_VIEW_CONTROLS::GetMousePosition(), KIGFX::VIEW::GetViewport(), DS_PROXY_VIEW_ITEM::HitTestDrawingSheetItems(), KIGFX::WX_VIEW_CONTROLS::onMotion(), KIGFX::WX_VIEW_CONTROLS::onScroll(), EDA_DRAW_PANEL_GAL::onSize(), KIGFX::WX_VIEW_CONTROLS::onTimer(), KIGFX::WX_VIEW_CONTROLS::onWheel(), KIGFX::VIEW::Redraw(), KIGFX::WX_VIEW_CONTROLS::refreshMouse(), PL_SELECTION_TOOL::selectionContains(), EE_SELECTION_TOOL::selectionContains(), ZOOM_TOOL::selectRegion(), KIGFX::VIEW::SetCenter(), KIGFX::VIEW::SetScale(), KIGFX::VIEW::SetViewport(), KIGFX::ORIGIN_VIEWITEM::ViewDraw(), EDIT_POINTS::ViewDraw(), PANEL_PCBNEW_COLOR_SETTINGS::zoomFitPreview(), PANEL_EESCHEMA_COLOR_SETTINGS::zoomFitPreview(), and PCB_SELECTION_TOOL::zoomFitSelection().

◆ ToWorld() [2/2]

double KIGFX::VIEW::ToWorld ( double  aSize) const
inherited

Converts a screen space one dimensional size to a one dimensional size in world space coordinates.

Parameters
aSizeis the size to be converted.

Definition at line 463 of file view.cpp.

464 {
465  const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix();
466 
467  return fabs( matrix.GetScale().x * aSize );
468 }
const MATRIX3x3D & GetScreenWorldMatrix() const
Get the screen <-> world transformation matrix.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:265

References MATRIX3x3< T >::GetScale(), KIGFX::GAL::GetScreenWorldMatrix(), KIGFX::VIEW::m_gal, and VECTOR2< T >::x.

◆ Update() [1/2]

void KIGFX::VIEW::Update ( const VIEW_ITEM aItem,
int  aUpdateFlags 
) const
virtualinherited

For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has changed.

For static views calling has no effect.

Parameters
aItemthe item to update.
aUpdateFlagshow much the object has changed.

Reimplemented in KIGFX::PCB_VIEW.

Definition at line 1518 of file view.cpp.

1519 {
1520  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1521 
1522  if( !viewData )
1523  return;
1524 
1525  assert( aUpdateFlags != NONE );
1526 
1527  viewData->m_requiredUpdate |= aUpdateFlags;
1528 }
No updates are required.
Definition: view_item.h:51

References KIGFX::VIEW_ITEM_DATA::m_requiredUpdate, KIGFX::NONE, and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by KIGFX::VIEW::Add(), PNS_PCBNEW_DEBUG_DECORATOR::AddLine(), KIGFX::VIEW::AddToPreview(), EE_GRID_HELPER::BestSnapAnchor(), PCB_GRID_HELPER::BestSnapAnchor(), SCH_EDIT_TOOL::ChangeTextType(), PNS_PCBNEW_DEBUG_DECORATOR::Clear(), KIGFX::VIEW::ClearPreview(), PL_SELECTION_TOOL::ClearSelection(), EE_SELECTION_TOOL::ClearSelection(), PNS_KICAD_IFACE::DisplayItem(), PNS_KICAD_IFACE::DisplayRatline(), EDIT_TOOL::DragArcTrack(), KIGFX::VIEW::draw(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::drawSegment(), PL_DRAWING_TOOLS::DrawShape(), PAD_TOOL::EnumeratePads(), PNS_KICAD_IFACE::EraseView(), DIALOG_ERC::ExcludeMarker(), EE_INSPECTION_TOOL::ExcludeMarker(), KIGFX::VIEW::Hide(), PNS_KICAD_IFACE::HideItem(), PL_SELECTION_TOOL::highlight(), EE_SELECTION_TOOL::highlight(), EE_SELECTION_TOOL::Main(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), EDIT_TOOL::MoveExact(), PL_EDIT_TOOL::moveItem(), PROPERTIES_FRAME::OnAcceptPrms(), DIALOG_ERC::OnERCItemRClick(), ZONE_CREATE_HELPER::OnGeometryChange(), PCB_POINT_EDITOR::OnSelectionChange(), KIGFX::VIEW::RECACHE_ITEM_VISITOR::operator()(), BOARD_EDITOR_CONTROL::PlaceFootprint(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), SCH_DRAWING_TOOLS::PlaceSymbol(), DRAWING_TOOL::PlaceText(), BOARD_COMMIT::Push(), SCH_EDIT_FRAME::RecalculateConnections(), SCH_EDIT_FRAME::RecomputeIntersheetRefs(), DIALOG_PAD_PROPERTIES::redraw(), PCB_DRAW_PANEL_GAL::RedrawRatsnest(), SCH_BASE_FRAME::RefreshSelection(), SCH_EDIT_FRAME::SaveSymbolToSchematic(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), ZOOM_TOOL::selectRegion(), GERBVIEW_SELECTION_TOOL::selectVisually(), KIGFX::VIEW::SetVisible(), SCH_EDIT_FRAME::TestDanglingEnds(), DIALOG_JUNCTION_PROPS::TransferDataFromWindow(), PL_SELECTION_TOOL::unhighlight(), EE_SELECTION_TOOL::unhighlight(), PCB_BASE_EDIT_FRAME::unitsChangeRefresh(), GERBVIEW_SELECTION_TOOL::unselectVisually(), KIGFX::PCB_VIEW::Update(), KIGFX::VIEW::Update(), PL_POINT_EDITOR::updateItem(), PCB_POINT_EDITOR::updateItem(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateItem(), SCH_BASE_FRAME::UpdateItem(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), EE_POINT_EDITOR::updateParentItem(), EE_POINT_EDITOR::updatePoints(), PL_POINT_EDITOR::updatePoints(), PCB_POINT_EDITOR::updatePoints(), and PCB_SELECTION_TOOL::updateSelection().

◆ Update() [2/2]

void KIGFX::VIEW::Update ( const VIEW_ITEM aItem) const
virtualinherited

Reimplemented in KIGFX::PCB_VIEW.

Definition at line 1512 of file view.cpp.

1513 {
1514  Update( aItem, ALL );
1515 }
All except INITIAL_ADD.
Definition: view_item.h:58
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1518

References KIGFX::ALL, and KIGFX::VIEW::Update().

◆ UpdateAllItems()

void KIGFX::VIEW::UpdateAllItems ( int  aUpdateFlags)
inherited

◆ UpdateAllItemsConditionally()

void KIGFX::VIEW::UpdateAllItemsConditionally ( int  aUpdateFlags,
std::function< bool(VIEW_ITEM *)>  aCondition 
)
inherited

Update items in the view according to the given flags and condition.

Parameters
aUpdateFlagsis is according to KIGFX::VIEW_UPDATE_FLAGS.
aConditionis a function returning true if the item should be updated.

Definition at line 1440 of file view.cpp.

1442 {
1443  for( VIEW_ITEM* item : *m_allItems )
1444  {
1445  if( aCondition( item ) )
1446  {
1447  if( item->viewPrivData() )
1448  item->viewPrivData()->m_requiredUpdate |= aUpdateFlags;
1449  }
1450  }
1451 }
friend class VIEW_ITEM
Definition: view.h:71
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843

References KIGFX::VIEW::m_allItems.

Referenced by DIALOG_NET_INSPECTOR::onDeleteNet(), SCH_EDIT_FRAME::RecalculateConnections(), PCB_BASE_FRAME::SetDisplayOptions(), GERBVIEW_FRAME::SetElementVisibility(), PANEL_DISPLAY_OPTIONS::TransferDataFromWindow(), and PANEL_EDIT_OPTIONS::TransferDataFromWindow().

◆ UpdateAllLayersColor()

void KIGFX::VIEW::UpdateAllLayersColor ( )
inherited

Apply the new coloring scheme to all layers.

The used scheme is held by #RENDER_SETTINGS.

See also
RENDER_SETTINGS

Definition at line 775 of file view.cpp.

776 {
777  if( m_gal->IsVisible() )
778  {
779  GAL_UPDATE_CONTEXT ctx( m_gal );
780 
781  for( VIEW_ITEM* item : *m_allItems )
782  {
783  VIEW_ITEM_DATA* viewData = item->viewPrivData();
784 
785  if( !viewData )
786  continue;
787 
788  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
789  viewData->getLayers( layers, layers_count );
790 
791  for( int i = 0; i < layers_count; ++i )
792  {
793  const COLOR4D color = m_painter->GetSettings()->GetColor( item, layers[i] );
794  int group = viewData->getGroup( layers[i] );
795 
796  if( group >= 0 )
797  m_gal->ChangeGroupColor( group, color );
798  }
799  }
800  }
801 
802  MarkDirty();
803 }
friend class VIEW_ITEM
Definition: view.h:71
int color
Definition: DXF_plotter.cpp:57
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843
virtual void ChangeGroupColor(int aGroupNumber, const COLOR4D &aNewColor)
Change the color used to draw the group.
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:870
virtual COLOR4D GetColor(const VIEW_ITEM *aItem, int aLayer) const =0
Returns the color that should be used to draw the specific VIEW_ITEM on the specific layer using curr...
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
virtual bool IsVisible() const
Return true if the GAL canvas is visible on the screen.
void MarkDirty()
Force redraw of view on the next rendering.
Definition: view.h:633
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References KIGFX::GAL::ChangeGroupColor(), color, KIGFX::RENDER_SETTINGS::GetColor(), KIGFX::VIEW_ITEM_DATA::getGroup(), KIGFX::VIEW_ITEM_DATA::getLayers(), KIGFX::PAINTER::GetSettings(), group, KIGFX::GAL::IsVisible(), KIGFX::VIEW::m_allItems, KIGFX::VIEW::m_gal, KIGFX::VIEW::m_painter, KIGFX::VIEW::MarkDirty(), and KIGFX::VIEW::VIEW_MAX_LAYERS.

Referenced by DIALOG_NET_INSPECTOR::buildNetsList(), BOARD_INSPECTION_TOOL::ClearHighlight(), FOOTPRINT_EDIT_FRAME::CommonSettingsChanged(), KIGFX::VIEW::EnableTopLayer(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PNS::TOOL_BASE::highlightNet(), BOARD_INSPECTION_TOOL::HighlightNet(), BOARD_INSPECTION_TOOL::highlightNet(), APPEARANCE_CONTROLS::onNetclassColorChanged(), APPEARANCE_CONTROLS::onNetclassContextMenu(), APPEARANCE_CONTROLS::onNetColorModeChanged(), DIALOG_NET_INSPECTOR::onSelChanged(), DIALOG_NET_INSPECTOR::onSortingChanged(), GERBVIEW_DRAW_PANEL_GAL::SetHighContrastLayer(), PCB_DRAW_PANEL_GAL::SetHighContrastLayer(), EDA_DRAW_PANEL_GAL::SetHighContrastLayer(), and NET_GRID_TABLE::updateNetColor().

◆ UpdateAllLayersOrder()

void KIGFX::VIEW::UpdateAllLayersOrder ( )
inherited

Do everything that is needed to apply the rendering order of layers.

It has to be called after modification of renderingOrder field of LAYER.

Definition at line 906 of file view.cpp.

907 {
908  sortLayers();
909 
910  if( m_gal->IsVisible() )
911  {
912  GAL_UPDATE_CONTEXT ctx( m_gal );
913 
914  for( VIEW_ITEM* item : *m_allItems )
915  {
916  VIEW_ITEM_DATA* viewData = item->viewPrivData();
917 
918  if( !viewData )
919  continue;
920 
921  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
922  viewData->getLayers( layers, layers_count );
923 
924  for( int i = 0; i < layers_count; ++i )
925  {
926  int group = viewData->getGroup( layers[i] );
927 
928  if( group >= 0 )
929  m_gal->ChangeGroupDepth( group, m_layers[layers[i]].renderingOrder );
930  }
931  }
932  }
933 
934  MarkDirty();
935 }
void sortLayers()
Clear cached GAL group numbers (ONLY numbers stored in VIEW_ITEMs, not group objects used by GAL)
Definition: view.cpp:1254
friend class VIEW_ITEM
Definition: view.h:71
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
virtual bool IsVisible() const
Return true if the GAL canvas is visible on the screen.
virtual void ChangeGroupDepth(int aGroupNumber, int aDepth)
Change the depth (Z-axis position) of the group.
void MarkDirty()
Force redraw of view on the next rendering.
Definition: view.h:633

References KIGFX::GAL::ChangeGroupDepth(), KIGFX::VIEW_ITEM_DATA::getGroup(), KIGFX::VIEW_ITEM_DATA::getLayers(), group, KIGFX::GAL::IsVisible(), KIGFX::VIEW::m_allItems, KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::VIEW::MarkDirty(), KIGFX::VIEW::sortLayers(), and KIGFX::VIEW::VIEW_MAX_LAYERS.

Referenced by KIGFX::VIEW::EnableTopLayer(), SCH_DRAW_PANEL::SCH_DRAW_PANEL(), SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL(), GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), PL_DRAW_PANEL_GAL::SetTopLayer(), PCB_DRAW_PANEL_GAL::SetTopLayer(), and EDA_DRAW_PANEL_GAL::SetTopLayer().

◆ updateBbox()

void KIGFX::VIEW::updateBbox ( VIEW_ITEM aItem)
protectedinherited

Update set of layers that an item occupies.

Definition at line 1318 of file view.cpp.

1319 {
1320  int layers[VIEW_MAX_LAYERS], layers_count;
1321 
1322  aItem->ViewGetLayers( layers, layers_count );
1323 
1324  for( int i = 0; i < layers_count; ++i )
1325  {
1326  VIEW_LAYER& l = m_layers[layers[i]];
1327  l.items->Remove( aItem );
1328  l.items->Insert( aItem );
1329  MarkTargetDirty( l.target );
1330  }
1331 }
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837

References KIGFX::VIEW::VIEW_LAYER::items, KIGFX::VIEW::m_layers, KIGFX::VIEW::MarkTargetDirty(), KIGFX::VIEW::VIEW_LAYER::target, KIGFX::VIEW::VIEW_MAX_LAYERS, and KIGFX::VIEW_ITEM::ViewGetLayers().

Referenced by KIGFX::VIEW::invalidateItem().

◆ updateItemColor()

void KIGFX::VIEW::updateItemColor ( VIEW_ITEM aItem,
int  aLayer 
)
protectedinherited

Update all information needed to draw an item.

Definition at line 1269 of file view.cpp.

1270 {
1271  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1272  wxCHECK( (unsigned) aLayer < m_layers.size(), /*void*/ );
1273  wxCHECK( IsCached( aLayer ), /*void*/ );
1274 
1275  if( !viewData )
1276  return;
1277 
1278  // Obtain the color that should be used for coloring the item on the specific layerId
1279  const COLOR4D color = m_painter->GetSettings()->GetColor( aItem, aLayer );
1280  int group = viewData->getGroup( aLayer );
1281 
1282  // Change the color, only if it has group assigned
1283  if( group >= 0 )
1284  m_gal->ChangeGroupColor( group, color );
1285 }
int color
Definition: DXF_plotter.cpp:57
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
virtual void ChangeGroupColor(int aGroupNumber, const COLOR4D &aNewColor)
Change the color used to draw the group.
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:870
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
virtual COLOR4D GetColor(const VIEW_ITEM *aItem, int aLayer) const =0
Returns the color that should be used to draw the specific VIEW_ITEM on the specific layer using curr...
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
bool IsCached(int aLayer) const
Return true if the layer is cached.
Definition: view.h:616
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References KIGFX::GAL::ChangeGroupColor(), color, KIGFX::RENDER_SETTINGS::GetColor(), KIGFX::VIEW_ITEM_DATA::getGroup(), KIGFX::PAINTER::GetSettings(), group, KIGFX::VIEW::IsCached(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_painter, and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by KIGFX::VIEW::invalidateItem().

◆ updateItemGeometry()

void KIGFX::VIEW::updateItemGeometry ( VIEW_ITEM aItem,
int  aLayer 
)
protectedinherited

Update bounding box of an item.

Definition at line 1288 of file view.cpp.

1289 {
1290  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1291  wxCHECK( (unsigned) aLayer < m_layers.size(), /*void*/ );
1292  wxCHECK( IsCached( aLayer ), /*void*/ );
1293 
1294  if( !viewData )
1295  return;
1296 
1297  VIEW_LAYER& l = m_layers.at( aLayer );
1298 
1299  m_gal->SetTarget( l.target );
1300  m_gal->SetLayerDepth( l.renderingOrder );
1301 
1302  // Redraw the item from scratch
1303  int group = viewData->getGroup( aLayer );
1304 
1305  if( group >= 0 )
1306  m_gal->DeleteGroup( group );
1307 
1308  group = m_gal->BeginGroup();
1309  viewData->setGroup( aLayer, group );
1310 
1311  if( !m_painter->Draw( static_cast<EDA_ITEM*>( aItem ), aLayer ) )
1312  aItem->ViewDraw( aLayer, this ); // Alternative drawing method
1313 
1314  m_gal->EndGroup();
1315 }
virtual void DeleteGroup(int aGroupNumber)
Delete the group from the memory.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
virtual void SetLayerDepth(double aLayerDepth)
Set the depth of the layer (position on the z-axis)
virtual void EndGroup()
End the group.
virtual int BeginGroup()
Begin a group.
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:870
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
virtual bool Draw(const VIEW_ITEM *aItem, int aLayer)=0
Takes an instance of VIEW_ITEM and passes it to a function that knows how to draw the item.
bool IsCached(int aLayer) const
Return true if the layer is cached.
Definition: view.h:616
virtual void SetTarget(RENDER_TARGET aTarget)
Set the target for rendering.

References KIGFX::GAL::BeginGroup(), KIGFX::GAL::DeleteGroup(), KIGFX::PAINTER::Draw(), KIGFX::GAL::EndGroup(), KIGFX::VIEW_ITEM_DATA::getGroup(), group, KIGFX::VIEW::IsCached(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_painter, KIGFX::VIEW::VIEW_LAYER::renderingOrder, KIGFX::VIEW_ITEM_DATA::setGroup(), KIGFX::GAL::SetLayerDepth(), KIGFX::GAL::SetTarget(), KIGFX::VIEW::VIEW_LAYER::target, KIGFX::VIEW_ITEM::ViewDraw(), and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by KIGFX::VIEW::invalidateItem().

◆ UpdateItems()

void KIGFX::VIEW::UpdateItems ( )
inherited

Iterate through the list of items that asked for updating and updates them.

Definition at line 1412 of file view.cpp.

1413 {
1414  if( m_gal->IsVisible() )
1415  {
1416  GAL_UPDATE_CONTEXT ctx( m_gal );
1417 
1418  for( VIEW_ITEM* item : *m_allItems )
1419  {
1420  if( item->viewPrivData() && item->viewPrivData()->m_requiredUpdate != NONE )
1421  {
1422  invalidateItem( item, item->viewPrivData()->m_requiredUpdate );
1423  item->viewPrivData()->m_requiredUpdate = NONE;
1424  }
1425  }
1426  }
1427 }
friend class VIEW_ITEM
Definition: view.h:71
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:843
void invalidateItem(VIEW_ITEM *aItem, int aUpdateFlags)
Manage dirty flags & redraw queuing when updating an item.
Definition: view.cpp:1208
No updates are required.
Definition: view_item.h:51
virtual bool IsVisible() const
Return true if the GAL canvas is visible on the screen.

References KIGFX::VIEW::invalidateItem(), KIGFX::GAL::IsVisible(), KIGFX::VIEW::m_allItems, KIGFX::VIEW::m_gal, and KIGFX::NONE.

Referenced by EDA_DRAW_PANEL_GAL::DoRePaint(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), SCH_DRAW_PANEL::OnShow(), PCB_DRAW_PANEL_GAL::OnShow(), KIGFX::VIEW::ReorderLayerData(), and SCH_EDITOR_CONTROL::UpdateFind().

◆ UpdateLayerColor()

void KIGFX::VIEW::UpdateLayerColor ( int  aLayer)
inherited

Apply the new coloring scheme held by RENDER_SETTINGS in case that it has changed.

Parameters
aLayeris a number of the layer to be updated.
See also
RENDER_SETTINGS

Definition at line 754 of file view.cpp.

755 {
756  // There is no point in updating non-cached layers
757  if( !IsCached( aLayer ) )
758  return;
759 
760  BOX2I r;
761 
762  r.SetMaximum();
763 
764  if( m_gal->IsVisible() )
765  {
766  GAL_UPDATE_CONTEXT ctx( m_gal );
767 
768  UPDATE_COLOR_VISITOR visitor( aLayer, m_painter, m_gal );
769  m_layers[aLayer].items->Query( r, visitor );
770  MarkTargetDirty( m_layers[aLayer].target );
771  }
772 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
void SetMaximum()
Definition: box2.h:57
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:870
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
bool IsCached(int aLayer) const
Return true if the layer is cached.
Definition: view.h:616
virtual bool IsVisible() const
Return true if the GAL canvas is visible on the screen.

References KIGFX::VIEW::IsCached(), KIGFX::GAL::IsVisible(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_painter, KIGFX::VIEW::MarkTargetDirty(), and BOX2< Vec >::SetMaximum().

Referenced by PCB_CONTROL::LayerAlphaDec(), PCB_CONTROL::LayerAlphaInc(), APPEARANCE_CONTROLS::OnColorSwatchChanged(), and GERBER_LAYER_WIDGET::OnLayerColorChange().

◆ updateLayers()

void KIGFX::VIEW::updateLayers ( VIEW_ITEM aItem)
protectedinherited

Determine rendering order of layers. Used in display order sorting function.

Definition at line 1334 of file view.cpp.

1335 {
1336  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1337  int layers[VIEW_MAX_LAYERS], layers_count;
1338 
1339  if( !viewData )
1340  return;
1341 
1342  // Remove the item from previous layer set
1343  viewData->getLayers( layers, layers_count );
1344 
1345  for( int i = 0; i < layers_count; ++i )
1346  {
1347  VIEW_LAYER& l = m_layers[layers[i]];
1348  l.items->Remove( aItem );
1349  MarkTargetDirty( l.target );
1350 
1351  if( IsCached( l.id ) )
1352  {
1353  // Redraw the item from scratch
1354  int prevGroup = viewData->getGroup( layers[i] );
1355 
1356  if( prevGroup >= 0 )
1357  {
1358  m_gal->DeleteGroup( prevGroup );
1359  viewData->setGroup( l.id, -1 );
1360  }
1361  }
1362  }
1363 
1364  // Add the item to new layer set
1365  aItem->ViewGetLayers( layers, layers_count );
1366  viewData->saveLayers( layers, layers_count );
1367 
1368  for( int i = 0; i < layers_count; i++ )
1369  {
1370  VIEW_LAYER& l = m_layers[layers[i]];
1371  l.items->Insert( aItem );
1372  MarkTargetDirty( l.target );
1373  }
1374 }
virtual void DeleteGroup(int aGroupNumber)
Delete the group from the memory.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:873
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:726
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:837
bool IsCached(int aLayer) const
Return true if the layer is cached.
Definition: view.h:616

References KIGFX::GAL::DeleteGroup(), KIGFX::VIEW_ITEM_DATA::getGroup(), KIGFX::VIEW_ITEM_DATA::getLayers(), KIGFX::VIEW::VIEW_LAYER::id, KIGFX::VIEW::IsCached(), KIGFX::VIEW::VIEW_LAYER::items, KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::VIEW::MarkTargetDirty(), KIGFX::VIEW_ITEM_DATA::saveLayers(), KIGFX::VIEW_ITEM_DATA::setGroup(), KIGFX::VIEW::VIEW_LAYER::target, KIGFX::VIEW::VIEW_MAX_LAYERS, KIGFX::VIEW_ITEM::ViewGetLayers(), and KIGFX::VIEW_ITEM::viewPrivData().

Referenced by KIGFX::VIEW::invalidateItem().

◆ UseDrawPriority()

void KIGFX::VIEW::UseDrawPriority ( bool  aFlag)
inlineinherited
Parameters
aFlagis true if draw priority should be respected while redrawing.

Definition at line 687 of file view.h.

688  {
689  m_useDrawPriority = aFlag;
690  }
bool m_useDrawPriority
The next sequential drawing priority.
Definition: view.h:886

References KIGFX::VIEW::m_useDrawPriority.

Member Data Documentation

◆ m_allItems

◆ m_boundary

BOX2D KIGFX::VIEW::m_boundary
protectedinherited

◆ m_center

VECTOR2D KIGFX::VIEW::m_center
protectedinherited

Scale of displayed VIEW_ITEMs.

Definition at line 849 of file view.h.

Referenced by KIGFX::VIEW::GetCenter(), KIGFX::VIEW::SetCenter(), KIGFX::VIEW::SetGAL(), and KIGFX::VIEW::SetScale().

◆ m_dirtyTargets

bool KIGFX::VIEW::m_dirtyTargets[TARGETS_NUMBER]
protectedinherited

Rendering order modifier for layers that are marked as top layers.

Definition at line 880 of file view.h.

Referenced by KIGFX::VIEW::IsTargetDirty(), KIGFX::VIEW::MarkClean(), KIGFX::VIEW::MarkDirty(), KIGFX::VIEW::markTargetClean(), and KIGFX::VIEW::MarkTargetDirty().

◆ m_drawingSheet

std::unique_ptr<DS_PROXY_VIEW_ITEM> KIGFX::SCH_VIEW::m_drawingSheet
private

Definition at line 103 of file sch_view.h.

Referenced by Cleanup(), DisplaySheet(), and GetDrawingSheet().

◆ m_dynamic

bool KIGFX::VIEW::m_dynamic
protectedinherited

Flag to mark targets as dirty so they have to be redrawn on the next refresh event.

Definition at line 877 of file view.h.

Referenced by KIGFX::VIEW::IsDynamic().

◆ m_enableOrderModifier

bool KIGFX::VIEW::m_enableOrderModifier
protectedinherited

The set of possible displayed layers and its properties.

Definition at line 834 of file view.h.

Referenced by KIGFX::VIEW::ClearTopLayers(), KIGFX::VIEW::EnableTopLayer(), and KIGFX::VIEW::SetTopLayer().

◆ m_frame

SCH_BASE_FRAME* KIGFX::SCH_VIEW::m_frame
private

Definition at line 100 of file sch_view.h.

Referenced by DisplaySheet(), SCH_VIEW(), and SetScale().

◆ m_gal

◆ m_layers

◆ m_maxScale

double KIGFX::VIEW::m_maxScale
protectedinherited

Horizontal flip flag.

Definition at line 861 of file view.h.

Referenced by KIGFX::VIEW::SetScale(), and KIGFX::VIEW::SetScaleLimits().

◆ m_minScale

double KIGFX::VIEW::m_minScale
protectedinherited

Scale upper limit.

Definition at line 858 of file view.h.

Referenced by KIGFX::VIEW::SetScale(), and KIGFX::VIEW::SetScaleLimits().

◆ m_mirrorX

bool KIGFX::VIEW::m_mirrorX
protectedinherited

Vertical flip flag.

Definition at line 864 of file view.h.

Referenced by KIGFX::VIEW::IsMirroredX(), KIGFX::VIEW::SetGAL(), and KIGFX::VIEW::SetMirror().

◆ m_mirrorY

bool KIGFX::VIEW::m_mirrorY
protectedinherited

PAINTER contains information how do draw items.

Definition at line 867 of file view.h.

Referenced by KIGFX::VIEW::IsMirroredY(), KIGFX::VIEW::SetGAL(), and KIGFX::VIEW::SetMirror().

◆ m_nextDrawPriority

int KIGFX::VIEW::m_nextDrawPriority
protectedinherited

Flag to reverse the draw order when using draw priority.

Definition at line 889 of file view.h.

Referenced by KIGFX::VIEW::Add(), and KIGFX::VIEW::Clear().

◆ m_orderedLayers

std::vector<VIEW_LAYER*> KIGFX::VIEW::m_orderedLayers
protectedinherited

Flat list of all items.

Definition at line 840 of file view.h.

Referenced by KIGFX::VIEW::Query(), KIGFX::VIEW::redrawRect(), and KIGFX::VIEW::sortLayers().

◆ m_ownedItems

std::vector<EDA_ITEM *> KIGFX::VIEW::m_ownedItems
protectedinherited

Whether to use rendering order modifier or not.

Definition at line 831 of file view.h.

Referenced by KIGFX::VIEW::AddToPreview(), and KIGFX::VIEW::ClearPreview().

◆ m_painter

PAINTER* KIGFX::VIEW::m_painter
protectedinherited

◆ m_preview

std::unique_ptr<KIGFX::VIEW_GROUP> KIGFX::VIEW::m_preview
protectedinherited

◆ m_reverseDrawOrder

bool KIGFX::VIEW::m_reverseDrawOrder
protectedinherited

◆ m_scale

double KIGFX::VIEW::m_scale
protectedinherited

◆ m_topLayers

std::set<unsigned int> KIGFX::VIEW::m_topLayers
protectedinherited

Center point of the VIEW (the point at which we are looking at).

Definition at line 846 of file view.h.

Referenced by KIGFX::VIEW::ClearTopLayers(), KIGFX::VIEW::EnableTopLayer(), KIGFX::VIEW::GetTopLayer(), and KIGFX::VIEW::SetTopLayer().

◆ m_useDrawPriority

bool KIGFX::VIEW::m_useDrawPriority
protectedinherited

The next sequential drawing priority.

Definition at line 886 of file view.h.

Referenced by KIGFX::VIEW::IsUsingDrawPriority(), KIGFX::VIEW::redrawRect(), and KIGFX::VIEW::UseDrawPriority().

◆ TOP_LAYER_MODIFIER

const int KIGFX::VIEW::TOP_LAYER_MODIFIER = -VIEW_MAX_LAYERS
staticprotectedinherited

Flag to respect draw priority when drawing items.

Definition at line 883 of file view.h.

Referenced by KIGFX::VIEW::ClearTopLayers(), KIGFX::VIEW::EnableTopLayer(), and KIGFX::VIEW::SetTopLayer().

◆ VIEW_MAX_LAYERS


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