void qDrawWinPanel( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, const QBrush *fill ) { if ( sunken ) qDrawWinShades( p, x, y, w, h, g.dark(), g.light(), g.shadow(), g.midlight(), fill ); else qDrawWinShades( p, x, y, w, h, g.light(), g.shadow(), g.midlight(), g.dark(), fill ); }
/*!\reimp */ void QWindowsStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken , bool /* editable */, bool enabled, const QBrush *fill ) { qDrawWinPanel(p, x, y, w, h, g, TRUE, fill?fill:(enabled?&g.brush( QColorGroup::Base ): &g.brush( QColorGroup::Background ))); // the special reversed left shadow panel ( slightly different from drawPanel() ) //qDrawWinPanel(p, w-2-16,2,16,h-4, g, sunken); // #### DO SUNKEN! if ( sunken ) drawWinShades( p, x+w-2-16, y+2, 16, h-4, g.dark(), g.dark(), g.button(), g.button(), fill ? fill : &g.brush( QColorGroup::Button ) ); else drawWinShades( p, x+w-2-16, y+2, 16, h-4, g.midlight(), g.shadow(), g.light(), g.dark(), fill ? fill : &g.brush( QColorGroup::Button ) ); drawArrow( p, QStyle::DownArrow, sunken, x+w-2-16+ 2, y+2+ 2, 16- 4, h-4- 4, g, enabled, fill ? fill : &g.brush( QColorGroup::Button ) ); }
void QWindowsStyle::drawPanel( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, int lineWidth, const QBrush* fill) { if ( lineWidth == 2 ) { if (sunken) drawWinShades( p, x, y, w, h, g.dark(), g.light(), g.shadow(), g.midlight(), fill ); else drawWinShades( p, x, y, w, h, g.light(), g.shadow(), g.midlight(), g.dark(), fill ); } else QStyle::drawPanel( p, x, y, w, h, g, sunken, lineWidth, fill ); }
HTMLColors() { map["black"] = "#000000"; map["green"] = "#008000"; map["silver"] = "#c0c0c0"; map["lime"] = "#00ff00"; map["gray"] = "#808080"; map["olive"] = "#808000"; map["white"] = "#ffffff"; map["yellow"] = "#ffff00"; map["maroon"] = "#800000"; map["navy"] = "#000080"; map["red"] = "#ff0000"; map["blue"] = "#0000ff"; map["purple"] = "#800080"; map["teal"] = "#008080"; map["fuchsia"] = "#ff00ff"; map["aqua"] = "#00ffff"; map["crimson"] = "#dc143c"; map["indigo"] = "#4b0082"; #ifdef __BEOS__ printf( "Warning: HTMLColors::HTMLColors() not initiating all colors\n" ); #else // ### react to style changes // see http://www.richinstyle.com for details QColorGroup cg = kapp->palette().active(); map["activeborder"] = cg.light(); // bordercolor of an active window map["activecaption"] = cg.text(); // caption color of an active window map["appworkspace"] = cg.background(); // background color of an MDI interface map["highlight"] = cg.highlight(); map["highlighttext"] = cg.highlightedText(); cg = kapp->palette().inactive(); map["background"] = cg.background(); // desktop background color map["buttonface"] = cg.button(); // Button background color map["buttonhighlight"] = cg.light(); map["buttonshadow"] = cg.shadow(); map["buttontext"] = cg.buttonText(); map["captiontext"] = cg.text(); map["infobackground"] = QToolTip::palette().inactive().background(); map["menu"] = cg.background(); map["menutext"] = cg.foreground(); map["scrollbar"] = cg.background(); map["threeddarkshadow"] = cg.dark(); map["threedface"] = cg.button(); map["threedhighlight"] = cg.light(); map["threedlightshadow"] = cg.midlight(); map["window"] = cg.background(); map["windowframe"] = cg.background(); map["text"] = cg.text(); cg = kapp->palette().disabled(); map["inactiveborder"] = cg.background(); map["inactivecaption"] = cg.background(); map["inactivecaptiontext"] = cg.text(); map["graytext"] = cg.text(); #endif };
void QWindowsStyle::drawExclusiveIndicator( QPainter* p, int x, int y, int w, int h, const QColorGroup &g, bool on, bool down, bool enabled ) { static const QCOORD pts1[] = { // dark lines 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; static const QCOORD pts2[] = { // black lines 2,8, 1,7, 1,4, 2,3, 2,2, 3,2, 4,1, 7,1, 8,2, 9,2 }; static const QCOORD pts3[] = { // background lines 2,9, 3,9, 4,10, 7,10, 8,9, 9,9, 9,8, 10,7, 10,4, 9,3 }; static const QCOORD pts4[] = { // white lines 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, 11,4, 10,3, 10,2 }; static const QCOORD pts5[] = { // inner fill 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; p->eraseRect( x, y, w, h ); QPointArray a( QCOORDARRLEN(pts1), pts1 ); a.translate( x, y ); p->setPen( g.dark() ); p->drawPolyline( a ); a.setPoints( QCOORDARRLEN(pts2), pts2 ); a.translate( x, y ); p->setPen( g.shadow() ); p->drawPolyline( a ); a.setPoints( QCOORDARRLEN(pts3), pts3 ); a.translate( x, y ); p->setPen( g.midlight() ); p->drawPolyline( a ); a.setPoints( QCOORDARRLEN(pts4), pts4 ); a.translate( x, y ); p->setPen( g.light() ); p->drawPolyline( a ); a.setPoints( QCOORDARRLEN(pts5), pts5 ); a.translate( x, y ); QColor fillColor = ( down || !enabled ) ? g.button() : g.base(); p->setPen( fillColor ); p->setBrush( fillColor ) ; p->drawPolygon( a ); if ( on ) { p->setPen( NoPen ); p->setBrush( g.text() ); p->drawRect( x+5, y+4, 2, 4 ); p->drawRect( x+4, y+5, 4, 2 ); } }
KDEFX_EXPORT void kDrawNextButton(QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, const QBrush *fill) { QPen oldPen = p->pen(); int x2 = x+w-1; int y2 = y+h-1; p->fillRect(x+1, y+1, w-2, h-2, fill ? *fill : g.brush(QColorGroup::Button)); p->setPen(sunken ? Qt::black : g.light()); p->drawLine(x, y, x2-1, y); p->drawLine(x, y, x, y2-1); p->setPen(sunken ? g.midlight() : g.mid()); p->drawLine(x+1, y2-1, x2-1, y2-1); p->drawLine(x2-1, y+1, x2-1, y2-1); p->setPen(sunken ? g.light() : Qt::black); p->drawLine(x, y2, x2, y2); p->drawLine(x2, y, x2, y2); p->setPen(oldPen); }
KDEFX_EXPORT void kColorBitmaps(QPainter *p, const QColorGroup &g, int x, int y, QBitmap *lightColor, QBitmap *midColor, QBitmap *midlightColor, QBitmap *darkColor, QBitmap *blackColor, QBitmap *whiteColor) { QBitmap *bitmaps[]={lightColor, midColor, midlightColor, darkColor, blackColor, whiteColor}; QColor colors[]={g.light(), g.mid(), g.midlight(), g.dark(), Qt::black, Qt::white}; int i; for(i=0; i < 6; ++i){ if(bitmaps[i]){ if(!bitmaps[i]->mask()) bitmaps[i]->setMask(*bitmaps[i]); p->setPen(colors[i]); p->drawPixmap(x, y, *bitmaps[i]); } } }
KDEFX_EXPORT void kColorBitmaps(QPainter *p, const QColorGroup &g, int x, int y, int w, int h, bool isXBitmaps, const uchar *lightColor, const uchar *midColor, const uchar *midlightColor, const uchar *darkColor, const uchar *blackColor, const uchar *whiteColor) { const uchar *data[]={lightColor, midColor, midlightColor, darkColor, blackColor, whiteColor}; QColor colors[]={g.light(), g.mid(), g.midlight(), g.dark(), Qt::black, Qt::white}; int i; QBitmap b; for(i=0; i < 6; ++i){ if(data[i]){ b = QBitmap(w, h, data[i], isXBitmaps); b.setMask(b); p->setPen(colors[i]); p->drawPixmap(x, y, b); } } }
void qDrawShadePanel( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, int lineWidth, const QBrush *fill ) { if ( w == 0 || h == 0 ) return; if ( !( w > 0 && h > 0 && lineWidth >= 0 ) ) { #if defined(QT_CHECK_RANGE) qWarning( "qDrawShadePanel() Invalid parameters." ); #endif } QColor shade = g.dark(); QColor light = g.light(); if ( fill ) { if ( fill->color() == shade ) shade = g.shadow(); if ( fill->color() == light ) light = g.midlight(); } QPen oldPen = p->pen(); // save pen QPointArray a( 4*lineWidth ); if ( sunken ) p->setPen( shade ); else p->setPen( light ); int x1, y1, x2, y2; int i; int n = 0; x1 = x; y1 = y2 = y; x2 = x+w-2; for ( i=0; i<lineWidth; i++ ) { // top shadow a.setPoint( n++, x1, y1++ ); a.setPoint( n++, x2--, y2++ ); } x2 = x1; y1 = y+h-2; for ( i=0; i<lineWidth; i++ ) { // left shadow a.setPoint( n++, x1++, y1 ); a.setPoint( n++, x2++, y2-- ); } p->drawLineSegments( a ); n = 0; if ( sunken ) p->setPen( light ); else p->setPen( shade ); x1 = x; y1 = y2 = y+h-1; x2 = x+w-1; for ( i=0; i<lineWidth; i++ ) { // bottom shadow a.setPoint( n++, x1++, y1-- ); a.setPoint( n++, x2, y2-- ); } x1 = x2; y1 = y; y2 = y+h-lineWidth-1; for ( i=0; i<lineWidth; i++ ) { // right shadow a.setPoint( n++, x1--, y1++ ); a.setPoint( n++, x2--, y2 ); } p->drawLineSegments( a ); if ( fill ) { // fill with fill color QBrush oldBrush = p->brush(); p->setPen( Qt::NoPen ); p->setBrush( *fill ); p->drawRect( x+lineWidth, y+lineWidth, w-lineWidth*2, h-lineWidth*2 ); p->setBrush( oldBrush ); } p->setPen( oldPen ); // restore pen }
/*!\reimp */ void QWindowsStyle::drawSlider( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, Orientation orient, bool tickAbove, bool tickBelow ) { #ifndef QT_NO_SLIDER // 4444440 // 4333310 // 4322210 // 4322210 // 4322210 // 4322210 // *43210* // **410** // ***0*** const QColor c0 = g.shadow(); const QColor c1 = g.dark(); // const QColor c2 = g.button(); const QColor c3 = g.midlight(); const QColor c4 = g.light(); int x1 = x; int x2 = x+w-1; int y1 = y; int y2 = y+h-1; p->fillRect( x, y, w, h, g.brush( QColorGroup::Background ) ); if ( tickAbove && tickBelow || !tickAbove && !tickBelow ) { qDrawWinButton( p, QRect(x,y,w,h), g, FALSE, &g.brush( QColorGroup::Button ) ); return; } enum { SlUp, SlDown, SlLeft, SlRight } dir; if ( orient == Horizontal ) if ( tickAbove ) dir = SlUp; else dir = SlDown; else if ( tickAbove ) dir = SlLeft; else dir = SlRight; QPointArray a; int d = 0; switch ( dir ) { case SlUp: y1 = y1 + w/2; d = (w + 1) / 2 - 1; a.setPoints(5, x1,y1, x1,y2, x2,y2, x2,y1, x1+d,y1-d ); break; case SlDown: y2 = y2 - w/2; d = (w + 1) / 2 - 1; a.setPoints(5, x1,y1, x1,y2, x1+d,y2+d, x2,y2, x2,y1 ); break; case SlLeft: d = (h + 1) / 2 - 1; x1 = x1 + h/2; a.setPoints(5, x1,y1, x1-d,y1+d, x1,y2, x2,y2, x2,y1); break; case SlRight: d = (h + 1) / 2 - 1; x2 = x2 - h/2; a.setPoints(5, x1,y1, x1,y2, x2,y2, x2+d,y1+d, x2,y1 ); break; } QBrush oldBrush = p->brush(); p->setBrush( g.brush( QColorGroup::Button ) ); p->setPen( NoPen ); p->drawRect( x1, y1, x2-x1+1, y2-y1+1 ); p->drawPolygon( a ); p->setBrush( oldBrush ); if ( dir != SlUp ) { p->setPen( c4 ); p->drawLine( x1, y1, x2, y1 ); p->setPen( c3 ); p->drawLine( x1, y1+1, x2, y1+1 ); } if ( dir != SlLeft ) { p->setPen( c3 ); p->drawLine( x1+1, y1+1, x1+1, y2 ); p->setPen( c4 ); p->drawLine( x1, y1, x1, y2 ); } if ( dir != SlRight ) { p->setPen( c0 ); p->drawLine( x2, y1, x2, y2 ); p->setPen( c1 ); p->drawLine( x2-1, y1+1, x2-1, y2-1 ); } if ( dir != SlDown ) { p->setPen( c0 ); p->drawLine( x1, y2, x2, y2 ); p->setPen( c1 ); p->drawLine( x1+1, y2-1, x2-1, y2-1 ); } switch ( dir ) { case SlUp: p->setPen( c4 ); p->drawLine( x1, y1, x1+d, y1-d); p->setPen( c0 ); d = w - d - 1; p->drawLine( x2, y1, x2-d, y1-d); d--; p->setPen( c3 ); p->drawLine( x1+1, y1, x1+1+d, y1-d ); p->setPen( c1 ); p->drawLine( x2-1, y1, x2-1-d, y1-d); break; case SlDown: p->setPen( c4 ); p->drawLine( x1, y2, x1+d, y2+d); p->setPen( c0 ); d = w - d - 1; p->drawLine( x2, y2, x2-d, y2+d); d--; p->setPen( c3 ); p->drawLine( x1+1, y2, x1+1+d, y2+d ); p->setPen( c1 ); p->drawLine( x2-1, y2, x2-1-d, y2+d); break; case SlLeft: p->setPen( c4 ); p->drawLine( x1, y1, x1-d, y1+d); p->setPen( c0 ); d = h - d - 1; p->drawLine( x1, y2, x1-d, y2-d); d--; p->setPen( c3 ); p->drawLine( x1, y1+1, x1-d, y1+1+d ); p->setPen( c1 ); p->drawLine( x1, y2-1, x1-d, y2-1-d); break; case SlRight: p->setPen( c4 ); p->drawLine( x2, y1, x2+d, y1+d); p->setPen( c0 ); d = h - d - 1; p->drawLine( x2, y2, x2+d, y2-d); d--; p->setPen( c3 ); p->drawLine( x2, y1+1, x2+d, y1+1+d ); p->setPen( c1 ); p->drawLine( x2, y2-1, x2+d, y2-1-d); break; } #endif }
/*!\reimp */ void QPlatinumStyle::drawPrimitive( PrimitiveElement pe, QPainter *p, const QRect &r, const QColorGroup &cg, SFlags flags, const QStyleOption& opt ) const { switch (pe) { case PE_HeaderSection: { // adjust the sunken flag, otherwise headers are drawn // sunken... if ( flags & Style_Sunken ) flags ^= Style_Sunken; drawPrimitive( PE_ButtonBevel, p, r, cg, flags, opt ); break; } case PE_ButtonTool: { // tool buttons don't change color when pushed in platinum, // so we need to make the mid and button color the same QColorGroup myCG = cg; QBrush fill; // quick trick to make sure toolbuttons drawn sunken // when they are activated... if ( flags & Style_On ) flags |= Style_Sunken; fill = myCG.brush( QColorGroup::Button ); myCG.setBrush( QColorGroup::Mid, fill ); drawPrimitive( PE_ButtonBevel, p, r, myCG, flags, opt ); break; } case PE_ButtonBevel: { int x, y, w, h; r.rect( &x, &y, &w, &h ); QPen oldPen = p->pen(); if ( w * h < 1600 || QABS(w - h) > 10 ) { // small buttons if ( !(flags & (Style_Sunken | Style_Down)) ) { p->fillRect( x + 2, y + 2, w - 4, h - 4, cg.brush(QColorGroup::Button) ); // the bright side p->setPen( cg.dark() ); // the bright side p->setPen( cg.dark() ); p->drawLine( x, y, x + w - 1, y ); p->drawLine( x, y, x, y + h - 1 ); p->setPen( cg.light() ); p->drawLine( x + 1, y + 1, x + w - 2, y + 1 ); p->drawLine( x + 1, y + 1, x + 1, y + h - 2 ); // the dark side p->setPen( cg.mid() ); p->drawLine( x + 2, y + h - 2, x + w - 2, y + h - 2 ); p->drawLine( x + w - 2, y + 2, x + w - 2, y + h - 3 ); p->setPen( cg.dark().dark() ); p->drawLine( x + 1, y + h - 1, x + w - 1, y + h - 1 ); p->drawLine( x + w - 1, y + 1, x + w - 1, y + h - 2 ); } else { p->fillRect(x + 2, y + 2, w - 4, h - 4, cg.brush( QColorGroup::Mid )); // the dark side p->setPen( cg.dark().dark() ); p->drawLine( x, y, x + w - 1, y ); p->drawLine( x, y, x, y + h - 1 ); p->setPen( cg.mid().dark()); p->drawLine( x + 1, y + 1, x + w-2, y + 1); p->drawLine( x + 1, y + 1, x + 1, y + h - 2 ); // the bright side! p->setPen(cg.button()); p->drawLine( x + 1, y + h - 2, x + w - 2, y + h - 2 ); p->drawLine( x + w - 2, y + 1, x + w - 2, y + h - 2 ); p->setPen(cg.dark()); p->drawLine(x, y + h - 1, x + w - 1, y + h - 1 ); p->drawLine(x + w - 1, y, x + w - 1, y + h - 1 ); } } else { // big ones if ( !(flags & (Style_Sunken | Style_Down)) ) { p->fillRect( x + 3, y + 3, w - 6, h - 6, cg.brush(QColorGroup::Button) ); // the bright side p->setPen( cg.button().dark() ); p->drawLine( x, y, x + w - 1, y ); p->drawLine( x, y, x, y + h - 1 ); p->setPen( cg.button() ); p->drawLine( x + 1, y + 1, x + w - 2, y + 1 ); p->drawLine( x + 1, y + 1, x + 1, y + h - 2 ); p->setPen( cg.light() ); p->drawLine( x + 2, y + 2, x + 2, y + h - 2 ); p->drawLine( x + 2, y + 2, x + w - 2, y + 2 ); // the dark side! p->setPen( cg.mid() ); p->drawLine( x + 3, y + h - 3, x + w - 3, y + h - 3 ); p->drawLine( x + w - 3, y + 3, x + w - 3, y + h - 3 ); p->setPen( cg.dark() ); p->drawLine( x + 2, y + h - 2, x + w - 2, y + h - 2 ); p->drawLine( x + w - 2, y + 2, x + w - 2, y + h - 2 ); p->setPen( cg.dark().dark() ); p->drawLine( x + 1, y + h - 1, x + w - 1, y + h - 1 ); p->drawLine( x + w - 1, y + 1, x + w - 1, y + h - 1 ); } else { p->fillRect( x + 3, y + 3, w - 6, h - 6, cg.brush( QColorGroup::Mid ) ); // the dark side p->setPen( cg.dark().dark().dark() ); p->drawLine( x, y, x + w - 1, y ); p->drawLine( x, y, x, y + h - 1 ); p->setPen( cg.dark().dark() ); p->drawLine( x + 1, y + 1, x + w - 2, y + 1 ); p->drawLine( x + 1, y + 1, x + 1, y + h - 2 ); p->setPen( cg.mid().dark() ); p->drawLine( x + 2, y + 2, x + 2, y + w - 2 ); p->drawLine( x + 2, y + 2, x + w - 2, y + 2 ); // the bright side! p->setPen( cg.button() ); p->drawLine( x + 2, y + h - 3, x + w - 3, y + h - 3 ); p->drawLine( x + w - 3, y + 3, x + w - 3, y + h - 3 ); p->setPen( cg.midlight() ); p->drawLine( x + 1, y + h - 2, x + w - 2, y + h - 2 ); p->drawLine( x + w - 2, y + 1, x + w - 2, y + h - 2 ); p->setPen( cg.dark() ); p->drawLine( x, y + h - 1, x + w - 1, y + h - 1 ); p->drawLine( x + w - 1, y, x + w - 1, y + h - 1 ); // corners p->setPen( mixedColor(cg.dark().dark().dark(), cg.dark()) ); p->drawPoint( x, y + h - 1 ); p->drawPoint( x + w - 1, y ); p->setPen( mixedColor(cg.dark().dark(), cg.midlight()) ); p->drawPoint( x + 1, y + h - 2 ); p->drawPoint( x + w - 2, y + 1 ); p->setPen( mixedColor(cg.mid().dark(), cg.button() ) ); p->drawPoint( x + 2, y + h - 3 ); p->drawPoint( x + w - 3, y + 2 ); } } p->setPen( oldPen ); break; } case PE_ButtonCommand: { QPen oldPen = p->pen(); int x, y, w, h; r.rect( &x, &y, &w, &h); if ( !(flags & (Style_Down | Style_On)) ) { p->fillRect( x+3, y+3, w-6, h-6, cg.brush( QColorGroup::Button )); // the bright side p->setPen( cg.shadow() ); p->drawLine( x, y, x+w-1, y ); p->drawLine( x, y, x, y + h - 1 ); p->setPen( cg.button() ); p->drawLine( x + 1, y + 1, x + w - 2, y + 1 ); p->drawLine( x + 1, y + 1, x + 1, y + h - 2 ); p->setPen( cg.light() ); p->drawLine( x + 2, y + 2, x + 2, y + h - 2 ); p->drawLine( x + 2, y + 2, x + w - 2, y + 2 ); // the dark side! p->setPen( cg.mid() ); p->drawLine( x + 3, y + h - 3 ,x + w - 3, y + h - 3 ); p->drawLine( x + w - 3, y + 3, x + w - 3, y + h - 3 ); p->setPen( cg.dark() ); p->drawLine( x + 2, y + h - 2, x + w - 2, y + h - 2 ); p->drawLine( x + w - 2, y + 2, x + w - 2, y + h - 2 ); p->setPen( cg.shadow() ); p->drawLine( x + 1, y + h - 1, x + w - 1, y + h - 1 ); p->drawLine( x + w - 1, y, x + w - 1, y + h - 1 ); // top left corner: p->setPen( cg.background() ); p->drawPoint( x, y ); p->drawPoint( x + 1, y ); p->drawPoint( x, y+1 ); p->setPen( cg.shadow() ); p->drawPoint( x + 1, y + 1 ); p->setPen( cg.button() ); p->drawPoint( x + 2, y + 2 ); p->setPen( white ); p->drawPoint( x + 3, y + 3 ); // bottom left corner: p->setPen( cg.background() ); p->drawPoint( x, y + h - 1 ); p->drawPoint( x + 1, y + h - 1 ); p->drawPoint( x, y + h - 2 ); p->setPen( cg.shadow() ); p->drawPoint( x + 1, y + h - 2 ); p->setPen( cg.dark() ); p->drawPoint( x + 2, y + h - 3 ); // top right corner: p->setPen( cg.background() ); p->drawPoint( x + w -1, y ); p->drawPoint( x + w - 2, y ); p->drawPoint( x + w - 1, y + 1 ); p->setPen( cg.shadow() ); p->drawPoint( x + w - 2, y + 1 ); p->setPen( cg.dark() ); p->drawPoint( x + w - 3, y + 2 ); // bottom right corner: p->setPen( cg.background() ); p->drawPoint( x + w - 1, y + h - 1 ); p->drawPoint( x + w - 2, y + h - 1 ); p->drawPoint( x + w - 1, y + h - 2 ); p->setPen( cg.shadow() ); p->drawPoint( x + w - 2, y + h - 2 ); p->setPen( cg.dark() ); p->drawPoint( x + w - 3, y + h - 3 ); p->setPen( cg.mid() ); p->drawPoint( x + w - 4, y + h - 4 ); } else { p->fillRect( x + 2, y + 2, w - 4, h - 4, cg.brush(QColorGroup::Dark) ); // the dark side p->setPen( cg.shadow() ); p->drawLine( x, y, x + w - 1, y ); p->drawLine( x, y, x, y + h - 1 ); p->setPen( cg.dark().dark() ); p->drawLine( x + 1, y + 1, x + w - 2, y + 1 ); p->drawLine( x + 1, y + 1, x + 1, y + h - 2 ); // the bright side! p->setPen( cg.button() ); p->drawLine( x + 1, y + h - 2, x + w - 2, y + h - 2 ); p->drawLine( x + w - 2, y + 1, x + w - 2, y + h - 2 ); p->setPen( cg.dark() ); p->drawLine( x, y + h - 1, x + w - 1, y + h - 1 ); p->drawLine( x + w - 1, y, x + w - 1, y + h - 1 ); // top left corner: p->setPen( cg.background() ); p->drawPoint( x, y ); p->drawPoint( x + 1, y ); p->drawPoint( x, y + 1 ); p->setPen( cg.shadow() ); p->drawPoint( x + 1, y + 1 ); p->setPen( cg.dark().dark() ); p->drawPoint( x + 3, y + 3 ); // bottom left corner: p->setPen( cg.background() ); p->drawPoint( x, y + h - 1 ); p->drawPoint( x + 1, y + h - 1 ); p->drawPoint( x, y + h - 2 ); p->setPen( cg.shadow() ); p->drawPoint( x + 1, y + h - 2 ); // top right corner: p->setPen( cg.background() ); p->drawPoint( x + w - 1, y ); p->drawPoint( x + w - 2, y ); p->drawPoint( x + w - 1, y + 1 ); p->setPen( cg.shadow() ); p->drawPoint( x + w - 2, y + 1 ); // bottom right corner: p->setPen( cg.background() ); p->drawPoint( x + w - 1, y + h - 1 ); p->drawPoint( x + w - 2, y + h - 1 ); p->drawPoint( x + w - 1, y + h - 2 ); p->setPen( cg.shadow() ); p->drawPoint( x + w - 2, y + h - 2 ); p->setPen( cg.dark() ); p->drawPoint( x + w - 3, y + h - 3 ); p->setPen( cg.mid() ); p->drawPoint( x + w - 4, y + h - 4 ); } p->setPen( oldPen ); break; } case PE_Indicator: { drawPrimitive( PE_ButtonBevel, p, QRect(r.x(), r.y(), r.width() - 2, r.height()), cg, flags ); p->fillRect( r.x() + r.width() - 2, r.y(), 2, r.height(), cg.brush( QColorGroup::Background ) ); p->setPen( cg.shadow() ); p->drawRect( r.x(), r.y(), r.width() - 2, r.height() ); static const QCOORD nochange_mark[] = { 3,5, 9,5, 3,6, 9,6 }; static const QCOORD check_mark[] = { 3,5, 5,5, 4,6, 5,6, 5,7, 6,7, 5,8, 6,8, 6,9, 9,9, 6,10, 8,10, 7,11, 8,11, 7,12, 7,12, 8,8, 9,8, 8,7, 10,7, 9,6, 10,6, 9,5, 11,5, 10,4, 11,4, 10,3, 12,3, 11,2, 12,2, 11,1, 13,1, 12,0, 13,0 }; if ( !(flags & Style_Off) ) { QPen oldPen = p->pen(); int x1 = r.x(); int y1 = r.y(); if ( flags & Style_Down ) { x1++; y1++; } QPointArray amark; if ( flags & Style_On ) { amark = QPointArray( sizeof(check_mark)/(sizeof(QCOORD)*2), check_mark ); // ### KLUDGE!! flags ^= Style_On; flags ^= Style_Down; } else if ( flags & Style_NoChange ) { amark = QPointArray( sizeof(nochange_mark) / (sizeof(QCOORD) * 2), nochange_mark ); } amark.translate( x1 + 1, y1 + 1 ); p->setPen( cg.dark() ); p->drawLineSegments( amark ); amark.translate( -1, -1 ); p->setPen( cg.foreground() ); p->drawLineSegments( amark ); p->setPen( oldPen ); } break; } case PE_IndicatorMask: { int x, y, w, h; r.rect( &x, &y, &w, &h ); p->fillRect( x, y, w - 2, h, color1); if ( flags & Style_Off ) { QPen oldPen = p->pen(); p->setPen ( QPen(color1, 2)); p->drawLine( x + 2, y + h / 2 - 1, x + w / 2 - 1, y + h - 4 ); p->drawLine( x + w / 2 - 1, y + h - 4, x + w, 0); p->setPen( oldPen ); } break; } case PE_ExclusiveIndicator: { #define QCOORDARRLEN(x) sizeof(x) / (sizeof(QCOORD) * 2 ) bool down = flags & Style_Down; bool on = flags & Style_On; static const QCOORD pts1[] = { // normal circle 5,0, 8,0, 9,1, 10,1, 11,2, 12,3, 12,4, 13,5, 13,8, 12,9, 12,10, 11,11, 10,12, 9,12, 8,13, 5,13, 4,12, 3,12, 2,11, 1,10, 1,9, 0,8, 0,5, 1,4, 1,3, 2,2, 3,1, 4,1 }; static const QCOORD pts2[] = { // top left shadow 5,1, 8,1, 3,2, 7,2, 2,3, 5,3, 2,4, 4,4, 1,5, 3,5, 1,6, 1,8, 2,6, 2,7 }; static const QCOORD pts3[] = { // bottom right, dark 5,12, 8,12, 7,11, 10,11, 8,10, 11,10, 9,9, 11,9, 10,8, 12,8, 11,7, 11,7, 12,5, 12,7 }; static const QCOORD pts4[] = { // bottom right, light 5,12, 8,12, 7,11, 10,11, 9,10, 11,10, 10,9, 11,9, 11,7, 11,8, 12,5, 12,8 }; static const QCOORD pts5[] = { // check mark 6,4, 8,4, 10,6, 10,8, 8,10, 6,10, 4,8, 4,6 }; static const QCOORD pts6[] = { // check mark extras 4,5, 5,4, 9,4, 10,5, 10,9, 9,10, 5,10, 4,9 }; int x, y; x = r.x(); y = r.y(); p->eraseRect( r ); p->setBrush( (down||on) ? cg.brush( QColorGroup::Dark ) : cg.brush( QColorGroup::Button) ); p->setPen( NoPen ); p->drawEllipse( x, y, 13, 13 ); p->setPen( cg.shadow() ); QPointArray a( QCOORDARRLEN(pts1), pts1 ); a.translate( x, y ); p->drawPolyline( a ); // draw normal circle QColor tc, bc; const QCOORD *bp; int bl; if ( down || on ) { // pressed down or on tc = cg.dark().dark(); bc = cg.light(); bp = pts4; bl = QCOORDARRLEN(pts4); } else { // released tc = cg.light(); bc = cg.dark(); bp = pts3; bl = QCOORDARRLEN(pts3); } p->setPen( tc ); a.setPoints( QCOORDARRLEN(pts2), pts2 ); a.translate( x, y ); p->drawLineSegments( a ); // draw top shadow p->setPen( bc ); a.setPoints( bl, bp ); a.translate( x, y ); p->drawLineSegments( a ); if ( on ) { // draw check mark int x1 = x, y1 = y; p->setBrush( cg.foreground() ); p->setPen( cg.foreground() ); a.setPoints( QCOORDARRLEN(pts5), pts5 ); a.translate( x1, y1 ); p->drawPolygon( a ); p->setBrush( NoBrush ); p->setPen( cg.dark() ); a.setPoints( QCOORDARRLEN(pts6), pts6 ); a.translate( x1, y1 ); p->drawLineSegments( a ); } break; } case PE_ExclusiveIndicatorMask: { static const QCOORD pts1[] = { // normal circle 5,0, 8,0, 9,1, 10,1, 11,2, 12,3, 12,4, 13,5, 13,8, 12,9, 12,10, 11,11, 10,12, 9,12, 8,13, 5,13, 4,12, 3,12, 2,11, 1,10, 1,9, 0,8, 0,5, 1,4, 1,3, 2,2, 3,1, 4,1 }; QPointArray a(QCOORDARRLEN(pts1), pts1); a.translate(r.x(), r.y()); p->setPen(color1); p->setBrush(color1); p->drawPolygon(a); break; } case PE_ScrollBarAddLine: { drawPrimitive( PE_ButtonBevel, p, r, cg, (flags & Style_Enabled) | ((flags & Style_Down) ? Style_Sunken : Style_Raised) ); p->setPen( cg.shadow() ); p->drawRect( r ); drawPrimitive( ((flags & Style_Horizontal) ? PE_ArrowRight : PE_ArrowDown), p, QRect(r.x() + 2, r.y() + 2, r.width() - 4, r.height() - 4), cg, flags ); break; } case PE_ScrollBarSubLine: { drawPrimitive( PE_ButtonBevel, p, r, cg, (flags & Style_Enabled) | ((flags & Style_Down) ? Style_Sunken : Style_Raised) ); p->setPen( cg.shadow() ); p->drawRect( r ); drawPrimitive( ((flags & Style_Horizontal) ? PE_ArrowLeft : PE_ArrowUp ), p, QRect(r.x() + 2, r.y() + 2, r.width() - 4, r.height() - 4), cg, flags ); break; } case PE_ScrollBarAddPage: case PE_ScrollBarSubPage: { QPen oldPen = p->pen(); if ( r.width() < 3 || r.height() < 3 ) { p->fillRect( r, cg.brush(QColorGroup::Mid) ); p->setPen( cg.shadow() ); p->drawRect( r ); p->setPen( oldPen ); } else { int x, y, w, h; r.rect( &x, &y, &w, &h ); if ( flags & Style_Horizontal ) { p->fillRect( x + 2, y + 2, w - 2, h - 4, cg.brush(QColorGroup::Mid) ); // the dark side p->setPen( cg.dark().dark() ); p->drawLine( x, y, x + w - 1, y ); p->setPen( cg.shadow()); p->drawLine( x, y, x, y + h - 1 ); p->setPen( cg.mid().dark()); p->drawLine( x + 1, y + 1, x + w - 1, y + 1 ); p->drawLine( x + 1, y + 1, x + 1, y + h - 2 ); // the bright side! p->setPen( cg.button()); p->drawLine( x + 1, y + h - 2, x + w - 1, y + h - 2 ); p->setPen( cg.shadow()); p->drawLine( x, y + h - 1, x + w - 1, y + h - 1 ); } else { p->fillRect( x + 2, y + 2, w - 4, h - 2, cg.brush(QColorGroup::Mid) ); // the dark side p->setPen( cg.dark().dark() ); p->drawLine( x, y, x + w - 1, y ); p->setPen( cg.shadow() ); p->drawLine( x, y, x, y + h - 1 ); p->setPen( cg.mid().dark() ); p->drawLine( x + 1, y + 1, x + w - 2, y + 1 ); p->drawLine( x + 1, y + 1, x + 1, y + h - 1 ); // the bright side! p->setPen( cg.button() ); p->drawLine( x + w - 2, y + 1, x + w - 2, y + h - 1 ); p->setPen( cg.shadow() ); p->drawLine( x + w - 1, y, x + w - 1, y + h - 1 ); } } p->setPen( oldPen ); break; } case PE_ScrollBarSlider: { QPoint bo = p->brushOrigin(); p->setBrushOrigin( r.topLeft() ); drawPrimitive( PE_ButtonBevel, p, r, cg, Style_Raised ); p->setBrushOrigin( bo ); drawRiffles( p, r.x(), r.y(), r.width(), r.height(), cg, flags & Style_Horizontal ); p->setPen( cg.shadow() ); p->drawRect( r ); if ( flags & Style_HasFocus ) { drawPrimitive( PE_FocusRect, p, QRect(r.x() + 2, r.y() + 2, r.width() - 5, r.height() - 5 ), cg, flags ); } break; } default: QWindowsStyle::drawPrimitive( pe, p, r, cg, flags, opt ); break; } }