Rect Window_Impl::get_part_buttonclose_rect() const { Rect rect = window->get_size(); Size part_buttonclose_size = part_buttonclose.get_css_size(); int frameright_width = part_frameright.get_css_width(); int caption_height = part_caption.get_css_height(); return Rect(rect.right - part_buttonclose_size.width - frameright_width - 2, rect.top + caption_height - part_buttonclose_size.height - 3, rect.right - frameright_width - 2, rect.top + caption_height - 3); }
void RadioButton_Impl::on_render(Canvas &canvas, const Rect &update_rect) { Rect rect = radio->get_size(); Size pref_size = part_checker.get_css_size(); Rect content_rect = radio->get_content_box(); int ypos = content_rect.top + content_rect.get_height()/2 - pref_size.height/2; Rect checker_rect(content_rect.left, ypos, content_rect.left + pref_size.width, ypos + pref_size.height); part_checker.render_box(canvas, checker_rect); int text_gap = radio->get_property_int(CssStr::text_gap, "2"); Size text_size = radio->render_text(canvas, text, checker_rect.right + text_gap, radio->get_vertical_text_align(canvas).baseline).get_size(); if (radio->has_focus()) { int focus_left = checker_rect.right + text_gap - 2; // todo: remove magic number hacks Rect focus_rect = RectPS(focus_left, content_rect.top, text_size.width+4, content_rect.bottom); part_focus.render_box(canvas, focus_rect); } }