KiCad PCB EDA Suite
KIGFX::VIEW::DRAW_ITEM_VISITOR Struct Reference

Public Member Functions

 DRAW_ITEM_VISITOR (VIEW *aView, int aLayer, bool aUseDrawPriority, bool aReverseDrawOrder)
 
bool operator() (VIEW_ITEM *aItem)
 
void deferredDraw ()
 

Public Attributes

VIEWview
 
int layer
 
int layers [VIEW_MAX_LAYERS]
 
bool useDrawPriority
 
bool reverseDrawOrder
 
std::vector< VIEW_ITEM * > drawItems
 

Detailed Description

Definition at line 924 of file view.cpp.

Constructor & Destructor Documentation

◆ DRAW_ITEM_VISITOR()

KIGFX::VIEW::DRAW_ITEM_VISITOR::DRAW_ITEM_VISITOR ( VIEW aView,
int  aLayer,
bool  aUseDrawPriority,
bool  aReverseDrawOrder 
)
inline

Definition at line 926 of file view.cpp.

926 :
927 view( aView ),
928 layer( aLayer ),
929 useDrawPriority( aUseDrawPriority ),
930 reverseDrawOrder( aReverseDrawOrder )
931 {
932 }

Member Function Documentation

◆ deferredDraw()

void KIGFX::VIEW::DRAW_ITEM_VISITOR::deferredDraw ( )
inline

Definition at line 952 of file view.cpp.

953 {
954 if( reverseDrawOrder )
955 {
956 std::sort( drawItems.begin(), drawItems.end(),
957 []( VIEW_ITEM* a, VIEW_ITEM* b ) -> bool
958 {
959 return b->viewPrivData()->m_drawPriority < a->viewPrivData()->m_drawPriority;
960 } );
961 }
962 else
963 {
964 std::sort( drawItems.begin(), drawItems.end(),
965 []( VIEW_ITEM* a, VIEW_ITEM* b ) -> bool
966 {
967 return a->viewPrivData()->m_drawPriority < b->viewPrivData()->m_drawPriority;
968 } );
969 }
970
971 for( VIEW_ITEM* item : drawItems )
972 view->draw( item, layer );
973 }
void draw(VIEW_ITEM *aItem, int aLayer, bool aImmediate=false)
Draw an item, but on a specified layers.
Definition: view.cpp:1015
friend class VIEW_ITEM
Definition: view.h:71
std::vector< VIEW_ITEM * > drawItems
Definition: view.cpp:978

References KIGFX::VIEW::draw(), drawItems, layer, reverseDrawOrder, and view.

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

◆ operator()()

bool KIGFX::VIEW::DRAW_ITEM_VISITOR::operator() ( VIEW_ITEM aItem)
inline

Definition at line 934 of file view.cpp.

935 {
936 wxCHECK( aItem->viewPrivData(), false );
937
938 // Conditions that have to be fulfilled for an item to be drawn
939 bool drawCondition = aItem->viewPrivData()->isRenderable()
940 && aItem->ViewGetLOD( layer, view ) < view->m_scale;
941 if( !drawCondition )
942 return true;
943
944 if( useDrawPriority )
945 drawItems.push_back( aItem );
946 else
947 view->draw( aItem, layer );
948
949 return true;
950 }
double m_scale
Definition: view.h:855

References KIGFX::VIEW::draw(), drawItems, KIGFX::VIEW_ITEM_DATA::isRenderable(), layer, KIGFX::VIEW::m_scale, useDrawPriority, view, KIGFX::VIEW_ITEM::ViewGetLOD(), and KIGFX::VIEW_ITEM::viewPrivData().

Member Data Documentation

◆ drawItems

std::vector<VIEW_ITEM*> KIGFX::VIEW::DRAW_ITEM_VISITOR::drawItems

Definition at line 978 of file view.cpp.

Referenced by deferredDraw(), and operator()().

◆ layer

int KIGFX::VIEW::DRAW_ITEM_VISITOR::layer

Definition at line 976 of file view.cpp.

Referenced by deferredDraw(), and operator()().

◆ layers

int KIGFX::VIEW::DRAW_ITEM_VISITOR::layers[VIEW_MAX_LAYERS]

Definition at line 976 of file view.cpp.

◆ reverseDrawOrder

bool KIGFX::VIEW::DRAW_ITEM_VISITOR::reverseDrawOrder

Definition at line 977 of file view.cpp.

Referenced by deferredDraw().

◆ useDrawPriority

bool KIGFX::VIEW::DRAW_ITEM_VISITOR::useDrawPriority

Definition at line 977 of file view.cpp.

Referenced by operator()().

◆ view

VIEW* KIGFX::VIEW::DRAW_ITEM_VISITOR::view

Definition at line 975 of file view.cpp.

Referenced by deferredDraw(), and operator()().


The documentation for this struct was generated from the following file: