gadget::arrow_16_pixels is replaced with element arrow
This commit is contained in:
parent
a9d063ab17
commit
0597d895b4
@ -207,6 +207,7 @@ namespace nana{ namespace widgets
|
|||||||
|
|
||||||
/// Returns width of text area excluding the vscroll size.
|
/// Returns width of text area excluding the vscroll size.
|
||||||
unsigned width_pixels() const;
|
unsigned width_pixels() const;
|
||||||
|
window window_handle() const;
|
||||||
public:
|
public:
|
||||||
void draw_scroll_rectangle();
|
void draw_scroll_rectangle();
|
||||||
void render(bool focused);
|
void render(bool focused);
|
||||||
|
|||||||
@ -82,11 +82,6 @@ namespace nana
|
|||||||
void _m_text_area(unsigned width, unsigned height);
|
void _m_text_area(unsigned width, unsigned height);
|
||||||
private:
|
private:
|
||||||
widget* widget_;
|
widget* widget_;
|
||||||
struct status_type
|
|
||||||
{
|
|
||||||
bool has_focus; //Indicates whether it has the keyboard focus
|
|
||||||
}status_;
|
|
||||||
|
|
||||||
std::function<bool(nana::char_t)> pred_acceptive_;
|
std::function<bool(nana::char_t)> pred_acceptive_;
|
||||||
widgets::skeletons::text_editor * editor_;
|
widgets::skeletons::text_editor * editor_;
|
||||||
std::unique_ptr<event_agent> evt_agent_;
|
std::unique_ptr<event_agent> evt_agent_;
|
||||||
|
|||||||
@ -21,12 +21,6 @@ namespace paint
|
|||||||
{
|
{
|
||||||
namespace gadget
|
namespace gadget
|
||||||
{
|
{
|
||||||
struct directions
|
|
||||||
{
|
|
||||||
enum t{to_east, to_southeast, to_south, to_southwest, to_west, to_northwest, to_north, to_northeast};
|
|
||||||
};
|
|
||||||
|
|
||||||
void arrow_16_pixels(nana::paint::graphics&, int x, int y, const color&, uint32_t style, directions::t direction);
|
|
||||||
void close_16_pixels(nana::paint::graphics&, int x, int y, uint32_t style, const color&);
|
void close_16_pixels(nana::paint::graphics&, int x, int y, uint32_t style, const color&);
|
||||||
void cross(nana::paint::graphics&, int x, int y, uint32_t size, uint32_t thickness, const nana::color&);
|
void cross(nana::paint::graphics&, int x, int y, uint32_t size, uint32_t thickness, const nana::color&);
|
||||||
|
|
||||||
|
|||||||
@ -316,7 +316,7 @@ namespace nana
|
|||||||
bool draw(graph_reference graph, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle& r, element_state estate, ::nana::direction dir) override
|
bool draw(graph_reference graph, const ::nana::color& bgcolor, const ::nana::color& fgcolor, const ::nana::rectangle& r, element_state estate, ::nana::direction dir) override
|
||||||
{
|
{
|
||||||
int x = r.x + 3;
|
int x = r.x + 3;
|
||||||
int y = r.x + 3;
|
int y = r.y + 3;
|
||||||
switch (dir)
|
switch (dir)
|
||||||
{
|
{
|
||||||
case ::nana::direction::east:
|
case ::nana::direction::east:
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
#include <nana/gui/wvl.hpp>
|
#include <nana/gui/wvl.hpp>
|
||||||
#include <nana/gui/widgets/categorize.hpp>
|
#include <nana/gui/widgets/categorize.hpp>
|
||||||
#include <nana/gui/widgets/float_listbox.hpp>
|
#include <nana/gui/widgets/float_listbox.hpp>
|
||||||
|
#include <nana/gui/element.hpp>
|
||||||
#include <nana/paint/gadget.hpp>
|
#include <nana/paint/gadget.hpp>
|
||||||
#include <nana/gui/widgets/detail/tree_cont.hpp>
|
#include <nana/gui/widgets/detail/tree_cont.hpp>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
@ -85,23 +86,24 @@ namespace nana
|
|||||||
|
|
||||||
virtual void root_arrow(graph_reference graph, const nana::rectangle& r, mouse_action state)
|
virtual void root_arrow(graph_reference graph, const nana::rectangle& r, mouse_action state)
|
||||||
{
|
{
|
||||||
int x = r.x + (r.width - 16) / 2;
|
::nana::rectangle arrow_r{r.x + static_cast<int>(r.width - 16) / 2, r.y + static_cast<int>(r.height - 16) / 2, 16, 16};
|
||||||
int y = r.y + (r.height - 16) / 2;
|
|
||||||
if(ui_el_.what == ui_el_.item_root)
|
if(ui_el_.what == ui_el_.item_root)
|
||||||
{
|
{
|
||||||
_m_item_bground(graph, r.x + 1, r.y, r.width - 2, r.height, (state == mouse_action::pressed ? mouse_action::pressed : mouse_action::over));
|
_m_item_bground(graph, r.x + 1, r.y, r.width - 2, r.height, (state == mouse_action::pressed ? mouse_action::pressed : mouse_action::over));
|
||||||
graph.rectangle(r, false, color{ 0x3C, 0x7F, 0xB1 });
|
graph.rectangle(r, false, color{ 0x3C, 0x7F, 0xB1 });
|
||||||
if(state == mouse_action::pressed)
|
if(state == mouse_action::pressed)
|
||||||
{
|
{
|
||||||
++x;
|
++arrow_r.x;
|
||||||
++y;
|
++arrow_r.y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
graph.rectangle(r, true, style_.bgcolor);
|
graph.rectangle(r, true, style_.bgcolor);
|
||||||
|
|
||||||
nana::paint::gadget::arrow_16_pixels(graph, x, y,
|
facade<element::arrow> arrow("double");
|
||||||
style_.fgcolor, 3, nana::paint::gadget::directions::to_west);
|
arrow.direction(::nana::direction::west);
|
||||||
|
arrow.draw(graph, {}, style_.fgcolor, arrow_r, element_state::normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void item(graph_reference graph, const nana::rectangle& r, std::size_t index, const nana::string& name, unsigned txtheight, bool has_child, mouse_action state)
|
void item(graph_reference graph, const nana::rectangle& r, std::size_t index, const nana::string& name, unsigned txtheight, bool has_child, mouse_action state)
|
||||||
@ -144,8 +146,9 @@ namespace nana
|
|||||||
|
|
||||||
if(has_child)
|
if(has_child)
|
||||||
{
|
{
|
||||||
nana::paint::gadget::arrow_16_pixels(graph, r.x + r.width - 16, r.y + (r.height - 16)/2,
|
facade<element::arrow> arrow("double");
|
||||||
style_.fgcolor, 3, nana::paint::gadget::directions::to_east);
|
arrow.direction(::nana::direction::east);
|
||||||
|
arrow.draw(graph, {}, style_.fgcolor, { r.right() - 16, r.y + static_cast<int>(r.height - 16) / 2, 16, 16 }, element_state::normal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <nana/gui/wvl.hpp>
|
#include <nana/gui/wvl.hpp>
|
||||||
#include <nana/gui/widgets/combox.hpp>
|
#include <nana/gui/widgets/combox.hpp>
|
||||||
|
#include <nana/gui/element.hpp>
|
||||||
#include <nana/paint/gadget.hpp>
|
#include <nana/paint/gadget.hpp>
|
||||||
#include <nana/system/dataexch.hpp>
|
#include <nana/system/dataexch.hpp>
|
||||||
#include <nana/gui/widgets/float_listbox.hpp>
|
#include <nana/gui/widgets/float_listbox.hpp>
|
||||||
@ -494,7 +495,9 @@ namespace nana
|
|||||||
graph_->rectangle({ left + 1, top, static_cast<unsigned>(right - left - 2), static_cast<unsigned>(mid - top + 1) }, true, topcol);
|
graph_->rectangle({ left + 1, top, static_cast<unsigned>(right - left - 2), static_cast<unsigned>(mid - top + 1) }, true, topcol);
|
||||||
graph_->rectangle({ left + 1, mid + 1, static_cast<unsigned>(right - left - 2), static_cast<unsigned>(bottom - mid) }, true, botcol);
|
graph_->rectangle({ left + 1, mid + 1, static_cast<unsigned>(right - left - 2), static_cast<unsigned>(bottom - mid) }, true, botcol);
|
||||||
|
|
||||||
gadget::arrow_16_pixels(*graph_, left, top + ((bottom - top) / 2) - 7, arrow_color, 1, gadget::directions::to_south);
|
facade<element::arrow> arrow("solid_triangle");
|
||||||
|
arrow.direction(::nana::direction::south);
|
||||||
|
arrow.draw(*graph_, {}, arrow_color, { left, top + (bottom - top) / 2 - 7, 16, 16 }, element_state::normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _m_draw_image()
|
void _m_draw_image()
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <nana/gui/widgets/date_chooser.hpp>
|
#include <nana/gui/widgets/date_chooser.hpp>
|
||||||
|
#include <nana/gui/element.hpp>
|
||||||
#include <nana/paint/gadget.hpp>
|
#include <nana/paint/gadget.hpp>
|
||||||
#include <nana/system/platform.hpp>
|
#include <nana/system/platform.hpp>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@ -122,12 +123,15 @@ namespace nana
|
|||||||
|
|
||||||
void trigger::_m_draw_topbar(graph_reference graph)
|
void trigger::_m_draw_topbar(graph_reference graph)
|
||||||
{
|
{
|
||||||
int ypos = (topbar_height - 16) / 2 + 1;
|
::nana::color arrow_bgcolor;
|
||||||
|
::nana::rectangle arrow_r{ static_cast<int>(border_size), (topbar_height - 16) / 2 + 1, 16, 16 };
|
||||||
|
facade<element::arrow> arrow("solid_triangle");
|
||||||
|
arrow.direction(::nana::direction::west);
|
||||||
|
arrow.draw(graph, arrow_bgcolor, (pos_ == where::left_button ? color_.highlight : color_.normal), arrow_r, element_state::normal);
|
||||||
|
|
||||||
const auto color = color_.normal;
|
arrow_r.x = static_cast<int>(graph.width()) - static_cast<int>(border_size + 17);
|
||||||
|
arrow.direction(::nana::direction::east);
|
||||||
nana::paint::gadget::arrow_16_pixels(graph, border_size, ypos, (pos_ == where::left_button ? color_.highlight : color), 1, nana::paint::gadget::directions::to_west);
|
arrow.draw(graph, arrow_bgcolor, (pos_ == where::right_button ? color_.highlight : color_.normal), arrow_r, element_state::normal);
|
||||||
nana::paint::gadget::arrow_16_pixels(graph, graph.width() - (border_size + 16 + 1), ypos, (pos_ == where::right_button ? color_.highlight : color), 1, nana::paint::gadget::directions::to_east);
|
|
||||||
|
|
||||||
if(graph.width() > 32 + border_size * 2)
|
if(graph.width() > 32 + border_size * 2)
|
||||||
{
|
{
|
||||||
@ -143,12 +147,12 @@ namespace nana
|
|||||||
|
|
||||||
nana::size txt_s = graph.text_extent_size(str);
|
nana::size txt_s = graph.text_extent_size(str);
|
||||||
|
|
||||||
ypos = (topbar_height - static_cast<int>(txt_s.height)) / 2 + 1;
|
int top = (topbar_height - static_cast<int>(txt_s.height)) / 2 + 1;
|
||||||
|
|
||||||
int xpos = static_cast<int>(graph.width() - txt_s.width) / 2;
|
int xpos = static_cast<int>(graph.width() - txt_s.width) / 2;
|
||||||
if(xpos < border_size + 16) xpos = 16 + border_size + 1;
|
if(xpos < border_size + 16) xpos = 16 + border_size + 1;
|
||||||
|
|
||||||
graph.string({ xpos, ypos }, str, (pos_ == where::topbar ? color_.highlight : color));
|
graph.string({ xpos, top }, str, (pos_ == where::topbar ? color_.highlight : color_.normal));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2308,8 +2308,9 @@ namespace nana
|
|||||||
|
|
||||||
if(item.index == essence_->lister.sort_index())
|
if(item.index == essence_->lister.sort_index())
|
||||||
{
|
{
|
||||||
nana::paint::gadget::directions::t dir = essence_->lister.sort_reverse() ? nana::paint::gadget::directions::to_south : nana::paint::gadget::directions::to_north;
|
facade<element::arrow> arrow("hollow_triangle");
|
||||||
nana::paint::gadget::arrow_16_pixels(graph, x + (item.pixels - 16) / 2, -4, colors::black, 0, dir);
|
arrow.direction(essence_->lister.sort_reverse() ? ::nana::direction::south : ::nana::direction::north);
|
||||||
|
arrow.draw(graph, {}, colors::black, { x + static_cast<int>(item.pixels - 16) / 2, -4, 16, 16 }, element_state::normal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2483,8 +2484,10 @@ namespace nana
|
|||||||
graph->set_color(bgcolor);
|
graph->set_color(bgcolor);
|
||||||
graph->rectangle(rectangle{ x, y, width, essence_->item_size }, true);
|
graph->rectangle(rectangle{ x, y, width, essence_->item_size }, true);
|
||||||
|
|
||||||
nana::paint::gadget::arrow_16_pixels(*graph, x + 5, y + (essence_->item_size - 16) / 2, { 0x0, 0x33, 0x99 }, 2, (categ.expand ? nana::paint::gadget::directions::to_north : nana::paint::gadget::directions::to_south));
|
facade<element::arrow> arrow("double");
|
||||||
nana::size text_s = graph->text_extent_size(categ.text);
|
arrow.direction(categ.expand ? ::nana::direction::north : ::nana::direction::south);
|
||||||
|
::nana::rectangle arrow_r{ x + 5, y + static_cast<int>(essence_->item_size - 16) / 2, 16, 16 };
|
||||||
|
arrow.draw(*graph, {}, static_cast<color_rgb>(0x3399), arrow_r, element_state::normal);
|
||||||
|
|
||||||
graph->string({ x + 20, y + txtoff }, categ.text, {0, 0x33, 0x99});
|
graph->string({ x + 20, y + txtoff }, categ.text, {0, 0x33, 0x99});
|
||||||
|
|
||||||
@ -2494,6 +2497,7 @@ namespace nana
|
|||||||
|
|
||||||
unsigned str_w = graph->text_extent_size(str).width;
|
unsigned str_w = graph->text_extent_size(str).width;
|
||||||
|
|
||||||
|
auto text_s = graph->text_extent_size(categ.text);
|
||||||
graph->string({ x + 25 + static_cast<int>(text_s.width), y + txtoff }, str);
|
graph->string({ x + 25 + static_cast<int>(text_s.width), y + txtoff }, str);
|
||||||
|
|
||||||
if (x + 35 + text_s.width + str_w < x + width)
|
if (x + 35 + text_s.width + str_w < x + width)
|
||||||
|
|||||||
@ -158,7 +158,9 @@ namespace nana
|
|||||||
|
|
||||||
void sub_arrow(graph_reference graph, const nana::point& pos, unsigned pixels, const attr&)
|
void sub_arrow(graph_reference graph, const nana::point& pos, unsigned pixels, const attr&)
|
||||||
{
|
{
|
||||||
nana::paint::gadget::arrow_16_pixels(graph, pos.x, pos.y + static_cast<int>(pixels - 16) / 2, colors::black, 0, nana::paint::gadget::directions::to_east);
|
facade<element::arrow> arrow("hollow_triangle");
|
||||||
|
arrow.direction(::nana::direction::east);
|
||||||
|
arrow.draw(graph, {}, colors::black, { pos.x, pos.y + static_cast<int>(pixels - 16) / 2, 16, 16 }, element_state::normal);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <nana/gui/widgets/scroll.hpp>
|
#include <nana/gui/widgets/scroll.hpp>
|
||||||
|
#include <nana/gui/element.hpp>
|
||||||
|
|
||||||
namespace nana
|
namespace nana
|
||||||
{
|
{
|
||||||
@ -292,34 +293,39 @@ namespace nana
|
|||||||
if(_m_check())
|
if(_m_check())
|
||||||
_m_button_frame(graph, r, state);
|
_m_button_frame(graph, r, state);
|
||||||
|
|
||||||
using namespace nana::paint::gadget;
|
|
||||||
|
|
||||||
if(buttons::first == what || buttons::second == what)
|
if(buttons::first == what || buttons::second == what)
|
||||||
{
|
{
|
||||||
nana::size sz = graph.size();
|
auto sz = graph.size();
|
||||||
directions::t dir;
|
int top = static_cast<int>(sz.height - fixedsize);
|
||||||
if(buttons::second == what)
|
int left = static_cast<int>(sz.width - fixedsize);
|
||||||
{
|
|
||||||
if(vertical_)
|
|
||||||
{
|
|
||||||
r.y = static_cast<int>(sz.height - fixedsize);
|
|
||||||
dir = directions::to_south;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
r.x = static_cast<int>(sz.width - fixedsize);
|
|
||||||
dir = directions::to_east;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
dir = vertical_ ? directions::to_north : directions::to_west;
|
|
||||||
|
|
||||||
if(vertical_)
|
direction dir;
|
||||||
r.x = (static_cast<int>(sz.width) - 16) / 2;
|
if (buttons::second == what)
|
||||||
|
{
|
||||||
|
if (vertical_)
|
||||||
|
{
|
||||||
|
r.y = top;
|
||||||
|
dir = direction::south;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
r.y = (static_cast<int>(sz.height) - 16) / 2;
|
{
|
||||||
|
r.x = left;
|
||||||
|
dir = direction::east;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
dir = vertical_ ? direction::north : direction::west;
|
||||||
|
|
||||||
arrow_16_pixels(graph, r.x, r.y, (_m_check() ? color(colors::black) : color(0x80, 0x80, 0x80)), (states::none == state ? 0 : 1), dir);
|
if (vertical_)
|
||||||
|
r.x = left / 2;
|
||||||
|
else
|
||||||
|
r.y = top / 2;
|
||||||
|
|
||||||
|
r.width = r.height = 16;
|
||||||
|
|
||||||
|
facade<element::arrow> arrow(states::none == state ? "hollow_triangle" : "solid_triangle");
|
||||||
|
arrow.direction(dir);
|
||||||
|
arrow.draw(graph, {}, (_m_check() ? colors::black : colors::gray), r, element_state::normal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//end class drawer
|
//end class drawer
|
||||||
|
|||||||
@ -1842,6 +1842,11 @@ namespace nana{ namespace widgets
|
|||||||
return (text_area_.area.width > caret_px ? text_area_.area.width - caret_px : 0);
|
return (text_area_.area.width > caret_px ? text_area_.area.width - caret_px : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window text_editor::window_handle() const
|
||||||
|
{
|
||||||
|
return window_;
|
||||||
|
}
|
||||||
|
|
||||||
void text_editor::draw_scroll_rectangle()
|
void text_editor::draw_scroll_rectangle()
|
||||||
{
|
{
|
||||||
if(text_area_.vscroll && text_area_.hscroll)
|
if(text_area_.vscroll && text_area_.hscroll)
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
#include <nana/gui/widgets/tabbar.hpp>
|
#include <nana/gui/widgets/tabbar.hpp>
|
||||||
#include <nana/gui/widgets/menu.hpp>
|
#include <nana/gui/widgets/menu.hpp>
|
||||||
#include <nana/paint/text_renderer.hpp>
|
#include <nana/paint/text_renderer.hpp>
|
||||||
|
#include <nana/gui/element.hpp>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
@ -145,36 +146,39 @@ namespace nana
|
|||||||
virtual void back(graph_reference graph, const nana::rectangle& r, state_t sta)
|
virtual void back(graph_reference graph, const nana::rectangle& r, state_t sta)
|
||||||
{
|
{
|
||||||
using namespace nana::paint::gadget;
|
using namespace nana::paint::gadget;
|
||||||
_m_draw_arrow(graph, r, sta, directions::to_west);
|
_m_draw_arrow(graph, r, sta, direction::west);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void next(graph_reference graph, const nana::rectangle& r, state_t sta)
|
virtual void next(graph_reference graph, const nana::rectangle& r, state_t sta)
|
||||||
{
|
{
|
||||||
using namespace nana::paint::gadget;
|
using namespace nana::paint::gadget;
|
||||||
_m_draw_arrow(graph, r, sta, directions::to_east);
|
_m_draw_arrow(graph, r, sta, direction::east);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void list(graph_reference graph, const nana::rectangle& r, state_t sta)
|
virtual void list(graph_reference graph, const nana::rectangle& r, state_t sta)
|
||||||
{
|
{
|
||||||
using namespace nana::paint::gadget;
|
using namespace nana::paint::gadget;
|
||||||
_m_draw_arrow(graph, r, sta, directions::to_south);
|
_m_draw_arrow(graph, r, sta, direction::south);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
void _m_draw_arrow(graph_reference graph, const nana::rectangle& r, state_t sta, nana::paint::gadget::directions::t dir)
|
void _m_draw_arrow(graph_reference graph, const nana::rectangle& r, state_t sta, ::nana::direction dir)
|
||||||
{
|
{
|
||||||
using namespace nana::paint::gadget;
|
facade<element::arrow> arrow("solid_triangle");
|
||||||
|
arrow.direction(dir);
|
||||||
::nana::color fgcolor(colors::black);
|
colors fgcolor = colors::black;
|
||||||
int style = 1;
|
if (item_renderer::disable == sta)
|
||||||
if(sta == item_renderer::disable)
|
|
||||||
{
|
{
|
||||||
style = 0;
|
arrow.switch_to("hollow_triangle");
|
||||||
fgcolor = { 0x80, 0x80, 0x80 };
|
fgcolor = colors::gray;
|
||||||
}
|
}
|
||||||
arrow_16_pixels(graph, r.x + (r.width - 16) / 2, r.y + (r.height - 16) / 2, fgcolor, style, dir);
|
auto arrow_r = r;
|
||||||
|
arrow_r.x += static_cast<int>(arrow_r.width - 16) / 2;
|
||||||
|
arrow_r.y += static_cast<int>(arrow_r.height - 16) / 2;
|
||||||
|
arrow_r.width = arrow_r.height = 16;
|
||||||
|
arrow.draw(graph, bgcolor_, fgcolor, arrow_r, element_state::normal);
|
||||||
|
|
||||||
if(item_renderer::highlight == sta)
|
if(item_renderer::highlight == sta)
|
||||||
graph.rectangle(r, false, { 0xA0, 0xA0, 0xA0 });
|
graph.rectangle(r, false, colors::dark_gray);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
::nana::color bgcolor_;
|
::nana::color bgcolor_;
|
||||||
|
|||||||
@ -33,7 +33,6 @@ namespace nana{ namespace drawerbase {
|
|||||||
drawer::drawer()
|
drawer::drawer()
|
||||||
: widget_(nullptr), editor_(nullptr)
|
: widget_(nullptr), editor_(nullptr)
|
||||||
{
|
{
|
||||||
status_.has_focus = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
drawer::text_editor* drawer::editor()
|
drawer::text_editor* drawer::editor()
|
||||||
@ -78,15 +77,14 @@ namespace nana{ namespace drawerbase {
|
|||||||
|
|
||||||
void drawer::refresh(graph_reference graph)
|
void drawer::refresh(graph_reference graph)
|
||||||
{
|
{
|
||||||
editor_->render(status_.has_focus);
|
editor_->render(API::is_focus_window(*widget_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawer::focus(graph_reference graph, const arg_focus& arg)
|
void drawer::focus(graph_reference graph, const arg_focus& arg)
|
||||||
{
|
{
|
||||||
status_.has_focus = arg.getting;
|
|
||||||
refresh(graph);
|
refresh(graph);
|
||||||
|
|
||||||
editor_->show_caret(status_.has_focus);
|
editor_->show_caret(arg.getting);
|
||||||
editor_->reset_caret();
|
editor_->reset_caret();
|
||||||
API::lazy_refresh();
|
API::lazy_refresh();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1122,16 +1122,17 @@ namespace nana
|
|||||||
comp_attribute_t attr;
|
comp_attribute_t attr;
|
||||||
if(compset->comp_attribute(component::expender, attr))
|
if(compset->comp_attribute(component::expender, attr))
|
||||||
{
|
{
|
||||||
using namespace nana::paint;
|
facade<element::arrow> arrow("solid_triangle");
|
||||||
|
arrow.direction(direction::southeast);
|
||||||
uint32_t style = 1;
|
if (!compset->item_attribute().expended)
|
||||||
gadget::directions::t dir = gadget::directions::to_southeast;
|
|
||||||
if(! compset->item_attribute().expended)
|
|
||||||
{
|
{
|
||||||
style = 0;
|
arrow.switch_to("hollow_triangle");
|
||||||
dir = gadget::directions::to_east;
|
arrow.direction(direction::east);
|
||||||
}
|
}
|
||||||
gadget::arrow_16_pixels(graph, attr.area.x, attr.area.y + (attr.area.height - 16) / 2, (attr.mouse_pointed ? color(0x1C, 0xC4, 0xF7) : color(colors::black)), style, dir);
|
auto r = attr.area;
|
||||||
|
r.y += (attr.area.height - 16) / 2;
|
||||||
|
r.width = r.height = 16;
|
||||||
|
arrow.draw(graph, bgcolor_, (attr.mouse_pointed ? colors::deep_sky_blue : colors::black), r, element_state::normal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,217 +19,6 @@ namespace paint
|
|||||||
{
|
{
|
||||||
namespace gadget
|
namespace gadget
|
||||||
{
|
{
|
||||||
namespace detail
|
|
||||||
{
|
|
||||||
typedef nana::paint::graphics& graph_reference;
|
|
||||||
|
|
||||||
void hollow_triangle(graph_reference graph, int x, int y, uint32_t direction)
|
|
||||||
{
|
|
||||||
x += 3;
|
|
||||||
y += 3;
|
|
||||||
switch (direction)
|
|
||||||
{
|
|
||||||
case directions::to_east:
|
|
||||||
graph.line(point{ x + 3, y + 1 }, point{ x + 3, y + 9 });
|
|
||||||
graph.line(point{ x + 4, y + 2 }, point{ x + 7, y + 5 });
|
|
||||||
graph.line(point{ x + 6, y + 6 }, point{ x + 4, y + 8 });
|
|
||||||
break;
|
|
||||||
case directions::to_southeast:
|
|
||||||
graph.line(point{ x + 2, y + 7 }, point{ x + 7, y + 7 });
|
|
||||||
graph.line(point{ x + 7, y + 2 }, point{ x + 7, y + 6 });
|
|
||||||
graph.line(point{ x + 3, y + 6 }, point{ x + 6, y + 3 });
|
|
||||||
break;
|
|
||||||
case directions::to_south:
|
|
||||||
y += 3;
|
|
||||||
graph.line(point{ x, y }, point{ x + 8, y });
|
|
||||||
graph.line(point{ x + 1, y + 1 }, point{ x + 4, y + 4 });
|
|
||||||
graph.line(point{ x + 7, y + 1 }, point{ x + 5, y + 3 });
|
|
||||||
break;
|
|
||||||
case directions::to_west:
|
|
||||||
x += 5;
|
|
||||||
y += 1;
|
|
||||||
graph.line(point{ x, y }, point{ x, y + 8 });
|
|
||||||
graph.line(point{ x - 4, y + 4 }, point{ x - 1, y + 1 });
|
|
||||||
graph.line(point{ x - 3, y + 5 }, point{ x - 1, y + 7 });
|
|
||||||
break;
|
|
||||||
case directions::to_north:
|
|
||||||
y += 7;
|
|
||||||
graph.line(point{ x, y }, point{x + 8, y});
|
|
||||||
graph.line(point{x + 1, y - 1}, point{x + 4, y - 4});
|
|
||||||
graph.line(point{x + 5, y - 3}, point{x + 7, y - 1});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void solid_triangle(graph_reference graph, int x, int y, uint32_t dir)
|
|
||||||
{
|
|
||||||
x += 3;
|
|
||||||
y += 3;
|
|
||||||
switch(dir)
|
|
||||||
{
|
|
||||||
case directions::to_east:
|
|
||||||
for(int i = 0; i < 5; ++i)
|
|
||||||
graph.line(point{ x + 3 + i, y + 1 + i }, point{ x + 3 + i, y + 9 - i });
|
|
||||||
break;
|
|
||||||
case directions::to_southeast:
|
|
||||||
for(int i = 0; i < 6; ++i)
|
|
||||||
graph.line(point{ x + 2 + i, y + 7 - i }, point{ x + 7, y + 7 - i });
|
|
||||||
break;
|
|
||||||
case directions::to_south:
|
|
||||||
y += 3;
|
|
||||||
for(int i = 0; i < 5; ++i)
|
|
||||||
graph.line(point{ x + i, y + i }, point{ x + 8 - i, y + i });
|
|
||||||
break;
|
|
||||||
case directions::to_west:
|
|
||||||
x += 5;
|
|
||||||
y += 1;
|
|
||||||
for(int i = 0; i < 5; ++i)
|
|
||||||
graph.line(point{ x - i, y + i }, point{ x - i, y + 8 - i });
|
|
||||||
break;
|
|
||||||
case directions::to_north:
|
|
||||||
y += 7;
|
|
||||||
for(int i = 0; i < 5; ++i)
|
|
||||||
graph.line(point{ x + i, y - i }, point{ x + 8 - i, y - i });
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void direction_arrow(graph_reference graph, int x, int y, uint32_t dir)
|
|
||||||
{
|
|
||||||
graph.set_color({ 0x0, 0x2, 0x62 });
|
|
||||||
y += 5;
|
|
||||||
switch(dir)
|
|
||||||
{
|
|
||||||
case directions::to_north:
|
|
||||||
{
|
|
||||||
x += 3;
|
|
||||||
int pixels = 1;
|
|
||||||
for(int l = 0; l < 4; ++l)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < pixels; ++i)
|
|
||||||
{
|
|
||||||
if(l ==3 && i == 3)
|
|
||||||
{}
|
|
||||||
else
|
|
||||||
graph.set_pixel(x + i, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
x--;
|
|
||||||
y++;
|
|
||||||
pixels += 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
graph.set_pixel(x + 1, y);
|
|
||||||
graph.set_pixel(x + 2, y);
|
|
||||||
graph.set_pixel(x + 6, y);
|
|
||||||
graph.set_pixel(x + 7, y);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case directions::to_south:
|
|
||||||
{
|
|
||||||
|
|
||||||
graph.set_pixel(x, y);
|
|
||||||
graph.set_pixel(x + 1, y);
|
|
||||||
graph.set_pixel(x + 5, y);
|
|
||||||
graph.set_pixel(x + 6, y);
|
|
||||||
|
|
||||||
++y;
|
|
||||||
int pixels = 7;
|
|
||||||
for (int l = 0; l < 4; ++l)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < pixels; ++i)
|
|
||||||
{
|
|
||||||
if (l != 0 || i != 3)
|
|
||||||
graph.set_pixel(x + i, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
x++;
|
|
||||||
y++;
|
|
||||||
pixels -= 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void double_arrow_line(nana::paint::graphics & graph, int x, int y, bool horizontal)
|
|
||||||
{
|
|
||||||
graph.set_pixel(x, y);
|
|
||||||
if(horizontal)
|
|
||||||
{
|
|
||||||
graph.set_pixel(x + 1, y);
|
|
||||||
graph.set_pixel(x + 4, y);
|
|
||||||
graph.set_pixel(x + 5, y);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
graph.set_pixel(x, y + 1);
|
|
||||||
graph.set_pixel(x, y + 4);
|
|
||||||
graph.set_pixel(x, y + 5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void double_arrow(nana::paint::graphics& graph, int x, int y, directions::t dir)
|
|
||||||
{
|
|
||||||
switch(dir)
|
|
||||||
{
|
|
||||||
case directions::to_east:
|
|
||||||
double_arrow_line(graph, x + 4, y + 6, true);
|
|
||||||
double_arrow_line(graph, x + 5, y + 7, true);
|
|
||||||
double_arrow_line(graph, x + 6, y + 8, true);
|
|
||||||
double_arrow_line(graph, x + 5, y + 9, true);
|
|
||||||
double_arrow_line(graph, x + 4, y + 10, true);
|
|
||||||
break;
|
|
||||||
case directions::to_west:
|
|
||||||
double_arrow_line(graph, x + 5, y + 6, true);
|
|
||||||
double_arrow_line(graph, x + 4, y + 7, true);
|
|
||||||
double_arrow_line(graph, x + 3, y + 8, true);
|
|
||||||
double_arrow_line(graph, x + 4, y + 9, true);
|
|
||||||
double_arrow_line(graph, x + 5, y + 10, true);
|
|
||||||
break;
|
|
||||||
case directions::to_south:
|
|
||||||
double_arrow_line(graph, x + 5, y + 4, false);
|
|
||||||
double_arrow_line(graph, x + 6, y + 5, false);
|
|
||||||
double_arrow_line(graph, x + 7, y + 6, false);
|
|
||||||
double_arrow_line(graph, x + 8, y + 5, false);
|
|
||||||
double_arrow_line(graph, x + 9, y + 4, false);
|
|
||||||
break;
|
|
||||||
case directions::to_north:
|
|
||||||
double_arrow_line(graph, x + 5, y + 6, false);
|
|
||||||
double_arrow_line(graph, x + 6, y + 5, false);
|
|
||||||
double_arrow_line(graph, x + 7, y + 4, false);
|
|
||||||
double_arrow_line(graph, x + 8, y + 5, false);
|
|
||||||
double_arrow_line(graph, x + 9, y + 6, false);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}//end namespace detail
|
|
||||||
|
|
||||||
//arrow_16_pixels
|
|
||||||
//param@style: 0 = hollow, 1 = solid
|
|
||||||
void arrow_16_pixels(nana::paint::graphics& graph, int x, int y, const nana::color& clr, uint32_t style, directions::t dir)
|
|
||||||
{
|
|
||||||
graph.set_color(clr);
|
|
||||||
switch(style)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
detail::solid_triangle(graph, x, y, dir);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
detail::direction_arrow(graph, x, y, dir);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
detail::double_arrow(graph, x, y, dir);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
default:
|
|
||||||
detail::hollow_triangle(graph, x, y, dir);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void close_16_pixels(::nana::paint::graphics& graph, int x, int y, uint32_t style, const ::nana::color& clr)
|
void close_16_pixels(::nana::paint::graphics& graph, int x, int y, uint32_t style, const ::nana::color& clr)
|
||||||
{
|
{
|
||||||
graph.set_color(clr);
|
graph.set_color(clr);
|
||||||
|
|||||||
@ -968,13 +968,14 @@ namespace paint
|
|||||||
|
|
||||||
void graphics::line(const nana::point& pos1, const nana::point& pos2)
|
void graphics::line(const nana::point& pos1, const nana::point& pos2)
|
||||||
{
|
{
|
||||||
if ((!handle_) || (pos1 == pos2)) return;
|
if (!handle_) return;
|
||||||
#if defined(NANA_WINDOWS)
|
#if defined(NANA_WINDOWS)
|
||||||
handle_->update_pen();
|
handle_->update_pen();
|
||||||
|
if (pos1 != pos2)
|
||||||
|
{
|
||||||
::MoveToEx(handle_->context, pos1.x, pos1.y, 0);
|
::MoveToEx(handle_->context, pos1.x, pos1.y, 0);
|
||||||
::LineTo(handle_->context, pos2.x, pos2.y);
|
::LineTo(handle_->context, pos2.x, pos2.y);
|
||||||
|
}
|
||||||
::SetPixel(handle_->context, pos2.x, pos2.y, NANA_RGB(handle_->pen.color));
|
::SetPixel(handle_->context, pos2.x, pos2.y, NANA_RGB(handle_->pen.color));
|
||||||
#elif defined(NANA_X11)
|
#elif defined(NANA_X11)
|
||||||
Display* disp = nana::detail::platform_spec::instance().open_display();
|
Display* disp = nana::detail::platform_spec::instance().open_display();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user