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 (VIEW_ITEM *aItem, int aUpdateFlags) override
 For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has changed. More...
 
virtual void Update (VIEW_ITEM *aItem) override
 For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has changed. More...
 
void UpdateDisplayOptions (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...
 
void SetScale (double aScale)
 Function SetScale() Sets the scaling factor. More...
 
void SetScale (double aScale, const VECTOR2D &aAnchor)
 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 AddLayer (int aLayer, bool aDisplayOnly=false)
 Function AddLayer() Adds a new layer to the view. More...
 
void ClearLayer (int aLayer)
 Function ClearLayer() Removes all items from a given layer. 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 ()
 
std::unique_ptr< VIEWDataReference () const
 Returns a new VIEW object that shares the same set of VIEW_ITEMs and LAYERs. More...
 

Static Public Member Functions

static void OnDestroy (VIEW_ITEM *aItem)
 

Static Public Attributes

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

Protected Types

typedef std::unordered_map< int, VIEW_LAYERLAYER_MAP
 
typedef LAYER_MAP::iterator LAYER_MAP_ITER
 
typedef std::vector< VIEW_LAYER * > LAYER_ORDER
 
typedef std::vector< VIEW_LAYER * >::iterator LAYER_ORDER_ITER
 

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

bool m_enableOrderModifier
 
LAYER_MAP m_layers
 Contains set of possible displayed layers and its properties. More...
 
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
 Flat list of all items. More...
 
LAYER_ORDER m_orderedLayers
 Sorted list of pointers to members of m_layers. 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...
 

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

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

Definition at line 66 of file view.h.

typedef std::unordered_map<int, VIEW_LAYER> KIGFX::VIEW::LAYER_MAP
protectedinherited

Definition at line 714 of file view.h.

typedef LAYER_MAP::iterator KIGFX::VIEW::LAYER_MAP_ITER
protectedinherited

Definition at line 715 of file view.h.

typedef std::vector<VIEW_LAYER*> KIGFX::VIEW::LAYER_ORDER
protectedinherited

Definition at line 716 of file view.h.

typedef std::vector<VIEW_LAYER*>::iterator KIGFX::VIEW::LAYER_ORDER_ITER
protectedinherited

Definition at line 717 of file view.h.

Constructor & Destructor Documentation

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

Definition at line 37 of file pcb_view.cpp.

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

37  :
38  VIEW( aIsDynamic )
39 {
40  // Set m_boundary to define the max area size. The default value
41  // is acceptable for Pcbnew and Gerbview.
42  // However, ensure this area has the right size (max size allowed by integer coordinates)
43  // in case of the default value is changed.
44  // Could be a size depending on the worksheet size.
45  typedef std::numeric_limits<int> coord_limits;
46  double pos = coord_limits::lowest() / 2 + coord_limits::epsilon();
47  double size = coord_limits::max() - coord_limits::epsilon();
48  m_boundary.SetOrigin( pos, pos );
49  m_boundary.SetSize( size, size );
50 }
void SetSize(const Vec &size)
Definition: box2.h:210
#define max(a, b)
Definition: auxiliary.h:86
BOX2D m_boundary
View boundaries.
Definition: view.h:828
void SetOrigin(const Vec &pos)
Definition: box2.h:208
VIEW(bool aIsDynamic=true)
Constructor.
Definition: view.cpp:285
KIGFX::PCB_VIEW::~PCB_VIEW ( )
virtual

Definition at line 53 of file pcb_view.cpp.

54 {
55 }

Member Function Documentation

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

References KIGFX::VIEW::Add(), mod, and PCB_MODULE_T.

Referenced by PCB_TOOL::doInteractiveItemPlacement(), EDIT_TOOL::MeasureTool(), SELECTION_TOOL::Reset(), and SELECTION_TOOL::zoomFitSelection().

59 {
60  auto item = static_cast<BOARD_ITEM*>( aItem );
61 
62  if( item->Type() == PCB_MODULE_T )
63  {
64  auto mod = static_cast<MODULE*>( item );
65  mod->RunOnChildren([this] ( BOARD_ITEM* aModItem ) {
66  VIEW::Add( aModItem );
67  } );
68  }
69 
70  VIEW::Add( item, aDrawPriority );
71 }
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
class MODULE, a footprint
Definition: typeinfo.h:89
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Function Add() Adds a VIEW_ITEM to the view.
Definition: view.cpp:344
#define mod(a, n)
Definition: greymap.cpp:24
void KIGFX::VIEW::AddLayer ( int  aLayer,
bool  aDisplayOnly = false 
)
inherited

Function AddLayer() Adds a new layer to the view.

Parameters
aLayerunique ID of the layer to be added.
aDisplayOnlylayer is display-only (example: selection boxes, floating hints/menus). Objects belonging to this layer are not taken into account by Query() method.

Definition at line 329 of file view.cpp.

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

Referenced by KIGFX::VIEW::GetCenter(), and KIGFX::VIEW::VIEW().

330 {
331  if( m_layers.find( aLayer ) == m_layers.end() )
332  {
333  m_layers[aLayer] = VIEW_LAYER();
334  m_layers[aLayer].items.reset( new VIEW_RTREE() );
335  m_layers[aLayer].id = aLayer;
336  m_layers[aLayer].renderingOrder = aLayer;
337  m_layers[aLayer].visible = true;
338  m_layers[aLayer].displayOnly = aDisplayOnly;
339  m_layers[aLayer].target = TARGET_CACHED;
340  }
341 }
Main rendering target (cached)
Definition: definitions.h:41
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
bool KIGFX::VIEW::areRequiredLayersEnabled ( int  aLayerId) const
protectedinherited

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

Definition at line 1374 of file view.cpp.

References KIGFX::VIEW::m_layers.

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

1375 {
1376  wxCHECK( (unsigned) aLayerId < m_layers.size(), false );
1377 
1378  std::set<int>::const_iterator it, it_end;
1379 
1380  for( it = m_layers.at( aLayerId ).requiredLayers.begin(),
1381  it_end = m_layers.at( aLayerId ).requiredLayers.end(); it != it_end; ++it )
1382  {
1383  // That is enough if just one layer is not enabled
1384  if( !m_layers.at( *it ).visible || !areRequiredLayersEnabled( *it ) )
1385  return false;
1386  }
1387 
1388  return true;
1389 }
bool areRequiredLayersEnabled(int aLayerId) const
Checks if every layer required by the aLayerId layer is enabled.
Definition: view.cpp:1374
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void KIGFX::VIEW::Clear ( )
inherited

Function Clear() Removes all items from the view.

Definition at line 1108 of file view.cpp.

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

Referenced by PCB_DRAW_PANEL_GAL::DisplayBoard(), KIGFX::SCH_VIEW::DisplayComponent(), KIGFX::VIEW::GetCenter(), GERBVIEW_FRAME::OnCloseWindow(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), PCB_BASE_EDIT_FRAME::SetBoard(), GERBVIEW_DRAW_PANEL_GAL::SwitchBackend(), DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME(), FOOTPRINT_VIEWER_FRAME::~FOOTPRINT_VIEWER_FRAME(), and GERBVIEW_FRAME::~GERBVIEW_FRAME().

1109 {
1110  BOX2I r;
1111  r.SetMaximum();
1112  m_allItems->clear();
1113 
1114  for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i )
1115  i->second.items->RemoveAll();
1116 
1117  m_nextDrawPriority = 0;
1118 
1119  m_gal->ClearCache();
1120 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:813
void SetMaximum()
Definition: box2.h:71
int m_nextDrawPriority
The next sequential drawing priority.
Definition: view.h:863
LAYER_MAP::iterator LAYER_MAP_ITER
Definition: view.h:715
size_t i
Definition: json11.cpp:597
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
virtual void ClearCache()
Delete all data created during caching of graphic items.
void KIGFX::VIEW::clearGroupCache ( )
protectedinherited

Definition at line 1191 of file view.cpp.

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

Referenced by KIGFX::VIEW::markTargetClean(), and KIGFX::VIEW::SetGAL().

1192 {
1193  BOX2I r;
1194 
1195  r.SetMaximum();
1196  clearLayerCache visitor( this );
1197 
1198  for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i )
1199  {
1200  VIEW_LAYER* l = &( ( *i ).second );
1201  l->items->Query( r, visitor );
1202  }
1203 }
void SetMaximum()
Definition: box2.h:71
LAYER_MAP::iterator LAYER_MAP_ITER
Definition: view.h:715
size_t i
Definition: json11.cpp:597
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void KIGFX::VIEW::ClearLayer ( int  aLayer)
inherited

Function ClearLayer() Removes all items from a given layer.

Parameters
aLayerID of the layer to be cleared

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

void KIGFX::VIEW::ClearTargets ( )
inherited

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

Definition at line 1123 of file view.cpp.

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::onPaint(), and KIGFX::VIEW::SetLayerTarget().

1124 {
1126  {
1127  // TARGET_CACHED and TARGET_NONCACHED have to be redrawn together, as they contain
1128  // layers that rely on each other (eg. netnames are noncached, but tracks - are cached)
1131 
1132  MarkDirty();
1133  }
1134 
1135  if( IsTargetDirty( TARGET_OVERLAY ) )
1136  {
1138  }
1139 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
Auxiliary rendering target (noncached)
Definition: definitions.h:42
virtual void ClearTarget(RENDER_TARGET aTarget)
Clears the target for rendering.
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:585
Items that may change while the view stays the same (noncached)
Definition: definitions.h:43
Main rendering target (cached)
Definition: definitions.h:41
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:621
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 909 of file view.cpp.

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

Referenced by KIGFX::VIEW::SetLayerTarget(), GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), PCB_DRAW_PANEL_GAL::SetTopLayer(), and EDA_DRAW_PANEL_GAL::SetTopLayer().

910 {
911  std::set<unsigned int>::iterator it;
912 
914  {
915  // Restore the previous rendering order for layers that were marked as top
916  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
917  m_layers[*it].renderingOrder -= TOP_LAYER_MODIFIER;
918  }
919 
920  m_topLayers.clear();
921 }
static const int TOP_LAYER_MODIFIER
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:856
std::set< unsigned int > m_topLayers
Stores set of layers that are displayed on the top.
Definition: view.h:819
bool m_enableOrderModifier
Definition: view.h:807
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 798 of file view.h.

References KIGFX::VIEW::areRequiredLayersEnabled(), and KIGFX::VIEW::VIEW_LAYER::renderingOrder.

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

