static void ButtonBorderElementDraw( void *clientData, void *elementRecord, Tk_Window tkwin, Drawable d, Ttk_Box b, unsigned int state) { ButtonBorderElement *bd = elementRecord; int relief = TK_RELIEF_FLAT; int defaultState = TTK_BUTTON_DEFAULT_DISABLED; TkWinDCState dcState; HDC hdc; RECT rc; Tk_GetReliefFromObj(NULL, bd->reliefObj, &relief); Ttk_GetButtonDefaultStateFromObj(NULL, bd->defaultStateObj, &defaultState); if (defaultState == TTK_BUTTON_DEFAULT_ACTIVE) { XColor *highlightColor = Tk_GetColorFromObj(tkwin, bd->highlightColorObj); GC gc = Tk_GCForColor(highlightColor, d); XDrawRectangle(Tk_Display(tkwin), d, gc, b.x,b.y,b.width-1,b.height-1); } if (defaultState != TTK_BUTTON_DEFAULT_DISABLED) { ++b.x; ++b.y; b.width -= 2; b.height -= 2; } hdc = TkWinGetDrawableDC(Tk_Display(tkwin), d, &dcState); rc = BoxToRect(b); DrawFrameControl(hdc, &rc, DFC_BUTTON, /* classId */ DFCS_BUTTONPUSH | Ttk_StateTableLookup(pushbutton_statemap, state)); /* Draw focus ring: */ if (state & TTK_STATE_FOCUS) { short int borderWidth = 3; /* @@@ Use GetSystemMetrics?*/ rc = BoxToRect(Ttk_PadBox(b, Ttk_UniformPadding(borderWidth))); DrawFocusRect(hdc, &rc); } TkWinReleaseDrawableDC(d, hdc, &dcState); }
static void ThumbElementDraw( void *clientData, void *elementRecord, Tk_Window tkwin, Drawable d, Ttk_Box b, unsigned int state) { ThumbElement *thumb = elementRecord; Tk_3DBorder border = Tk_Get3DBorderFromObj(tkwin, thumb->borderObj); XColor *borderColor = Tk_GetColorFromObj(tkwin, thumb->borderColorObj); int relief = TK_RELIEF_RAISED; int borderWidth = 2; /* * Don't draw the thumb if we are disabled. * This makes it behave like Windows ... if that's what we want. if (state & TTK_STATE_DISABLED) return; */ Tk_GetReliefFromObj(NULL, thumb->reliefObj, &relief); Tk_Fill3DRectangle( tkwin, d, border, b.x,b.y,b.width,b.height, 0, TK_RELIEF_FLAT); DrawBorder(tkwin, d, border, borderColor, b, borderWidth, relief); }
static void BorderElementDraw( void *clientData, void *elementRecord, Tk_Window tkwin, Drawable d, Ttk_Box b, unsigned state) { BorderElement *border = elementRecord; int relief = TK_RELIEF_FLAT; int borderWidth = 2; Tcl_Obj *outer = 0, *upper = 0, *lower = 0; Tk_GetReliefFromObj(NULL, border->reliefObj, &relief); Tk_GetPixelsFromObj(NULL, tkwin, border->borderWidthObj, &borderWidth); if (borderWidth == 0) return; switch (relief) { case TK_RELIEF_GROOVE : case TK_RELIEF_RIDGE : case TK_RELIEF_RAISED : outer = border->borderColorObj; upper = border->lightColorObj; lower = border->darkColorObj; break; case TK_RELIEF_SUNKEN : outer = border->borderColorObj; upper = border->darkColorObj; lower = border->lightColorObj; break; case TK_RELIEF_FLAT : outer = upper = lower = 0; break; case TK_RELIEF_SOLID : outer = upper = lower = border->borderColorObj; break; } DrawSmoothBorder(tkwin, d, b, outer, upper, lower); }
static void BorderElementDraw( void *clientData, void *elementRecord, Tk_Window tkwin, Drawable d, Ttk_Box b, unsigned state) { if (qApp == NULL) NULL_Q_APP; NULL_PROXY_WIDGET(TileQt_QWidget_WidgetParent); Tcl_MutexLock(&tileqtMutex); BorderElement *border = (BorderElement*) elementRecord; int relief = TK_RELIEF_FLAT; int borderWidth = 0; Tcl_GetIntFromObj(NULL, border->borderWidthObj, &borderWidth); Tk_GetReliefFromObj(NULL, border->reliefObj, &relief); QStyle::State sflags; switch (relief) { case TK_RELIEF_GROOVE : case TK_RELIEF_RIDGE : case TK_RELIEF_RAISED : sflags |= QStyle::State_Raised; break; case TK_RELIEF_SUNKEN : sflags |= QStyle::State_Sunken; break; case TK_RELIEF_FLAT : break; case TK_RELIEF_SOLID : break; } QPixmap pixmap(b.width, b.height); QPainter painter(&pixmap); if (!(wc->TileQt_QPixmap_BackgroundTile.isNull())) { painter.fillRect(0, 0, b.width, b.height, QBrush(QColor(255,255,255), (wc->TileQt_QPixmap_BackgroundTile))); } else { painter.fillRect(0, 0, b.width, b.height, #ifdef TILEQT_QT_VERSION_3 qApp->palette().active().background()); #endif /*TILEQT_QT_VERSION_3*/ #ifdef TILEQT_QT_VERSION_4 QColor(0, 0, 0, 0)); //qApp->palette().window()); //palette().paletteBackgroundColor()); #endif /*TILEQT_QT_VERSION_4*/ } if (borderWidth) { #ifdef TILEQT_QT_VERSION_3 wc->TileQt_Style->drawPrimitive(QStyle::PE_GroupBoxFrame, &painter, QRect(0, 0, b.width, b.height), qApp->palette().active(), //sflags, QStyleOption(borderWidth, 0)); #endif /*TILEQT_QT_VERSION_3*/ //inQt3: QStyle::drawPrimitive(QStyle::PrimitiveElement, QPainter*, QRect, const QBrush&, QStyleOption #ifdef TILEQT_QT_VERSION_4 //in QT4: virtual void QStyle::drawPrimitive(QStyle::PrimitiveElement, const QStyleOption*, QPainter*, const QWidget*) const QStyleOption qso(borderWidth, 0); //QRect qr(0, 0, b.width, b.height); wc->TileQt_Style->drawPrimitive(QStyle::PE_FrameGroupBox, &qso, &painter, NULL//, //qApp->palette().toolTipBase(), //sflags ); #endif /*TILEQT_QT_VERSION_4*/ } TileQt_CopyQtPixmapOnToDrawable(pixmap, d, tkwin, 0, 0, b.width, b.height, b.x, b.y); Tcl_MutexUnlock(&tileqtMutex); }