#pragma once #include "nana/gui/widgets/widget.hpp" #include "nana/gui/animation.hpp" #include class MemoryCard; namespace implem { //void draw_icons ( // int icon_size, // const MemoryCard& mc, // std::array& icons, // nana::widget& wid //); } //namespace implem class grid_drawer_trigger : public nana::drawer_trigger { public: grid_drawer_trigger(); void set_memorycard (const MemoryCard* mc); private: virtual void attached(nana::widget&, nana::paint::graphics&) override; //void _m_draw_title (nana::paint::graphics&, bool is_mouse_down, bool is_focus); void _m_draw_background (nana::paint::graphics&, bool is_mouse_down); //void _m_draw_border (nana::paint::graphics&, bool is_mouse_down); std::array m_icons; nana::widget* m_widget{nullptr}; nana::paint::graphics* m_graph{nullptr}; const MemoryCard* m_memorycard{nullptr}; bool m_is_ms_down{false}; }; template class basic_grid : public nana::widget_object { public: basic_grid() = default; basic_grid (nana::widget& widget, unsigned int icon_size, const MemoryCard* mc); private: int m_icon_size{0}; const MemoryCard* m_memorycard{nullptr}; }; using grid = basic_grid; template basic_grid::basic_grid ( nana::widget& widget, unsigned int icon_size, const MemoryCard* mc ) : m_icon_size(icon_size), m_memorycard(mc) { this->create( widget.handle(), nana::rectangle{ 0, 0, (icon_size + 2) * 3 - 2, (icon_size + 2) * 5 - 2 } ); this->get_drawer_trigger().set_memorycard(m_memorycard); }