KiCad PCB EDA Suite
KIGFX::PCB_VIEW Class Reference

#include <pcb_view.h>

Inheritance diagram for KIGFX::PCB_VIEW:
KIGFX::VIEW

Public Types

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

Public Member Functions

 PCB_VIEW (bool aIsDynamic=true)
 
virtual ~PCB_VIEW ()
 
virtual void Add (VIEW_ITEM *aItem, int aDrawPriority=-1) override
 Add a VIEW_ITEM to the view. More...
 
virtual void Remove (VIEW_ITEM *aItem) override
 Remove a VIEW_ITEM from the view. More...
 
virtual void Update (const VIEW_ITEM *aItem, int aUpdateFlags) const override
 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 override
 For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has changed. More...
 
void UpdateDisplayOptions (const PCB_DISPLAY_OPTIONS &aOptions)
 
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...
 
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...
 
virtual void SetScale (double aScale, VECTOR2D aAnchor={ 0, 0 })
 Set the scaling factor, zooming around a given anchor point. 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 std::vector< BOX2D > &obscuringScreenRects)
 Set the center point of the VIEW, attempting to avoid obscuringScreenRects (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 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)
 
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
 
double m_scale
 
BOX2D m_boundary
 
double m_minScale
 
double m_maxScale
 
bool m_mirrorX
 
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...
 

Detailed Description

Definition at line 36 of file pcb_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

◆ PCB_VIEW()

KIGFX::PCB_VIEW::PCB_VIEW ( bool  aIsDynamic = true)

Definition at line 38 of file pcb_view.cpp.

38  :
39  VIEW( aIsDynamic )
40 {
41  // Set m_boundary to define the max area size. The default value is acceptable for Pcbnew
42  // and Gerbview.
43  // However, ensure this area has the right size (max size allowed by integer coordinates) in
44  // case of the default value is changed. Could be a size depending on the drawing-sheet size.
45  typedef std::numeric_limits<int> coord_limits;
46  double pos = coord_limits::lowest() / 2 + coord_limits::epsilon();
47  double size = coord_limits::max() - coord_limits::epsilon();
48  m_boundary.SetOrigin( pos, pos );
49  m_boundary.SetSize( size, size );
50 }
void SetSize(const Vec &size)
Definition: box2.h:195
BOX2D m_boundary
Definition: view.h:837
void SetOrigin(const Vec &pos)
Definition: box2.h:193
VIEW(bool aIsDynamic=true)
Definition: view.cpp:258

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

◆ ~PCB_VIEW()

KIGFX::PCB_VIEW::~PCB_VIEW ( )
virtual

Definition at line 53 of file pcb_view.cpp.

54 {
55 }

Member Function Documentation

◆ Add()

void KIGFX::PCB_VIEW::Add ( KIGFX::VIEW_ITEM aItem,
int  aDrawPriority = -1 
)
overridevirtual

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 from KIGFX::VIEW.

Definition at line 58 of file pcb_view.cpp.

59 {
60  BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( aItem );
61 
62  if( boardItem && boardItem->Type() == PCB_FOOTPRINT_T )
63  {
64  FOOTPRINT* footprint = static_cast<FOOTPRINT*>( boardItem );
65  footprint->RunOnChildren( [this]( BOARD_ITEM* aChild )
66  {
67  VIEW::Add( aChild );
68  } );
69  }
70 
71  VIEW::Add( aItem, aDrawPriority );
72 }
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:49
class FOOTPRINT, a footprint
Definition: typeinfo.h:88
void RunOnChildren(const std::function< void(BOARD_ITEM *)> &aFunction) const
Invoke a function on all BOARD_ITEMs that belong to the footprint (pads, drawings,...
Definition: footprint.cpp:1280
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:318
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References KIGFX::VIEW::Add(), PCB_FOOTPRINT_T, FOOTPRINT::RunOnChildren(), and EDA_ITEM::Type().

Referenced by PCB_TOOL_BASE::doInteractiveItemPlacement(), MICROWAVE_TOOL::drawMicrowaveInductor(), PCB_VIEWER_TOOLS::MeasureTool(), BOARD_EDITOR_CONTROL::PlaceTarget(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), PCB_SELECTION_TOOL::Reset(), DIALOG_FOOTPRINT_CHECKER::runChecks(), PCB_SELECTION_TOOL::selectMultiple(), and PCB_SELECTION_TOOL::zoomFitSelection().

◆ AddToPreview()

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

Definition at line 1556 of file view.cpp.

1557 {
1558  Hide( aItem, false );
1559  m_preview->Add( aItem );
1560 
1561  if( aTakeOwnership )
1562  m_ownedItems.push_back( aItem );
1563 
1564  SetVisible( m_preview.get(), true );
1565  Hide( m_preview.get(), false );
1566  Update( m_preview.get() );
1567 }
void Hide(VIEW_ITEM *aItem, bool aHide=true)
Temporarily hide the item in the view (e.g.
Definition: view.cpp:1479
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:813
std::vector< EDA_ITEM * > m_ownedItems
Whether to use rendering order modifier or not.
Definition: view.h:816
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Set the item visibility.
Definition: view.cpp:1458
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:1512

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 1372 of file view.cpp.

1373 {
1374  wxCHECK( (unsigned) aLayerId < m_layers.size(), false );
1375 
1376  std::set<int>::const_iterator it, it_end;
1377 
1378  for( int layer : m_layers.at( aLayerId ).requiredLayers )
1379  {
1380  // That is enough if just one layer is not enabled
1381  if( !m_layers.at( layer ).visible || !areRequiredLayersEnabled( layer ) )
1382  return false;
1383  }
1384 
1385  return true;
1386 }
bool areRequiredLayersEnabled(int aLayerId) const
Definition: view.cpp:1372
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822

References KIGFX::VIEW::m_layers.

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

◆ Clear()

void KIGFX::VIEW::Clear ( )
inherited

Remove all items from the view.

Definition at line 1104 of file view.cpp.

1105 {
1106  BOX2I r;
1107  r.SetMaximum();
1108  m_allItems->clear();
1109 
1110  for( VIEW_LAYER& layer : m_layers )
1111  layer.items->RemoveAll();
1112 
1113  m_nextDrawPriority = 0;
1114 
1115  m_gal->ClearCache();
1116 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:828
E_SERIE r
Definition: eserie.cpp:41
int m_nextDrawPriority
Flag to reverse the draw order when using draw priority.
Definition: view.h:864
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
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 r.

Referenced by KIGFX::SCH_VIEW::Cleanup(), GERBVIEW_FRAME::Clear_DrawLayers(), PCB_DRAW_PANEL_GAL::DisplayBoard(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), SCH_DRAW_PANEL::DisplaySheet(), SCH_DRAW_PANEL::DisplaySymbol(), KIGFX::SCH_VIEW::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 1195 of file view.cpp.

1196 {
1197  BOX2I r;
1198 
1199  r.SetMaximum();
1200  CLEAR_LAYER_CACHE_VISITOR visitor( this );
1201 
1202  for( VIEW_LAYER& layer : m_layers )
1203  layer.items->Query( r, visitor );
1204 }
E_SERIE r
Definition: eserie.cpp:41
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822

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

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

◆ ClearPreview()

void KIGFX::VIEW::ClearPreview ( )
inherited

Definition at line 1534 of file view.cpp.

1535 {
1536  if( !m_preview )
1537  return;
1538 
1539  m_preview->Clear();
1540 
1541  for( EDA_ITEM *item : m_ownedItems )
1542  delete item;
1543 
1544  m_ownedItems.clear();
1545  Update( m_preview.get() );
1546 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:813
std::vector< EDA_ITEM * > m_ownedItems
Whether to use rendering order modifier or not.
Definition: view.h:816
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:1512

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 1119 of file view.cpp.

1120 {
1122  {
1123  // TARGET_CACHED and TARGET_NONCACHED have to be redrawn together, as they contain
1124  // layers that rely on each other (eg. netnames are noncached, but tracks - are cached)
1127 
1128  MarkDirty();
1129  }
1130 
1131  if( IsTargetDirty( TARGET_OVERLAY ) )
1132  {
1134  }
1135 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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 882 of file view.cpp.

883 {
884  std::set<unsigned int>::iterator it;
885 
887  {
888  // Restore the previous rendering order for layers that were marked as top
889  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
890  m_layers[*it].renderingOrder -= TOP_LAYER_MODIFIER;
891  }
892 
893  m_topLayers.clear();
894 }
static const int TOP_LAYER_MODIFIER
Flag to respect draw priority when drawing items.
Definition: view.h:858
std::set< unsigned int > m_topLayers
Center point of the VIEW (the point at which we are looking at).
Definition: view.h:831
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
bool m_enableOrderModifier
The set of possible displayed layers and its properties.
Definition: view.h:819

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 800 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 485 of file view.cpp.

486 {
487  wxASSERT_MSG( false, wxT( "This is not implemented" ) );
488 }

◆ 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 1448 of file view.cpp.

1449 {
1450  std::unique_ptr<VIEW> ret = std::make_unique<VIEW>();
1451  ret->m_allItems = m_allItems;
1452  ret->m_layers = m_layers;
1453  ret->sortLayers();
1454  return ret;
1455 }
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:828
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822

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

Referenced by BOARD_PRINTOUT::DrawPage().

◆ 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 1020 of file view.cpp.

1021 {
1022  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1023 
1024  if( !viewData )
1025  return;
1026 
1027  if( IsCached( aLayer ) && !aImmediate )
1028  {
1029  // Draw using cached information or create one
1030  int group = viewData->getGroup( aLayer );
1031 
1032  if( group >= 0 )
1033  m_gal->DrawGroup( group );
1034  else
1035  Update( aItem );
1036  }
1037  else
1038  {
1039  // Immediate mode
1040  if( !m_painter->Draw( aItem, aLayer ) )
1041  aItem->ViewDraw( aLayer, this ); // Alternative drawing method
1042  }
1043 }
virtual void DrawGroup(int aGroupNumber)
Draw the stored group.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:845
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:1512

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 1046 of file view.cpp.

1047 {
1048  int layers[VIEW_MAX_LAYERS], layers_count;
1049 
1050  aItem->ViewGetLayers( layers, layers_count );
1051 
1052  // Sorting is needed for drawing order dependent GALs (like Cairo)
1053  SortLayers( layers, layers_count );
1054 
1055  for( int i = 0; i < layers_count; ++i )
1056  {
1057  m_gal->SetLayerDepth( m_layers.at( layers[i] ).renderingOrder );
1058  draw( aItem, layers[i], aImmediate );
1059  }
1060 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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:711
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:647
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
void draw(VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
Draw an item, but on a specified layers.
Definition: view.cpp:1020

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 1063 of file view.cpp.

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

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 857 of file view.cpp.

858 {
859  if( aEnable == m_enableOrderModifier )
860  return;
861 
862  m_enableOrderModifier = aEnable;
863 
864  std::set<unsigned int>::iterator it;
865 
866  if( aEnable )
867  {
868  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
869  m_layers[*it].renderingOrder += TOP_LAYER_MODIFIER;
870  }
871  else
872  {
873  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
874  m_layers[*it].renderingOrder -= TOP_LAYER_MODIFIER;
875  }
876 
879 }
static const int TOP_LAYER_MODIFIER
Flag to respect draw priority when drawing items.
Definition: view.h:858
std::set< unsigned int > m_topLayers
Center point of the VIEW (the point at which we are looking at).
Definition: view.h:831
void UpdateAllLayersOrder()
Do everything that is needed to apply the rendering order of layers.
Definition: view.cpp:897
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
bool m_enableOrderModifier
The set of possible displayed layers and its properties.
Definition: view.h:819
void UpdateAllLayersColor()
Apply the new coloring scheme to all layers.
Definition: view.cpp:766

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
Definition: view.h:837

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
Definition: view.h:834

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().

◆ 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:848

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::VIEW_GROUP::ViewDraw(), KIGFX::PREVIEW::SELECTION_AREA::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 641 of file view.cpp.

642 {
643  return m_layers.at( aLayer ).renderingOrder;
644 }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822

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:845

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(), 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::VIEW_GROUP::ViewDraw(), KIGFX::PREVIEW::SELECTION_AREA::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 1171 of file view.cpp.

1172 {
1173  return m_gal->GetScreenPixelSize();
1174 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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 821 of file view.cpp.

822 {
823  if( m_topLayers.size() == 0 )
824  return 0;
825 
826  return *m_topLayers.begin();
827 }
std::set< unsigned int > m_topLayers
Center point of the VIEW (the point at which we are looking at).
Definition: view.h:831

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 510 of file view.cpp.

511 {
512  BOX2D rect;
513  VECTOR2D screenSize = m_gal->GetScreenPixelSize();
514 
515  rect.SetOrigin( ToWorld( VECTOR2D( 0, 0 ) ) );
516  rect.SetEnd( ToWorld( screenSize ) );
517 
518  return rect.Normalize();
519 }
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:447
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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(), PCB_BASE_FRAME::FocusOnItem(), 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 1479 of file view.cpp.

1480 {
1481  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1482 
1483  if( !viewData )
1484  return;
1485 
1486  if( !( viewData->m_flags & VISIBLE ) )
1487  return;
1488 
1489  if( aHide )
1490  viewData->m_flags |= HIDDEN;
1491  else
1492  viewData->m_flags &= ~HIDDEN;
1493 
1494  Update( aItem, APPEARANCE );
1495 }
Item is temporarily hidden (e.g.
Definition: view_item.h:61
Visibility flag has changed.
Definition: view_item.h:47
Item is visible (in general)
Definition: view_item.h:60
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:1512

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(), KIGFX::SCH_VIEW::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().

◆ InitPreview()

void KIGFX::VIEW::InitPreview ( )
inherited

Definition at line 1549 of file view.cpp.

1550 {
1551  m_preview.reset( new KIGFX::VIEW_GROUP() );
1552  Add( m_preview.get() );
1553 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:813
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:318

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

Referenced by KIGFX::SCH_VIEW::DisplaySheet(), KIGFX::SCH_VIEW::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 1207 of file view.cpp.

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

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:822
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().

◆ 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:852

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:842

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:855

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 672 of file view.h.

673  {
674  return m_useDrawPriority;
675  }
bool m_useDrawPriority
The next sequential drawing priority.
Definition: view.h:861

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 1498 of file view.cpp.

1499 {
1500  const VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1501 
1502  return viewData && ( viewData->m_flags & VISIBLE );
1503 }
Item is visible (in general)
Definition: view_item.h:60

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 1525 of file view.cpp.

1526 {
1527  std::shared_ptr<VIEW_OVERLAY> overlay( new VIEW_OVERLAY );
1528 
1529  Add( overlay.get() );
1530  return overlay;
1531 }
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:318

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:855

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

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

◆ MarkDirty()

◆ markTargetClean()

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

Definition at line 735 of file view.h.

736  {
737  wxCHECK( aTarget < TARGETS_NUMBER, /* void */ );
738  m_dirtyTargets[aTarget] = false;
739  }
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:855

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 243 of file view.cpp.

244 {
245  VIEW_ITEM_DATA* data = aItem->viewPrivData();
246 
247  if( !data )
248  return;
249 
250  if( data->m_view )
251  data->m_view->VIEW::Remove( aItem );
252 
253  delete data;
254  aItem->ClearViewPrivData();
255 }

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 424 of file view.cpp.

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

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 1389 of file view.cpp.

1390 {
1391  BOX2I r;
1392 
1393  r.SetMaximum();
1394 
1395  for( const VIEW_LAYER& l : m_layers )
1396  {
1397  if( IsCached( l.id ) )
1398  {
1399  RECACHE_ITEM_VISITOR visitor( this, m_gal, l.id );
1400  l.items->Query( r, visitor );
1401  }
1402  }
1403 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
E_SERIE r
Definition: eserie.cpp:41
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
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 r.

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 1138 of file view.cpp.

1139 {
1140 #ifdef KICAD_GAL_PROFILE
1141  PROF_COUNTER totalRealTime;
1142 #endif /* KICAD_GAL_PROFILE */
1143 
1144  VECTOR2D screenSize = m_gal->GetScreenPixelSize();
1145  BOX2D rect( ToWorld( VECTOR2D( 0, 0 ) ),
1146  ToWorld( screenSize ) - ToWorld( VECTOR2D( 0, 0 ) ) );
1147 
1148  rect.Normalize();
1149  BOX2I recti( rect.GetPosition(), rect.GetSize() );
1150 
1151  // The view rtree uses integer positions. Large screens can overflow this size so in
1152  // this case, simply set the rectangle to the full rtree.
1153  if( rect.GetWidth() > std::numeric_limits<int>::max()
1154  || rect.GetHeight() > std::numeric_limits<int>::max() )
1155  {
1156  recti.SetMaximum();
1157  }
1158 
1159  redrawRect( recti );
1160 
1161  // All targets were redrawn, so nothing is dirty
1162  MarkClean();
1163 
1164 #ifdef KICAD_GAL_PROFILE
1165  totalRealTime.Stop();
1166  wxLogTrace( traceGalProfile, "VIEW::Redraw(): %.1f ms", totalRealTime.msecs() );
1167 #endif /* KICAD_GAL_PROFILE */
1168 }
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:447
double msecs(bool aSinceLast=false)
Definition: profile.h:146
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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:987
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 987 of file view.cpp.

988 {
989  for( VIEW_LAYER* l : m_orderedLayers )
990  {
991  if( l->visible && IsTargetDirty( l->target ) && areRequiredLayersEnabled( l->id ) )
992  {
993  DRAW_ITEM_VISITOR drawFunc( this, l->id, m_useDrawPriority, m_reverseDrawOrder );
994 
995  m_gal->SetTarget( l->target );
996  m_gal->SetLayerDepth( l->renderingOrder );
997 
998  // Differential layer also work for the negatives, since both special layer types
999  // will composite on separate layers (at least in Cairo)
1000  if( l->diffLayer )
1001  m_gal->StartDiffLayer();
1002  else if( l->hasNegatives )
1004 
1005 
1006  l->items->Query( aRect, drawFunc );
1007 
1008  if( m_useDrawPriority )
1009  drawFunc.deferredDraw();
1010 
1011  if( l->diffLayer )
1012  m_gal->EndDiffLayer();
1013  else if( l->hasNegatives )
1015  }
1016  }
1017 }
bool m_useDrawPriority
The next sequential drawing priority.
Definition: view.h:861
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
bool areRequiredLayersEnabled(int aLayerId) const
Definition: view.cpp:1372
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:867
virtual void StartDiffLayer()
Begins rendering of a differential layer.
std::vector< VIEW_LAYER * > m_orderedLayers
Flat list of all items.
Definition: view.h:825
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::PCB_VIEW::Remove ( KIGFX::VIEW_ITEM aItem)
overridevirtual

Remove a VIEW_ITEM from the view.

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

Reimplemented from KIGFX::VIEW.

Definition at line 75 of file pcb_view.cpp.

76 {
77  BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( aItem );
78 
79  if( boardItem && boardItem->Type() == PCB_FOOTPRINT_T )
80  {
81  FOOTPRINT* footprint = static_cast<FOOTPRINT*>( boardItem );
82  footprint->RunOnChildren( [this]( BOARD_ITEM* aChild )
83  {
84  VIEW::Remove( aChild );
85  } );
86  }
87 
88  VIEW::Remove( aItem );
89 }
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:49
virtual void Remove(VIEW_ITEM *aItem)
Remove a VIEW_ITEM from the view.
Definition: view.cpp:348
class FOOTPRINT, a footprint
Definition: typeinfo.h:88
void RunOnChildren(const std::function< void(BOARD_ITEM *)> &aFunction) const
Invoke a function on all BOARD_ITEMs that belong to the footprint (pads, drawings,...
Definition: footprint.cpp:1280
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References PCB_FOOTPRINT_T, KIGFX::VIEW::Remove(), FOOTPRINT::RunOnChildren(), and EDA_ITEM::Type().

Referenced by PCB_TOOL_BASE::doInteractiveItemPlacement(), MICROWAVE_TOOL::drawMicrowaveInductor(), PCB_VIEWER_TOOLS::MeasureTool(), DIALOG_DRC::OnDRCItemRClick(), BOARD_EDITOR_CONTROL::PlaceTarget(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), PCB_SELECTION_TOOL::Reset(), PCB_SELECTION_TOOL::selectMultiple(), and FOOTPRINT_PREVIEW_PANEL::~FOOTPRINT_PREVIEW_PANEL().

◆ 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 675 of file view.cpp.

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

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().

◆ 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 690 of file view.h.

691  {
692  m_reverseDrawOrder = aFlag;
693  }
bool m_reverseDrawOrder
Definition: view.h:867

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
Definition: view.h:837

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
Definition: view.h:837
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 576 of file view.cpp.

577 {
578  m_center = aCenter;
579 
580  if( !m_boundary.Contains( aCenter ) )
581  {
582  if( m_center.x < m_boundary.GetLeft() )
584  else if( aCenter.x > m_boundary.GetRight() )
586 
587  if( m_center.y < m_boundary.GetTop() )
589  else if( m_center.y > m_boundary.GetBottom() )
591  }
592 
595 
596  // Redraw everything after the viewport has changed
597  MarkDirty();
598 }
coord_type GetTop() const
Definition: box2.h:187
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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
Definition: view.h:834
bool Contains(const Vec &aPoint) const
Definition: box2.h:134
BOX2D m_boundary
Definition: view.h:837
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(), 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 std::vector< BOX2D > &  obscuringScreenRects 
)
inherited

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

Parameters
aCenterthe new center point, in world space coordinates.
obscuringScreenRectsthe obscuring rects, in screen space coordinates.

Definition at line 601 of file view.cpp.

602 {
603  if( obscuringScreenRects.empty() )
604  return SetCenter( aCenter );
605 
606  BOX2D screenRect( { 0, 0 }, m_gal->GetScreenPixelSize() );
607  SHAPE_POLY_SET unobscuredPoly( screenRect );
608  VECTOR2D unobscuredCenter = screenRect.Centre();
609 
610  for( const BOX2D& obscuringScreenRect : obscuringScreenRects )
611  {
612  SHAPE_POLY_SET obscuringPoly( obscuringScreenRect );
613  unobscuredPoly.BooleanSubtract( obscuringPoly, SHAPE_POLY_SET::PM_FAST );
614  }
615 
616  /*
617  * Perform a step-wise deflate to find the center of the largest unobscured area
618  */
619 
620  BOX2I bbox = unobscuredPoly.BBox();
621  int step = std::min( bbox.GetWidth(), bbox.GetHeight() ) / 10;
622 
623  while( !unobscuredPoly.IsEmpty() )
624  {
625  unobscuredCenter = (wxPoint) unobscuredPoly.BBox().Centre();
626  unobscuredPoly.Deflate( step, 4 );
627  }
628 
629  SetCenter( aCenter - ToWorld( unobscuredCenter - screenRect.Centre(), false ) );
630 }
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:447
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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:576
Represent a set of closed polygons.
coord_type GetWidth() const
Definition: box2.h:180
coord_type GetHeight() const
Definition: box2.h:181

References BOX2< Vec >::GetHeight(), KIGFX::GAL::GetScreenPixelSize(), BOX2< Vec >::GetWidth(), KIGFX::VIEW::m_gal, SHAPE_POLY_SET::PM_FAST, KIGFX::VIEW::SetCenter(), and KIGFX::VIEW::ToWorld().

◆ 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 491 of file view.cpp.

492 {
493  bool recacheGroups = ( m_gal != nullptr ); // recache groups only if GAL is reassigned
494  m_gal = aGal;
495 
496  // clear group numbers, so everything is going to be recached
497  if( recacheGroups )
498  clearGroupCache();
499 
500  // every target has to be refreshed
501  MarkDirty();
502 
503  // force the new GAL to display the current viewport.
504  SetCenter( m_center );
505  SetScale( m_scale );
507 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
void SetMirror(bool aMirrorX, bool aMirrorY)
Control the mirroring of the VIEW.
Definition: view.cpp:537
VECTOR2D m_center
Definition: view.h:834
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:576
bool m_mirrorX
Definition: view.h:841
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:550
void clearGroupCache()
Definition: view.cpp:1195
bool m_mirrorY
PAINTER contains information how do draw items.
Definition: view.h:842
double m_scale
Definition: view.h:836
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:822

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:822

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:822

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 633 of file view.cpp.

634 {
635  m_layers[aLayer].renderingOrder = aRenderingOrder;
636 
637  sortLayers();
638 }
void sortLayers()
Clear cached GAL group numbers (ONLY numbers stored in VIEW_ITEMs, not group objects used by GAL)
Definition: view.cpp:1249
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822

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:822

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:822

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 537 of file view.cpp.

538 {
539  wxASSERT_MSG( !aMirrorY, _( "Mirroring for Y axis is not supported yet" ) );
540 
541  m_mirrorX = aMirrorX;
542  m_mirrorY = aMirrorY;
543  m_gal->SetFlip( aMirrorX, aMirrorY );
544 
545  // Redraw everything
546  MarkDirty();
547 }
void SetFlip(bool xAxis, bool yAxis)
Sets flipping of the screen.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
bool m_mirrorX
Definition: view.h:841
#define _(s)
bool m_mirrorY
PAINTER contains information how do draw items.
Definition: view.h:842
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:845

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 388 of file view.cpp.

389 {
390  wxCHECK( (unsigned) aLayerId < m_layers.size(), /*void*/ );
391  wxCHECK( (unsigned) aRequiredId < m_layers.size(), /*void*/ );
392 
393  if( aRequired )
394  m_layers[aLayerId].requiredLayers.insert( aRequiredId );
395  else
396  m_layers[aLayerId].requiredLayers.erase( aRequired );
397 }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822

References KIGFX::VIEW::m_layers.

Referenced by PCB_DRAW_PANEL_GAL::setDefaultLayerDeps().

◆ SetScale()

void KIGFX::VIEW::SetScale ( double  aScale,
VECTOR2D  aAnchor = { 0, 0 } 
)
virtualinherited

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 in KIGFX::SCH_VIEW.

Definition at line 550 of file view.cpp.

551 {
552  if( aAnchor == VECTOR2D( 0, 0 ) )
553  aAnchor = m_center;
554 
555  VECTOR2D a = ToScreen( aAnchor );
556 
557  if( aScale < m_minScale )
559  else if( aScale > m_maxScale )
561  else
562  m_scale = aScale;
563 
566 
567  VECTOR2D delta = ToWorld( a ) - aAnchor;
568 
569  SetCenter( m_center - delta );
570 
571  // Redraw everything after the viewport has changed
572  MarkDirty();
573 }
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:447
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
virtual void ComputeWorldScreenMatrix()
Compute the world <-> screen transformation matrix.
VECTOR2D m_center
Definition: view.h:834
double m_minScale
Definition: view.h:838
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:576
VECTOR2< double > VECTOR2D
Definition: vector2d.h:622
VECTOR2D ToScreen(const VECTOR2D &aCoord, bool aAbsolute=true) const
Convert a world space point/vector to a point/vector in screen space coordinates.
Definition: view.cpp:466
double m_maxScale
Definition: view.h:839
void SetZoomFactor(double aZoomFactor)
Set the zoom factor of the scene.
double m_scale
Definition: view.h:836
constexpr int delta
void MarkDirty()
Force redraw of view on the next rendering.
Definition: view.h:633

References KIGFX::GAL::ComputeWorldScreenMatrix(), delta, KIGFX::VIEW::m_center, KIGFX::VIEW::m_gal, KIGFX::VIEW::m_maxScale, KIGFX::VIEW::m_minScale, KIGFX::VIEW::m_scale, KIGFX::VIEW::MarkDirty(), KIGFX::VIEW::SetCenter(), KIGFX::GAL::SetZoomFactor(), KIGFX::VIEW::ToScreen(), and KIGFX::VIEW::ToWorld().

Referenced by COMMON_TOOLS::doZoomFit(), COMMON_TOOLS::doZoomToPreset(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), SCH_EDITOR_CONTROL::FindSymbolAndItem(), SYMBOL_PREVIEW_WIDGET::fitOnDrawArea(), FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME(), KIGFX::WX_VIEW_CONTROLS::onMotion(), KIGFX::WX_VIEW_CONTROLS::onWheel(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), ZOOM_TOOL::selectRegion(), KIGFX::VIEW::SetGAL(), KIGFX::SCH_VIEW::SetScale(), KIGFX::VIEW::SetViewport(), PANEL_PCBNEW_COLOR_SETTINGS::zoomFitPreview(), PANEL_EESCHEMA_COLOR_SETTINGS::zoomFitPreview(), and PCB_SELECTION_TOOL::zoomFitSelection().

◆ 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
Definition: view.h:838
double m_maxScale
Definition: view.h:839

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 830 of file view.cpp.

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

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 522 of file view.cpp.

523 {
524  VECTOR2D ssize = ToWorld( m_gal->GetScreenPixelSize(), false );
525 
526  wxCHECK( ssize.x > 0 && ssize.y > 0, /*void*/ );
527 
528  VECTOR2D centre = aViewport.Centre();
529  VECTOR2D vsize = aViewport.GetSize();
530  double zoom = 1.0 / std::max( fabs( vsize.x / ssize.x ), fabs( vsize.y / ssize.y ) );
531 
532  SetCenter( centre );
533  SetScale( GetScale() * zoom );
534 }
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:447
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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:576
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:550
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 1458 of file view.cpp.

1459 {
1460  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1461 
1462  if( !viewData )
1463  return;
1464 
1465  bool cur_visible = viewData->m_flags & VISIBLE;
1466 
1467  if( cur_visible != aIsVisible )
1468  {
1469  if( aIsVisible )
1470  viewData->m_flags |= VISIBLE;
1471  else
1472  viewData->m_flags &= ~VISIBLE;
1473 
1474  Update( aItem, APPEARANCE | COLOR );
1475  }
1476 }
Visibility flag has changed.
Definition: view_item.h:47
Color has changed.
Definition: view_item.h:48
Item is visible (in general)
Definition: view_item.h:60
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:1512

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 1570 of file view.cpp.

1571 {
1572  SetVisible( m_preview.get(), aShow );
1573 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:813
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Set the item visibility.
Definition: view.cpp:1458

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 647 of file view.cpp.

648 {
649  int maxLay, maxOrd, maxIdx;
650 
651  for( int i = 0; i < aCount; ++i )
652  {
653  maxLay = aLayers[i];
654  maxOrd = GetLayerOrder( maxLay );
655  maxIdx = i;
656 
657  // Look for the max element in the range (j..aCount)
658  for( int j = i; j < aCount; ++j )
659  {
660  if( maxOrd < GetLayerOrder( aLayers[j] ) )
661  {
662  maxLay = aLayers[j];
663  maxOrd = GetLayerOrder( maxLay );
664  maxIdx = j;
665  }
666  }
667 
668  // Swap elements
669  aLayers[maxIdx] = aLayers[i];
670  aLayers[i] = maxLay;
671  }
672 }
int GetLayerOrder(int aLayer) const
Return rendering order of a particular layer.
Definition: view.cpp:641

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 1249 of file view.cpp.

1250 {
1251  int n = 0;
1252 
1253  m_orderedLayers.resize( m_layers.size() );
1254 
1255  for( VIEW_LAYER& layer : m_layers )
1256  m_orderedLayers[n++] = &layer;
1257 
1258  sort( m_orderedLayers.begin(), m_orderedLayers.end(), compareRenderingOrder );
1259 
1260  MarkDirty();
1261 }
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
std::vector< VIEW_LAYER * > m_orderedLayers
Flat list of all items.
Definition: view.h:825
static bool compareRenderingOrder(VIEW_LAYER *aI, VIEW_LAYER *aJ)
Check if every layer required by the aLayerId layer is enabled.
Definition: view.h:800
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 466 of file view.cpp.

467 {
468  const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix();
469 
470  if( aAbsolute )
471  return VECTOR2D( matrix * aCoord );
472  else
473  return VECTOR2D( matrix.GetScale().x * aCoord.x, matrix.GetScale().y * aCoord.y );
474 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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(), 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 477 of file view.cpp.

478 {
479  const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix();
480 
481  return matrix.GetScale().x * aSize;
482 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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 447 of file view.cpp.

448 {
449  const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix();
450 
451  if( aAbsolute )
452  return VECTOR2D( matrix * aCoord );
453  else
454  return VECTOR2D( matrix.GetScale().x * aCoord.x, matrix.GetScale().y * aCoord.y );
455 }
const MATRIX3x3D & GetScreenWorldMatrix() const
Get the screen <-> world transformation matrix.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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(), PCB_BASE_FRAME::FocusOnItem(), 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 458 of file view.cpp.

459 {
460  const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix();
461 
462  return fabs( matrix.GetScale().x * aSize );
463 }
const MATRIX3x3D & GetScreenWorldMatrix() const
Get the screen <-> world transformation matrix.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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::PCB_VIEW::Update ( const VIEW_ITEM aItem,
int  aUpdateFlags 
) const
overridevirtual

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 from KIGFX::VIEW.

Definition at line 92 of file pcb_view.cpp.

93 {
94  const BOARD_ITEM* boardItem = dynamic_cast<const BOARD_ITEM*>( aItem );
95 
96  if( boardItem && boardItem->Type() == PCB_FOOTPRINT_T )
97  {
98  const FOOTPRINT* footprint = static_cast<const FOOTPRINT*>( boardItem );
99  footprint->RunOnChildren(
100  [this, aUpdateFlags]( BOARD_ITEM* child )
101  {
102  VIEW::Update( child, aUpdateFlags );
103  } );
104  }
105  else if( boardItem && boardItem->Type() == PCB_GROUP_T )
106  {
107  const PCB_GROUP* group = static_cast<const PCB_GROUP*>( boardItem );
108  group->RunOnChildren(
109  [this, aUpdateFlags]( BOARD_ITEM* child )
110  {
111  Update( child, aUpdateFlags );
112  } );
113  }
114 
115  VIEW::Update( aItem, aUpdateFlags );
116 }
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:49
class PCB_GROUP, a set of BOARD_ITEMs
Definition: typeinfo.h:108
A set of BOARD_ITEMs (i.e., without duplicates).
Definition: pcb_group.h:50
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const override
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: pcb_view.cpp:92
class FOOTPRINT, a footprint
Definition: typeinfo.h:88
void RunOnChildren(const std::function< void(BOARD_ITEM *)> &aFunction) const
Invoke a function on all BOARD_ITEMs that belong to the footprint (pads, drawings,...
Definition: footprint.cpp:1280
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:1512
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References group, PCB_FOOTPRINT_T, PCB_GROUP_T, FOOTPRINT::RunOnChildren(), EDA_ITEM::Type(), and KIGFX::VIEW::Update().

Referenced by PCB_SELECTION_TOOL::ClearSelection(), PCB_TOOL_BASE::doInteractiveItemPlacement(), MICROWAVE_TOOL::drawMicrowaveInductor(), PCB_EDIT_FRAME::Edit_Zone_Params(), DIALOG_DRC::ExcludeMarker(), PCB_BASE_FRAME::FocusOnItem(), PCB_VIEWER_TOOLS::GraphicOutlines(), PCB_SELECTION_TOOL::highlight(), PCB_VIEWER_TOOLS::MeasureTool(), DIALOG_DRC::OnDRCItemRClick(), PCB_VIEWER_TOOLS::PadDisplayMode(), BOARD_EDITOR_CONTROL::PlaceTarget(), DIALOG_BOARD_REANNOTATE::ReannotateBoard(), refreshCallback(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), FOOTPRINT_EDITOR_CONTROL::Save(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), PCB_SELECTION_TOOL::selectMultiple(), PCB_VIEWER_TOOLS::ShowPadNumbers(), GLOBAL_EDIT_TOOL::swapBoardItem(), GLOBAL_EDIT_TOOL::SwapLayers(), PCB_VIEWER_TOOLS::TextOutlines(), PCB_CONTROL::TrackDisplayMode(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataFromWindow(), PCB_SELECTION_TOOL::unhighlight(), Update(), PCB_CONTROL::ViaDisplayMode(), and PCB_CONTROL::ZoneDisplayMode().

◆ Update() [2/2]

void KIGFX::PCB_VIEW::Update ( const VIEW_ITEM aItem) const
overridevirtual

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 from KIGFX::VIEW.

Definition at line 119 of file pcb_view.cpp.

120 {
121  PCB_VIEW::Update( aItem, KIGFX::ALL );
122 }
All except INITIAL_ADD.
Definition: view_item.h:53
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const override
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: pcb_view.cpp:92

References KIGFX::ALL, and 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 1434 of file view.cpp.

1436 {
1437  for( VIEW_ITEM* item : *m_allItems )
1438  {
1439  if( aCondition( item ) )
1440  {
1441  if( item->viewPrivData() )
1442  item->viewPrivData()->m_requiredUpdate |= aUpdateFlags;
1443  }
1444  }
1445 }
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:828

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 766 of file view.cpp.

767 {
768  if( m_gal->IsVisible() )
769  {
770  GAL_UPDATE_CONTEXT ctx( m_gal );
771 
772  for( VIEW_ITEM* item : *m_allItems )
773  {
774  VIEW_ITEM_DATA* viewData = item->viewPrivData();
775 
776  if( !viewData )
777  continue;
778 
779  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
780  viewData->getLayers( layers, layers_count );
781 
782  for( int i = 0; i < layers_count; ++i )
783  {
784  const COLOR4D color = m_painter->GetSettings()->GetColor( item, layers[i] );
785  int group = viewData->getGroup( layers[i] );
786 
787  if( group >= 0 )
788  m_gal->ChangeGroupColor( group, color );
789  }
790  }
791  }
792 
793  MarkDirty();
794 }
friend class VIEW_ITEM
Definition: view.h:71
int color
Definition: DXF_plotter.cpp:57
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:711
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:828
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:845
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::onNetColorMode(), 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 897 of file view.cpp.

898 {
899  sortLayers();
900 
901  if( m_gal->IsVisible() )
902  {
903  GAL_UPDATE_CONTEXT ctx( m_gal );
904 
905  for( VIEW_ITEM* item : *m_allItems )
906  {
907  VIEW_ITEM_DATA* viewData = item->viewPrivData();
908 
909  if( !viewData )
910  continue;
911 
912  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
913  viewData->getLayers( layers, layers_count );
914 
915  for( int i = 0; i < layers_count; ++i )
916  {
917  int group = viewData->getGroup( layers[i] );
918 
919  if( group >= 0 )
920  m_gal->ChangeGroupDepth( group, m_layers[layers[i]].renderingOrder );
921  }
922  }
923  }
924 
925  MarkDirty();
926 }
void sortLayers()
Clear cached GAL group numbers (ONLY numbers stored in VIEW_ITEMs, not group objects used by GAL)
Definition: view.cpp:1249
friend class VIEW_ITEM
Definition: view.h:71
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:711
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:828
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
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(), PL_DRAW_PANEL_GAL::SetTopLayer(), GERBVIEW_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 1313 of file view.cpp.

1314 {
1315  int layers[VIEW_MAX_LAYERS], layers_count;
1316 
1317  aItem->ViewGetLayers( layers, layers_count );
1318 
1319  for( int i = 0; i < layers_count; ++i )
1320  {
1321  VIEW_LAYER& l = m_layers[layers[i]];
1322  l.items->Remove( aItem );
1323  l.items->Insert( aItem );
1324  MarkTargetDirty( l.target );
1325  }
1326 }
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:711
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:822

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().

◆ UpdateDisplayOptions()

void KIGFX::PCB_VIEW::UpdateDisplayOptions ( const PCB_DISPLAY_OPTIONS aOptions)

Definition at line 125 of file pcb_view.cpp.

126 {
127  auto painter = static_cast<KIGFX::PCB_PAINTER*>( GetPainter() );
128  auto settings = static_cast<KIGFX::PCB_RENDER_SETTINGS*>( painter->GetSettings() );
129 
130  settings->LoadDisplayOptions( aOptions, settings->GetShowPageLimits() );
131 }
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:208

References KIGFX::VIEW::GetPainter().

Referenced by PCB_DRAW_PANEL_GAL::PCB_DRAW_PANEL_GAL(), and PCB_BASE_FRAME::SetDisplayOptions().

◆ updateItemColor()

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

Update all information needed to draw an item.

Definition at line 1264 of file view.cpp.

1265 {
1266  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1267  wxCHECK( (unsigned) aLayer < m_layers.size(), /*void*/ );
1268  wxCHECK( IsCached( aLayer ), /*void*/ );
1269 
1270  if( !viewData )
1271  return;
1272 
1273  // Obtain the color that should be used for coloring the item on the specific layerId
1274  const COLOR4D color = m_painter->GetSettings()->GetColor( aItem, aLayer );
1275  int group = viewData->getGroup( aLayer );
1276 
1277  // Change the color, only if it has group assigned
1278  if( group >= 0 )
1279  m_gal->ChangeGroupColor( group, color );
1280 }
int color
Definition: DXF_plotter.cpp:57
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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:845
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
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 1283 of file view.cpp.

1284 {
1285  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1286  wxCHECK( (unsigned) aLayer < m_layers.size(), /*void*/ );
1287  wxCHECK( IsCached( aLayer ), /*void*/ );
1288 
1289  if( !viewData )
1290  return;
1291 
1292  VIEW_LAYER& l = m_layers.at( aLayer );
1293 
1294  m_gal->SetTarget( l.target );
1295  m_gal->SetLayerDepth( l.renderingOrder );
1296 
1297  // Redraw the item from scratch
1298  int group = viewData->getGroup( aLayer );
1299 
1300  if( group >= 0 )
1301  m_gal->DeleteGroup( group );
1302 
1303  group = m_gal->BeginGroup();
1304  viewData->setGroup( aLayer, group );
1305 
1306  if( !m_painter->Draw( static_cast<EDA_ITEM*>( aItem ), aLayer ) )
1307  aItem->ViewDraw( aLayer, this ); // Alternative drawing method
1308 
1309  m_gal->EndGroup();
1310 }
virtual void DeleteGroup(int aGroupNumber)
Delete the group from the memory.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
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:845
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
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 1406 of file view.cpp.

1407 {
1408  if( m_gal->IsVisible() )
1409  {
1410  GAL_UPDATE_CONTEXT ctx( m_gal );
1411 
1412  for( VIEW_ITEM* item : *m_allItems )
1413  {
1414  if( item->viewPrivData() && item->viewPrivData()->m_requiredUpdate != NONE )
1415  {
1416  invalidateItem( item, item->viewPrivData()->m_requiredUpdate );
1417  item->viewPrivData()->m_requiredUpdate = NONE;
1418  }
1419  }
1420  }
1421 }
friend class VIEW_ITEM
Definition: view.h:71
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
The set of layers that are displayed on the top.
Definition: view.h:828
void invalidateItem(VIEW_ITEM *aItem, int aUpdateFlags)
Manage dirty flags & redraw queuing when updating an item.
Definition: view.cpp:1207
No updates are required.
Definition: view_item.h:46
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 745 of file view.cpp.

746 {
747  // There is no point in updating non-cached layers
748  if( !IsCached( aLayer ) )
749  return;
750 
751  BOX2I r;
752 
753  r.SetMaximum();
754 
755  if( m_gal->IsVisible() )
756  {
757  GAL_UPDATE_CONTEXT ctx( m_gal );
758 
759  UPDATE_COLOR_VISITOR visitor( aLayer, m_painter, m_gal );
760  m_layers[aLayer].items->Query( r, visitor );
761  MarkTargetDirty( m_layers[aLayer].target );
762  }
763 }
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
Definition: view.h:609
PAINTER * m_painter
Interface to #PAINTER that is used to draw items.
Definition: view.h:845
E_SERIE r
Definition: eserie.cpp:41
std::vector< VIEW_LAYER > m_layers
Sorted list of pointers to members of m_layers.
Definition: view.h:822
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 r.

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 1329 of file view.cpp.

1330 {
1331  VIEW_ITEM_DATA* viewData = aItem->viewPrivData();
1332  int layers[VIEW_MAX_LAYERS], layers_count;
1333 
1334  if( !viewData )
1335  return;
1336 
1337  // Remove the item from previous layer set
1338  viewData->getLayers( layers, layers_count );
1339 
1340  for( int i = 0; i < layers_count; ++i )
1341  {
1342  VIEW_LAYER& l = m_layers[layers[i]];
1343  l.items->Remove( aItem );
1344  MarkTargetDirty( l.target );
1345 
1346  if( IsCached( l.id ) )
1347  {
1348  // Redraw the item from scratch
1349  int prevGroup = viewData->getGroup( layers[i] );
1350 
1351  if( prevGroup >= 0 )
1352  {
1353  m_gal->DeleteGroup( prevGroup );
1354  viewData->setGroup( l.id, -1 );
1355  }
1356  }
1357  }
1358 
1359  // Add the item to new layer set
1360  aItem->ViewGetLayers( layers, layers_count );
1361  viewData->saveLayers( layers, layers_count );
1362 
1363  for( int i = 0; i < layers_count; i++ )
1364  {
1365  VIEW_LAYER& l = m_layers[layers[i]];
1366  l.items->Insert( aItem );
1367  MarkTargetDirty( l.target );
1368  }
1369 }
virtual void DeleteGroup(int aGroupNumber)
Delete the group from the memory.
GAL * m_gal
Dynamic VIEW (eg.
Definition: view.h:848
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:711
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:822
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 680 of file view.h.

681  {
682  m_useDrawPriority = aFlag;
683  }
bool m_useDrawPriority
The next sequential drawing priority.
Definition: view.h:861

References KIGFX::VIEW::m_useDrawPriority.

Member Data Documentation

◆ m_allItems

◆ m_boundary

◆ m_center

VECTOR2D KIGFX::VIEW::m_center
protectedinherited

◆ m_dirtyTargets

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

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

Definition at line 855 of file view.h.

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

◆ 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 852 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 819 of file view.h.

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

◆ m_gal

◆ m_layers

◆ m_maxScale

double KIGFX::VIEW::m_maxScale
protectedinherited

Definition at line 839 of file view.h.

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

◆ m_minScale

double KIGFX::VIEW::m_minScale
protectedinherited

Definition at line 838 of file view.h.

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

◆ m_mirrorX

bool KIGFX::VIEW::m_mirrorX
protectedinherited

Definition at line 841 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 842 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 864 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 825 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 816 of file view.h.

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

◆ m_painter

PAINTER* KIGFX::VIEW::m_painter
protectedinherited

◆ m_preview

◆ m_reverseDrawOrder

bool KIGFX::VIEW::m_reverseDrawOrder
protectedinherited

Definition at line 867 of file view.h.

Referenced by KIGFX::VIEW::redrawRect(), and KIGFX::VIEW::ReverseDrawOrder().

◆ 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 831 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 861 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 858 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: