32#include <unordered_map> 
   97    virtual void Add( 
VIEW_ITEM* aItem, 
int aDrawPriority = -1 );
 
  115    int Query( 
const BOX2I& aRect, std::vector<LAYER_ITEM_PAIR>& aResult ) 
const;
 
  139    void Hide( 
VIEW_ITEM* aItem, 
bool aHide = 
true, 
bool aHideOverlay = 
false );
 
  175    void SetRequired( 
int aLayerId, 
int aRequiredId, 
bool aRequired = 
true );
 
  230    void SetViewport( 
const BOX2D& aViewport );
 
  237    BOX2D GetViewport() 
const;
 
  245    void SetMirror( 
bool aMirrorX, 
bool aMirrorY );
 
  271    virtual void SetScale( 
double aScale, 
VECTOR2D aAnchor = { 0, 0 } );
 
  318        wxASSERT_MSG( aMaximum > aMinimum, wxT( 
"I guess you passed parameters in wrong order" ) );
 
 
  330    void SetCenter( 
const VECTOR2D& aCenter );
 
  339    void SetCenter( 
const VECTOR2D& aCenter, 
const std::vector<BOX2D>& obscuringScreenRects );
 
  365    double ToWorld( 
double aSize ) 
const;
 
  380    double ToScreen( 
double aSize ) 
const;
 
  387    const VECTOR2I& GetScreenPixelSize() 
const;
 
  409        if( layer.
visible != aVisible )
 
 
  429        return it->second.visible;
 
 
  488        it->second.displayOnly = aDisplayOnly;
 
 
  504        it->second.target = aTarget;
 
 
  513    void SetLayerOrder( 
int aLayer, 
int aRenderingOrder );
 
  521    int GetLayerOrder( 
int aLayer ) 
const;
 
  530    void SortLayers( std::vector<int>& aLayers ) 
const;
 
  539    void ReorderLayerData( std::unordered_map<int, int> aReorderMap );
 
  547    void UpdateLayerColor( 
int aLayer );
 
  554    void UpdateAllLayersColor();
 
  563    virtual void SetTopLayer( 
int aLayer, 
bool aEnabled = 
true );
 
  574    virtual void EnableTopLayer( 
bool aEnable );
 
  576    virtual int GetTopLayer() 
const;
 
  582    void ClearTopLayers();
 
  589    void UpdateAllLayersOrder();
 
  599    virtual void Redraw();
 
  604    void RecacheAllItems();
 
  684    void UpdateAllItems( 
int aUpdateFlags );
 
  692    void UpdateAllItemsConditionally( 
int aUpdateFlags,
 
  693                                      std::function<
bool( 
VIEW_ITEM* )> aCondition );
 
  700    void UpdateAllItemsConditionally( std::function<
int( 
VIEW_ITEM* )> aItemFlagsProvider );
 
  728    std::shared_ptr<VIEW_OVERLAY> MakeOverlay();
 
  733    void AddToPreview( 
VIEW_ITEM* aItem, 
bool aTakeOwnership = 
true );
 
  735    void ShowPreview( 
bool aShow = 
true );
 
  742    std::unique_ptr<VIEW> DataReference() 
const;
 
  771            return id < aOther.
id;
 
 
 
  776    void redrawRect( 
const BOX2I& aRect );
 
  795    void draw( 
VIEW_ITEM* aItem, 
int aLayer, 
bool aImmediate = 
false );
 
  804    void draw( 
VIEW_ITEM* aItem, 
bool aImmediate = 
false );
 
  813    void draw( 
VIEW_GROUP* aGroup, 
bool aImmediate = 
false );
 
  816    void sortOrderedLayers();
 
  820    void clearGroupCache();
 
  828    void invalidateItem( 
VIEW_ITEM* aItem, 
int aUpdateFlags );
 
  831    void updateItemColor( 
VIEW_ITEM* aItem, 
int aLayer );
 
  834    void updateItemGeometry( 
VIEW_ITEM* aItem, 
int aLayer );
 
  849    bool areRequiredLayersEnabled( 
int aLayerId ) 
const;
 
  852    struct CLEAR_LAYER_CACHE_VISITOR;
 
  853    struct RECACHE_ITEM_VISITOR;
 
  854    struct DRAW_ITEM_VISITOR;
 
  855    struct UPDATE_COLOR_VISITOR;
 
  856    struct UPDATE_DEPTH_VISITOR;
 
 
constexpr const Vec GetEnd() const
 
constexpr const Vec & GetOrigin() const
 
Abstract interface for drawing on a 2D-surface.
 
Contains all the knowledge about how to draw graphical object onto any particular output device.
 
Extend VIEW_ITEM by possibility of grouping items into a single object.
 
An abstract base class for deriving all objects that can be added to a VIEW.
 
Implement an non-owning R-tree for fast spatial indexing of VIEW items.
 
void ReverseDrawOrder(bool aFlag)
Only takes effect if UseDrawPriority is true.
 
const VECTOR2D & GetCenter() const
Return the center point of this VIEW (in world space coordinates).
 
void CopySettings(const VIEW *aOtherView)
Copy layers and visibility settings from another view.
 
static constexpr int TOP_LAYER_MODIFIER
Rendering order modifier for layers that are marked as top layers.
 
VIEW(const VIEW &)=delete
 
bool m_reverseDrawOrder
Flag to reverse the draw order when using draw priority.
 
void SetRequired(int aLayerId, int aRequiredId, bool aRequired=true)
Mark the aRequiredId layer as required for the aLayerId layer.
 
void SetLayerDisplayOnly(int aLayer, bool aDisplayOnly=true)
Set a layer display-only (ie: to be rendered but not returned by hit test queries).
 
