void CL_TreeItem_Silver::on_paint() { CL_Rect rect = item->get_screen_rect(); int height = rect.get_height(); int font_height = font->get_height(item->get_text(0)); if(item->has_mouse_over()) CL_Display::fill_rect(rect, CL_Color(232, 236, 241)); if(item->get_node()->is_selected()) CL_Display::fill_rect(rect, CL_Color(184, 195, 209, 150)); CL_TreeView *treeview = item->get_node()->get_treeview(); int columns = treeview->get_column_count(); if(columns == 0) columns = 1; // Draw columns for(int x = 0, i = 0; i < columns; ++i) { int dx = 0; if(i == 0) { dx += item->get_text_margin(); CL_Surface *icon = item->get_icon(); if(icon) { icon->draw( rect.left + x + 1, rect.top + (height - icon->get_height()) / 2); dx += icon->get_width(); } } CL_Component *comp = item->get_component(i); if(comp) { comp->set_position(CL_Rect(x + dx + 4, 0, x + dx + 4 + treeview->get_column_width(i), height)); comp->paint(); } else { font->draw( rect.left + x + dx + 4, rect.top + (height - font_height) / 2, item->get_text(i)); } x += treeview->get_column_width(i); if(i == 0) x -= item->get_node()->get_placement_offset(); } }
void Ox::GfxQueue::insert(const CL_Surface& surface, const Box& box, bool with_shadow, int offs_y) { Impl::WaitingSurface new_surf; new_surf.surface = surface; new_surf.x = box.x() - surface.get_width() / 2; new_surf.y = (box.y() - box.z() - surface.get_height()) / 2 + offs_y; new_surf.display_z = box.y() + box.z() - box.sy() / 2; if (box.z() == 0 && box.sz() == 0) return pimpl->waiting_background_surfaces.push_back(new_surf); pimpl->waiting_surfaces.push(new_surf); if (with_shadow) { Impl::WaitingShadow new_shad; new_shad.surface = surface; new_shad.x = box.x() - surface.get_width() / 2; new_shad.y = (box.y() - box.sz() / 2 - surface.get_height()) / 2 + offs_y; pimpl->waiting_shadows.push_back(new_shad); } }
void CL_Button_Silver::on_paint() { int text_width = 0; int text_height = 0; if(font) { text_width = font->get_width(button->get_text().c_str()); text_height = font->get_height(); } CL_Rectf rect = button->get_screen_rect(); int font_xpos = static_cast<int>(rect.left + (rect.right - rect.left - text_width) / 2); int font_ypos = static_cast<int>(rect.top + (rect.bottom - rect.top - text_height) / 2); if(button->is_enabled() == false) { if(draw_only_surfaces == false || sur_disabled == NULL) { CL_Display::draw_rect(rect, CL_Color(203, 209, 216)); } if(sur_disabled) { sur_disabled->draw(rect.left + (rect.get_width() - sur_disabled->get_width()) / 2, rect.top + (rect.get_height() - sur_disabled->get_height()) / 2); } if(font_disabled) { font_disabled->draw(font_xpos, font_ypos, button->get_text()); } else if(font) { font->draw(font_xpos, font_ypos, button->get_text()); } } else { if(button->is_drawn_down()) { if(draw_only_surfaces == false || sur_down == NULL) { // Main border CL_Display::draw_rect( rect, CL_Color(128, 142, 159)); // Dark inner border CL_Display::draw_rect( CL_Rectf(rect.left + 1, rect.top + 1, rect.right - 1, rect.bottom - 1), CL_Color(73, 94, 120)); // Outer gradient CL_Display::fill_rect( CL_Rectf(rect.left + 2, rect.top + 2, rect.right - 1, rect.bottom - 1), CL_Gradient(CL_Color::white, CL_Color::white, CL_Color(230, 235, 240), CL_Color(230, 235, 240))); // Inner fill CL_Display::fill_rect( CL_Rectf(rect.left + 4, rect.top + 4, rect.right - 1, rect.bottom - 1), CL_Color(240, 242, 244)); } if(sur_down) { sur_down->draw(rect.left + (rect.get_width() - sur_down->get_width()) / 2, rect.top + (rect.get_height() - sur_down->get_height()) / 2); } if(font) { font->draw(font_xpos + 1, font_ypos + 1, button->get_text()); } } else { bool need_highlight = false; if (button->has_mouse_over()) { if (!button->get_gui_manager() || (!button->get_gui_manager()->get_modal_component() || button->has_modal_parent())) { need_highlight = true; } } CL_Surface *sur = NULL; if(sur_highlighted && need_highlight) { sur = sur_highlighted; } else if(sur_up) { sur = sur_up; } if(draw_only_surfaces == false || sur == NULL) { // Highlight if(need_highlight) { // Main border CL_Display::draw_rect( rect, CL_Color(209, 149, 32)); // Highlight CL_Display::draw_rect( CL_Rectf(rect.left - 1, rect.top - 1, rect.right + 1, rect.bottom + 1), CL_Color(250, 236, 204)); // Outer gradient CL_Display::fill_rect( CL_Rectf(rect.left + 1, rect.top + 1, rect.right - 1, rect.bottom - 1), CL_Gradient(CL_Color::white, CL_Color::white, CL_Color(230, 235, 240), CL_Color(230, 235, 240))); // Inner fill CL_Display::fill_rect( CL_Rectf(rect.left + 3, rect.top + 3, rect.right - 3, rect.bottom - 3), CL_Color(240, 242, 244)); } // Focus else if(button->has_focus()) { // Main border CL_Display::draw_rect( rect, CL_Color(119, 138, 187)); // Highlight CL_Display::draw_rect( CL_Rectf(rect.left - 1, rect.top - 1, rect.right + 1, rect.bottom + 1), CL_Color(206, 220, 233)); // Outer gradient CL_Display::fill_rect( CL_Rectf(rect.left + 1, rect.top + 1, rect.right - 1, rect.bottom - 1), CL_Gradient(CL_Color::white, CL_Color::white, CL_Color(230, 235, 240), CL_Color(230, 235, 240))); // Inner fill CL_Display::fill_rect( CL_Rectf(rect.left + 3, rect.top + 3, rect.right - 3, rect.bottom - 3), CL_Color(240, 242, 244)); } // Normal else { // Main border CL_Display::draw_rect( rect, CL_Color(128, 142, 159)); // Outer gradient CL_Display::fill_rect( CL_Rectf(rect.left + 1, rect.top + 1, rect.right - 1, rect.bottom - 1), CL_Gradient(CL_Color::white, CL_Color::white, CL_Color(230, 235, 240), CL_Color(230, 235, 240))); // Inner fill CL_Display::fill_rect( CL_Rectf(rect.left + 3, rect.top + 3, rect.right - 3, rect.bottom - 3), CL_Color(240, 242, 244)); } } if(sur) { sur->draw(rect.left + (rect.get_width() - sur->get_width()) / 2, rect.top + (rect.get_height() - sur->get_height()) / 2); } if(font) { font->draw(font_xpos, font_ypos, button->get_text()); } } } }