void CustomStyle::draw(Painter& p, Button*, Element /*e*/, const WidgetState &st, const Rect &r, const Extra&) const { p.setBlendMode( Tempest::alphaBlend ); p.translate(r.x,r.y); const Button::Type buttonType=st.button; const bool drawBackFrame = (buttonType!=Button::T_ToolButton || st.highlighted) && buttonType!=Button::T_FlatButton; if( drawBackFrame ) { auto c = p.color(); if( st.pressed ) p.setColor(second[Dark]); else if( st.highlighted ) p.setColor(second[Dark]); else p.setColor(second[Normal]); p.drawRect(0,0,r.w,r.h); p.setColor(c); } if( drawBackFrame ) { p.setColor(border); p.unsetTexture(); p.drawLine(0,0, r.w-1,0 ); p.drawLine(0,r.h-1,r.w-1,r.h-1); p.drawLine(0, 0, 0,r.h-1); p.drawLine(r.w-1, 0,r.w-1,r.h ); } p.translate(r.x,r.y); }
void CustomStyle::draw(Painter &p, Panel*, Style::Element, const WidgetState&,const Rect& r,const Style::Extra&) const { p.translate(r.x,r.y); p.setBlendMode( Tempest::alphaBlend ); p.setColor(Color(1.0)); p.drawRect(0,0,r.w,r.h); p.setColor(border); p.unsetTexture(); p.drawLine(0,0, r.w-1,0 ); p.drawLine(0,r.h-1,r.w-1,r.h-1); p.drawLine(0, 0, 0,r.h-1); p.drawLine(r.w-1, 0,r.w-1,r.h ); p.translate(-r.x,-r.y); }
void CustomStyle::draw(Painter &p,CheckBox*,Style::Element, const WidgetState &st, const Rect &r, const Style::Extra &) const { const int s = std::min(std::min(r.w,r.h),24); const Size sz = Size(s,s); p.translate(r.x,r.y); p.setBlendMode( Tempest::alphaBlend ); p.setColor(prime[Dark]); int x = 0, y = (r.h-sz.h)/2; p.drawLine(x, y,x+sz.w-1, y); p.drawLine(x,y+sz.h-1,x+sz.w-1,y+sz.h-1); p.drawLine( x, y, x,y+sz.h-1); p.drawLine(x+sz.w-1,y,x+sz.w-1,y+sz.h ); if( st.checked==WidgetState::Checked ) { int d = st.pressed ? 2 : 4; if( st.pressed ) { p.drawLine(x+d, y+d, x+sz.w-d, y+sz.h-d); p.drawLine(x+sz.w-d, y+d, x+d, y+sz.h-d); } else { p.drawLine(x, y, x+sz.w, y+sz.h); p.drawLine(x+sz.w, y, x, y+sz.h); } } else if( st.checked==WidgetState::PartiallyChecked ) { int d = st.pressed ? 2 : 4; p.drawLine(x+d, y+d, x+sz.w-d, y+d); p.drawLine(x+d, y+sz.h+d, x+sz.w-d, y+sz.h+d); p.drawLine(x+d, y+d, x+d, y+sz.h-d); p.drawLine(x+sz.w+d, y+d, x+sz.w+d, y+sz.h-d); } p.translate(-r.x,-r.y); }