static bool compareRenderingOrder(VIEW_LAYER *aI, VIEW_LAYER *aJ)
Determine rendering order of layers. Used in display order sorting function.
 
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
 
virtual void Remove(VIEW_ITEM *aItem)
Remove a VIEW_ITEM from the view.
 
void SetPainter(PAINTER *aPainter)
Set the painter object used by the view for drawing #VIEW_ITEMS.
 
void SetBoundary(const BOX2D &aBoundary)
Set limits for view area.
 
std::shared_ptr< std::vector< VIEW_ITEM * > > m_allItems
Flat list of all items.
 
void SetLayerDiff(int aLayer, bool aDiff=true)
Set the whether the layer should drawn differentially.
 
void SetGAL(GAL *aGal)
Assign a rendering device for the VIEW.
 
int Query(const BOX2I &aRect, std::vector< LAYER_ITEM_PAIR > &aResult) const
Find all visible items that touch or are within the rectangle aRect.
 
std::vector< VIEW_ITEM * > m_ownedItems
 
void SetLayerTarget(int aLayer, RENDER_TARGET aTarget)
Change the rendering target for a particular layer.
 
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
 
void SetLayerVisible(int aLayer, bool aVisible=true)
Control the visibility of a particular layer.
 
bool HasItem(const VIEW_ITEM *aItem) const
Indicates whether or not the given item has been added to the view.
 
PAINTER * m_painter
PAINTER contains information how do draw items.
 
std::set< unsigned int > m_topLayers
The set of layers that are displayed on the top.
 
bool m_enableOrderModifier
Whether to use rendering order modifier or not.
 
void SetLayerHasNegatives(int aLayer, bool aNegatives=true)
Set the status of negatives presense in a particular layer.
 
GAL * GetGAL() const
Return the GAL this view is using to draw graphical primitives.
 
bool IsHiddenOnOverlay(const VIEW_ITEM *aItem) const
 
bool m_dirtyTargets[TARGETS_NUMBER]
Flag to mark targets as dirty so they have to be redrawn on the next refresh event.
 
void MarkClean()
Force redraw of view on the next rendering.
 
static constexpr int VIEW_MAX_LAYERS
Maximum number of layers that may be shown.
 
bool IsMirroredX() const
Return true if view is flipped across the X axis.
 
bool IsTargetDirty(int aTarget) const
Return true if any of layers belonging to the target or the target itself should be redrawn.
 
void SetBoundary(const BOX2I &aBoundary)
Set limits for view area.
 
int m_nextDrawPriority
The next sequential drawing priority.
 
bool m_useDrawPriority
Flag to respect draw priority when drawing items.
 
bool IsCached(int aLayer) const
Return true if the layer is cached.
 
std::pair< VIEW_ITEM *, int > LAYER_ITEM_PAIR
 
bool IsMirroredY() const
Return true if view is flipped across the Y axis.
 
void UseDrawPriority(bool aFlag)
 
std::unique_ptr< KIGFX::VIEW_GROUP > m_preview
 
static void OnDestroy(VIEW_ITEM *aItem)
Nasty hack, invoked by the destructor of VIEW_ITEM to auto-remove the item from the owning VIEW if th...
 
bool IsUsingDrawPriority() const
 
VIEW & operator=(const VIEW &)=delete
 
GAL * m_gal
Interface to PAINTER that is used to draw items.
 
bool IsDirty() const
Return true if any of the VIEW layers needs to be refreshened.
 
std::map< int, VIEW_LAYER > m_layers
The set of possible displayed layers and its properties.
 
void Hide(VIEW_ITEM *aItem, bool aHide=true, bool aHideOverlay=false)
Temporarily hide the item in the view (e.g.
 
void markTargetClean(int aTarget)
 
void MarkDirty()
Force redraw of view on the next rendering.
 
bool IsLayerVisible(int aLayer) const
Return information about visibility of a particular layer.
 
const BOX2D & GetBoundary() const
 
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
 
void SetScaleLimits(double aMaximum, double aMinimum)
Set minimum and maximum values for scale.
 
std::vector< VIEW_LAYER * > m_orderedLayers
Sorted list of pointers to members of m_layers.
 
VECTOR2D m_center
Center point of the VIEW (the point at which we are looking at).
 
void MarkTargetDirty(int aTarget)
Set or clear target 'dirty' flag.
 
bool IsVisible(const VIEW_ITEM *aItem) const
Return information if the item is visible (or not).
 
void SetVisible(VIEW_ITEM *aItem, bool aIsVisible=true)
Set the item visibility.
 
#define MAX_LAYERS_FOR_VIEW
 
bool operator<(const DESIGN_BLOCK_INFO &lhs, const DESIGN_BLOCK_INFO &rhs)
 
The Cairo implementation of the graphics abstraction layer.
 
RENDER_TARGET
RENDER_TARGET: Possible rendering targets.
 
@ TARGET_CACHED
Main rendering target (cached)
 
@ TARGETS_NUMBER
Number of available rendering targets.
 
std::set< int > requiredLayers
 
bool diffLayer
Layer should be drawn differentially over lower layers.
 
int renderingOrder
Rendering order of this layer.
 
bool hasNegatives
Layer should be drawn separately to not delete lower layers.
 
bool visible
Is the layer to be rendered?
 
bool displayOnly
Is the layer display only?
 
std::shared_ptr< VIEW_RTREE > items
R-tree indexing all items on this layer.
 
RENDER_TARGET target
Where the layer should be rendered.
 
VECTOR2< int32_t > VECTOR2I
 
VECTOR2< double > VECTOR2D