799  {
800  return aI->renderingOrder > aJ->renderingOrder;
801  }
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 511 of file view.cpp.

512 {
513  wxASSERT_MSG( false, wxT( "This is not implemented" ) );
514 }
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 1466 of file view.cpp.

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

Referenced by BOARD_PRINTOUT::DrawPage(), and KIGFX::VIEW::ReverseDrawOrder().

1467 {
1468  auto ret = std::make_unique<VIEW>();
1469  ret->m_allItems = m_allItems;
1470  ret->m_layers = m_layers;
1471  ret->sortLayers();
1472  return ret;
1473 }
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:813
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 1026 of file view.cpp.

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::draw(), and KIGFX::VIEW::markTargetClean().

1027 {
1028  auto viewData = aItem->viewPrivData();
1029 
1030  if( !viewData )
1031  return;
1032 
1033  if( IsCached( aLayer ) && !aImmediate )
1034  {
1035  // Draw using cached information or create one
1036  int group = viewData->getGroup( aLayer );
1037 
1038  if( group >= 0 )
1039  m_gal->DrawGroup( group );
1040  else
1041  Update( aItem );
1042  }
1043  else
1044  {
1045  // Immediate mode
1046  if( !m_painter->Draw( aItem, aLayer ) )
1047  aItem->ViewDraw( aLayer, this ); // Alternative drawing method
1048  }
1049 }
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:846
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:843
virtual void Update(VIEW_ITEM *aItem, int aUpdateFlags)
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1530
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:603
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 1052 of file view.cpp.

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

