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
 Function Add() Adds a VIEW_ITEM to the view. More...
 
virtual void Remove (VIEW_ITEM *aItem) override
 Function Remove() Removes a VIEW_ITEM from the view. More...
 
virtual void Update (const VIEW_ITEM *aItem, int aUpdateFlags) const override
 For dynamic VIEWs, informs 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, informs 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
 Function Query() Finds all visible items that touch or are within the rectangle aRect. More...
 
void SetVisible (VIEW_ITEM *aItem, bool aIsVisible=true)
 Sets the item visibility. More...
 
void Hide (VIEW_ITEM *aItem, bool aHide=true)
 Temporarily hides the item in the view (e.g. More...
 
bool IsVisible (const VIEW_ITEM *aItem) const
 Returns information if the item is visible (or not). More...
 
void SetRequired (int aLayerId, int aRequiredId, bool aRequired=true)
 Function SetRequired() Marks the aRequiredId layer as required for the aLayerId layer. More...
 
void CopySettings (const VIEW *aOtherView)
 Function CopySettings() Copies layers and visibility settings from another view. More...
 
void SetGAL (GAL *aGal)
 Function SetGAL() Assigns a rendering device for the VIEW. More...
 
GALGetGAL () const
 Function GetGAL() Returns the GAL this view is using to draw graphical primitives. More...
 
void SetPainter (PAINTER *aPainter)
 Function SetPainter() Sets the painter object used by the view for drawing VIEW_ITEMS. More...
 
PAINTERGetPainter () const
 Function GetPainter() Returns the painter object used by the view for drawing VIEW_ITEMS. More...
 
void SetViewport (const BOX2D &aViewport)
 Function SetViewport() Sets the visible area of the VIEW. More...
 
BOX2D GetViewport () const
 Function GetViewport() Returns the current viewport visible area rectangle. More...
 
void SetMirror (bool aMirrorX, bool aMirrorY)
 Function SetMirror() Controls the mirroring of the VIEW. More...
 
bool IsMirroredX () const
 Function IsMirroredX() Returns true if view is flipped across the X axis. More...
 
bool IsMirroredY () const
 Function IsMirroredX() Returns true if view is flipped across the Y axis. More...
 
virtual void SetScale (double aScale, VECTOR2D aAnchor={ 0, 0 })
 Function SetScale() Sets the scaling factor, zooming around a given anchor point. More...
 
double GetScale () const
 Function GetScale() More...
 
void SetBoundary (const BOX2D &aBoundary)
 Function SetBoundary() Sets limits for view area. More...
 
void SetBoundary (const BOX2I &aBoundary)
 Function SetBoundary() Sets limits for view area. More...
 
const BOX2DGetBoundary () const
 Function GetBoundary() More...
 
void SetScaleLimits (double aMaximum, double aMinimum)
 Function SetScaleLimits() Sets minimum and maximum values for scale. More...
 
void SetCenter (const VECTOR2D &aCenter)
 Function SetCenter() Sets the center point of the VIEW (i.e. More...
 
void SetCenter (VECTOR2D aCenter, const BOX2D &occultingScreenRect)
 Function SetCenter() Sets the center point of the VIEW, attempting to avoid occultingScreenRect (for instance, the screen rect of a modeless dialog in front of the VIEW). More...
 
const VECTOR2DGetCenter () const
 Function GetCenter() Returns the center point of this VIEW (in world space coordinates) More...
 
VECTOR2D ToWorld (const VECTOR2D &aCoord, bool aAbsolute=true) const
 Function ToWorld() Converts a screen space point/vector to a point/vector in world space coordinates. More...
 
double ToWorld (double aSize) const
 Function ToWorld() 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
 Function ToScreen() Converts a world space point/vector to a point/vector in screen space coordinates. More...
 
double ToScreen (double aSize) const
 Function ToScreen() Converts a world space one dimensionsal size to a one dimensional size in screen space. More...
 
const VECTOR2IGetScreenPixelSize () const
 Function GetScreenPixelSize() Returns the size of the our rendering area, in pixels. More...
 
void Clear ()
 Function Clear() Removes all items from the view. More...
 
void SetLayerVisible (int aLayer, bool aVisible=true)
 Function SetLayerVisible() Controls the visibility of a particular layer. More...
 
bool IsLayerVisible (int aLayer) const
 Function IsLayerVisible() Returns information about visibility of a particular layer. More...
 
void SetLayerDisplayOnly (int aLayer, bool aDisplayOnly=true)
 
void SetLayerTarget (int aLayer, RENDER_TARGET aTarget)
 Function SetLayerTarget() Changes the rendering target for a particular layer. More...
 
void SetLayerOrder (int aLayer, int aRenderingOrder)
 Function SetLayerOrder() Sets rendering order of a particular layer. More...
 
int GetLayerOrder (int aLayer) const
 Function GetLayerOrder() Returns rendering order of a particular layer. More...
 
void SortLayers (int aLayers[], int &aCount) const
 Function SortLayers() Changes 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)
 Remaps the data between layer ids without invalidating that data. More...
 
void UpdateLayerColor (int aLayer)
 Function UpdateLayerColor() Applies the new coloring scheme held by RENDER_SETTINGS in case that it has changed. More...
 
void UpdateAllLayersColor ()
 Function UpdateAllLayersColor() Applies the new coloring scheme to all layers. More...
 
virtual void SetTopLayer (int aLayer, bool aEnabled=true)
 Function SetTopLayer() Sets given layer to be displayed on the top or sets back the default order of layers. More...
 
virtual void EnableTopLayer (bool aEnable)
 Function EnableTopLayer() Enables or disables display of the top layer. More...
 
virtual int GetTopLayer () const
 
void ClearTopLayers ()
 Function ClearTopLayers() Removes all layers from the on-the-top set (they are no longer displayed over the rest of layers). More...
 
void UpdateAllLayersOrder ()
 Function UpdateLayerOrder() Does everything that is needed to apply the rendering order of layers. More...
 
void ClearTargets ()
 Function ClearTargets() Clears targets that are marked as dirty. More...
 
virtual void Redraw ()
 Function Redraw() Immediately redraws the whole view. More...
 
void RecacheAllItems ()
 Function RecacheAllItems() Rebuilds GAL display lists. More...
 
bool IsDynamic () const
 Function IsDynamic() Tells if the VIEW is dynamic (ie. More...
 
bool IsDirty () const
 Function IsDirty() Returns true if any of the VIEW layers needs to be refreshened. More...
 
bool IsTargetDirty (int aTarget) const
 Function IsTargetDirty() Returns true if any of layers belonging to the target or the target itself should be redrawn. More...
 
void MarkTargetDirty (int aTarget)
 Function MarkTargetDirty() Sets or clears target 'dirty' flag. More...
 
bool IsCached (int aLayer) const
 Returns true if the layer is cached. More...
 
void MarkDirty ()
 Function MarkDirty() Forces redraw of view on the next rendering. More...
 
void MarkForUpdate (VIEW_ITEM *aItem)
 Function MarkForUpdate() Adds an item to a list of items that are going to be refreshed upon the next frame rendering. More...
 
void UpdateItems ()
 Function UpdateItems() Iterates through the list of items that asked for updating and updates them. More...
 
void UpdateAllItems (int aUpdateFlags)
 Updates all items in the view according to the given flags. More...
 
void UpdateAllItemsConditionally (int aUpdateFlags, std::function< bool(VIEW_ITEM *)> aCondition)
 Updates items in the view according to the given flags and condition. More...
 
bool IsUsingDrawPriority () const
 Function IsUsingDrawPriority() More...
 
void UseDrawPriority (bool aFlag)
 Function UseDrawPriority() More...
 
bool IsDrawOrderReversed () const
 Function IsDrawOrderReversed() More...
 
void ReverseDrawOrder (bool aFlag)
 Function ReverseDrawOrder() 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
 Returns a new VIEW object that shares the same set of VIEW_ITEMs and LAYERs. More...
 
int GetPrintMode ()
 
void SetPrintMode (int aPrintMode)
 Set the printing mode. More...
 

Static Public Member Functions

static void OnDestroy (VIEW_ITEM *aItem)
 

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)
 Function draw() Draws an item, but on a specified layers. More...
 
void draw (VIEW_ITEM *aItem, bool aImmediate=false)
 Function draw() Draws an item on all layers that the item uses. More...
 
void draw (VIEW_GROUP *aGroup, bool aImmediate=false)
 Function draw() Draws a group of items on all layers that those items use. More...
 
void sortLayers ()
 
void clearGroupCache ()
 
void invalidateItem (VIEW_ITEM *aItem, int aUpdateFlags)
 Function invalidateItem() Manages dirty flags & redraw queueing when updating an item. More...
 
void updateItemColor (VIEW_ITEM *aItem, int aLayer)
 Updates colors that are used for an item to be drawn. More...
 
void updateItemGeometry (VIEW_ITEM *aItem, int aLayer)
 Updates all informations needed to draw an item. More...
 
void updateBbox (VIEW_ITEM *aItem)
 Updates bounding box of an item. More...
 
void updateLayers (VIEW_ITEM *aItem)
 Updates set of layers that an item occupies. More...
 
bool areRequiredLayersEnabled (int aLayerId) const
 Checks if every layer required by the aLayerId layer is enabled. More...
 

Static Protected Member Functions

static bool compareRenderingOrder (VIEW_LAYER *aI, VIEW_LAYER *aJ)
 Determines rendering order of layers. Used in display order sorting function. More...
 

Protected Attributes

std::unique_ptr< KIGFX::VIEW_GROUPm_preview
 
std::vector< EDA_ITEM * > m_ownedItems
 
bool m_enableOrderModifier
 
std::vector< VIEW_LAYERm_layers
 Contains set of possible displayed layers and its properties. More...
 
std::vector< VIEW_LAYER * > m_orderedLayers
 Sorted list of pointers to members of m_layers. More...
 
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
 Flat list of all items. More...
 
std::set< unsigned int > m_topLayers
 Stores set of layers that are displayed on the top. More...
 
VECTOR2D m_center
 Center point of the VIEW (the point at which we are looking at) More...
 
double m_scale
 Scale of displayed VIEW_ITEMs. More...
 
BOX2D m_boundary
 View boundaries. More...
 
double m_minScale
 Scale lower limit. More...
 
double m_maxScale
 Scale upper limit. More...
 
bool m_mirrorX
 

Horizontal flip flag

More...
 
bool m_mirrorY
 

Vertical flip flag

More...
 
PAINTERm_painter
 PAINTER contains information how do draw items. More...
 
GALm_gal
 Gives interface to PAINTER, that is used to draw items. More...
 
bool m_dynamic
 Dynamic VIEW (eg. More...
 
bool m_dirtyTargets [TARGETS_NUMBER]
 Flags to mark targets as dirty, so they have to be redrawn on the next refresh event. More...
 
bool m_useDrawPriority
 Flat list of all items Flag to respect draw priority when drawing items. More...
 
int m_nextDrawPriority
 The next sequential drawing priority. More...
 
bool m_reverseDrawOrder
 Flag to reverse the draw order when using draw priority. More...
 
int m_printMode
 A control for printing: m_printMode <= 0 means no printing mode (normal draw mode m_printMode > 0 is a printing mode (currently means "we are in printing mode") More...
 

Static Protected Attributes

static const int TOP_LAYER_MODIFIER = -VIEW_MAX_LAYERS
 Rendering order modifier for layers that are marked as top layers. 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 68 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
42  // is acceptable for Pcbnew and Gerbview.
43  // However, ensure this area has the right size (max size allowed by integer coordinates)
44  // in case of the default value is changed.
45  // Could be a size depending on the worksheet size.
46  typedef std::numeric_limits<int> coord_limits;
47  double pos = coord_limits::lowest() / 2 + coord_limits::epsilon();
48  double size = coord_limits::max() - coord_limits::epsilon();
49  m_boundary.SetOrigin( pos, pos );
50  m_boundary.SetSize( size, size );
51 }
void SetSize(const Vec &size)
Definition: box2.h:212
BOX2D m_boundary
View boundaries.
Definition: view.h:819
void SetOrigin(const Vec &pos)
Definition: box2.h:210
VIEW(bool aIsDynamic=true)
Constructor.
Definition: view.cpp:268

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

◆ ~PCB_VIEW()

KIGFX::PCB_VIEW::~PCB_VIEW ( )
virtual

Definition at line 54 of file pcb_view.cpp.

55 {
56 }

Member Function Documentation

◆ Add()

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

Function Add() Adds 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 59 of file pcb_view.cpp.

60 {
61  auto item = static_cast<BOARD_ITEM*>( aItem );
62 
63  if( item->Type() == PCB_FOOTPRINT_T )
64  {
65  FOOTPRINT* footprint = static_cast<FOOTPRINT*>( item );
66  footprint->RunOnChildren( [this]( BOARD_ITEM* aChild )
67  {
68  VIEW::Add( aChild );
69  } );
70  }
71 
72  VIEW::Add( item, aDrawPriority );
73 }
BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
Definition: board_item.h:86
class FOOTPRINT, a footprint
Definition: typeinfo.h:89
void RunOnChildren(const std::function< void(BOARD_ITEM *)> &aFunction) const
Function RunOnChildren.
Definition: footprint.cpp:1089
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Function Add() Adds a VIEW_ITEM to the view.
Definition: view.cpp:327

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

Referenced by PCB_TOOL_BASE::doInteractiveItemPlacement(), MICROWAVE_TOOL::drawMicrowaveInductor(), PCB_VIEWER_TOOLS::MeasureTool(), POINT_EDITOR::OnSelectionChange(), PCB_EDITOR_CONTROL::PlaceTarget(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), SELECTION_TOOL::Reset(), DIALOG_FOOTPRINT_CHECKER::runChecks(), SELECTION_TOOL::selectMultiple(), and SELECTION_TOOL::zoomFitSelection().

◆ AddToPreview()

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

Definition at line 1554 of file view.cpp.

1555 {
1556  Hide( aItem, false );
1557  m_preview->Add( aItem );
1558 
1559  if( aTakeOwnership )
1560  m_ownedItems.push_back( aItem );
1561 
1562  SetVisible( m_preview.get(), true );
1563  Hide( m_preview.get(), false );
1564  Update( m_preview.get() );
1565 }
void Hide(VIEW_ITEM *aItem, bool aHide=true)
Temporarily hides the item in the view (e.g.
Definition: view.cpp:1480
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:715
std::vector< EDA_ITEM * > m_ownedItems
Definition: view.h:718
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Sets the item visibility.
Definition: view.cpp:1459
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1513

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(), LIB_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), ROUTER_TOOL::InlineDrag(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ areRequiredLayersEnabled()

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

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

Definition at line 1359 of file view.cpp.

1360 {
1361  wxCHECK( (unsigned) aLayerId < m_layers.size(), false );
1362 
1363  std::set<int>::const_iterator it, it_end;
1364 
1365  for( it = m_layers.at( aLayerId ).requiredLayers.begin(),
1366  it_end = m_layers.at( aLayerId ).requiredLayers.end(); it != it_end; ++it )
1367  {
1368  // That is enough if just one layer is not enabled
1369  if( !m_layers.at( *it ).visible || !areRequiredLayersEnabled( *it ) )
1370  return false;
1371  }
1372 
1373  return true;
1374 }
bool areRequiredLayersEnabled(int aLayerId) const
Checks if every layer required by the aLayerId layer is enabled.
Definition: view.cpp:1359
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

References KIGFX::VIEW::m_layers.

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

◆ Clear()

void KIGFX::VIEW::Clear ( )
inherited

Function Clear() Removes all items from the view.

Definition at line 1089 of file view.cpp.

1090 {
1091  BOX2I r;
1092  r.SetMaximum();
1093  m_allItems->clear();
1094 
1095  for( VIEW_LAYER& layer : m_layers )
1096  layer.items->RemoveAll();
1097 
1098  m_nextDrawPriority = 0;
1099 
1100  m_gal->ClearCache();
1101 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:807
void SetMaximum()
Definition: box2.h:73
int m_nextDrawPriority
The next sequential drawing priority.
Definition: view.h:854
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
virtual void ClearCache()
Delete all data created during caching of graphic items.

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

Referenced by KIGFX::SCH_VIEW::Cleanup(), GERBVIEW_FRAME::Clear_DrawLayers(), PCB_DRAW_PANEL_GAL::DisplayBoard(), SCH_DRAW_PANEL::DisplayComponent(), KIGFX::SCH_VIEW::DisplayComponent(), SCH_DRAW_PANEL::DisplaySheet(), PL_DRAW_PANEL_GAL::DisplayWorksheet(), GERBVIEW_FRAME::doCloseWindow(), DISPLAY_FOOTPRINTS_FRAME::InitDisplay(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), WS_PROXY_UNDO_ITEM::Restore(), PCB_BASE_EDIT_FRAME::SetBoard(), 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 1179 of file view.cpp.

1180 {
1181  BOX2I r;
1182 
1183  r.SetMaximum();
1184  clearLayerCache visitor( this );
1185 
1186  for( VIEW_LAYER& layer : m_layers )
1187  layer.items->Query( r, visitor );
1188 }
void SetMaximum()
Definition: box2.h:73
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

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

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

◆ ClearPreview()

void KIGFX::VIEW::ClearPreview ( )
inherited

Definition at line 1535 of file view.cpp.

1536 {
1537  m_preview->Clear();
1538 
1539  for( EDA_ITEM* item : m_ownedItems )
1540  delete item;
1541 
1542  m_ownedItems.clear();
1543  Update( m_preview.get() );
1544 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:715
std::vector< EDA_ITEM * > m_ownedItems
Definition: view.h:718
EDA_ITEM is a base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:148
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1513

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(), LIB_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), ROUTER_TOOL::InlineDrag(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ClearTargets()

void KIGFX::VIEW::ClearTargets ( )
inherited

Function ClearTargets() Clears targets that are marked as dirty.

Definition at line 1104 of file view.cpp.

1105 {
1107  {
1108  // TARGET_CACHED and TARGET_NONCACHED have to be redrawn together, as they contain
1109  // layers that rely on each other (eg. netnames are noncached, but tracks - are cached)
1112 
1113  MarkDirty();
1114  }
1115 
1116  if( IsTargetDirty( TARGET_OVERLAY ) )
1117  {
1119  }
1120 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
Auxiliary rendering target (noncached)
Definition: definitions.h:49
bool IsTargetDirty(int aTarget) const
Function IsTargetDirty() Returns true if any of layers belonging to the target or the target itself s...
Definition: view.h:560
virtual void ClearTarget(RENDER_TARGET aTarget)
Clears 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()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:596

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

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

Definition at line 890 of file view.cpp.

891 {
892  std::set<unsigned int>::iterator it;
893 
895  {
896  // Restore the previous rendering order for layers that were marked as top
897  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
898  m_layers[*it].renderingOrder -= TOP_LAYER_MODIFIER;
899  }
900 
901  m_topLayers.clear();
902 }
static const int TOP_LAYER_MODIFIER
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:847
std::set< unsigned int > m_topLayers
Stores set of layers that are displayed on the top.
Definition: view.h:810
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
bool m_enableOrderModifier
Definition: view.h:798

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

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

Definition at line 789 of file view.h.

790  {
791  return aI->renderingOrder > aJ->renderingOrder;
792  }

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

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

◆ CopySettings()

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

Function CopySettings() Copies layers and visibility settings from another view.

Parameters
aOtherViewview from which settings will be copied.

Definition at line 494 of file view.cpp.

495 {
496  wxASSERT_MSG( false, wxT( "This is not implemented" ) );
497 }

◆ DataReference()

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

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

1450 {
1451  auto ret = std::make_unique<VIEW>();
1452  ret->m_allItems = m_allItems;
1453  ret->m_layers = m_layers;
1454  ret->sortLayers();
1455  return ret;
1456 }
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:807
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

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

Function draw() Draws 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 1007 of file view.cpp.

1008 {
1009  auto viewData = aItem->viewPrivData();
1010 
1011  if( !viewData )
1012  return;
1013 
1014  if( IsCached( aLayer ) && !aImmediate )
1015  {
1016  // Draw using cached information or create one
1017  int group = viewData->getGroup( aLayer );
1018 
1019  if( group >= 0 )
1020  m_gal->DrawGroup( group );
1021  else
1022  Update( aItem );
1023  }
1024  else
1025  {
1026  // Immediate mode
1027  if( !m_painter->Draw( aItem, aLayer ) )
1028  aItem->ViewDraw( aLayer, this ); // Alternative drawing method
1029  }
1030 }
virtual void DrawGroup(int aGroupNumber)
Draw the stored group.
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:834
virtual bool Draw(const VIEW_ITEM *aItem, int aLayer)=0
Function Draw Takes an instance of VIEW_ITEM and passes it to a function that know how to draw the it...
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:578
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1513

References KIGFX::PAINTER::Draw(), KIGFX::GAL::DrawGroup(), KIGFX::VIEW_ITEM_DATA::getGroup(), 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::drawItem::deferredDraw(), KIGFX::VIEW::draw(), and KIGFX::VIEW::drawItem::operator()().

◆ draw() [2/3]

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

Function draw() Draws 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 1033 of file view.cpp.

1034 {
1035  int layers[VIEW_MAX_LAYERS], layers_count;
1036 
1037  aItem->ViewGetLayers( layers, layers_count );
1038 
1039  // Sorting is needed for drawing order dependent GALs (like Cairo)
1040  SortLayers( layers, layers_count );
1041 
1042  for( int i = 0; i < layers_count; ++i )
1043  {
1044  m_gal->SetLayerDepth( m_layers.at( layers[i] ).renderingOrder );
1045  draw( aItem, layers[i], aImmediate );
1046  }
1047 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
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:694
void SortLayers(int aLayers[], int &aCount) const
Function SortLayers() Changes the order of given layer ids, so after sorting the order corresponds to...
Definition: view.cpp:659
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
void draw(VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
Function draw() Draws an item, but on a specified layers.
Definition: view.cpp:1007

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

Function draw() Draws 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.

Definition at line 1050 of file view.cpp.

1051 {
1052  for( unsigned int i = 0; i < aGroup->GetSize(); i++)
1053  draw( aGroup->GetItem(i), aImmediate );
1054 }
void draw(VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
Function draw() Draws an item, but on a specified layers.
Definition: view.cpp:1007

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

◆ EnableTopLayer()

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

Function EnableTopLayer() Enables or disables 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 865 of file view.cpp.

866 {
867  if( aEnable == m_enableOrderModifier )
868  return;
869 
870  m_enableOrderModifier = aEnable;
871 
872  std::set<unsigned int>::iterator it;
873 
874  if( aEnable )
875  {
876  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
877  m_layers[*it].renderingOrder += TOP_LAYER_MODIFIER;
878  }
879  else
880  {
881  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
882  m_layers[*it].renderingOrder -= TOP_LAYER_MODIFIER;
883  }
884 
887 }
static const int TOP_LAYER_MODIFIER
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:847
std::set< unsigned int > m_topLayers
Stores set of layers that are displayed on the top.
Definition: view.h:810
void UpdateAllLayersOrder()
Function UpdateLayerOrder() Does everything that is needed to apply the rendering order of layers.
Definition: view.cpp:905
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
bool m_enableOrderModifier
Definition: view.h:798
void UpdateAllLayersColor()
Function UpdateAllLayersColor() Applies the new coloring scheme to all layers.
Definition: view.cpp:776

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

Function GetBoundary()

Returns
Current view area boundary.

Definition at line 289 of file view.h.

290  {
291  return m_boundary;
292  }
BOX2D m_boundary
View boundaries.
Definition: view.h:819

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

Function GetCenter() Returns the center point of this VIEW (in world space coordinates)

Returns
center point of the view

Definition at line 330 of file view.h.

331  {
332  return m_center;
333  }
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at)
Definition: view.h:813

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

◆ GetGAL()

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

Function GetGAL() Returns the GAL this view is using to draw graphical primitives.

Returns
Pointer to the currently used GAL instance.

Definition at line 182 of file view.h.

183  {
184  return m_gal;
185  }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837

References KIGFX::VIEW::m_gal.

Referenced by EE_GRID_HELPER::Align(), GRID_HELPER::BestDragOrigin(), EE_GRID_HELPER::BestDragOrigin(), KIGFX::WX_VIEW_CONTROLS::CenterOnCursor(), COMMON_TOOLS::CursorControl(), PCBNEW_CONTROL::DoSetGridOrigin(), COMMON_TOOLS::doZoomInOut(), KIGFX::PREVIEW::CENTRELINE_RECT_ITEM::drawPreviewShape(), KIGFX::PREVIEW::POLYGON_ITEM::drawPreviewShape(), KIGFX::PREVIEW::DrawTextNextToCursor(), 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_POLYLINE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_POLY_POLYLINE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_POINT_POLYLINE::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(), EE_GRID_HELPER::GetGrid(), GRID_HELPER::GetGrid(), EE_GRID_HELPER::GetOrigin(), GRID_HELPER::GetOrigin(), KIGFX::WX_VIEW_CONTROLS::GetRawCursorPosition(), 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(), PCB_BRIGHT_BOX::ViewDraw(), KIGFX::RATSNEST_VIEWITEM::ViewDraw(), KIGFX::PREVIEW::RULER_ITEM::ViewDraw(), KIGFX::PREVIEW::ARC_ASSISTANT::ViewDraw(), BRIGHT_BOX::ViewDraw(), KIGFX::ORIGIN_VIEWITEM::ViewDraw(), KIGFX::PREVIEW::TWO_POINT_ASSISTANT::ViewDraw(), KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM::ViewDraw(), MY_DRAWING::ViewDraw(), KIGFX::PREVIEW::SELECTION_AREA::ViewDraw(), KIGFX::VIEW_GROUP::ViewDraw(), ROUTER_PREVIEW_ITEM::ViewDraw(), KIGFX::WS_PROXY_VIEW_ITEM::ViewDraw(), EDIT_POINTS::ViewDraw(), and KIGFX::WX_VIEW_CONTROLS::WarpCursor().

◆ GetLayerOrder()

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

Function GetLayerOrder() Returns rendering order of a particular layer.

Lower values are rendered first.

Parameters
aLayerthe layer
Returns
Rendering order of a particular layer.

Definition at line 653 of file view.cpp.

654 {
655  return m_layers.at( aLayer ).renderingOrder;
656 }
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

References KIGFX::VIEW::m_layers.

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

◆ GetPainter()

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

Function GetPainter() Returns the painter object used by the view for drawing VIEW_ITEMS.

Returns
Pointer to the currently used Painter instance.

Definition at line 201 of file view.h.

202  {
203  return m_painter;
204  }
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:834

References KIGFX::VIEW::m_painter.

Referenced by PCB_BASE_FRAME::ActivateGalCanvas(), KIGFX::WS_PROXY_VIEW_ITEM::buildDrawList(), DIALOG_NET_INSPECTOR::buildNetsList(), PCB_INSPECTION_TOOL::ClearHighlight(), PL_EDITOR_FRAME::CommonSettingsChanged(), PCB_BASE_FRAME::CommonSettingsChanged(), GRID_HELPER::computeAnchors(), SYMBOL_PREVIEW_WIDGET::DisplayPart(), SYMBOL_PREVIEW_WIDGET::DisplaySymbol(), PL_DRAW_PANEL_GAL::DisplayWorksheet(), PCB_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(), PNS::TOOL_BASE::highlightNet(), PCB_INSPECTION_TOOL::HighlightNet(), PCB_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(), APPEARANCE_CONTROLS::onNetclassColorChanged(), APPEARANCE_CONTROLS::onNetclassContextMenu(), DIALOG_NET_INSPECTOR::onSelChanged(), GERBVIEW_DRAW_PANEL_GAL::OnShow(), PCB_DRAW_PANEL_GAL::OnShow(), DIALOG_NET_INSPECTOR::onSortingChanged(), DIALOG_PAD_PROPERTIES::prepareCanvas(), 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(), SELECTION_TOOL::Reset(), SELECTION_TOOL::Selectable(), GERBVIEW_DRAW_PANEL_GAL::SetHighContrastLayer(), PCB_DRAW_PANEL_GAL::SetHighContrastLayer(), EDA_DRAW_PANEL_GAL::SetHighContrastLayer(), 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(), KIGFX::RATSNEST_VIEWITEM::ViewDraw(), KIGFX::PREVIEW::RULER_ITEM::ViewDraw(), KIGFX::PREVIEW::SELECTION_AREA::ViewDraw(), KIGFX::VIEW_GROUP::ViewDraw(), KIGFX::WS_PROXY_VIEW_ITEM::ViewDraw(), and EDIT_POINTS::ViewDraw().

◆ GetPrintMode()

int KIGFX::VIEW::GetPrintMode ( )
inlineinherited
Returns
the printing mode. if return <= 0, the current mode is not a printing mode, just the draw mode

Definition at line 685 of file view.h.

685 { return m_printMode; }
int m_printMode
A control for printing: m_printMode <= 0 means no printing mode (normal draw mode m_printMode > 0 is ...
Definition: view.h:861

References KIGFX::VIEW::m_printMode.

Referenced by PAD::ViewGetLOD().

◆ GetScale()

◆ GetScreenPixelSize()

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

Function GetScreenPixelSize() Returns the size of the our rendering area, in pixels.

Returns
viewport screen size

Definition at line 1155 of file view.cpp.

1156 {
1157  return m_gal->GetScreenPixelSize();
1158 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
const VECTOR2I & GetScreenPixelSize() const
Returns 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 829 of file view.cpp.

830 {
831  if( m_topLayers.size() == 0 )
832  return 0;
833 
834  return *m_topLayers.begin();
835 }
std::set< unsigned int > m_topLayers
Stores set of layers that are displayed on the top.
Definition: view.h:810

References KIGFX::VIEW::m_topLayers.

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

◆ GetViewport()

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

Function GetViewport() Returns the current viewport visible area rectangle.

Returns
Current viewport rectangle

Definition at line 519 of file view.cpp.

520 {
521  BOX2D rect;
522  VECTOR2D screenSize = m_gal->GetScreenPixelSize();
523 
524  rect.SetOrigin( ToWorld( VECTOR2D( 0, 0 ) ) );
525  rect.SetEnd( ToWorld( screenSize ) );
526 
527  return rect.Normalize();
528 }
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Function ToWorld() Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:456
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
VECTOR2< double > VECTOR2D
Definition: vector2d.h:593
BOX2< Vec > & Normalize()
Function Normalize ensures that the height ant width are positive.
Definition: box2.h:129
void SetEnd(coord_type x, coord_type y)
Definition: box2.h:225
void SetOrigin(const Vec &pos)
Definition: box2.h:210

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

Referenced by SCH_EDITOR_CONTROL::FindComponentAndItem(), EDA_DRAW_FRAME::FocusOnLocation(), SELECTION_TOOL::GuessSelectionCandidates(), and KIGFX::WX_VIEW_CONTROLS::UpdateScrollbars().

◆ Hide()

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

Temporarily hides 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 1480 of file view.cpp.

1481 {
1482  auto viewData = aItem->viewPrivData();
1483 
1484  if( !viewData )
1485  return;
1486 
1487  if( !( viewData->m_flags & VISIBLE ) )
1488  return;
1489 
1490  if( aHide )
1491  viewData->m_flags |= HIDDEN;
1492  else
1493  viewData->m_flags &= ~HIDDEN;
1494 
1495  Update( aItem, APPEARANCE );
1496 }
Item is visible (in general)
Definition: view_item.h:72
No updates are required.
Definition: view_item.h:57
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1513

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(), SELECTION_TOOL::highlightInternal(), ROUTER_TOOL::InlineDrag(), SCH_MOVE_TOOL::moveItem(), SCH_EDITOR_CONTROL::Paste(), GERBVIEW_SELECTION_TOOL::selectVisually(), SELECTION_TOOL::unhighlightInternal(), and GERBVIEW_SELECTION_TOOL::unselectVisually().

◆ InitPreview()

void KIGFX::VIEW::InitPreview ( )
inherited

Definition at line 1547 of file view.cpp.

1548 {
1549  m_preview.reset( new KIGFX::VIEW_GROUP() );
1550  Add( m_preview.get() );
1551 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:715
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Function Add() Adds a VIEW_ITEM to the view.
Definition: view.cpp:327

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

Referenced by KIGFX::SCH_VIEW::DisplayComponent(), KIGFX::SCH_VIEW::DisplaySheet(), ROUTER_TOOL::InlineDrag(), and PCB_BASE_EDIT_FRAME::SetBoard().

◆ invalidateItem()

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

Function invalidateItem() Manages dirty flags & redraw queueing when updating an item.

Parameters
aItemis the item to be updated.
aUpdateFlagsdetermines the way an item is refreshed.

Definition at line 1191 of file view.cpp.

1192 {
1193  if( aUpdateFlags & INITIAL_ADD )
1194  {
1195  // Don't update layers or bbox, since it was done in VIEW::Add()
1196  // Now that we have initialized, set flags to ALL for the code below
1197  aUpdateFlags = ALL;
1198  }
1199  else
1200  {
1201  // updateLayers updates geometry too, so we do not have to update both of them at the same time
1202  if( aUpdateFlags & LAYERS )
1203  {
1204  updateLayers( aItem );
1205  }
1206  else if( aUpdateFlags & GEOMETRY )
1207  {
1208  updateBbox( aItem );
1209  }
1210  }
1211 
1212  int layers[VIEW_MAX_LAYERS], layers_count;
1213  aItem->ViewGetLayers( layers, layers_count );
1214 
1215  // Iterate through layers used by the item and recache it immediately
1216  for( int i = 0; i < layers_count; ++i )
1217  {
1218  int layerId = layers[i];
1219 
1220  if( IsCached( layerId ) )
1221  {
1222  if( aUpdateFlags & ( GEOMETRY | LAYERS | REPAINT ) )
1223  updateItemGeometry( aItem, layerId );
1224  else if( aUpdateFlags & COLOR )
1225  updateItemColor( aItem, layerId );
1226  }
1227 
1228  // Mark those layers as dirty, so the VIEW will be refreshed
1229  MarkTargetDirty( m_layers[layerId].target );
1230  }
1231 
1232  aItem->viewPrivData()->clearUpdateFlags();
1233 }
Layers have changed.
Definition: view_item.h:61
void updateLayers(VIEW_ITEM *aItem)
Updates set of layers that an item occupies.
Definition: view.cpp:1316
void updateItemColor(VIEW_ITEM *aItem, int aLayer)
Updates colors that are used for an item to be drawn.
Definition: view.cpp:1251
Visibility flag has changed.
Definition: view_item.h:58
Item needs to be redrawn.
Definition: view_item.h:63
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:694
Item is being added to the view.
Definition: view_item.h:62
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target 'dirty' flag.
Definition: view.h:571
void updateBbox(VIEW_ITEM *aItem)
Updates bounding box of an item.
Definition: view.cpp:1300
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
void updateItemGeometry(VIEW_ITEM *aItem, int aLayer)
Updates all informations needed to draw an item.
Definition: view.cpp:1270
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:578
Position or shape has changed.
Definition: view_item.h:60
Color has changed.
Definition: view_item.h:59

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

Returns true if the layer is cached.

Definition at line 578 of file view.h.

579  {
580  wxCHECK( aLayer < (int) m_layers.size(), false );
581 
582  try
583  {
584  return m_layers.at( aLayer ).target == TARGET_CACHED;
585  }
586  catch( const std::out_of_range& )
587  {
588  return false;
589  }
590  }
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
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

Function IsDirty() Returns 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 543 of file view.h.

544  {
545  for( int i = 0; i < TARGETS_NUMBER; ++i )
546  {
547  if( IsTargetDirty( i ) )
548  return true;
549  }
550 
551  return false;
552  }
Number of available rendering targets.
Definition: definitions.h:51
bool IsTargetDirty(int aTarget) const
Function IsTargetDirty() Returns true if any of layers belonging to the target or the target itself s...
Definition: view.h:560

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

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

◆ IsDrawOrderReversed()

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

Function IsDrawOrderReversed()

Returns
true if draw order is reversed

Definition at line 651 of file view.h.

652  {
653  return m_reverseDrawOrder;
654  }
bool m_reverseDrawOrder
Flag to reverse the draw order when using draw priority.
Definition: view.h:857

References KIGFX::VIEW::m_reverseDrawOrder.

◆ IsDynamic()

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

Function IsDynamic() Tells 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 533 of file view.h.

534  {
535  return m_dynamic;
536  }
bool m_dynamic
Dynamic VIEW (eg.
Definition: view.h:841

References KIGFX::VIEW::m_dynamic.

◆ IsLayerVisible()

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

Function IsLayerVisible() Returns information about visibility of a particular layer.

Parameters
aLayertrue if the layer is visible, false otherwise

Definition at line 402 of file view.h.

403  {
404  wxCHECK( aLayer < (int) m_layers.size(), false );
405  return m_layers.at( aLayer ).visible;
406  }
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

References KIGFX::VIEW::m_layers.

Referenced by GERBVIEW_DRAW_PANEL_GAL::GetDefaultViewBBox(), PCB_DRAW_PANEL_GAL::GetDefaultViewBBox(), GERBVIEW_FRAME::GetVisibleLayers(), APPEARANCE_CONTROLS::getVisibleLayers(), APPEARANCE_CONTROLS::getVisibleObjects(), PNS_KICAD_IFACE::IsAnyLayerVisible(), SCH_EDIT_TOOL::Properties(), EDIT_TOOL::Properties(), GERBER_LAYER_WIDGET::ReFill(), KIGFX::RATSNEST_VIEWITEM::ViewDraw(), KIGFX::VIEW_GROUP::ViewDraw(), FP_SHAPE::ViewGetLOD(), PCB_GROUP::ViewGetLOD(), ZONE::ViewGetLOD(), FP_TEXT::ViewGetLOD(), TRACK::ViewGetLOD(), VIA::ViewGetLOD(), FOOTPRINT::ViewGetLOD(), PAD::ViewGetLOD(), and FP_ZONE::ViewGetLOD().

◆ IsMirroredX()

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

◆ IsMirroredY()

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

Function IsMirroredX() Returns true if view is flipped across the Y axis.

Definition at line 241 of file view.h.

242  {
243  return m_mirrorY;
244  }
bool m_mirrorY
Vertical flip flag
Definition: view.h:831

References KIGFX::VIEW::m_mirrorY.

◆ IsTargetDirty()

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

Function IsTargetDirty() Returns 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 560 of file view.h.

561  {
562  wxCHECK( aTarget < TARGETS_NUMBER, false );
563  return m_dirtyTargets[aTarget];
564  }
Number of available rendering targets.
Definition: definitions.h:51
bool m_dirtyTargets[TARGETS_NUMBER]
Flags to mark targets as dirty, so they have to be redrawn on the next refresh event.
Definition: view.h:844

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

Function IsUsingDrawPriority()

Returns
true if draw priority is being respected while redrawing.

Definition at line 633 of file view.h.

634  {
635  return m_useDrawPriority;
636  }
bool m_useDrawPriority
Flat list of all items Flag to respect draw priority when drawing items.
Definition: view.h:851

References KIGFX::VIEW::m_useDrawPriority.

◆ IsVisible()

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

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

1500 {
1501  const auto viewData = aItem->viewPrivData();
1502 
1503  return viewData && ( viewData->m_flags & VISIBLE );
1504 }

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

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

◆ MakeOverlay()

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

Definition at line 1526 of file view.cpp.

1527 {
1528  std::shared_ptr<VIEW_OVERLAY> overlay( new VIEW_OVERLAY );
1529 
1530  Add( overlay.get() );
1531  return overlay;
1532 }
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Function Add() Adds a VIEW_ITEM to the view.
Definition: view.cpp:327

References KIGFX::VIEW::Add().

Referenced by AUTOPLACE_TOOL::autoplace().

◆ MarkDirty()

void KIGFX::VIEW::MarkDirty ( )
inlineinherited

◆ MarkForUpdate()

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

Function MarkForUpdate() Adds an item to a list of items that are going to be refreshed upon the next frame rendering.

Parameters
aItemis the item to be refreshed.

◆ markTargetClean()

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

Definition at line 723 of file view.h.

724  {
725  wxCHECK( aTarget < TARGETS_NUMBER, /* void */ );
726  m_dirtyTargets[aTarget] = false;
727  }
Number of available rendering targets.
Definition: definitions.h:51
bool m_dirtyTargets[TARGETS_NUMBER]
Flags to mark targets as dirty, so they have to be redrawn on the next refresh event.
Definition: view.h:844

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

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

◆ MarkTargetDirty()

◆ OnDestroy()

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

Definition at line 253 of file view.cpp.

254 {
255  auto data = aItem->viewPrivData();
256 
257  if( !data )
258  return;
259 
260  if( data->m_view )
261  data->m_view->VIEW::Remove( aItem );
262 
263  delete data;
264  aItem->ClearViewPrivData();
265 }

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

Function Query() Finds 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 433 of file view.cpp.

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

References KIGFX::VIEW::m_orderedLayers.

Referenced by DRAWING_TOOL::DrawVia(), EE_GRID_HELPER::queryVisible(), GRID_HELPER::queryVisible(), SELECTION_TOOL::SelectAll(), EE_SELECTION_TOOL::SelectAll(), EE_SELECTION_TOOL::selectMultiple(), and SELECTION_TOOL::selectMultiple().

◆ RecacheAllItems()

void KIGFX::VIEW::RecacheAllItems ( )
inherited

Function RecacheAllItems() Rebuilds GAL display lists.

Definition at line 1377 of file view.cpp.

1378 {
1379  BOX2I r;
1380 
1381  r.SetMaximum();
1382 
1383  for( const VIEW_LAYER& l : m_layers )
1384  {
1385  if( IsCached( l.id ) )
1386  {
1387  recacheItem visitor( this, m_gal, l.id );
1388  l.items->Query( r, visitor );
1389  }
1390  }
1391 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
void SetMaximum()
Definition: box2.h:73
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:578

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

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

◆ Redraw()

void KIGFX::VIEW::Redraw ( )
virtualinherited

Function Redraw() Immediately redraws the whole view.

Definition at line 1123 of file view.cpp.

1124 {
1125 #ifdef __WXDEBUG__
1126  PROF_COUNTER totalRealTime;
1127 #endif /* __WXDEBUG__ */
1128 
1129  VECTOR2D screenSize = m_gal->GetScreenPixelSize();
1130  BOX2D rect( ToWorld( VECTOR2D( 0, 0 ) ),
1131  ToWorld( screenSize ) - ToWorld( VECTOR2D( 0, 0 ) ) );
1132 
1133  rect.Normalize();
1134  BOX2I recti( rect.GetPosition(), rect.GetSize() );
1135 
1136  // The view rtree uses integer positions. Large screens can overflow
1137  // this size so in this case, simply set the rectangle to the full rtree
1138  if( rect.GetWidth() > std::numeric_limits<int>::max() ||
1139  rect.GetHeight() > std::numeric_limits<int>::max() )
1140  recti.SetMaximum();
1141 
1142  redrawRect( recti );
1143  // All targets were redrawn, so nothing is dirty
1147 
1148 #ifdef __WXDEBUG__
1149  totalRealTime.Stop();
1150  wxLogTrace( "GAL_PROFILE", "VIEW::Redraw(): %.1f ms", totalRealTime.msecs() );
1151 #endif /* __WXDEBUG__ */
1152 }
void Stop()
save the time when this function was called, and set the counter stane to stop
Definition: profile.h:82
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Function ToWorld() Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:456
double msecs(bool aSinceLast=false)
Definition: profile.h:143
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
The class PROF_COUNTER is a small class to help profiling.
Definition: profile.h:44
Auxiliary rendering target (noncached)
Definition: definitions.h:49
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
VECTOR2< double > VECTOR2D
Definition: vector2d.h:593
void SetMaximum()
Definition: box2.h:73
Items that may change while the view stays the same (noncached)
Definition: definitions.h:50
void markTargetClean(int aTarget)
Definition: view.h:723
void redrawRect(const BOX2I &aRect)
Definition: view.cpp:988
Main rendering target (cached)
Definition: definitions.h:48

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

Referenced by EDA_DRAW_PANEL_GAL::DoRePaint().

◆ redrawRect()

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

Definition at line 988 of file view.cpp.

989 {
990  for( VIEW_LAYER* l : m_orderedLayers )
991  {
992  if( l->visible && IsTargetDirty( l->target ) && areRequiredLayersEnabled( l->id ) )
993  {
994  drawItem drawFunc( this, l->id, m_useDrawPriority, m_reverseDrawOrder );
995 
996  m_gal->SetTarget( l->target );
997  m_gal->SetLayerDepth( l->renderingOrder );
998  l->items->Query( aRect, drawFunc );
999 
1000  if( m_useDrawPriority )
1001  drawFunc.deferredDraw();
1002  }
1003  }
1004 }
bool m_useDrawPriority
Flat list of all items Flag to respect draw priority when drawing items.
Definition: view.h:851
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
bool areRequiredLayersEnabled(int aLayerId) const
Checks if every layer required by the aLayerId layer is enabled.
Definition: view.cpp:1359
virtual void SetLayerDepth(double aLayerDepth)
Set the depth of the layer (position on the z-axis)
bool IsTargetDirty(int aTarget) const
Function IsTargetDirty() Returns true if any of layers belonging to the target or the target itself s...
Definition: view.h:560
bool m_reverseDrawOrder
Flag to reverse the draw order when using draw priority.
Definition: view.h:857
std::vector< VIEW_LAYER * > m_orderedLayers
Sorted list of pointers to members of m_layers.
Definition: view.h:804
virtual void SetTarget(RENDER_TARGET aTarget)
Sets the target for rendering.

References KIGFX::VIEW::areRequiredLayersEnabled(), KIGFX::VIEW::drawItem::deferredDraw(), KIGFX::VIEW::IsTargetDirty(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_orderedLayers, KIGFX::VIEW::m_reverseDrawOrder, KIGFX::VIEW::m_useDrawPriority, KIGFX::GAL::SetLayerDepth(), and KIGFX::GAL::SetTarget().

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

◆ Remove()

void KIGFX::PCB_VIEW::Remove ( KIGFX::VIEW_ITEM aItem)
overridevirtual

Function Remove() Removes 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 76 of file pcb_view.cpp.

77 {
78  auto item = static_cast<BOARD_ITEM*>( aItem );
79 
80 
81  if( item->Type() == PCB_FOOTPRINT_T )
82  {
83  FOOTPRINT* footprint = static_cast<FOOTPRINT*>( item );
84  footprint->RunOnChildren( [this]( BOARD_ITEM* aChild )
85  {
86  VIEW::Remove( aChild );
87  } );
88  }
89 
90  VIEW::Remove( item );
91 }
BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
Definition: board_item.h:86
virtual void Remove(VIEW_ITEM *aItem)
Function Remove() Removes a VIEW_ITEM from the view.
Definition: view.cpp:357
class FOOTPRINT, a footprint
Definition: typeinfo.h:89
void RunOnChildren(const std::function< void(BOARD_ITEM *)> &aFunction) const
Function RunOnChildren.
Definition: footprint.cpp:1089

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

Referenced by PCB_TOOL_BASE::doInteractiveItemPlacement(), MICROWAVE_TOOL::drawMicrowaveInductor(), PCB_VIEWER_TOOLS::MeasureTool(), DIALOG_DRC::OnDRCItemRClick(), POINT_EDITOR::OnSelectionChange(), PCB_EDITOR_CONTROL::PlaceTarget(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), SELECTION_TOOL::Reset(), SELECTION_TOOL::selectMultiple(), and FOOTPRINT_PREVIEW_PANEL::~FOOTPRINT_PREVIEW_PANEL().

◆ ReorderLayerData()

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

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

688 {
689  std::vector<VIEW_LAYER> new_map;
690  new_map.reserve( m_layers.size() );
691 
692  for( int ii = 0; ii < VIEW_MAX_LAYERS; ++ii )
693  new_map.emplace_back();
694 
695  for( const VIEW_LAYER& layer : m_layers )
696  {
697  int orig_idx = layer.id;
698  int new_idx = orig_idx;
699 
700  if( aReorderMap.count( orig_idx ) )
701  new_idx = aReorderMap.at( orig_idx );
702 
703  new_map[new_idx] = layer;
704  new_map[new_idx].id = new_idx;
705  }
706 
707  m_layers = new_map;
708 
709  for( VIEW_ITEM* item : *m_allItems )
710  {
711  auto viewData = item->viewPrivData();
712 
713  if( !viewData )
714  continue;
715 
716  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
717 
718  item->ViewGetLayers( layers, layers_count );
719  viewData->saveLayers( layers, layers_count );
720 
721  viewData->reorderGroups( aReorderMap );
722 
723  viewData->m_requiredUpdate |= COLOR;
724  }
725 
726  UpdateItems();
727 }
friend class VIEW_ITEM
Definition: view.h:66
Visibility flag has changed.
Definition: view_item.h:58
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:694
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:807
void UpdateItems()
Function UpdateItems() Iterates through the list of items that asked for updating and updates them.
Definition: view.cpp:1394
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

References KIGFX::COLOR, KIGFX::VIEW::m_allItems, KIGFX::VIEW::m_layers, KIGFX::VIEW::UpdateItems(), and KIGFX::VIEW::VIEW_MAX_LAYERS.

Referenced by GERBVIEW_FRAME::SortLayersByX2Attributes().

◆ ReverseDrawOrder()

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

Function ReverseDrawOrder() Only takes effect if UseDrawPriority is true.

Parameters
aFlagis true if draw order should be reversed

Definition at line 661 of file view.h.

662  {
663  m_reverseDrawOrder = aFlag;
664  }
bool m_reverseDrawOrder
Flag to reverse the draw order when using draw priority.
Definition: view.h:857

References KIGFX::VIEW::m_reverseDrawOrder.

Referenced by EDA_DRAW_PANEL_GAL::SwitchBackend().

◆ SetBoundary() [1/2]

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

Function SetBoundary() Sets limits for view area.

Parameters
aBoundaryis the box that limits view area.

Definition at line 269 of file view.h.

270  {
271  m_boundary = aBoundary;
272  }
BOX2D m_boundary
View boundaries.
Definition: view.h:819

References KIGFX::VIEW::m_boundary.

Referenced by PL_DRAW_PANEL_GAL::DisplayWorksheet(), LIB_VIEW_FRAME::LIB_VIEW_FRAME(), and DIALOG_PAD_PROPERTIES::redraw().

◆ SetBoundary() [2/2]

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

Function SetBoundary() Sets limits for view area.

Parameters
aBoundaryis the box that limits view area.

Definition at line 279 of file view.h.

280  {
281  m_boundary.SetOrigin( aBoundary.GetOrigin() );
282  m_boundary.SetEnd( aBoundary.GetEnd() );
283  }
const Vec GetEnd() const
Definition: box2.h:195
void SetEnd(coord_type x, coord_type y)
Definition: box2.h:225
BOX2D m_boundary
View boundaries.
Definition: view.h:819
void SetOrigin(const Vec &pos)
Definition: box2.h:210
const Vec & GetOrigin() const
Definition: box2.h:193

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

Function SetCenter() Sets 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 585 of file view.cpp.

586 {
587  m_center = aCenter;
588 
589  if( !m_boundary.Contains( aCenter ) )
590  {
591  if( m_center.x < m_boundary.GetLeft() )
593  else if( aCenter.x > m_boundary.GetRight() )
595 
596  if( m_center.y < m_boundary.GetTop() )
598  else if( m_center.y > m_boundary.GetBottom() )
600  }
601 
604 
605  // Redraw everything after the viewport has changed
606  MarkDirty();
607 }
coord_type GetTop() const
Definition: box2.h:204
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
coord_type GetRight() const
Definition: box2.h:199
coord_type GetBottom() const
Definition: box2.h:200
virtual void ComputeWorldScreenMatrix()
Compute the world <-> screen transformation matrix.
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at)
Definition: view.h:813
bool Contains(const Vec &aPoint) const
Function Contains.
Definition: box2.h:151
BOX2D m_boundary
View boundaries.
Definition: view.h:819
void SetLookAtPoint(const VECTOR2D &aPoint)
Set the Point in world space to look at.
coord_type GetLeft() const
Definition: box2.h:203
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:596

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

Referenced by COMMON_TOOLS::CenterContents(), KIGFX::WX_VIEW_CONTROLS::CenterOnCursor(), SCH_BASE_FRAME::CenterScreen(), COMMON_TOOLS::doZoomFit(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), SYMBOL_PREVIEW_WIDGET::fitOnDrawArea(), EDA_DRAW_FRAME::FocusOnLocation(), KIGFX::WX_VIEW_CONTROLS::onMotion(), KIGFX::WX_VIEW_CONTROLS::onScroll(), EDA_DRAW_PANEL_GAL::onSize(), KIGFX::WX_VIEW_CONTROLS::onTimer(), KIGFX::WX_VIEW_CONTROLS::onWheel(), LIB_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(), and SELECTION_TOOL::zoomFitSelection().

◆ SetCenter() [2/2]

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

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

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

Definition at line 610 of file view.cpp.

611 {
612  BOX2D screenRect( VECTOR2D( 0, 0 ), m_gal->GetScreenPixelSize() );
613 
614  if( !screenRect.Intersects( occultingScreenRect ) )
615  {
616  SetCenter( aCenter );
617  return;
618  }
619 
620  BOX2D occultedRect = screenRect.Intersect( occultingScreenRect );
621  double topExposed = occultedRect.GetTop() - screenRect.GetTop();
622  double bottomExposed = screenRect.GetBottom() - occultedRect.GetBottom();
623  double leftExposed = occultedRect.GetLeft() - screenRect.GetLeft();
624  double rightExposed = screenRect.GetRight() - occultedRect.GetRight();
625 
626  if( std::max( topExposed, bottomExposed ) > std::max( leftExposed, rightExposed ) )
627  {
628  if( topExposed > bottomExposed )
629  aCenter.y += ToWorld( screenRect.GetHeight() / 2 - topExposed / 2 );
630  else
631  aCenter.y -= ToWorld( screenRect.GetHeight() / 2 - bottomExposed / 2 );
632  }
633  else
634  {
635  if( leftExposed > rightExposed )
636  aCenter.x += ToWorld( screenRect.GetWidth() / 2 - leftExposed / 2 );
637  else
638  aCenter.x -= ToWorld( screenRect.GetWidth() / 2 - rightExposed / 2 );
639  }
640 
641  SetCenter( aCenter );
642 }
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Function ToWorld() Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:456
coord_type GetTop() const
Definition: box2.h:204
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
coord_type GetRight() const
Definition: box2.h:199
coord_type GetBottom() const
Definition: box2.h:200
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
void SetCenter(const VECTOR2D &aCenter)
Function SetCenter() Sets the center point of the VIEW (i.e.
Definition: view.cpp:585
VECTOR2< double > VECTOR2D
Definition: vector2d.h:593
coord_type GetLeft() const
Definition: box2.h:203
BOX2< Vec > Intersect(const BOX2< Vec > &aRect)
Function Intersect Returns the intersection of this with another rectangle.
Definition: box2.h:268

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

◆ SetGAL()

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

Function SetGAL() Assigns a rendering device for the VIEW.

Parameters
aGalpointer to the GAL output device

Definition at line 500 of file view.cpp.

501 {
502  bool recacheGroups = ( m_gal != nullptr ); // recache groups only if GAL is reassigned
503  m_gal = aGal;
504 
505  // clear group numbers, so everything is going to be recached
506  if( recacheGroups )
507  clearGroupCache();
508 
509  // every target has to be refreshed
510  MarkDirty();
511 
512  // force the new GAL to display the current viewport.
513  SetCenter( m_center );
514  SetScale( m_scale );
516 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
void SetMirror(bool aMirrorX, bool aMirrorY)
Function SetMirror() Controls the mirroring of the VIEW.
Definition: view.cpp:546
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at)
Definition: view.h:813
void SetCenter(const VECTOR2D &aCenter)
Function SetCenter() Sets the center point of the VIEW (i.e.
Definition: view.cpp:585
bool m_mirrorX
Horizontal flip flag
Definition: view.h:828
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Function SetScale() Sets the scaling factor, zooming around a given anchor point.
Definition: view.cpp:559
void clearGroupCache()
Definition: view.cpp:1179
bool m_mirrorY
Vertical flip flag
Definition: view.h:831
double m_scale
Scale of displayed VIEW_ITEMs.
Definition: view.h:816
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:596

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

◆ SetLayerDisplayOnly()

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

Definition at line 408 of file view.h.

409  {
410  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
411  m_layers[aLayer].displayOnly = aDisplayOnly;
412  }
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

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

◆ SetLayerOrder()

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

Function SetLayerOrder() Sets rendering order of a particular layer.

Lower values are rendered first.

Parameters
aLayerthe layer
aRenderingOrderarbitrary number denoting the rendering order.

Definition at line 645 of file view.cpp.

646 {
647  m_layers[aLayer].renderingOrder = aRenderingOrder;
648 
649  sortLayers();
650 }
void sortLayers()
Definition: view.cpp:1236
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

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

Function SetLayerTarget() Changes the rendering target for a particular layer.

Parameters
aLayeris the layer.
aTargetis the rendering target.

Definition at line 420 of file view.h.

421  {
422  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
423  m_layers[aLayer].target = aTarget;
424  }
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

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

Function SetLayerVisible() Controls the visibility of a particular layer.

Parameters
aLayerthe layer to show/hide.
aVisiblethe obvious.

Definition at line 385 of file view.h.

386  {
387  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
388 
389  if( m_layers[aLayer].visible != aVisible )
390  {
391  // Target has to be redrawn after changing its visibility
392  MarkTargetDirty( m_layers[aLayer].target );
393  m_layers[aLayer].visible = aVisible;
394  }
395  }
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target 'dirty' flag.
Definition: view.h:571
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

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

Function SetMirror() Controls the mirroring of the VIEW.

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

Definition at line 546 of file view.cpp.

547 {
548  wxASSERT_MSG( !aMirrorY, _( "Mirroring for Y axis is not supported yet" ) );
549 
550  m_mirrorX = aMirrorX;
551  m_mirrorY = aMirrorY;
552  m_gal->SetFlip( aMirrorX, aMirrorY );
553 
554  // Redraw everything
555  MarkDirty();
556 }
void SetFlip(bool xAxis, bool yAxis)
Sets flipping of the screen.
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
bool m_mirrorX
Horizontal flip flag
Definition: view.h:828
#define _(s)
Definition: 3d_actions.cpp:33
bool m_mirrorY
Vertical flip flag
Definition: view.h:831
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:596

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_EDITOR_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

Function SetPainter() Sets the painter object used by the view for drawing VIEW_ITEMS.

Definition at line 191 of file view.h.

192  {
193  m_painter = aPainter;
194  }
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:834

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

◆ SetPrintMode()

void KIGFX::VIEW::SetPrintMode ( int  aPrintMode)
inlineinherited

Set the printing mode.

Parameters
aPrintModeis the printing mode. If 0, the current mode is not a printing mode, just the draw mode

Definition at line 692 of file view.h.

692 { m_printMode = aPrintMode; }
int m_printMode
A control for printing: m_printMode <= 0 means no printing mode (normal draw mode m_printMode > 0 is ...
Definition: view.h:861

References KIGFX::VIEW::m_printMode.

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

◆ SetRequired()

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

Function SetRequired() Marks 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 397 of file view.cpp.

398 {
399  wxCHECK( (unsigned) aLayerId < m_layers.size(), /*void*/ );
400  wxCHECK( (unsigned) aRequiredId < m_layers.size(), /*void*/ );
401 
402  if( aRequired )
403  m_layers[aLayerId].requiredLayers.insert( aRequiredId );
404  else
405  m_layers[aLayerId].requiredLayers.erase( aRequired );
406 }
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

References KIGFX::VIEW::m_layers.

Referenced by PCB_DRAW_PANEL_GAL::setDefaultLayerDeps().

◆ SetScale()

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

Function SetScale() Sets the scaling factor, zooming around a given anchor point.

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

Parameters
aAnchorthe zooming anchor point
aScalethe scale factor

Reimplemented in KIGFX::SCH_VIEW.

Definition at line 559 of file view.cpp.

560 {
561  if( aAnchor == VECTOR2D( 0, 0 ) )
562  aAnchor = m_center;
563 
564  VECTOR2D a = ToScreen( aAnchor );
565 
566  if( aScale < m_minScale )
568  else if( aScale > m_maxScale )
570  else
571  m_scale = aScale;
572 
575 
576  VECTOR2D delta = ToWorld( a ) - aAnchor;
577 
578  SetCenter( m_center - delta );
579 
580  // Redraw everything after the viewport has changed
581  MarkDirty();
582 }
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Function ToWorld() Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:456
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
virtual void ComputeWorldScreenMatrix()
Compute the world <-> screen transformation matrix.
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at)
Definition: view.h:813
double m_minScale
Scale lower limit.
Definition: view.h:822
void SetCenter(const VECTOR2D &aCenter)
Function SetCenter() Sets the center point of the VIEW (i.e.
Definition: view.cpp:585
VECTOR2< double > VECTOR2D
Definition: vector2d.h:593
VECTOR2D ToScreen(const VECTOR2D &aCoord, bool aAbsolute=true) const
Function ToScreen() Converts a world space point/vector to a point/vector in screen space coordinates...
Definition: view.cpp:475
double m_maxScale
Scale upper limit.
Definition: view.h:825
void SetZoomFactor(double aZoomFactor)
Set the zoom factor of the scene.
double m_scale
Scale of displayed VIEW_ITEMs.
Definition: view.h:816
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:596

References KIGFX::GAL::ComputeWorldScreenMatrix(), 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::FindComponentAndItem(), 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 SELECTION_TOOL::zoomFitSelection().

◆ SetScaleLimits()

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

Function SetScaleLimits() Sets minimum and maximum values for scale.

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

Definition at line 300 of file view.h.

301  {
302  wxASSERT_MSG( aMaximum > aMinimum, wxT( "I guess you passed parameters in wrong order" ) );
303 
304  m_minScale = aMinimum;
305  m_maxScale = aMaximum;
306  }
double m_minScale
Scale lower limit.
Definition: view.h:822
double m_maxScale
Scale upper limit.
Definition: view.h:825

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

Referenced by 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

Function SetTopLayer() Sets 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.
aLayerthe layer or -1 in case when no particular layer should be displayed on the top.

Definition at line 838 of file view.cpp.

839 {
840  if( aEnabled )
841  {
842  if( m_topLayers.count( aLayer ) == 1 )
843  return;
844 
845  m_topLayers.insert( aLayer );
846 
847  // Move the layer closer to front
849  m_layers[aLayer].renderingOrder += TOP_LAYER_MODIFIER;
850  }
851  else
852  {
853  if( m_topLayers.count( aLayer ) == 0 )
854  return;
855 
856  m_topLayers.erase( aLayer );
857 
858  // Restore the previous rendering order
860  m_layers[aLayer].renderingOrder -= TOP_LAYER_MODIFIER;
861  }
862 }
static const int TOP_LAYER_MODIFIER
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:847
std::set< unsigned int > m_topLayers
Stores set of layers that are displayed on the top.
Definition: view.h:810
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
bool m_enableOrderModifier
Definition: view.h:798

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

Function SetViewport() Sets the visible area of the VIEW.

Parameters
aViewportdesired visible area, in world space coordinates.

Definition at line 531 of file view.cpp.

532 {
533  VECTOR2D ssize = ToWorld( m_gal->GetScreenPixelSize(), false );
534 
535  wxCHECK( ssize.x > 0 && ssize.y > 0, /*void*/ );
536 
537  VECTOR2D centre = aViewport.Centre();
538  VECTOR2D vsize = aViewport.GetSize();
539  double zoom = 1.0 / std::max( fabs( vsize.x / ssize.x ), fabs( vsize.y / ssize.y ) );
540 
541  SetCenter( centre );
542  SetScale( GetScale() * zoom );
543 }
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Function ToWorld() Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:456
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
void SetCenter(const VECTOR2D &aCenter)
Function SetCenter() Sets the center point of the VIEW (i.e.
Definition: view.cpp:585
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Function SetScale() Sets the scaling factor, zooming around a given anchor point.
Definition: view.cpp:559
Vec Centre() const
Definition: box2.h:79
const Vec & GetSize() const
Definition: box2.h:189
double GetScale() const
Function GetScale()
Definition: view.h:259

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, and VECTOR2< T >::y.

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

◆ SetVisible()

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

Sets the item visibility.

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

Definition at line 1459 of file view.cpp.

1460 {
1461  auto viewData = aItem->viewPrivData();
1462 
1463  if( !viewData )
1464  return;
1465 
1466  bool cur_visible = viewData->m_flags & VISIBLE;
1467 
1468  if( cur_visible != aIsVisible )
1469  {
1470  if( aIsVisible )
1471  viewData->m_flags |= VISIBLE;
1472  else
1473  viewData->m_flags &= ~VISIBLE;
1474 
1475  Update( aItem, APPEARANCE | COLOR );
1476  }
1477 }
No updates are required.
Definition: view_item.h:57
Visibility flag has changed.
Definition: view_item.h:58
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1513

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(), GRID_HELPER::BestSnapAnchor(), MICROWAVE_TOOL::drawMicrowaveInductor(), EE_GRID_HELPER::EE_GRID_HELPER(), PNS_KICAD_IFACE::EraseView(), GRID_HELPER::GRID_HELPER(), PNS_KICAD_IFACE::HideItem(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_VIEWER_TOOLS::MeasureTool(), ZONE_CREATE_HELPER::OnComplete(), ZONE_CREATE_HELPER::OnFirstPoint(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), SELECTION_TOOL::selectMultiple(), ZOOM_TOOL::selectRegion(), GRID_HELPER::SetAuxAxes(), EE_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 1568 of file view.cpp.

1569 {
1570  SetVisible( m_preview.get(), aShow );
1571 }
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
Definition: view.h:715
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Sets the item visibility.
Definition: view.cpp:1459

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

Referenced by SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), and ROUTER_TOOL::InlineDrag().

◆ SortLayers()

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

Function SortLayers() Changes 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 659 of file view.cpp.

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

References KIGFX::VIEW::GetLayerOrder().

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

◆ sortLayers()

void KIGFX::VIEW::sortLayers ( )
protectedinherited
  • Sorts m_orderedLayers when layer rendering order has changed

Definition at line 1236 of file view.cpp.

1237 {
1238  int n = 0;
1239 
1240  m_orderedLayers.resize( m_layers.size() );
1241 
1242  for( VIEW_LAYER& layer : m_layers )
1243  m_orderedLayers[n++] = &layer;
1244 
1245  sort( m_orderedLayers.begin(), m_orderedLayers.end(), compareRenderingOrder );
1246 
1247  MarkDirty();
1248 }
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
std::vector< VIEW_LAYER * > m_orderedLayers
Sorted list of pointers to members of m_layers.
Definition: view.h:804
static bool compareRenderingOrder(VIEW_LAYER *aI, VIEW_LAYER *aJ)
Determines rendering order of layers. Used in display order sorting function.
Definition: view.h:789
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:596

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

Function ToScreen() Converts a world space point/vector to a point/vector in screen space coordinates.

Parameters
aCoordthe point/vector to be converted
aAbsolutewhen true, aCoord is treated as a point, otherwise - as a direction (vector)

Definition at line 475 of file view.cpp.

476 {
477  const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix();
478 
479  if( aAbsolute )
480  return VECTOR2D( matrix * aCoord );
481  else
482  return VECTOR2D( matrix.GetScale().x * aCoord.x, matrix.GetScale().y * aCoord.y );
483 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:269
VECTOR2< double > VECTOR2D
Definition: vector2d.h:593
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(), TOOL_DISPATCHER::handleMouseButton(), KIGFX::WX_VIEW_CONTROLS::SetCrossHairCursorPosition(), KIGFX::VIEW::SetScale(), and KIGFX::WX_VIEW_CONTROLS::WarpCursor().

◆ ToScreen() [2/2]

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

Function ToScreen() Converts a world space one dimensionsal size to a one dimensional size in screen space.

Parameters
aSizethe size to be transformed.

Definition at line 486 of file view.cpp.

487 {
488  const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix();
489 
490  return matrix.GetScale().x * aSize;
491 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:269
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

Function ToWorld() Converts a screen space point/vector to a point/vector in world space coordinates.

Parameters
aCoordthe point/vector to be converted
aAbsolutewhen true, aCoord is treated as a point, otherwise - as a direction (vector)

Definition at line 456 of file view.cpp.

457 {
458  const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix();
459 
460  if( aAbsolute )
461  return VECTOR2D( matrix * aCoord );
462  else
463  return VECTOR2D( matrix.GetScale().x * aCoord.x, matrix.GetScale().y * aCoord.y );
464 }
const MATRIX3x3D & GetScreenWorldMatrix() const
Get the screen <-> world transformation matrix.
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:269
VECTOR2< double > VECTOR2D
Definition: vector2d.h:593

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

Referenced by EE_POINT_EDITOR::addCornerCondition(), COMMON_TOOLS::CenterContents(), COMMON_TOOLS::doZoomFit(), KIGFX::PREVIEW::POLYGON_ITEM::drawPreviewShape(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), EDIT_POINTS::FindPoint(), SYMBOL_PREVIEW_WIDGET::fitOnDrawArea(), GENERAL_COLLECTORS_GUIDE::GENERAL_COLLECTORS_GUIDE(), KIGFX::WX_VIEW_CONTROLS::GetMousePosition(), KIGFX::VIEW::GetViewport(), KIGFX::WS_PROXY_VIEW_ITEM::HitTestWorksheetItems(), 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(), 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(), and SELECTION_TOOL::zoomFitSelection().

◆ ToWorld() [2/2]

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

Function ToWorld() Converts a screen space one dimensional size to a one dimensional size in world space coordinates.

Parameters
aSize: the size to be converted

Definition at line 467 of file view.cpp.

468 {
469  const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix();
470 
471  return fabs( matrix.GetScale().x * aSize );
472 }
const MATRIX3x3D & GetScreenWorldMatrix() const
Get the screen <-> world transformation matrix.
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:269

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, informs 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 94 of file pcb_view.cpp.

95 {
96  const BOARD_ITEM* item = static_cast<const BOARD_ITEM*>( aItem );
97 
98  if( item->Type() == PCB_FOOTPRINT_T )
99  {
100  const FOOTPRINT* footprint = static_cast<const FOOTPRINT*>( item );
101 
102  footprint->RunOnChildren( [this, aUpdateFlags]( BOARD_ITEM* aModItem )
103  {
104  VIEW::Update( aModItem, aUpdateFlags );
105  } );
106  }
107 
108  VIEW::Update( item, aUpdateFlags );
109 }
BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
Definition: board_item.h:86
class FOOTPRINT, a footprint
Definition: typeinfo.h:89
void RunOnChildren(const std::function< void(BOARD_ITEM *)> &aFunction) const
Function RunOnChildren.
Definition: footprint.cpp:1089
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1513
KICAD_T Type() const
Function Type()
Definition: eda_item.h:181

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

Referenced by SELECTION_TOOL::ClearSelection(), PCB_TOOL_BASE::doInteractiveItemPlacement(), MICROWAVE_TOOL::drawMicrowaveInductor(), PCB_EDIT_FRAME::Edit_Zone_Params(), PAD_TOOL::EnumeratePads(), PCB_BASE_FRAME::FocusOnItem(), PCB_VIEWER_TOOLS::GraphicOutlines(), SELECTION_TOOL::highlight(), PCB_VIEWER_TOOLS::MeasureTool(), DIALOG_DRC::OnDRCItemRClick(), PCB_VIEWER_TOOLS::PadDisplayMode(), PCB_EDITOR_CONTROL::PlaceTarget(), DIALOG_BOARD_REANNOTATE::ReannotateBoard(), refreshCallback(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), FOOTPRINT_EDITOR_TOOLS::Save(), FOOTPRINT_EDITOR_TOOLS::SaveAs(), SELECTION_TOOL::selectMultiple(), PCB_VIEWER_TOOLS::ShowPadNumbers(), GLOBAL_EDIT_TOOL::swapBoardItem(), GLOBAL_EDIT_TOOL::SwapLayers(), PCB_VIEWER_TOOLS::TextOutlines(), PCBNEW_CONTROL::TrackDisplayMode(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataFromWindow(), SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlightInternal(), Update(), PCBNEW_CONTROL::ViaDisplayMode(), and PCBNEW_CONTROL::ZoneDisplayMode().

◆ Update() [2/2]

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

For dynamic VIEWs, informs 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 112 of file pcb_view.cpp.

113 {
114  PCB_VIEW::Update( aItem, KIGFX::ALL );
115 }
Item needs to be redrawn.
Definition: view_item.h:63
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const override
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: pcb_view.cpp:94

References KIGFX::ALL, and Update().

◆ UpdateAllItems()

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

Updates all items in the view according to the given flags.

Parameters
aUpdateFlagsis is according to KIGFX::VIEW_UPDATE_FLAGS

Definition at line 1417 of file view.cpp.

1418 {
1419  for( VIEW_ITEM* item : *m_allItems )
1420  {
1421  auto viewData = item->viewPrivData();
1422 
1423  if( !viewData )
1424  continue;
1425 
1426  viewData->m_requiredUpdate |= aUpdateFlags;
1427  }
1428 }
friend class VIEW_ITEM
Definition: view.h:66
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:807

References KIGFX::VIEW::m_allItems.

Referenced by PL_EDITOR_FRAME::CommonSettingsChanged(), PCB_BASE_FRAME::CommonSettingsChanged(), SCH_EDIT_FRAME::CommonSettingsChanged(), SCH_BASE_FRAME::HardRedraw(), GERBVIEW_CONTROL::HighlightControl(), SCH_EDIT_FRAME::KiwayMailIn(), DIALOG_NET_INSPECTOR::onRenameNet(), LIB_CONTROL::ShowElectricalTypes(), SCH_BASE_FRAME::SyncView(), SCH_EDITOR_CONTROL::ToggleHiddenFields(), SCH_EDITOR_CONTROL::ToggleHiddenPins(), PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_SETUP_FORMATTING::TransferDataFromWindow(), PANEL_PCBNEW_COLOR_SETTINGS::updatePreview(), and PANEL_EESCHEMA_COLOR_SETTINGS::updatePreview().

◆ UpdateAllItemsConditionally()

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

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

1433 {
1434  for( VIEW_ITEM* item : *m_allItems )
1435  {
1436  if( aCondition( item ) )
1437  {
1438  auto viewData = item->viewPrivData();
1439 
1440  if( !viewData )
1441  continue;
1442 
1443  viewData->m_requiredUpdate |= aUpdateFlags;
1444  }
1445  }
1446 }
friend class VIEW_ITEM
Definition: view.h:66
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:807

References KIGFX::VIEW::m_allItems.

Referenced by SCH_EDIT_FRAME::OnModify(), PCB_BASE_FRAME::SetDisplayOptions(), GERBVIEW_FRAME::SetElementVisibility(), and GERBVIEW_FRAME::UpdateDisplayOptions().

◆ UpdateAllLayersColor()

void KIGFX::VIEW::UpdateAllLayersColor ( )
inherited

Function UpdateAllLayersColor() Applies the new coloring scheme to all layers.

The used scheme is held by RENDER_SETTINGS.

See also
RENDER_SETTINGS

Definition at line 776 of file view.cpp.

777 {
778  if( m_gal->IsVisible() )
779  {
780  GAL_UPDATE_CONTEXT ctx( m_gal );
781 
782  for( VIEW_ITEM* item : *m_allItems )
783  {
784  auto viewData = item->viewPrivData();
785 
786  if( !viewData )
787  continue;
788 
789  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
790  viewData->getLayers( layers, layers_count );
791 
792  for( int i = 0; i < layers_count; ++i )
793  {
794  const COLOR4D color = m_painter->GetSettings()->GetColor( item, layers[i] );
795  int group = viewData->getGroup( layers[i] );
796 
797  if( group >= 0 )
798  m_gal->ChangeGroupColor( group, color );
799  }
800  }
801  }
802 
803  MarkDirty();
804 }
friend class VIEW_ITEM
Definition: view.h:66
int color
Definition: DXF_plotter.cpp:60
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:694
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:807
virtual void ChangeGroupColor(int aGroupNumber, const COLOR4D &aNewColor)
Changes the color used to draw the group.
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:834
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
Function GetAdapter Returns pointer to current settings that are going to be used when drawing items.
virtual bool IsVisible() const
Returns true if the GAL canvas is visible on the screen.
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:596
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:100

References KIGFX::GAL::ChangeGroupColor(), color, KIGFX::RENDER_SETTINGS::GetColor(), KIGFX::PAINTER::GetSettings(), 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(), PCB_INSPECTION_TOOL::ClearHighlight(), FOOTPRINT_EDIT_FRAME::CommonSettingsChanged(), KIGFX::VIEW::EnableTopLayer(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PNS::TOOL_BASE::highlightNet(), PCB_INSPECTION_TOOL::HighlightNet(), PCB_INSPECTION_TOOL::highlightNet(), APPEARANCE_CONTROLS::onNetclassColorChanged(), APPEARANCE_CONTROLS::onNetclassContextMenu(), APPEARANCE_CONTROLS::onNetColorModeChanged(), DIALOG_NET_INSPECTOR::onSelChanged(), DIALOG_NET_INSPECTOR::onSortingChanged(), GERBVIEW_DRAW_PANEL_GAL::SetHighContrastLayer(), PCB_DRAW_PANEL_GAL::SetHighContrastLayer(), EDA_DRAW_PANEL_GAL::SetHighContrastLayer(), and NET_GRID_TABLE::updateNetColor().

◆ UpdateAllLayersOrder()

void KIGFX::VIEW::UpdateAllLayersOrder ( )
inherited

Function UpdateLayerOrder() Does 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 905 of file view.cpp.

906 {
907  sortLayers();
908 
909  if( m_gal->IsVisible() )
910  {
911  GAL_UPDATE_CONTEXT ctx( m_gal );
912 
913  for( VIEW_ITEM* item : *m_allItems )
914  {
915  auto viewData = item->viewPrivData();
916 
917  if( !viewData )
918  continue;
919 
920  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
921  viewData->getLayers( layers, layers_count );
922 
923  for( int i = 0; i < layers_count; ++i )
924  {
925  int group = viewData->getGroup( layers[i] );
926 
927  if( group >= 0 )
928  m_gal->ChangeGroupDepth( group, m_layers[layers[i]].renderingOrder );
929  }
930  }
931  }
932 
933  MarkDirty();
934 }
void sortLayers()
Definition: view.cpp:1236
friend class VIEW_ITEM
Definition: view.h:66
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:694
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:807
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
virtual bool IsVisible() const
Returns true if the GAL canvas is visible on the screen.
virtual void ChangeGroupDepth(int aGroupNumber, int aDepth)
Changes the depth (Z-axis position) of the group.
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:596

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

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

◆ updateBbox()

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

Updates bounding box of an item.

Definition at line 1300 of file view.cpp.

1301 {
1302  int layers[VIEW_MAX_LAYERS], layers_count;
1303 
1304  aItem->ViewGetLayers( layers, layers_count );
1305 
1306  for( int i = 0; i < layers_count; ++i )
1307  {
1308  VIEW_LAYER& l = m_layers[layers[i]];
1309  l.items->Remove( aItem );
1310  l.items->Insert( aItem );
1311  MarkTargetDirty( l.target );
1312  }
1313 }
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:694
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target 'dirty' flag.
Definition: view.h:571
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801

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 118 of file pcb_view.cpp.

119 {
120  auto painter = static_cast<KIGFX::PCB_PAINTER*>( GetPainter() );
121  auto settings = static_cast<KIGFX::PCB_RENDER_SETTINGS*>( painter->GetSettings() );
122 
123  settings->LoadDisplayOptions( aOptions, settings->GetShowPageLimits() );
124 }
PAINTER * GetPainter() const
Function GetPainter() Returns the painter object used by the view for drawing VIEW_ITEMS.
Definition: view.h:201

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

Updates colors that are used for an item to be drawn.

Definition at line 1251 of file view.cpp.

1252 {
1253  auto viewData = aItem->viewPrivData();
1254  wxCHECK( (unsigned) aLayer < m_layers.size(), /*void*/ );
1255  wxCHECK( IsCached( aLayer ), /*void*/ );
1256 
1257  if( !viewData )
1258  return;
1259 
1260  // Obtain the color that should be used for coloring the item on the specific layerId
1261  const COLOR4D color = m_painter->GetSettings()->GetColor( aItem, aLayer );
1262  int group = viewData->getGroup( aLayer );
1263 
1264  // Change the color, only if it has group assigned
1265  if( group >= 0 )
1266  m_gal->ChangeGroupColor( group, color );
1267 }
int color
Definition: DXF_plotter.cpp:60
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
virtual void ChangeGroupColor(int aGroupNumber, const COLOR4D &aNewColor)
Changes the color used to draw the group.
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:834
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
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
Function GetAdapter Returns pointer to current settings that are going to be used when drawing items.
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:578
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:100

References KIGFX::GAL::ChangeGroupColor(), color, KIGFX::RENDER_SETTINGS::GetColor(), KIGFX::PAINTER::GetSettings(), 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

Updates all informations needed to draw an item.

Definition at line 1270 of file view.cpp.

1271 {
1272  auto viewData = aItem->viewPrivData();
1273  wxCHECK( (unsigned) aLayer < m_layers.size(), /*void*/ );
1274  wxCHECK( IsCached( aLayer ), /*void*/ );
1275 
1276  if( !viewData )
1277  return;
1278 
1279  VIEW_LAYER& l = m_layers.at( aLayer );
1280 
1281  m_gal->SetTarget( l.target );
1282  m_gal->SetLayerDepth( l.renderingOrder );
1283 
1284  // Redraw the item from scratch
1285  int group = viewData->getGroup( aLayer );
1286 
1287  if( group >= 0 )
1288  m_gal->DeleteGroup( group );
1289 
1290  group = m_gal->BeginGroup();
1291  viewData->setGroup( aLayer, group );
1292 
1293  if( !m_painter->Draw( static_cast<EDA_ITEM*>( aItem ), aLayer ) )
1294  aItem->ViewDraw( aLayer, this ); // Alternative drawing method
1295 
1296  m_gal->EndGroup();
1297 }
virtual void DeleteGroup(int aGroupNumber)
Delete the group from the memory.
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
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
PAINTER contains information how do draw items.
Definition: view.h:834
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
virtual bool Draw(const VIEW_ITEM *aItem, int aLayer)=0
Function Draw Takes an instance of VIEW_ITEM and passes it to a function that know how to draw the it...
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:578
virtual void SetTarget(RENDER_TARGET aTarget)
Sets the target for rendering.

References KIGFX::GAL::BeginGroup(), KIGFX::GAL::DeleteGroup(), KIGFX::PAINTER::Draw(), KIGFX::GAL::EndGroup(), KIGFX::VIEW::IsCached(), KIGFX::VIEW::m_gal, KIGFX::VIEW::m_layers, KIGFX::VIEW::m_painter, KIGFX::VIEW::VIEW_LAYER::renderingOrder, 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

Function UpdateItems() Iterates through the list of items that asked for updating and updates them.

Definition at line 1394 of file view.cpp.

1395 {
1396  if( m_gal->IsVisible() )
1397  {
1398  GAL_UPDATE_CONTEXT ctx( m_gal );
1399 
1400  for( VIEW_ITEM* item : *m_allItems )
1401  {
1402  auto viewData = item->viewPrivData();
1403 
1404  if( !viewData )
1405  continue;
1406 
1407  if( viewData->m_requiredUpdate != NONE )
1408  {
1409  invalidateItem( item, viewData->m_requiredUpdate );
1410  viewData->m_requiredUpdate = NONE;
1411  }
1412  }
1413  }
1414 }
friend class VIEW_ITEM
Definition: view.h:66
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:807
void invalidateItem(VIEW_ITEM *aItem, int aUpdateFlags)
Function invalidateItem() Manages dirty flags & redraw queueing when updating an item.
Definition: view.cpp:1191
virtual bool IsVisible() const
Returns 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

Function UpdateLayerColor() Applies 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 755 of file view.cpp.

756 {
757  // There is no point in updating non-cached layers
758  if( !IsCached( aLayer ) )
759  return;
760 
761  BOX2I r;
762 
763  r.SetMaximum();
764 
765  if( m_gal->IsVisible() )
766  {
767  GAL_UPDATE_CONTEXT ctx( m_gal );
768 
769  updateItemsColor visitor( aLayer, m_painter, m_gal );
770  m_layers[aLayer].items->Query( r, visitor );
771  MarkTargetDirty( m_layers[aLayer].target );
772  }
773 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target 'dirty' flag.
Definition: view.h:571
void SetMaximum()
Definition: box2.h:73
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:834
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:578
virtual bool IsVisible() const
Returns true if the GAL canvas is visible on the screen.

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

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

◆ updateLayers()

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

Updates set of layers that an item occupies.

Definition at line 1316 of file view.cpp.

1317 {
1318  auto viewData = aItem->viewPrivData();
1319  int layers[VIEW_MAX_LAYERS], layers_count;
1320 
1321  if( !viewData )
1322  return;
1323 
1324  // Remove the item from previous layer set
1325  viewData->getLayers( layers, layers_count );
1326 
1327  for( int i = 0; i < layers_count; ++i )
1328  {
1329  VIEW_LAYER& l = m_layers[layers[i]];
1330  l.items->Remove( aItem );
1331  MarkTargetDirty( l.target );
1332 
1333  if( IsCached( l.id ) )
1334  {
1335  // Redraw the item from scratch
1336  int prevGroup = viewData->getGroup( layers[i] );
1337 
1338  if( prevGroup >= 0 )
1339  {
1340  m_gal->DeleteGroup( prevGroup );
1341  viewData->setGroup( l.id, -1 );
1342  }
1343  }
1344  }
1345 
1346  // Add the item to new layer set
1347  aItem->ViewGetLayers( layers, layers_count );
1348  viewData->saveLayers( layers, layers_count );
1349 
1350  for( int i = 0; i < layers_count; i++ )
1351  {
1352  VIEW_LAYER& l = m_layers[layers[i]];
1353  l.items->Insert( aItem );
1354  MarkTargetDirty( l.target );
1355  }
1356 }
virtual void DeleteGroup(int aGroupNumber)
Delete the group from the memory.
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:837
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:694
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target 'dirty' flag.
Definition: view.h:571
std::vector< VIEW_LAYER > m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:801
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:578

References KIGFX::GAL::DeleteGroup(), 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::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

Function UseDrawPriority()

Parameters
aFlagis true if draw priority should be respected while redrawing.

Definition at line 642 of file view.h.

643  {
644  m_useDrawPriority = aFlag;
645  }
bool m_useDrawPriority
Flat list of all items Flag to respect draw priority when drawing items.
Definition: view.h:851

References KIGFX::VIEW::m_useDrawPriority.

Member Data Documentation

◆ m_allItems

◆ m_boundary

◆ m_center

VECTOR2D KIGFX::VIEW::m_center
protectedinherited

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

Definition at line 813 of file view.h.

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

◆ m_dirtyTargets

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

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

Definition at line 844 of file view.h.

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

◆ m_dynamic

bool KIGFX::VIEW::m_dynamic
protectedinherited

Dynamic VIEW (eg.

display PCB in window) allows changes once it is built, static (eg. image/PDF) - does not.

Definition at line 841 of file view.h.

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

◆ m_enableOrderModifier

bool KIGFX::VIEW::m_enableOrderModifier
protectedinherited
  • Whether to use rendering order modifier or not

Definition at line 798 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

Scale upper limit.

Definition at line 825 of file view.h.

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

◆ m_minScale

double KIGFX::VIEW::m_minScale
protectedinherited

Scale lower limit.

Definition at line 822 of file view.h.

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

◆ m_mirrorX

bool KIGFX::VIEW::m_mirrorX
protectedinherited

Horizontal flip flag

Definition at line 828 of file view.h.

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

◆ m_mirrorY

bool KIGFX::VIEW::m_mirrorY
protectedinherited

Vertical flip flag

Definition at line 831 of file view.h.

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

◆ m_nextDrawPriority

int KIGFX::VIEW::m_nextDrawPriority
protectedinherited

The next sequential drawing priority.

Definition at line 854 of file view.h.

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

◆ m_orderedLayers

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

Sorted list of pointers to members of m_layers.

Definition at line 804 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

Definition at line 718 of file view.h.

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

◆ m_painter

PAINTER* KIGFX::VIEW::m_painter
protectedinherited

◆ m_preview

◆ m_printMode

int KIGFX::VIEW::m_printMode
protectedinherited

A control for printing: m_printMode <= 0 means no printing mode (normal draw mode m_printMode > 0 is a printing mode (currently means "we are in printing mode")

Definition at line 861 of file view.h.

Referenced by KIGFX::VIEW::GetPrintMode(), and KIGFX::VIEW::SetPrintMode().

◆ m_reverseDrawOrder

bool KIGFX::VIEW::m_reverseDrawOrder
protectedinherited

Flag to reverse the draw order when using draw priority.

Definition at line 857 of file view.h.

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

◆ m_scale

double KIGFX::VIEW::m_scale
protectedinherited

Scale of displayed VIEW_ITEMs.

Definition at line 816 of file view.h.

Referenced by KIGFX::VIEW::GetScale(), KIGFX::VIEW::drawItem::operator()(), KIGFX::VIEW::SetGAL(), and KIGFX::VIEW::SetScale().

◆ m_topLayers

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

Stores set of layers that are displayed on the top.

Definition at line 810 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

Flat list of all items Flag to respect draw priority when drawing items.

Definition at line 851 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

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

Definition at line 847 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: