/** * Draw a container and all its subcomponent * Adjust coordinates with his position */ void Container::draw(Painter & painter) { painter.setBrushColor(::Color::white); if(draw_frame) drawFrame(painter); painter.pushTransform(area.min); std::list<Component *>::iterator i; for(i = components.begin(); i != components.end(); i++) (*i)->draw(painter); painter.popTransform(); }
void Component::drawChild(Child& child, Painter& painter) { assert(child.getComponent() != 0); if(child.useClipRect) { painter.setClipRectangle(child.clipRect); } if(child.position != Vector2(0, 0)) { painter.pushTransform(); painter.translate(child.position); } child.component->draw(painter); if(child.position != Vector2(0, 0)) { painter.popTransform(); } if(child.useClipRect) { painter.clearClipRectangle(); } }
void Button::draw(Painter& painter) { switch(state) { case STATE_CLICKED: if(comp_clicked().isEnabled()) { drawChild(comp_clicked(), painter); break; } // fallthrough case STATE_HOVER: if(comp_hover().isEnabled()) { drawChild(comp_hover(), painter); break; } // fallthrough case STATE_NORMAL: drawChild(comp_normal(), painter); break; default: assert(false); } if(lowerOnClick) { if(state == STATE_CLICKED) { painter.pushTransform(); painter.translate(Vector2(3,3)); } else if(state == STATE_HOVER) { painter.pushTransform(); painter.translate(Vector2(1,1)); } } if(comp_caption().isEnabled()) { drawChild(comp_caption(), painter);} if(lowerOnClick && (state==STATE_CLICKED || state == STATE_HOVER)) { painter.popTransform();} }