void colour_picker_dialog::colour_selection::paint(graphics_context& aGraphicsContext) const { framed_widget::paint(aGraphicsContext); rect cr = client_rect(false); aGraphicsContext.fill_rect(cr, iParent.selected_colour()); cr.y = cr.cy / 2.0; aGraphicsContext.fill_rect(cr, iParent.current_colour()); }
void menu_item_widget::paint_non_client(graphics_context& aGraphicsContext) const { if (iMenu.has_selected_item() && iMenu.selected_item() == (iMenu.find_item(iMenuItem))) { bool openSubMenu = (iMenuItem.type() == i_menu_item::SubMenu && iMenuItem.sub_menu().is_open()); colour background; if (openSubMenu && iMenu.type() == i_menu::MenuBar) { background = app::instance().current_style().colour().dark() ? app::instance().current_style().colour().darker(0x40) : app::instance().current_style().colour().lighter(0x40); if (background.similar_intensity(app::instance().current_style().colour(), 0.05)) { background = app::instance().current_style().selection_colour(); background.set_alpha(0x80); } } else { background = background_colour().light() ? background_colour().darker(0x40) : background_colour().lighter(0x40); background.set_alpha(0x80); } aGraphicsContext.fill_rect(client_rect(), background); } }
void toolbar_button::paint(graphics_context& aGraphicsContext) const { if (!iAction.is_separator()) push_button::paint(aGraphicsContext); else { scoped_units su(*this, aGraphicsContext, UnitsPixels); rect line = client_rect(); line.deflate(0, std::floor(client_rect().height() / 6.0)); line.cx = 1.0; colour ink = (has_foreground_colour() ? foreground_colour() : app::instance().current_style().foreground_colour()); aGraphicsContext.fill_rect(line, ink.darker(0x40)); ++line.x; aGraphicsContext.fill_rect(line, ink.lighter(0x40)); } }
void colour_picker_dialog::x_picker::paint(graphics_context& aGraphicsContext) const { framed_widget::paint(aGraphicsContext); scoped_units su(*this, UnitsPixels); rect cr = client_rect(false); for (uint32_t x = 0; x < cr.height(); ++x) { double nx = x / (cr.height() - 1.0); rect line{ cr.top_left() + point{ 0.0, cr.height() - x - 1.0 }, size{ cr.width(), 1.0 } }; if (iParent.mode() == ModeHSV) { hsv_colour hsvColour{ nx * 359.0, 1.0, 1.0 }; aGraphicsContext.fill_rect(line, hsvColour.to_rgb()); } } }
void menu_item_widget::paint(graphics_context& aGraphicsContext) const { if (iMenuItem.type() != i_menu_item::Action || !iMenuItem.action().is_separator()) { widget::paint(aGraphicsContext); if (iMenuItem.type() == i_menu_item::SubMenu && iMenu.type() == i_menu::Popup) { bool openSubMenu = (iMenuItem.type() == i_menu_item::SubMenu && iMenuItem.sub_menu().is_open()); colour ink = openSubMenu ? app::instance().current_style().selection_colour() : background_colour().light() ? background_colour().darker(0x80) : background_colour().lighter(0x80); if (iSubMenuArrow == boost::none || iSubMenuArrow->first != ink) { const uint8_t sArrowImagePattern[9][6] { { 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0, 0 }, { 0, 1, 1, 1, 0, 0 }, { 0, 1, 1, 1, 1, 0 }, { 0, 1, 1, 1, 0, 0 }, { 0, 1, 1, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0 }, }; iSubMenuArrow = std::make_pair(ink, image{ "neogfx::menu_item_widget::" + ink.to_string(), sArrowImagePattern, { { 0, colour{} },{ 1, ink } } }); } rect rect = client_rect(false); aGraphicsContext.draw_texture( point{ rect.right() - iGap + std::floor((iGap - iSubMenuArrow->second.extents().cx) / 2.0), std::floor((rect.height() - iSubMenuArrow->second.extents().cy) / 2.0) }, iSubMenuArrow->second); } } else { scoped_units su(*this, aGraphicsContext, UnitsPixels); rect line = client_rect(false); ++line.y; line.cy = 1.0; line.x += (iIconSize + iGap * 2.0); line.cx -= (iIconSize + iGap * 3.0); colour ink = background_colour().light() ? background_colour().darker(0x60) : background_colour().lighter(0x60); ink.set_alpha(0x80); aGraphicsContext.fill_rect(line, ink); } }
void colour_picker_dialog::colour_box::paint(graphics_context& aGraphicsContext) const { framed_widget::paint(aGraphicsContext); aGraphicsContext.fill_rect(client_rect(false), iColour); }