1053 {
1054  int layers[VIEW_MAX_LAYERS], layers_count;
1055 
1056  aItem->ViewGetLayers( layers, layers_count );
1057 
1058  // Sorting is needed for drawing order dependent GALs (like Cairo)
1059  SortLayers( layers, layers_count );
1060 
1061  for( int i = 0; i < layers_count; ++i )
1062  {
1063  m_gal->SetLayerDepth( m_layers.at( layers[i] ).renderingOrder );
1064  draw( aItem, layers[i], aImmediate );
1065  }
1066 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
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:699
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:675
size_t i
Definition: json11.cpp:597
void draw(VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
Function draw() Draws an item, but on a specified layers.
Definition: view.cpp:1026
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 1069 of file view.cpp.

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

1070 {
1071  for( unsigned int i = 0; i < aGroup->GetSize(); i++)
1072  draw( aGroup->GetItem(i), aImmediate );
1073 }
size_t i
Definition: json11.cpp:597
void draw(VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
Function draw() Draws an item, but on a specified layers.
Definition: view.cpp:1026
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 884 of file view.cpp.

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 KIGFX::VIEW::SetLayerTarget().

885 {
886  if( aEnable == m_enableOrderModifier )
887  return;
888 
889  m_enableOrderModifier = aEnable;
890 
891  std::set<unsigned int>::iterator it;
892 
893  if( aEnable )
894  {
895  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
896  m_layers[*it].renderingOrder += TOP_LAYER_MODIFIER;
897  }
898  else
899  {
900  for( it = m_topLayers.begin(); it != m_topLayers.end(); ++it )
901  m_layers[*it].renderingOrder -= TOP_LAYER_MODIFIER;
902  }
903 
906 }
static const int TOP_LAYER_MODIFIER
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:856
std::set< unsigned int > m_topLayers
Stores set of layers that are displayed on the top.
Definition: view.h:819
void UpdateAllLayersOrder()
Function UpdateLayerOrder() Does everything that is needed to apply the rendering order of layers...
Definition: view.cpp:924
bool m_enableOrderModifier
Definition: view.h:807
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void UpdateAllLayersColor()
Function UpdateAllLayersColor() Applies the new coloring scheme to all layers.
Definition: view.cpp:795
const BOX2D& KIGFX::VIEW::GetBoundary ( ) const
inlineinherited

Function GetBoundary()

Returns
Current view area boundary.

Definition at line 298 of file view.h.

References KIGFX::VIEW::m_boundary.

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

299  {
300  return m_boundary;
301  }
BOX2D m_boundary
View boundaries.
Definition: view.h:828
const VECTOR2D& KIGFX::VIEW::GetCenter ( ) const
inlineinherited
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 180 of file view.h.

References KIGFX::VIEW::m_gal.

Referenced by KIGFX::WX_VIEW_CONTROLS::CenterOnCursor(), DIALOG_SET_GRID::DIALOG_SET_GRID(), PCBNEW_CONTROL::DoSetGridOrigin(), drawArcWithHilight(), drawLineWithHilight(), KIGFX::PREVIEW::CENTRELINE_RECT_ITEM::drawPreviewShape(), KIGFX::PREVIEW::POLYGON_ITEM::drawPreviewShape(), KIGFX::PREVIEW::DrawTextNextToCursor(), drawTicksAlongLine(), KIGFX::VIEW_OVERLAY::COMMAND_LINE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_RECTANGLE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_CIRCLE::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_ARC::Execute(), KIGFX::VIEW_OVERLAY::COMMAND_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(), KIGFX::WX_VIEW_CONTROLS::GetRawCursorPosition(), DIALOG_PAD_PROPERTIES::prepareCanvas(), KIGFX::WX_VIEW_CONTROLS::SetCrossHairCursorPosition(), EDA_DRAW_FRAME::SetPresetGrid(), KIGFX::VIEW_CONTROLS::ShowCursor(), COMMON_TOOLS::updateGrid(), PCBNEW_CONTROL::updateGrid(), PCB_BRIGHT_BOX::ViewDraw(), KIGFX::PREVIEW::ARC_ASSISTANT::ViewDraw(), KIGFX::RATSNEST_VIEWITEM::ViewDraw(), KIGFX::PREVIEW::RULER_ITEM::ViewDraw(), KIGFX::ORIGIN_VIEWITEM::ViewDraw(), BRIGHT_BOX::ViewDraw(), KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM::ViewDraw(), KIGFX::PREVIEW::SELECTION_AREA::ViewDraw(), KIGFX::VIEW_GROUP::ViewDraw(), ROUTER_PREVIEW_ITEM::ViewDraw(), KIGFX::WORKSHEET_VIEWITEM::ViewDraw(), EDIT_POINTS::ViewDraw(), and KIGFX::WX_VIEW_CONTROLS::WarpCursor().

181  {
182  return m_gal;
183  }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
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 669 of file view.cpp.

References KIGFX::VIEW::m_layers.

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

670 {
671  return m_layers.at( aLayer ).renderingOrder;
672 }
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 199 of file view.h.

References KIGFX::VIEW::GetViewport(), KIGFX::VIEW::m_painter, KIGFX::VIEW::SetMirror(), and KIGFX::VIEW::SetViewport().

Referenced by FOOTPRINT_VIEWER_FRAME::ApplyDisplaySettingsToGAL(), DISPLAY_FOOTPRINTS_FRAME::ApplyDisplaySettingsToGAL(), PCB_EDITOR_CONTROL::ClearHighlight(), SYMBOL_PREVIEW_WIDGET::DisplayPart(), SYMBOL_PREVIEW_WIDGET::DisplaySymbol(), drawArcWithHilight(), drawLineWithHilight(), BOARD_PRINTOUT::DrawPage(), KIGFX::PREVIEW::POLYGON_ITEM::drawPreviewShape(), KIGFX::PREVIEW::DrawTextNextToCursor(), drawTicksAlongLine(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), GERBVIEW_DRAW_PANEL_GAL::GERBVIEW_DRAW_PANEL_GAL(), ROUTER_PREVIEW_ITEM::getLayerColor(), SCH_BASE_FRAME::GetRenderSettings(), GERBVIEW_CONTROL::HighlightControl(), PNS::TOOL_BASE::highlightNet(), PCB_EDITOR_CONTROL::HighlightNet(), highlightNet(), PCBNEW_CONTROL::LayerAlphaDec(), PCBNEW_CONTROL::LayerAlphaInc(), SCH_EDIT_FRAME::LoadSettings(), LIB_EDIT_FRAME::LoadSettings(), FOOTPRINT_PREVIEW_PANEL::New(), DIALOG_PAD_PROPERTIES::onChangePadMode(), ZONE_CREATE_HELPER::OnFirstPoint(), PCB_LAYER_WIDGET::OnLayerColorChange(), GERBER_LAYER_WIDGET::OnLayerColorChange(), PCB_LAYER_WIDGET::OnRenderColorChange(), GERBER_LAYER_WIDGET::OnRenderColorChange(), GERBVIEW_FRAME::OnSelectHighlightChoice(), SCH_EDIT_FRAME::OnSelectOptionToolbar(), GERBVIEW_DRAW_PANEL_GAL::OnShow(), PCB_DRAW_PANEL_GAL::OnShow(), DIALOG_PAD_PROPERTIES::prepareCanvas(), GRID_HELPER::queryVisible(), DIALOG_PAD_PROPERTIES::redraw(), GERBVIEW_SELECTION_TOOL::Reset(), SELECTION_TOOL::Reset(), GERBVIEW_SELECTION_TOOL::selectable(), SELECTION_TOOL::selectable(), GERBVIEW_DRAW_PANEL_GAL::SetHighContrastLayer(), PCB_DRAW_PANEL_GAL::SetHighContrastLayer(), EDA_DRAW_PANEL_GAL::SetHighContrastLayer(), PCB_LAYER_WIDGET::SyncLayerAlphaIndicators(), PANEL_PCBNEW_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_PCBNEW_SETTINGS::TransferDataFromWindow(), UpdateDisplayOptions(), GERBVIEW_DRAW_PANEL_GAL::UseColorScheme(), PCB_DRAW_PANEL_GAL::UseColorScheme(), PCB_BASE_FRAME::UseGalCanvas(), KIGFX::PREVIEW::ARC_ASSISTANT::ViewDraw(), KIGFX::RATSNEST_VIEWITEM::ViewDraw(), KIGFX::PREVIEW::RULER_ITEM::ViewDraw(), KIGFX::PREVIEW::SELECTION_AREA::ViewDraw(), KIGFX::VIEW_GROUP::ViewDraw(), and KIGFX::WORKSHEET_VIEWITEM::ViewDraw().

200  {
201  return m_painter;
202  }
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:843
double KIGFX::VIEW::GetScale ( ) const
inlineinherited

Function GetScale()

Returns
Current scale factor of this VIEW.

Definition at line 268 of file view.h.

References KIGFX::VIEW::m_scale.

Referenced by KIGFX::WX_VIEW_CONTROLS::onWheel(), DIALOG_PAD_PROPERTIES::redraw(), KIGFX::VIEW::SetViewport(), SCH_BASE_FRAME::Window_Zoom(), SCH_BASE_FRAME::Zoom_Automatique(), COMMON_TOOLS::ZoomFitScreen(), and SELECTION_TOOL::zoomFitSelection().

269  {
270  return m_scale;
271  }
double m_scale
Scale of displayed VIEW_ITEMs.
Definition: view.h:825
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 1167 of file view.cpp.

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

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

1168 {
1169  return m_gal->GetScreenPixelSize();
1170 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
int KIGFX::VIEW::GetTopLayer ( ) const
virtualinherited

Definition at line 848 of file view.cpp.

References KIGFX::VIEW::m_topLayers.

Referenced by ROUTER_TOOL::getStartLayer(), SELECTION_TOOL::guessSelectionCandidates(), PNS::TOOL_BASE::pickSingleItem(), KIGFX::VIEW::SetLayerTarget(), and PNS::TOOL_BASE::updateStartItem().

849 {
850  if( m_topLayers.size() == 0 )
851  return 0;
852 
853  return *m_topLayers.begin();
854 }
std::set< unsigned int > m_topLayers
Stores set of layers that are displayed on the top.
Definition: view.h:819
BOX2D KIGFX::VIEW::GetViewport ( ) const
inherited

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

Returns
Current viewport rectangle

Definition at line 536 of file view.cpp.

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

Referenced by KIGFX::VIEW::GetPainter(), SELECTION_TOOL::guessSelectionCandidates(), and KIGFX::WX_VIEW_CONTROLS::UpdateScrollbars().

537 {
538  BOX2D rect;
539  VECTOR2D screenSize = m_gal->GetScreenPixelSize();
540 
541  rect.SetOrigin( ToWorld( VECTOR2D( 0, 0 ) ) );
542  rect.SetEnd( ToWorld( screenSize ) );
543 
544  return rect.Normalize();
545 }
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:473
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
VECTOR2< double > VECTOR2D
Definition: vector2d.h:586
BOX2< Vec > & Normalize()
Function Normalize ensures that the height ant width are positive.
Definition: box2.h:127
void SetEnd(coord_type x, coord_type y)
Definition: box2.h:223
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
void SetOrigin(const Vec &pos)
Definition: box2.h:208
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 1497 of file view.cpp.

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

Referenced by KIGFX::SCH_VIEW::AddToPreview(), KIGFX::SCH_VIEW::ClearHiddenFlags(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), DrawMovePin(), DrawMovingBlockOutlines(), SELECTION_TOOL::highlight(), resizeSheetWithMouseCursor(), GERBVIEW_SELECTION_TOOL::selectVisually(), LIB_EDIT_FRAME::StartMoveDrawSymbol(), SELECTION_TOOL::unhighlight(), and GERBVIEW_SELECTION_TOOL::unselectVisually().

1498 {
1499  auto viewData = aItem->viewPrivData();
1500 
1501  if( !viewData )
1502  return;
1503 
1504  if( !( viewData->m_flags & VISIBLE ) )
1505  return;
1506 
1507  if( aHide )
1508  viewData->m_flags |= HIDDEN;
1509  else
1510  viewData->m_flags &= ~HIDDEN;
1511 
1512  Update( aItem, APPEARANCE );
1513 }
Item is visible (in general)
Definition: view_item.h:70
No updates are required.
Definition: view_item.h:55
virtual void Update(VIEW_ITEM *aItem, int aUpdateFlags)
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1530
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 1206 of file view.cpp.

References KIGFX::ALL, KIGFX::VIEW_ITEM_DATA::clearUpdateFlags(), KIGFX::COLOR, KIGFX::GEOMETRY, i, 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::markTargetClean(), and KIGFX::VIEW::UpdateItems().

1207 {
1208  if( aUpdateFlags & INITIAL_ADD )
1209  {
1210  // Don't update layers or bbox, since it was done in VIEW::Add()
1211  // Now that we have initialized, set flags to ALL for the code below
1212  aUpdateFlags = ALL;
1213  }
1214  else
1215  {
1216  // updateLayers updates geometry too, so we do not have to update both of them at the same time
1217  if( aUpdateFlags & LAYERS )
1218  {
1219  updateLayers( aItem );
1220  }
1221  else if( aUpdateFlags & GEOMETRY )
1222  {
1223  updateBbox( aItem );
1224  }
1225  }
1226 
1227  int layers[VIEW_MAX_LAYERS], layers_count;
1228  aItem->ViewGetLayers( layers, layers_count );
1229 
1230  // Iterate through layers used by the item and recache it immediately
1231  for( int i = 0; i < layers_count; ++i )
1232  {
1233  int layerId = layers[i];
1234 
1235  if( IsCached( layerId ) )
1236  {
1237  if( aUpdateFlags & ( GEOMETRY | LAYERS | REPAINT ) )
1238  updateItemGeometry( aItem, layerId );
1239  else if( aUpdateFlags & COLOR )
1240  updateItemColor( aItem, layerId );
1241  }
1242 
1243  // Mark those layers as dirty, so the VIEW will be refreshed
1244  MarkTargetDirty( m_layers[layerId].target );
1245  }
1246 
1247  aItem->viewPrivData()->clearUpdateFlags();
1248 }
Layers have changed.
Definition: view_item.h:59
void updateLayers(VIEW_ITEM *aItem)
Updates set of layers that an item occupies.
Definition: view.cpp:1331
void updateItemColor(VIEW_ITEM *aItem, int aLayer)
Updates colors that are used for an item to be drawn.
Definition: view.cpp:1266
Visibility flag has changed.
Definition: view_item.h:56
Item needs to be redrawn.
Definition: view_item.h:61
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:699
Item is being added to the view.
Definition: view_item.h:60
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target &#39;dirty&#39; flag.
Definition: view.h:596
void updateBbox(VIEW_ITEM *aItem)
Updates bounding box of an item.
Definition: view.cpp:1315
void updateItemGeometry(VIEW_ITEM *aItem, int aLayer)
Updates all informations needed to draw an item.
Definition: view.cpp:1285
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:603
size_t i
Definition: json11.cpp:597
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
Position or shape has changed.
Definition: view_item.h:58
Color has changed.
Definition: view_item.h:57
bool KIGFX::VIEW::IsCached ( int  aLayer) const
inlineinherited

Returns true if the layer is cached.

Definition at line 603 of file view.h.

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

604  {
605  wxCHECK( aLayer < (int) m_layers.size(), false );
606 
607  try
608  {
609  return m_layers.at( aLayer ).target == TARGET_CACHED;
610  }
611  catch( const std::out_of_range& )
612  {
613  return false;
614  }
615  }
Main rendering target (cached)
Definition: definitions.h:41
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 568 of file view.h.

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

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

569  {
570  for( int i = 0; i < TARGETS_NUMBER; ++i )
571  {
572  if( IsTargetDirty( i ) )
573  return true;
574  }
575 
576  return false;
577  }
Number of available rendering targets.
Definition: definitions.h:44
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:585
size_t i
Definition: json11.cpp:597
bool KIGFX::VIEW::IsDrawOrderReversed ( ) const
inlineinherited

Function IsDrawOrderReversed()

Returns
true if draw order is reversed

Definition at line 676 of file view.h.

References KIGFX::VIEW::m_reverseDrawOrder.

677  {
678  return m_reverseDrawOrder;
679  }
bool m_reverseDrawOrder
Flag to reverse the draw order when using draw priority.
Definition: view.h:866
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 558 of file view.h.

References KIGFX::VIEW::m_dynamic.

559  {
560  return m_dynamic;
561  }
bool m_dynamic
Dynamic VIEW (eg.
Definition: view.h:850
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 427 of file view.h.

References KIGFX::VIEW::m_layers.

Referenced by KIGFX::VIEW_GROUP::ViewDraw(), EDGE_MODULE::ViewGetLOD(), TEXTE_MODULE::ViewGetLOD(), TRACK::ViewGetLOD(), MODULE::ViewGetLOD(), and D_PAD::ViewGetLOD().

428  {
429  wxCHECK( aLayer < (int) m_layers.size(), false );
430  return m_layers.at( aLayer ).visible;
431  }
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
bool KIGFX::VIEW::IsMirroredX ( ) const
inlineinherited

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

Definition at line 230 of file view.h.

References KIGFX::VIEW::m_mirrorX.

Referenced by COMMON_TOOLS::CursorControl(), KIGFX::WX_VIEW_CONTROLS::onScroll(), SELECTION_TOOL::selectMultiple(), KIGFX::WX_VIEW_CONTROLS::UpdateScrollbars(), and KIGFX::PREVIEW::SELECTION_AREA::ViewDraw().

231  {
232  return m_mirrorX;
233  }
bool m_mirrorX
Horizontal flip flag
Definition: view.h:837
bool KIGFX::VIEW::IsMirroredY ( ) const
inlineinherited

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

Definition at line 239 of file view.h.

References KIGFX::VIEW::m_mirrorY.

240  {
241  return m_mirrorY;
242  }
bool m_mirrorY
Vertical flip flag
Definition: view.h:840
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 585 of file view.h.

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

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

586  {
587  wxCHECK( aTarget < TARGETS_NUMBER, false );
588  return m_dirtyTargets[aTarget];
589  }
Number of available rendering targets.
Definition: definitions.h:44
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:853
bool KIGFX::VIEW::IsUsingDrawPriority ( ) const
inlineinherited

Function IsUsingDrawPriority()

Returns
true if draw priority is being respected while redrawing.

Definition at line 658 of file view.h.

References KIGFX::VIEW::m_useDrawPriority.

659  {
660  return m_useDrawPriority;
661  }
bool m_useDrawPriority
Flat list of all items Flag to respect draw priority when drawing items.
Definition: view.h:860
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 1516 of file view.cpp.

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

Referenced by GRID_HELPER::BestSnapAnchor(), and SELECTION_TOOL::selectable().

1517 {
1518  const auto viewData = aItem->viewPrivData();
1519 
1520  return viewData->m_flags & VISIBLE;
1521 }
std::shared_ptr< VIEW_OVERLAY > KIGFX::VIEW::MakeOverlay ( )
inherited

Definition at line 1544 of file view.cpp.

References KIGFX::VIEW::Add(), KIGFX::VIEW::TOP_LAYER_MODIFIER, and KIGFX::VIEW::VIEW_MAX_LAYERS.

Referenced by AUTOPLACE_TOOL::autoplace(), and KIGFX::VIEW::ReverseDrawOrder().

1545 {
1546  std::shared_ptr<VIEW_OVERLAY> overlay( new VIEW_OVERLAY );
1547 
1548  Add( overlay.get() );
1549  return overlay;
1550 }
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Function Add() Adds a VIEW_ITEM to the view.
Definition: view.cpp:344
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.

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

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

Definition at line 732 of file view.h.

References KIGFX::VIEW::clearGroupCache(), KIGFX::VIEW::draw(), KIGFX::VIEW::invalidateItem(), KIGFX::VIEW::m_dirtyTargets, KIGFX::VIEW::sortLayers(), KIGFX::TARGETS_NUMBER, KIGFX::VIEW::updateBbox(), KIGFX::VIEW::updateItemColor(), KIGFX::VIEW::updateItemGeometry(), and KIGFX::VIEW::updateLayers().

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

733  {
734  wxCHECK( aTarget < TARGETS_NUMBER, /* void */ );
735  m_dirtyTargets[aTarget] = false;
736  }
Number of available rendering targets.
Definition: definitions.h:44
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:853
void KIGFX::VIEW::OnDestroy ( VIEW_ITEM aItem)
staticinherited

Definition at line 271 of file view.cpp.

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

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

272 {
273  auto data = aItem->viewPrivData();
274 
275  if( !data )
276  return;
277 
278  if( data->m_view )
279  data->m_view->VIEW::Remove( aItem );
280 
281  delete data;
282 }
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 450 of file view.cpp.

References i, and KIGFX::VIEW::m_orderedLayers.

Referenced by GERBVIEW_SELECTION_TOOL::selectMultiple(), and SELECTION_TOOL::selectMultiple().

451 {
452  if( m_orderedLayers.empty() )
453  return 0;
454 
455  std::vector<VIEW_LAYER*>::const_reverse_iterator i;
456 
457  // execute queries in reverse direction, so that items that are on the top of
458  // the rendering stack are returned first.
459  for( i = m_orderedLayers.rbegin(); i != m_orderedLayers.rend(); ++i )
460  {
461  // ignore layers that do not contain actual items (i.e. the selection box, menus, floats)
462  if( ( *i )->displayOnly || !( *i )->visible )
463  continue;
464 
465  queryVisitor<std::vector<LAYER_ITEM_PAIR> > visitor( aResult, ( *i )->id );
466  ( *i )->items->Query( aRect, visitor );
467  }
468 
469  return aResult.size();
470 }
LAYER_ORDER m_orderedLayers
Sorted list of pointers to members of m_layers.
Definition: view.h:816
size_t i
Definition: json11.cpp:597
void KIGFX::VIEW::RecacheAllItems ( )
inherited

Function RecacheAllItems() Rebuilds GAL display lists.

Definition at line 1392 of file view.cpp.

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

Referenced by GERBVIEW_DRAW_PANEL_GAL::OnShow(), KIGFX::VIEW::SetLayerTarget(), PANEL_PCBNEW_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_MODEDIT_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_LIBEDIT_DISPLAY_OPTIONS::TransferDataFromWindow(), PCB_BASE_FRAME::UseGalCanvas(), and GERBVIEW_FRAME::UseGalCanvas().

1393 {
1394  BOX2I r;
1395 
1396  r.SetMaximum();
1397 
1398  for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i )
1399  {
1400  VIEW_LAYER* l = &( ( *i ).second );
1401 
1402  if( IsCached( l->id ) )
1403  {
1404  recacheItem visitor( this, m_gal, l->id );
1405  l->items->Query( r, visitor );
1406  }
1407  }
1408 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
void SetMaximum()
Definition: box2.h:71
LAYER_MAP::iterator LAYER_MAP_ITER
Definition: view.h:715
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:603
size_t i
Definition: json11.cpp:597
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void KIGFX::VIEW::Redraw ( )
virtualinherited

Function Redraw() Immediately redraws the whole view.

Definition at line 1142 of file view.cpp.

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

Referenced by EDA_DRAW_PANEL_GAL::onPaint(), and KIGFX::VIEW::SetLayerTarget().

1143 {
1144 #ifdef __WXDEBUG__
1145  PROF_COUNTER totalRealTime;
1146 #endif /* __WXDEBUG__ */
1147 
1148  VECTOR2D screenSize = m_gal->GetScreenPixelSize();
1149  BOX2I rect( ToWorld( VECTOR2D( 0, 0 ) ),
1150  ToWorld( screenSize ) - ToWorld( VECTOR2D( 0, 0 ) ) );
1151  rect.Normalize();
1152 
1153  redrawRect( rect );
1154 
1155  // All targets were redrawn, so nothing is dirty
1159 
1160 #ifdef __WXDEBUG__
1161  totalRealTime.Stop();
1162  wxLogTrace( "GAL_PROFILE", "VIEW::Redraw(): %.1f ms", totalRealTime.msecs() );
1163 #endif /* __WXDEBUG__ */
1164 }
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:473
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
The class PROF_COUNTER is a small class to help profiling.
Definition: profile.h:45
Auxiliary rendering target (noncached)
Definition: definitions.h:42
VECTOR2< double > VECTOR2D
Definition: vector2d.h:586
Items that may change while the view stays the same (noncached)
Definition: definitions.h:43
void markTargetClean(int aTarget)
Definition: view.h:732
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
double msecs() const
Definition: profile.h:124
void redrawRect(const BOX2I &aRect)
Definition: view.cpp:1007
Main rendering target (cached)
Definition: definitions.h:41
void KIGFX::VIEW::redrawRect ( const BOX2I aRect)
protectedinherited
  • Redraws contents within rect aRect

Definition at line 1007 of file view.cpp.

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

1008 {
1009  for( VIEW_LAYER* l : m_orderedLayers )
1010  {
1011  if( l->visible && IsTargetDirty( l->target ) && areRequiredLayersEnabled( l->id ) )
1012  {
1013  drawItem drawFunc( this, l->id, m_useDrawPriority, m_reverseDrawOrder );
1014 
1015  m_gal->SetTarget( l->target );
1016  m_gal->SetLayerDepth( l->renderingOrder );
1017  l->items->Query( aRect, drawFunc );
1018 
1019  if( m_useDrawPriority )
1020  drawFunc.deferredDraw();
1021  }
1022  }
1023 }
bool m_useDrawPriority
Flat list of all items Flag to respect draw priority when drawing items.
Definition: view.h:860
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
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:585
LAYER_ORDER m_orderedLayers
Sorted list of pointers to members of m_layers.
Definition: view.h:816
bool m_reverseDrawOrder
Flag to reverse the draw order when using draw priority.
Definition: view.h:866
bool areRequiredLayersEnabled(int aLayerId) const
Checks if every layer required by the aLayerId layer is enabled.
Definition: view.cpp:1374
virtual void SetTarget(RENDER_TARGET aTarget)
Sets the target for rendering.
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 74 of file pcb_view.cpp.

References mod, PCB_MODULE_T, and KIGFX::VIEW::Remove().

Referenced by PCB_TOOL::doInteractiveItemPlacement(), EDIT_TOOL::MeasureTool(), and SELECTION_TOOL::Reset().

75 {
76  auto item = static_cast<BOARD_ITEM*>( aItem );
77 
78 
79  if( item->Type() == PCB_MODULE_T )
80  {
81  auto mod = static_cast<MODULE*>( item );
82  mod->RunOnChildren([this] ( BOARD_ITEM* aModItem ) {
83  VIEW::Remove( aModItem );
84  } );
85  }
86 
87  VIEW::Remove( item );
88 }
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
virtual void Remove(VIEW_ITEM *aItem)
Function Remove() Removes a VIEW_ITEM from the view.
Definition: view.cpp:374
class MODULE, a footprint
Definition: typeinfo.h:89
#define mod(a, n)
Definition: greymap.cpp:24
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 703 of file view.cpp.

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

Referenced by KIGFX::VIEW::SetLayerTarget(), and GERBVIEW_FRAME::SortLayersByX2Attributes().

704 {
705  LAYER_MAP new_map;
706 
707  for( const auto& it : m_layers )
708  {
709  int orig_idx = it.first;
710  VIEW_LAYER layer = it.second;
711  int new_idx;
712 
713  try
714  {
715  new_idx = aReorderMap.at( orig_idx );
716  }
717  catch( const std::out_of_range& )
718  {
719  new_idx = orig_idx;
720  }
721 
722  layer.id = new_idx;
723  new_map[new_idx] = layer;
724  }
725 
726  m_layers = new_map;
727 
728  for( VIEW_ITEM* item : *m_allItems )
729  {
730  auto viewData = item->viewPrivData();
731 
732  if( !viewData )
733  continue;
734 
735  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
736 
737  item->ViewGetLayers( layers, layers_count );
738  viewData->saveLayers( layers, layers_count );
739 
740  viewData->reorderGroups( aReorderMap );
741 
742  viewData->m_requiredUpdate |= COLOR;
743  }
744 
745  UpdateItems();
746 }
friend class VIEW_ITEM
Definition: view.h:64
Visibility flag has changed.
Definition: view_item.h:56
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:699
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:813
std::unordered_map< int, VIEW_LAYER > LAYER_MAP
Definition: view.h:714
void UpdateItems()
Function UpdateItems() Iterates through the list of items that asked for updating and updates them...
Definition: view.cpp:1411
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 686 of file view.h.

References KIGFX::VIEW::DataReference(), KIGFX::VIEW::m_reverseDrawOrder, and KIGFX::VIEW::MakeOverlay().

Referenced by EDA_DRAW_PANEL_GAL::SwitchBackend().

687  {
688  m_reverseDrawOrder = aFlag;
689  }
bool m_reverseDrawOrder
Flag to reverse the draw order when using draw priority.
Definition: view.h:866
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 278 of file view.h.

References KIGFX::VIEW::m_boundary.

Referenced by DIALOG_PAD_PROPERTIES::redraw().

279  {
280  m_boundary = aBoundary;
281  }
BOX2D m_boundary
View boundaries.
Definition: view.h:828
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 288 of file view.h.

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

289  {
290  m_boundary.SetOrigin( aBoundary.GetOrigin() );
291  m_boundary.SetEnd( aBoundary.GetEnd() );
292  }
const Vec & GetOrigin() const
Definition: box2.h:191
const Vec GetEnd() const
Definition: box2.h:193
void SetEnd(coord_type x, coord_type y)
Definition: box2.h:223
BOX2D m_boundary
View boundaries.
Definition: view.h:828
void SetOrigin(const Vec &pos)
Definition: box2.h:208
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 599 of file view.cpp.

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(), PCB_EDITOR_CONTROL::CrossProbeSchToPcb(), SELECTION_TOOL::findCallback(), findDialog(), SYMBOL_PREVIEW_WIDGET::fitOnDrawArea(), EDA_DRAW_FRAME::FocusOnLocation(), KIGFX::WX_VIEW_CONTROLS::onMotion(), KIGFX::WX_VIEW_CONTROLS::onScroll(), KIGFX::WX_VIEW_CONTROLS::onTimer(), KIGFX::WX_VIEW_CONTROLS::onWheel(), KIGFX::VIEW::SetCenter(), KIGFX::WX_VIEW_CONTROLS::SetCrossHairCursorPosition(), KIGFX::VIEW::SetGAL(), KIGFX::VIEW::SetScale(), KIGFX::VIEW::SetScaleLimits(), KIGFX::VIEW::SetViewport(), EDA_DRAW_FRAME::UseGalCanvas(), KIGFX::WX_VIEW_CONTROLS::WarpCursor(), SCH_BASE_FRAME::Window_Zoom(), SCH_BASE_FRAME::Zoom_Automatique(), COMMON_TOOLS::ZoomFitScreen(), and SELECTION_TOOL::zoomFitSelection().

600 {
601  m_center = aCenter;
602 
603  if( !m_boundary.Contains( aCenter ) )
604  {
605  if( m_center.x < m_boundary.GetLeft() )
607  else if( aCenter.x > m_boundary.GetRight() )
609 
610  if( m_center.y < m_boundary.GetTop() )
612  else if( m_center.y > m_boundary.GetBottom() )
614  }
615 
618 
619  // Redraw everything after the viewport has changed
620  MarkDirty();
621 }
bool Contains(const Vec &aPoint) const
Function Contains.
Definition: box2.h:149
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
coord_type GetRight() const
Definition: box2.h:197
virtual void ComputeWorldScreenMatrix()
Compute the world <-> screen transformation matrix.
coord_type GetTop() const
Definition: box2.h:202
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at)
Definition: view.h:822
coord_type GetBottom() const
Definition: box2.h:198
BOX2D m_boundary
View boundaries.
Definition: view.h:828
void SetLookAtPoint(const VECTOR2D &aPoint)
Set the Point in world space to look at.
coord_type GetLeft() const
Definition: box2.h:201
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:621
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 624 of file view.cpp.

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

625 {
626  BOX2D screenRect( VECTOR2D( 0, 0 ), m_gal->GetScreenPixelSize() );
627 
628  if( !screenRect.Intersects( occultingScreenRect ) )
629  {
630  SetCenter( aCenter );
631  return;
632  }
633 
634  BOX2D occultedRect = screenRect.Intersect( occultingScreenRect );
635  VECTOR2D offset( occultedRect.GetWidth() / 2, occultedRect.GetHeight() / 2 );
636 
637  double topExposed = occultedRect.GetTop() - screenRect.GetTop();
638  double bottomExposed = screenRect.GetBottom() - occultedRect.GetBottom();
639  double leftExposed = occultedRect.GetLeft() - screenRect.GetLeft();
640  double rightExposed = screenRect.GetRight() - occultedRect.GetRight();
641 
642  if( std::max( topExposed, bottomExposed ) > std::max( leftExposed, rightExposed ) )
643  {
644  if( topExposed > bottomExposed )
645  aCenter.y += ToWorld( occultedRect.GetHeight() / 2 );
646  else
647  aCenter.y -= ToWorld( occultedRect.GetHeight() / 2 );
648  }
649  else
650  {
651  if( leftExposed > rightExposed )
652  aCenter.x += ToWorld( occultedRect.GetWidth() / 2 );
653  else
654  aCenter.x -= ToWorld( occultedRect.GetWidth() / 2 );
655  }
656 
657  SetCenter( aCenter );
658 }
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:473
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
coord_type GetRight() const
Definition: box2.h:197
coord_type GetTop() const
Definition: box2.h:202
coord_type GetWidth() const
Definition: box2.h:195
void SetCenter(const VECTOR2D &aCenter)
Function SetCenter() Sets the center point of the VIEW (i.e.
Definition: view.cpp:599
VECTOR2< double > VECTOR2D
Definition: vector2d.h:586
coord_type GetBottom() const
Definition: box2.h:198
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
coord_type GetHeight() const
Definition: box2.h:196
#define max(a, b)
Definition: auxiliary.h:86
coord_type GetLeft() const
Definition: box2.h:201
BOX2< Vec > Intersect(const BOX2< Vec > &aRect)
Function Intersect Returns the intersection of this with another rectangle.
Definition: box2.h:266
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 517 of file view.cpp.

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(), SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL(), and EDA_DRAW_PANEL_GAL::SwitchBackend().

518 {
519  bool recacheGroups = ( m_gal != nullptr ); // recache groups only if GAL is reassigned
520  m_gal = aGal;
521 
522  // clear group numbers, so everything is going to be recached
523  if( recacheGroups )
524  clearGroupCache();
525 
526  // every target has to be refreshed
527  MarkDirty();
528 
529  // force the new GAL to display the current viewport.
530  SetCenter( m_center );
531  SetScale( m_scale );
533 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
void SetMirror(bool aMirrorX, bool aMirrorY)
Function SetMirror() Controls the mirroring of the VIEW.
Definition: view.cpp:563
void SetScale(double aScale)
Function SetScale() Sets the scaling factor.
Definition: view.h:250
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at)
Definition: view.h:822
void SetCenter(const VECTOR2D &aCenter)
Function SetCenter() Sets the center point of the VIEW (i.e.
Definition: view.cpp:599
bool m_mirrorX
Horizontal flip flag
Definition: view.h:837
void clearGroupCache()
Definition: view.cpp:1191
bool m_mirrorY
Vertical flip flag
Definition: view.h:840
double m_scale
Scale of displayed VIEW_ITEMs.
Definition: view.h:825
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:621
void KIGFX::VIEW::SetLayerDisplayOnly ( int  aLayer,
bool  aDisplayOnly = true 
)
inlineinherited

Definition at line 433 of file view.h.

References KIGFX::VIEW::m_layers.

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

434  {
435  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
436  m_layers[aLayer].displayOnly = aDisplayOnly;
437  }
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 661 of file view.cpp.

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

Referenced by SCH_PREVIEW_PANEL::setDefaultLayerOrder(), PCB_DRAW_PANEL_GAL::setDefaultLayerOrder(), KIGFX::VIEW::SetLayerTarget(), GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), and PCB_DRAW_PANEL_GAL::SetTopLayer().

662 {
663  m_layers[aLayer].renderingOrder = aRenderingOrder;
664 
665  sortLayers();
666 }
void sortLayers()
Definition: view.cpp:1251
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 445 of file view.h.

References KIGFX::VIEW::ClearTargets(), KIGFX::VIEW::ClearTopLayers(), KIGFX::VIEW::EnableTopLayer(), KIGFX::VIEW::GetLayerOrder(), KIGFX::VIEW::GetTopLayer(), KIGFX::VIEW::m_layers, KIGFX::VIEW::RecacheAllItems(), KIGFX::VIEW::Redraw(), KIGFX::VIEW::ReorderLayerData(), KIGFX::VIEW::SetLayerOrder(), KIGFX::VIEW::SetTopLayer(), KIGFX::VIEW::SortLayers(), KIGFX::VIEW::UpdateAllLayersColor(), KIGFX::VIEW::UpdateAllLayersOrder(), and KIGFX::VIEW::UpdateLayerColor().

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

446  {
447  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
448  m_layers[aLayer].target = aTarget;
449  }
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 410 of file view.h.

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

Referenced by PCB_LAYER_WIDGET::OnLayerVisible(), PCB_LAYER_WIDGET::OnRenderEnable(), FOOTPRINT_EDIT_FRAME::SetElementVisibility(), and PCB_DRAW_PANEL_GAL::SyncLayersVisibility().

411  {
412  wxCHECK( aLayer < (int) m_layers.size(), /*void*/ );
413 
414  if( m_layers[aLayer].visible != aVisible )
415  {
416  // Target has to be redrawn after changing its visibility
417  MarkTargetDirty( m_layers[aLayer].target );
418  m_layers[aLayer].visible = aVisible;
419  }
420  }
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target &#39;dirty&#39; flag.
Definition: view.h:596
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 563 of file view.cpp.

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

Referenced by KIGFX::VIEW::GetPainter(), SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL(), and KIGFX::VIEW::SetGAL().

564 {
565  wxASSERT_MSG( !aMirrorY, _( "Mirroring for Y axis is not supported yet" ) );
566 
567  m_mirrorX = aMirrorX;
568  m_mirrorY = aMirrorY;
569  m_gal->SetFlip( aMirrorX, aMirrorY );
570 
571  // Redraw everything
572  MarkDirty();
573 }
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:846
bool m_mirrorX
Horizontal flip flag
Definition: view.h:837
bool m_mirrorY
Vertical flip flag
Definition: view.h:840
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:621
void KIGFX::VIEW::SetPainter ( PAINTER aPainter)
inlineinherited

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

Definition at line 189 of file view.h.

References KIGFX::VIEW::m_painter.

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

190  {
191  m_painter = aPainter;
192  }
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:843
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 414 of file view.cpp.

References KIGFX::VIEW::m_layers.

Referenced by PCB_DRAW_PANEL_GAL::setDefaultLayerDeps().

415 {
416  wxCHECK( (unsigned) aLayerId < m_layers.size(), /*void*/ );
417  wxCHECK( (unsigned) aRequiredId < m_layers.size(), /*void*/ );
418 
419  if( aRequired )
420  m_layers[aLayerId].requiredLayers.insert( aRequiredId );
421  else
422  m_layers[aLayerId].requiredLayers.erase( aRequired );
423 }
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void KIGFX::VIEW::SetScale ( double  aScale)
inlineinherited

Function SetScale() Sets the scaling factor.

Scale = 1 corresponds to the real world size of the objects (depending on correct GAL unit length & DPI settings).

Parameters
aScalethe scalefactor

Definition at line 250 of file view.h.

References KIGFX::VIEW::m_center.

Referenced by COMMON_TOOLS::doZoomToPreset(), SYMBOL_PREVIEW_WIDGET::fitOnDrawArea(), FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME(), KIGFX::WX_VIEW_CONTROLS::onWheel(), EDA_DRAW_FRAME::OnZoom(), DIALOG_PAD_PROPERTIES::redraw(), SCH_BASE_FRAME::RedrawScreen(), SCH_BASE_FRAME::RedrawScreen2(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), KIGFX::VIEW::SetGAL(), KIGFX::VIEW::SetViewport(), EDA_DRAW_FRAME::UseGalCanvas(), SCH_BASE_FRAME::Window_Zoom(), SCH_BASE_FRAME::Zoom_Automatique(), COMMON_TOOLS::ZoomFitScreen(), and SELECTION_TOOL::zoomFitSelection().

251  {
252  SetScale( aScale, m_center );
253  }
void SetScale(double aScale)
Function SetScale() Sets the scaling factor.
Definition: view.h:250
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at)
Definition: view.h:822
void KIGFX::VIEW::SetScale ( double  aScale,
const VECTOR2D aAnchor 
)
inherited

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

Definition at line 576 of file view.cpp.

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

577 {
578  VECTOR2D a = ToScreen( aAnchor );
579 
580  if( aScale < m_minScale )
582  else if( aScale > m_maxScale )
584  else
585  m_scale = aScale;
586 
589 
590  VECTOR2D delta = ToWorld( a ) - aAnchor;
591 
592  SetCenter( m_center - delta );
593 
594  // Redraw everything after the viewport has changed
595  MarkDirty();
596 }
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:473
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
virtual void ComputeWorldScreenMatrix()
Compute the world <-> screen transformation matrix.
static const int delta[8][2]
Definition: solve.cpp:112
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at)
Definition: view.h:822
double m_minScale
Scale lower limit.
Definition: view.h:831
void SetCenter(const VECTOR2D &aCenter)
Function SetCenter() Sets the center point of the VIEW (i.e.
Definition: view.cpp:599
double m_maxScale
Scale upper limit.
Definition: view.h:834
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:492
void SetZoomFactor(double aZoomFactor)
Set the zoom factor of the scene.
double m_scale
Scale of displayed VIEW_ITEMs.
Definition: view.h:825
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:621
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 309 of file view.h.

References KIGFX::VIEW::m_maxScale, KIGFX::VIEW::m_minScale, and KIGFX::VIEW::SetCenter().

Referenced by SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL().

310  {
311  wxASSERT_MSG( aMaximum > aMinimum, wxT( "I guess you passed parameters in wrong order" ) );
312 
313  m_minScale = aMinimum;
314  m_maxScale = aMaximum;
315  }
double m_minScale
Scale lower limit.
Definition: view.h:831
double m_maxScale
Scale upper limit.
Definition: view.h:834
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 857 of file view.cpp.

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(), KIGFX::VIEW::SetLayerTarget(), GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), PCB_DRAW_PANEL_GAL::SetTopLayer(), and EDA_DRAW_PANEL_GAL::SetTopLayer().

858 {
859  if( aEnabled )
860  {
861  if( m_topLayers.count( aLayer ) == 1 )
862  return;
863 
864  m_topLayers.insert( aLayer );
865 
866  // Move the layer closer to front
868  m_layers[aLayer].renderingOrder += TOP_LAYER_MODIFIER;
869  }
870  else
871  {
872  if( m_topLayers.count( aLayer ) == 0 )
873  return;
874 
875  m_topLayers.erase( aLayer );
876 
877  // Restore the previous rendering order
879  m_layers[aLayer].renderingOrder -= TOP_LAYER_MODIFIER;
880  }
881 }
static const int TOP_LAYER_MODIFIER
Rendering order modifier for layers that are marked as top layers.
Definition: view.h:856
std::set< unsigned int > m_topLayers
Stores set of layers that are displayed on the top.
Definition: view.h:819
bool m_enableOrderModifier
Definition: view.h:807
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
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 548 of file view.cpp.

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

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

549 {
550  VECTOR2D ssize = ToWorld( m_gal->GetScreenPixelSize(), false );
551 
552  wxCHECK( ssize.x > 0 && ssize.y > 0, /*void*/ );
553 
554  VECTOR2D centre = aViewport.Centre();
555  VECTOR2D vsize = aViewport.GetSize();
556  double zoom = 1.0 / std::max( fabs( vsize.x / ssize.x ), fabs( vsize.y / ssize.y ) );
557 
558  SetCenter( centre );
559  SetScale( GetScale() * zoom );
560 }
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:473
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
const Vec & GetSize() const
Definition: box2.h:187
void SetScale(double aScale)
Function SetScale() Sets the scaling factor.
Definition: view.h:250
void SetCenter(const VECTOR2D &aCenter)
Function SetCenter() Sets the center point of the VIEW (i.e.
Definition: view.cpp:599
Vec Centre() const
Definition: box2.h:77
const VECTOR2I & GetScreenPixelSize() const
Returns GAL canvas size in pixels.
#define max(a, b)
Definition: auxiliary.h:86
double GetScale() const
Function GetScale()
Definition: view.h:268
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 1476 of file view.cpp.

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::SCH_VIEW::AddToPreview(), GRID_HELPER::BestSnapAnchor(), MICROWAVE_TOOL::drawMicrowaveInductor(), DrawMovingBlockOutlines(), GRID_HELPER::GRID_HELPER(), EDIT_TOOL::MeasureTool(), ZONE_CREATE_HELPER::OnComplete(), ZONE_CREATE_HELPER::OnFirstPoint(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), GERBVIEW_SELECTION_TOOL::selectMultiple(), SELECTION_TOOL::selectMultiple(), GRID_HELPER::SetAuxAxes(), KIGFX::SCH_VIEW::ShowPreview(), KIGFX::SCH_VIEW::ShowSelectionArea(), and ZONE_CREATE_HELPER::~ZONE_CREATE_HELPER().

1477 {
1478  auto viewData = aItem->viewPrivData();
1479 
1480  if( !viewData )
1481  return;
1482 
1483  bool cur_visible = viewData->m_flags & VISIBLE;
1484 
1485  if( cur_visible != aIsVisible )
1486  {
1487  if( aIsVisible )
1488  viewData->m_flags |= VISIBLE;
1489  else
1490  viewData->m_flags &= ~VISIBLE;
1491 
1492  Update( aItem, APPEARANCE | COLOR );
1493  }
1494 }
No updates are required.
Definition: view_item.h:55
Visibility flag has changed.
Definition: view_item.h:56
virtual void Update(VIEW_ITEM *aItem, int aUpdateFlags)
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1530
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 675 of file view.cpp.

References KIGFX::VIEW::GetLayerOrder(), and i.

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

676 {
677  int maxLay, maxOrd, maxIdx;
678 
679  for( int i = 0; i < aCount; ++i )
680  {
681  maxLay = aLayers[i];
682  maxOrd = GetLayerOrder( maxLay );
683  maxIdx = i;
684 
685  // Look for the max element in the range (j..aCount)
686  for( int j = i; j < aCount; ++j )
687  {
688  if( maxOrd < GetLayerOrder( aLayers[j] ) )
689  {
690  maxLay = aLayers[j];
691  maxOrd = GetLayerOrder( maxLay );
692  maxIdx = j;
693  }
694  }
695 
696  // Swap elements
697  aLayers[maxIdx] = aLayers[i];
698  aLayers[i] = maxLay;
699  }
700 }
int GetLayerOrder(int aLayer) const
Function GetLayerOrder() Returns rendering order of a particular layer.
Definition: view.cpp:669
size_t i
Definition: json11.cpp:597
void KIGFX::VIEW::sortLayers ( )
protectedinherited
  • Sorts m_orderedLayers when layer rendering order has changed

Definition at line 1251 of file view.cpp.

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

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

1252 {
1253  int n = 0;
1254 
1255  m_orderedLayers.resize( m_layers.size() );
1256 
1257  for( LAYER_MAP_ITER i = m_layers.begin(); i != m_layers.end(); ++i )
1258  m_orderedLayers[n++] = &i->second;
1259 
1260  sort( m_orderedLayers.begin(), m_orderedLayers.end(), compareRenderingOrder );
1261 
1262  MarkDirty();
1263 }
LAYER_ORDER m_orderedLayers
Sorted list of pointers to members of m_layers.
Definition: view.h:816
LAYER_MAP::iterator LAYER_MAP_ITER
Definition: view.h:715
size_t i
Definition: json11.cpp:597
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
static bool compareRenderingOrder(VIEW_LAYER *aI, VIEW_LAYER *aJ)
Determines rendering order of layers. Used in display order sorting function.
Definition: view.h:798
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:621
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 492 of file view.cpp.

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

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

493 {
494  const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix();
495 
496  if( aAbsolute )
497  return VECTOR2D( matrix * aCoord );
498  else
499  return VECTOR2D( matrix.GetScale().x * aCoord.x, matrix.GetScale().y * aCoord.y );
500 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
const MATRIX3x3D & GetWorldScreenMatrix() const
Get the world <-> screen transformation matrix.
VECTOR2< double > VECTOR2D
Definition: vector2d.h:586
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:269
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 503 of file view.cpp.

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

504 {
505  const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix();
506 
507  return matrix.GetScale().x * aSize;
508 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
const MATRIX3x3D & GetWorldScreenMatrix() const
Get the world <-> screen transformation matrix.
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:269
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 473 of file view.cpp.

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

Referenced by COMMON_TOOLS::CenterContents(), EDIT_POINTS::FindPoint(), SYMBOL_PREVIEW_WIDGET::fitOnDrawArea(), GENERAL_COLLECTORS_GUIDE::GENERAL_COLLECTORS_GUIDE(), KIGFX::VIEW::GetCenter(), KIGFX::WX_VIEW_CONTROLS::GetMousePosition(), KIGFX::VIEW::GetViewport(), KIGFX::WX_VIEW_CONTROLS::onMotion(), KIGFX::WX_VIEW_CONTROLS::onScroll(), KIGFX::WX_VIEW_CONTROLS::onTimer(), KIGFX::WX_VIEW_CONTROLS::onWheel(), KIGFX::VIEW::Redraw(), KIGFX::WX_VIEW_CONTROLS::refreshMouse(), GERBVIEW_SELECTION_TOOL::selectionContains(), SELECTION_TOOL::selectionContains(), KIGFX::VIEW::SetCenter(), KIGFX::VIEW::SetScale(), KIGFX::VIEW::SetViewport(), KIGFX::ORIGIN_VIEWITEM::ViewDraw(), EDIT_POINTS::ViewDraw(), SCH_BASE_FRAME::Window_Zoom(), SCH_BASE_FRAME::Zoom_Automatique(), COMMON_TOOLS::ZoomFitScreen(), and SELECTION_TOOL::zoomFitSelection().

474 {
475  const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix();
476 
477  if( aAbsolute )
478  return VECTOR2D( matrix * aCoord );
479  else
480  return VECTOR2D( matrix.GetScale().x * aCoord.x, matrix.GetScale().y * aCoord.y );
481 }
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:846
VECTOR2< double > VECTOR2D
Definition: vector2d.h:586
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:269
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 484 of file view.cpp.

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

485 {
486  const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix();
487 
488  return fabs( matrix.GetScale().x * aSize );
489 }
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:846
VECTOR2< T > GetScale() const
Get the scale components of the matrix.
Definition: matrix3x3.h:269
void KIGFX::PCB_VIEW::Update ( KIGFX::VIEW_ITEM aItem,
int  aUpdateFlags 
)
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 91 of file pcb_view.cpp.

References mod, PCB_MODULE_T, and KIGFX::VIEW::Update().

Referenced by SELECTION_TOOL::clearSelection(), PCB_TOOL::doInteractiveItemPlacement(), PCBNEW_CONTROL::GraphicDisplayMode(), EDIT_TOOL::MeasureTool(), PCBNEW_CONTROL::ModuleEdgeOutlines(), PCBNEW_CONTROL::ModuleTextOutlines(), PCBNEW_CONTROL::PadDisplayMode(), SELECTION_TOOL::select(), PCBNEW_CONTROL::TrackDisplayMode(), SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unselect(), Update(), PCBNEW_CONTROL::ViaDisplayMode(), and PCBNEW_CONTROL::ZoneDisplayMode().

92 {
93  auto item = static_cast<BOARD_ITEM*>( aItem );
94 
95  if( item->Type() == PCB_MODULE_T )
96  {
97  auto mod = static_cast<MODULE*>( item );
98  mod->RunOnChildren([this, aUpdateFlags] ( BOARD_ITEM* aModItem ) {
99  VIEW::Update( aModItem, aUpdateFlags );
100  } );
101  }
102 
103  VIEW::Update( item, aUpdateFlags );
104 }
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
class MODULE, a footprint
Definition: typeinfo.h:89
virtual void Update(VIEW_ITEM *aItem, int aUpdateFlags)
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1530
#define mod(a, n)
Definition: greymap.cpp:24
void KIGFX::PCB_VIEW::Update ( KIGFX::VIEW_ITEM aItem)
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 107 of file pcb_view.cpp.

References KIGFX::ALL, and Update().

108 {
109  PCB_VIEW::Update( aItem, KIGFX::ALL );
110 }
virtual void Update(VIEW_ITEM *aItem, int aUpdateFlags) override
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: pcb_view.cpp:91
Item needs to be redrawn.
Definition: view_item.h:61
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 1434 of file view.cpp.

References KIGFX::VIEW::m_allItems.

Referenced by FOOTPRINT_VIEWER_FRAME::ApplyDisplaySettingsToGAL(), DISPLAY_FOOTPRINTS_FRAME::ApplyDisplaySettingsToGAL(), GERBVIEW_CONTROL::HighlightControl(), SCH_EDIT_FRAME::KiwayMailIn(), KIGFX::VIEW::MarkDirty(), GERBVIEW_FRAME::OnSelectHighlightChoice(), SCH_EDIT_FRAME::OnSelectOptionToolbar(), LIB_EDIT_FRAME::OnShowElectricalType(), SCH_EDIT_FRAME::PutDataInPreviousState(), and SCH_BASE_FRAME::SyncView().

1435 {
1436  for( VIEW_ITEM* item : *m_allItems )
1437  {
1438  auto viewData = item->viewPrivData();
1439 
1440  if( !viewData )
1441  continue;
1442 
1443  viewData->m_requiredUpdate |= aUpdateFlags;
1444  }
1445 }
friend class VIEW_ITEM
Definition: view.h:64
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:813
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 1448 of file view.cpp.

References KIGFX::VIEW::m_allItems.

Referenced by KIGFX::VIEW::MarkDirty(), GERBVIEW_FRAME::SetElementVisibility(), and GERBVIEW_FRAME::UpdateDisplayOptions().

1450 {
1451  for( VIEW_ITEM* item : *m_allItems )
1452  {
1453  if( aCondition( item ) )
1454  {
1455  auto viewData = item->viewPrivData();
1456 
1457  if( !viewData )
1458  continue;
1459 
1460  viewData->m_requiredUpdate |= aUpdateFlags;
1461  }
1462  }
1463 }
friend class VIEW_ITEM
Definition: view.h:64
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:813
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 795 of file view.cpp.

References KIGFX::GAL::ChangeGroupColor(), color, KIGFX::RENDER_SETTINGS::GetColor(), KIGFX::PAINTER::GetSettings(), i, 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 PCB_EDITOR_CONTROL::ClearHighlight(), KIGFX::VIEW::EnableTopLayer(), PNS::TOOL_BASE::highlightNet(), PCB_EDITOR_CONTROL::HighlightNet(), highlightNet(), GERBVIEW_DRAW_PANEL_GAL::SetHighContrastLayer(), PCB_DRAW_PANEL_GAL::SetHighContrastLayer(), EDA_DRAW_PANEL_GAL::SetHighContrastLayer(), and KIGFX::VIEW::SetLayerTarget().

796 {
797  if( m_gal->IsVisible() )
798  {
799  GAL_UPDATE_CONTEXT ctx( m_gal );
800 
801  for( VIEW_ITEM* item : *m_allItems )
802  {
803  auto viewData = item->viewPrivData();
804 
805  if( !viewData )
806  continue;
807 
808  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
809  viewData->getLayers( layers, layers_count );
810 
811  for( int i = 0; i < layers_count; ++i )
812  {
813  const COLOR4D color = m_painter->GetSettings()->GetColor( item, layers[i] );
814  int group = viewData->getGroup( layers[i] );
815 
816  if( group >= 0 )
817  m_gal->ChangeGroupColor( group, color );
818  }
819  }
820  }
821 
822  MarkDirty();
823 }
friend class VIEW_ITEM
Definition: view.h:64
int color
Definition: DXF_plotter.cpp:62
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
virtual bool IsVisible() const
Returns true if the GAL canvas is visible on the screen.
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:699
virtual const COLOR4D & GetColor(const VIEW_ITEM *aItem, int aLayer) const =0
Function GetColor Returns the color that should be used to draw the specific VIEW_ITEM on the specifi...
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:813
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:843
virtual RENDER_SETTINGS * GetSettings()=0
Function GetSettings Returns pointer to current settings that are going to be used when drawing items...
size_t i
Definition: json11.cpp:597
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:621
Class COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:39
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 924 of file view.cpp.

References KIGFX::GAL::ChangeGroupDepth(), i, 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_PREVIEW_PANEL::SCH_PREVIEW_PANEL(), KIGFX::VIEW::SetLayerTarget(), GERBVIEW_DRAW_PANEL_GAL::SetTopLayer(), PCB_DRAW_PANEL_GAL::SetTopLayer(), and EDA_DRAW_PANEL_GAL::SetTopLayer().

925 {
926  sortLayers();
927 
928  if( m_gal->IsVisible() )
929  {
930  GAL_UPDATE_CONTEXT ctx( m_gal );
931 
932  for( VIEW_ITEM* item : *m_allItems )
933  {
934  auto viewData = item->viewPrivData();
935 
936  if( !viewData )
937  continue;
938 
939  int layers[VIEW::VIEW_MAX_LAYERS], layers_count;
940  viewData->getLayers( layers, layers_count );
941 
942  for( int i = 0; i < layers_count; ++i )
943  {
944  int group = viewData->getGroup( layers[i] );
945 
946  if( group >= 0 )
947  m_gal->ChangeGroupDepth( group, m_layers[layers[i]].renderingOrder );
948  }
949  }
950  }
951 
952  MarkDirty();
953 }
void sortLayers()
Definition: view.cpp:1251
friend class VIEW_ITEM
Definition: view.h:64
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
virtual bool IsVisible() const
Returns true if the GAL canvas is visible on the screen.
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:699
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:813
size_t i
Definition: json11.cpp:597
virtual void ChangeGroupDepth(int aGroupNumber, int aDepth)
Changes the depth (Z-axis position) of the group.
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void MarkDirty()
Function MarkDirty() Forces redraw of view on the next rendering.
Definition: view.h:621
void KIGFX::VIEW::updateBbox ( VIEW_ITEM aItem)
protectedinherited

Updates bounding box of an item.

Definition at line 1315 of file view.cpp.

References i, 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(), and KIGFX::VIEW::markTargetClean().

1316 {
1317  int layers[VIEW_MAX_LAYERS], layers_count;
1318 
1319  aItem->ViewGetLayers( layers, layers_count );
1320 
1321  for( int i = 0; i < layers_count; ++i )
1322  {
1323  VIEW_LAYER& l = m_layers[layers[i]];
1324  l.items->Remove( aItem );
1325  l.items->Insert( aItem );
1326  MarkTargetDirty( l.target );
1327  }
1328 }
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:699
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target &#39;dirty&#39; flag.
Definition: view.h:596
size_t i
Definition: json11.cpp:597
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void KIGFX::PCB_VIEW::UpdateDisplayOptions ( PCB_DISPLAY_OPTIONS aOptions)

Definition at line 113 of file pcb_view.cpp.

References KIGFX::VIEW::GetPainter(), and KIGFX::PCB_RENDER_SETTINGS::LoadDisplayOptions().

Referenced by PCBNEW_CONTROL::GraphicDisplayMode(), PCBNEW_CONTROL::HighContrastMode(), PCBNEW_CONTROL::ModuleEdgeOutlines(), PCBNEW_CONTROL::ModuleTextOutlines(), PCB_BASE_FRAME::OnToggleEdgeDrawMode(), PCB_BASE_FRAME::OnTogglePadDrawMode(), PCB_BASE_FRAME::OnToggleTextDrawMode(), PCBNEW_CONTROL::PadDisplayMode(), PCBNEW_CONTROL::TrackDisplayMode(), PCBNEW_CONTROL::ViaDisplayMode(), and PCBNEW_CONTROL::ZoneDisplayMode().

114 {
115  auto painter = static_cast<KIGFX::PCB_PAINTER*>( GetPainter() );
116  auto settings = static_cast<KIGFX::PCB_RENDER_SETTINGS*>( painter->GetSettings() );
117 
118  settings->LoadDisplayOptions( aOptions, settings->GetShowPageLimits() );
119 }
Class PCB_PAINTER Contains methods for drawing PCB-specific items.
Definition: pcb_painter.h:211
Class PCB_RENDER_SETTINGS Stores PCB specific render settings.
Definition: pcb_painter.h:62
PAINTER * GetPainter() const
Function GetPainter() Returns the painter object used by the view for drawing VIEW_ITEMS.
Definition: view.h:199
void LoadDisplayOptions(const PCB_DISPLAY_OPTIONS *aOptions, bool aShowPageLimits)
Function LoadDisplayOptions Loads settings related to display options (high-contrast mode...
void KIGFX::VIEW::updateItemColor ( VIEW_ITEM aItem,
int  aLayer 
)
protectedinherited

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

Definition at line 1266 of file view.cpp.

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(), and KIGFX::VIEW::markTargetClean().

1267 {
1268  auto viewData = aItem->viewPrivData();
1269  wxCHECK( (unsigned) aLayer < m_layers.size(), /*void*/ );
1270  wxCHECK( IsCached( aLayer ), /*void*/ );
1271 
1272  if( !viewData )
1273  return;
1274 
1275  // Obtain the color that should be used for coloring the item on the specific layerId
1276  const COLOR4D color = m_painter->GetSettings()->GetColor( aItem, aLayer );
1277  int group = viewData->getGroup( aLayer );
1278 
1279  // Change the color, only if it has group assigned
1280  if( group >= 0 )
1281  m_gal->ChangeGroupColor( group, color );
1282 }
int color
Definition: DXF_plotter.cpp:62
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
virtual const COLOR4D & GetColor(const VIEW_ITEM *aItem, int aLayer) const =0
Function GetColor Returns the color that should be used to draw the specific VIEW_ITEM on the specifi...
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:843
virtual RENDER_SETTINGS * GetSettings()=0
Function GetSettings 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:603
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
Class COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:39
void KIGFX::VIEW::updateItemGeometry ( VIEW_ITEM aItem,
int  aLayer 
)
protectedinherited

Updates all informations needed to draw an item.

Definition at line 1285 of file view.cpp.

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(), and KIGFX::VIEW::markTargetClean().

1286 {
1287  auto viewData = aItem->viewPrivData();
1288  wxCHECK( (unsigned) aLayer < m_layers.size(), /*void*/ );
1289  wxCHECK( IsCached( aLayer ), /*void*/ );
1290 
1291  if( !viewData )
1292  return;
1293 
1294  VIEW_LAYER& l = m_layers.at( aLayer );
1295 
1296  m_gal->SetTarget( l.target );
1297  m_gal->SetLayerDepth( l.renderingOrder );
1298 
1299  // Redraw the item from scratch
1300  int group = viewData->getGroup( aLayer );
1301 
1302  if( group >= 0 )
1303  m_gal->DeleteGroup( group );
1304 
1305  group = m_gal->BeginGroup();
1306  viewData->setGroup( aLayer, group );
1307 
1308  if( !m_painter->Draw( static_cast<EDA_ITEM*>( aItem ), aLayer ) )
1309  aItem->ViewDraw( aLayer, this ); // Alternative drawing method
1310 
1311  m_gal->EndGroup();
1312 }
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:846
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:843
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:603
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
virtual void SetTarget(RENDER_TARGET aTarget)
Sets the target for rendering.
void KIGFX::VIEW::UpdateItems ( )
inherited

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

Definition at line 1411 of file view.cpp.

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

Referenced by KIGFX::VIEW::MarkDirty(), EDA_DRAW_PANEL_GAL::onPaint(), PCB_DRAW_PANEL_GAL::OnShow(), and KIGFX::VIEW::ReorderLayerData().

1412 {
1413  if( m_gal->IsVisible() )
1414  {
1415  GAL_UPDATE_CONTEXT ctx( m_gal );
1416 
1417  for( VIEW_ITEM* item : *m_allItems )
1418  {
1419  auto viewData = item->viewPrivData();
1420 
1421  if( !viewData )
1422  continue;
1423 
1424  if( viewData->m_requiredUpdate != NONE )
1425  {
1426  invalidateItem( item, viewData->m_requiredUpdate );
1427  viewData->m_requiredUpdate = NONE;
1428  }
1429  }
1430  }
1431 }
friend class VIEW_ITEM
Definition: view.h:64
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
virtual bool IsVisible() const
Returns true if the GAL canvas is visible on the screen.
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
Definition: view.h:813
void invalidateItem(VIEW_ITEM *aItem, int aUpdateFlags)
Function invalidateItem() Manages dirty flags & redraw queueing when updating an item.
Definition: view.cpp:1206
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 774 of file view.cpp.

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(), PCB_LAYER_WIDGET::OnLayerColorChange(), GERBER_LAYER_WIDGET::OnLayerColorChange(), PCB_LAYER_WIDGET::OnRenderColorChange(), and KIGFX::VIEW::SetLayerTarget().

775 {
776  // There is no point in updating non-cached layers
777  if( !IsCached( aLayer ) )
778  return;
779 
780  BOX2I r;
781 
782  r.SetMaximum();
783 
784  if( m_gal->IsVisible() )
785  {
786  GAL_UPDATE_CONTEXT ctx( m_gal );
787 
788  updateItemsColor visitor( aLayer, m_painter, m_gal );
789  m_layers[aLayer].items->Query( r, visitor );
790  MarkTargetDirty( m_layers[aLayer].target );
791  }
792 }
GAL * m_gal
Gives interface to PAINTER, that is used to draw items.
Definition: view.h:846
virtual bool IsVisible() const
Returns true if the GAL canvas is visible on the screen.
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target &#39;dirty&#39; flag.
Definition: view.h:596
void SetMaximum()
Definition: box2.h:71
PAINTER * m_painter
PAINTER contains information how do draw items.
Definition: view.h:843
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:603
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void KIGFX::VIEW::updateLayers ( VIEW_ITEM aItem)
protectedinherited

Updates set of layers that an item occupies.

Definition at line 1331 of file view.cpp.

References KIGFX::GAL::DeleteGroup(), KIGFX::VIEW_ITEM_DATA::getLayers(), i, 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(), and KIGFX::VIEW::markTargetClean().

1332 {
1333  auto viewData = aItem->viewPrivData();
1334  int layers[VIEW_MAX_LAYERS], layers_count;
1335 
1336  if( !viewData )
1337  return;
1338 
1339  // Remove the item from previous layer set
1340  viewData->getLayers( layers, layers_count );
1341 
1342  for( int i = 0; i < layers_count; ++i )
1343  {
1344  VIEW_LAYER& l = m_layers[layers[i]];
1345  l.items->Remove( aItem );
1346  MarkTargetDirty( l.target );
1347 
1348  if( IsCached( l.id ) )
1349  {
1350  // Redraw the item from scratch
1351  int prevGroup = viewData->getGroup( layers[i] );
1352 
1353  if( prevGroup >= 0 )
1354  {
1355  m_gal->DeleteGroup( prevGroup );
1356  viewData->setGroup( l.id, -1 );
1357  }
1358  }
1359  }
1360 
1361  // Add the item to new layer set
1362  aItem->ViewGetLayers( layers, layers_count );
1363  viewData->saveLayers( layers, layers_count );
1364 
1365  for( int i = 0; i < layers_count; i++ )
1366  {
1367  VIEW_LAYER& l = m_layers[layers[i]];
1368  l.items->Insert( aItem );
1369  MarkTargetDirty( l.target );
1370  }
1371 }
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:846
static constexpr int VIEW_MAX_LAYERS
maximum number of layers that may be shown
Definition: view.h:699
void MarkTargetDirty(int aTarget)
Function MarkTargetDirty() Sets or clears target &#39;dirty&#39; flag.
Definition: view.h:596
bool IsCached(int aLayer) const
Returns true if the layer is cached.
Definition: view.h:603
size_t i
Definition: json11.cpp:597
LAYER_MAP m_layers
Contains set of possible displayed layers and its properties.
Definition: view.h:810
void KIGFX::VIEW::UseDrawPriority ( bool  aFlag)
inlineinherited

Function UseDrawPriority()

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

Definition at line 667 of file view.h.

References KIGFX::VIEW::m_useDrawPriority.

Referenced by GERBVIEW_FRAME::GERBVIEW_FRAME().

668  {
669  m_useDrawPriority = aFlag;
670  }
bool m_useDrawPriority
Flat list of all items Flag to respect draw priority when drawing items.
Definition: view.h:860

Member Data Documentation

VECTOR2D KIGFX::VIEW::m_center
protectedinherited

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

Definition at line 822 of file view.h.

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

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

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

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

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

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

Definition at line 807 of file view.h.

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

double KIGFX::VIEW::m_maxScale
protectedinherited

Scale upper limit.

Definition at line 834 of file view.h.

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

double KIGFX::VIEW::m_minScale
protectedinherited

Scale lower limit.

Definition at line 831 of file view.h.

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

bool KIGFX::VIEW::m_mirrorX
protectedinherited

Horizontal flip flag

Definition at line 837 of file view.h.

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

bool KIGFX::VIEW::m_mirrorY
protectedinherited

Vertical flip flag

Definition at line 840 of file view.h.

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

int KIGFX::VIEW::m_nextDrawPriority
protectedinherited

The next sequential drawing priority.

Definition at line 863 of file view.h.

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

LAYER_ORDER KIGFX::VIEW::m_orderedLayers
protectedinherited

Sorted list of pointers to members of m_layers.

Definition at line 816 of file view.h.

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

PAINTER* KIGFX::VIEW::m_painter
protectedinherited
bool KIGFX::VIEW::m_reverseDrawOrder
protectedinherited

Flag to reverse the draw order when using draw priority.

Definition at line 866 of file view.h.

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

double KIGFX::VIEW::m_scale
protectedinherited

Scale of displayed VIEW_ITEMs.

Definition at line 825 of file view.h.

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

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

Stores set of layers that are displayed on the top.

Definition at line 819 of file view.h.

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

bool KIGFX::VIEW::m_useDrawPriority
protectedinherited

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

Definition at line 860 of file view.h.

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

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

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


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