You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-style-domino/domino/domino.h

900 lines
24 KiB

/* Domino widget style for KDE 3
Copyright (C) 2006 Michael Lentner <michaell@gmx.net>
based on the KDE style "Plastik":
Copyright (C) 2003 Sandro Giessl <ceebx@users.sourceforge.net>
based on the KDE style "dotNET":
Copyright (C) 2001-2002, Chris Lee <clee@kde.org>
Carsten Pfeiffer <pfeiffer@kde.org>
Karol Szwed <gallium@kde.org>
Drawing routines completely reimplemented from KDE3 HighColor, which was
originally based on some stuff from the KDE2 HighColor.
based on drawing routines of the style "Keramik":
Copyright (c) 2002 Malte Starostik <malte@kde.org>
(c) 2002,2003 Maksim Orlovich <mo002j@mail.rochester.edu>
based on the KDE3 HighColor Style
Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org>
(C) 2001-2002 Fredrik Höglund <fredrik@kde.org>
Drawing routines adapted from the KDE2 HCStyle,
Copyright (C) 2000 Daniel M. Duley <mosfet@kde.org>
(C) 2000 Dirk Mueller <mueller@kde.org>
(C) 2001 Martijn Klingens <klingens@kde.org>
Progressbar code based on TDEStyle,
Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU General Public License
along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __DOMINO_H
#define __DOMINO_H
#include <tdestyle.h>
#include <tqintcache.h>
#include <tdetoolbarbutton.h>
#include "misc.h"
#include "data.h"
#include <tqpixmapcache.h>
// #include <X11/extensions/Xrender.h>
#include <X11/Xft/Xft.h>
class ButtonContour;
class RubberWidget;
class Rubber;
enum ContourType
{
Contour_Sunken = 0,
Contour_Raised = 1,
Contour_Simple = 2
};
enum ContourState
{
Contour_Default = 0,
Contour_Pressed = 1,
Contour_MouseOver = 2,
Contour_DefaultButton = 3
};
enum TextEffect
{
TextEffect_None = 0,
TextEffect_OnlyButton = 1,
TextEffect_Everywhere = 2
};
struct DSurface {
int numGradients;
TQColor g1Color1;
TQColor g1Color2;
TQColor g2Color1;
TQColor g2Color2;
TQColor background;
int g1Top;
int g1Bottom;
int g2Top;
int g2Bottom;
};
class DominoStyle : public TDEStyle
{
TQ_OBJECT
friend class DominoStyleConfig;
public:
DominoStyle();
virtual ~DominoStyle();
enum PaletteTyp
{
Palette_Application,
Palette_Parent,
Palette_Widget
};
void applicationPolish( const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void * );
void polish( const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void * );
void polish( TQPalette &p );
void unPolish( const TQStyleControlElementData &ceData, ControlElementFlags elementFlags, void * );
void drawTDEStylePrimitive(TDEStylePrimitive kpe,
TQPainter* p,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQRect &r,
const TQColorGroup &cg,
SFlags flags = Style_Default,
const TQStyleOption& = TQStyleOption::Default,
const TQWidget* widget = 0 ) const;
void drawPrimitive(PrimitiveElement pe,
TQPainter *p,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQRect &r,
const TQColorGroup &cg,
SFlags flags = Style_Default,
const TQStyleOption &opt = TQStyleOption::Default ) const;
void drawControl(ControlElement element,
TQPainter *p,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQRect &r,
const TQColorGroup &cg,
SFlags flags = Style_Default,
const TQStyleOption& = TQStyleOption::Default,
const TQWidget *widget = 0 ) const;
void drawControlMask( ControlElement,
TQPainter *,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQRect &,
const TQStyleOption &,
const TQWidget *) const;
void drawComplexControl(ComplexControl control,
TQPainter *p,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQRect &r,
const TQColorGroup &cg,
SFlags flags = Style_Default,
SCFlags controls = SC_All,
SCFlags active = SC_None,
const TQStyleOption& = TQStyleOption::Default,
const TQWidget *widget = 0 ) const;
int pixelMetric(PixelMetric m,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQWidget *widget = 0 ) const;
TQRect subRect(SubRect r,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQWidget *widget ) const;
TQRect querySubControlMetrics(ComplexControl control,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
SubControl subcontrol,
const TQStyleOption &opt = TQStyleOption::Default,
const TQWidget *widget = 0 ) const;
TQSize sizeFromContents(TQStyle::ContentsType t,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQSize &s,
const TQStyleOption &o,
const TQWidget *w = 0) const;
int styleHint(StyleHint,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQStyleOption & = TQStyleOption::Default,
TQStyleHintReturn * = 0,
const TQWidget * = 0 ) const;
TQPixmap stylePixmap(StylePixmap stylepixmap,
const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
const TQStyleOption& opt,
const TQWidget* widget = 0) const;
void drawItem( TQPainter *p, const TQRect &r,
int flags, const TQColorGroup &g, bool enabled,
const TQPixmap *pixmap, const TQString &text,
int len = -1, const TQColor *penColor = 0) const;
void dominoDrawItem( TQPainter *p, const TQRect &r,
int flags, const TQColorGroup &g, bool enabled,
const TQPixmap *pixmap, const TQString &text,
int len = -1, const TQColor *penColor = 0, bool buttonTextEffect = 0 ) const;
void setDominoButtonPalette(TQWidget* widget, PaletteTyp type);
virtual void drawFocusIndicator(TQPainter *p,
const TQRect &r,
int flags,
const TQColorGroup cg,
bool /*enabled*/,
const TQPixmap* /*pixmap*/,
const TQString & text,
int /*len = -1*/,
const TQColor& highlight = TQColor(0, 0, 0),
bool drawLine = true,
bool isButton = false) const;
TQPixmap renderOutlineIcon(const TQPixmap* icon) const;
void renderSurface(TQPainter *p,
const TQRect &r,
const TQColor &backgroundColor,
const TQColor &buttonColor,
const TQColor &highlightColor,
const uint flags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|
Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight|Is_Horizontal) const;
inline TQWidget::BackgroundOrigin setPixmapOrigin(TQWidget::BackgroundOrigin origin);
mutable Rubber* rubber;
mutable TQRect oldRubberRect;
mutable bool viewPortPressed;
mutable bool ignoreNextFocusRect;
uint _argbRubberBandColor;
mutable bool compositeManagerRunning;
const TQWidget* rubberViewPort;
protected:
enum RubberType
{
ArgbRubber = 1,
LineRubber = 2,
DistRubber = 3
};
RubberType rubberBandType;
enum TabPosition
{
First ,
Middle,
Last,
Single
};
struct TextEffectSettings {
TextEffect mode;
TQColor color;
TQColor buttonColor;
int opacity;
int buttonOpacity;
TQPoint pos;
TQPoint buttonPos;
};
struct GroupBoxSettings {
bool tintBackground;
int brightness;
bool customColor;
TQColor color;
};
struct FocusIndicatorSettings {
TQColor color;
int opacity;
TQColor buttonColor;
int buttonOpacity;
bool drawUnderline;
bool indicateFocus;
};
mutable TextEffectSettings textEffectSettings;
GroupBoxSettings groupBoxSettings;
FocusIndicatorSettings focusIndicatorSettings;
ButtonContour* buttonContour;
enum SurfaceFlags {
Draw_Left = 0x00000001,
Draw_Right = 0x00000002,
Draw_Top = 0x00000004,
Draw_Bottom = 0x00000008,
Is_Horizontal = 0x00000200,
Is_Highlight = 0x00000400,
Is_Default = 0x00000800,
Is_Disabled = 0x00001000,
Round_UpperLeft = 0x00002000,
Round_UpperRight = 0x00004000,
Round_BottomLeft = 0x00008000,
Round_BottomRight = 0x00010000,
Rectangular_UpperLeft = 0x00000010,
Rectangular_UpperRight = 0x10000020,
Rectangular_BottomLeft = 0x00000040,
Rectangular_BottomRight = 0x00000080,
Draw_AlphaBlend = 0x00020000,
Is_ComboBox = 0x00080000,
Is_Button = 0x00100000,
Is_CheckItem = 0x00200000,
Is_RadioButton = 0x00400000,
Is_TabTop = 0x00000100,
Is_TabBottom = 0x01000000,
Is_ActiveTabTop = 0x00040000,
Is_ActiveTabBottom = 0x00800000,
Is_ScrollBarBtn = 0x02000000,
Is_Header = 0x04000000,
Is_ScrollBarGroove = 0x08000000,
Is_Slider = 0x20000000,
Is_Down = 0x40000000
};
enum DominoStyleFlags {
Domino_noCache = 0x80000000
};
enum DominoPrimitiveElement {
PE_ScrollBarSubLine2 = 0xf000001
};
void renderContour(TQPainter *p,
const TQRect &r,
const TQColor &backgroundColor,
const TQColor &contourColor,
const uint flags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|
Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight) const;
void renderButtonShadow(TQPainter *p, const TQRect &r, const uint flags = Draw_Left|Draw_Right|Draw_Top|Draw_Bottom|
Round_UpperLeft|Round_UpperRight|Round_BottomLeft|Round_BottomRight|Is_Horizontal) const;
TQPixmap* renderLineEditShadow(TQWidget* widget, TQRect rect, TQColor bg, uint flags, bool reverse);
inline void renderPixel(TQPainter *p,
const TQPoint &pos,
const int alpha,
const TQColor &color,
const TQColor &background = TQColor(),
bool fullAlphaBlend = true) const;
void renderButton(TQPainter *p,
const TQRect &r,
const TQColorGroup &g,
bool sunken = false,
bool mouseOver = false,
bool horizontal = true,
bool enabled = true,
bool tdehtmlMode = false) const;
void renderHeader(TQPainter *p,
const TQRect &r,
const TQColorGroup &g,
bool sunken = false,
bool mouseOver = false,
bool horizontal = true,
bool enabled = true) const;
void renderGradient(TQPainter *p,
const TQRect &r,
const TQColor &c1,
const TQColor &c2,
bool horizontal = true) const;
void renderTab(TQPainter *p,
const TQRect &r,
const TQColorGroup &g,
bool mouseOver = false,
const bool selected = false,
const bool bottom = false,
const TabPosition pos = Middle,
const bool triangular = false,
const bool cornerWidget = false,
const bool konqTab = false) const;
DSurface btnSurface;
DSurface tabTopSurface;
DSurface activeTabTopSurface;
DSurface tabBottomSurface;
DSurface activeTabBottomSurface;
DSurface scrollBarSurface;
DSurface scrollBarGrooveSurface;
DSurface headerSurface;
DSurface checkItemSurface;
virtual bool objectEventHandler( const TQStyleControlElementData &ceData,
ControlElementFlags elementFlags,
void* source,
TQEvent *ev );
TQString configMode;
void removeCachedSbPix(const TQColor &color) {
TQPixmapCache::remove("sHCap"+TQString::number(color.pixel(), 16)+"1"+configMode);
TQPixmapCache::remove("sHCap"+TQString::number(color.pixel(), 16)+"0"+configMode);
TQPixmapCache::remove("sVCap"+TQString::number(color.pixel(), 16)+"1"+configMode);
TQPixmapCache::remove("sVCap"+TQString::number(color.pixel(), 16)+"0"+configMode);
TQPixmapCache::remove(TQString::number(color.pixel(), 16)+"sh"+configMode);
TQPixmapCache::remove(TQString::number(color.pixel(), 16)+"sv"+configMode);
TQPixmapCache::remove(TQString::number(color.pixel(), 16)+"ah"+configMode);
TQPixmapCache::remove(TQString::number(color.pixel(), 16)+"av"+configMode);
};
TQColor getGroupBoxColor(const TQWidget* w) const;
TQPixmap* createCheckMark(const TQColor color) const;
TQPixmap* createRadioIndicator(const TQColor color) const;
TQPixmap disableIcon(const TQPixmap* icon) const;;
TQWidget* hoverWidget;
TQPixmap* checkMark;
TQPixmap* radioIndicator;
TQPixmap* popupFrame;
TQPixmap* border1;
mutable bool alphaButtonMode;
bool TDEApplicationMode;
TQColor _checkMarkColor;
TQMap<const TQGroupBox*, const TQPixmap*> groupBoxPixmaps;
uint preMultiplyColor(const uint &c) const;
TQToolButton* popupButton;
TQTimer* popupTimer;
TQPoint popupMousePressPos;
protected slots:
void tdehtmlWidgetDestroyed(TQObject* w);
void groupBoxDestroyed(TQObject* w);
//Animation slots.
void updateProgressPos();
void updateScrollPos(); // smoothscroll
void progressBarDestroyed(TQObject* bar);
inline TQColor dGetColor(const TQColor &color, const int value) const;
inline TQColor lightenColor(const TQColor &color, const int value) const;
inline TQColor darkenColor(const TQColor &color, const int value) const;
void updateTabWidgetFrame();
void spinBoxValueChanged(int);
void toolPopupPressed();
void popupToolMenu();
void toolPopupReleased();
private:
// Disable copy constructor and = operator
DominoStyle( const DominoStyle & );
DominoStyle& operator=( const DominoStyle & );
bool kickerMode;
bool konquerorMode;
bool konsoleMode;
mutable bool flatMode;
bool sideRepaint;
bool _animateProgressBar;
bool _drawTriangularExpander;
bool _customCheckMarkColor;
bool _smoothScrolling;
TQColor _toolTipColor;
int _buttonHeightAdjustment;
bool _customPopupMenuColor;
TQColor _popupMenuColor;
bool _customSelMenuItemColor;
TQColor _selMenuItemColor;
bool _drawPopupMenuGradient;
bool _indentPopupMenuItems;
bool _centerTabs;
bool _wheelSwitchesTabs;
bool _customSliderHandleContourColor;
bool _drawButtonSunkenShadow;
bool _toolBtnAsBtn;
bool _highlightToolBtnIcon;
bool konqTab;
int minTabLength;
bool macStyleBar;
int konqTabBarContrast;
bool spinWidgetDown;
mutable int sliderlen;
// smoothscrolling
int scrollDistance;
bool scrollVertical;
TQScrollView* scrollWidget;
TQTimer* scrollTimer;
bool hoveredToolBoxTab;
// track tdehtml widgets.
TQMap<const TQWidget*,bool> tdehtmlWidgets;
//Animation support.
TQMap<TQWidget*, int> progAnimWidgets;
// pixmap cache.
enum CacheEntryType {
cSurface,
cGradientTile,
cAlphaDot
};
struct CacheEntry
{
CacheEntryType type;
int width;
int height;
TQRgb c1Rgb;
TQRgb c2Rgb;
bool horizontal;
TQPixmap* pixmap;
CacheEntry(CacheEntryType t, int w, int h, TQRgb c1, TQRgb c2 = 0,
bool hor = false, TQPixmap* p = 0 ):
type(t), width(w), height(h), c1Rgb(c1), c2Rgb(c2), horizontal(hor), pixmap(p)
{}
~CacheEntry()
{
delete pixmap;
}
int key()
{
// create an int key from the properties which is used to refer to entries in the TQIntCache.
// the result may not be 100% correct as we don't have so much space in one integer -- use
// == operator after find to make sure we got the right one. :)
return horizontal ^ (type<<1) ^ (width<<5) ^ (height<<10) ^ (c1Rgb<<19) ^ (c2Rgb<<22);
}
bool operator == (const CacheEntry& other)
{
bool match = (type == other.type) &&
(width == other.width) &&
(height == other.height) &&
(c1Rgb == other.c1Rgb) &&
(c1Rgb == other.c1Rgb) &&
(horizontal = other.horizontal);
// if(!match) {
// tqDebug("operator ==: CacheEntries don't match!");
// tqDebug("width: %d\t\tother width: %d", width, other.width);
// tqDebug("height: %d\t\tother height: %d", height, other.height);
// tqDebug("fgRgb: %d\t\tother fgRgb: %d", fgRgb, other.fgRgb);
// tqDebug("bgRgb: %d\t\tother bgRgb: %d", bgRgb, other.bgRgb);
// tqDebug("surfaceFlags: %d\t\tother surfaceFlags: %d", surfaceFlags, other.surfaceFlags);
// }
return match;
}
};
TQIntCache<CacheEntry> *pixmapCache;
// For KPE_ListViewBranch
mutable TQBitmap *verticalLine;
mutable TQBitmap *horizontalLine;
// For progress bar animation
TQTimer *animationTimer;
void renderTabSeparator(TQPainter *p, const TQRect &r, const TQColor buttonColor, bool tabAbove) const;
void renderGroupBox(TQObject *obj, TQEvent *ev);
};
class ButtonContour
{
friend class DominoStyleConfig;
friend class DominoStyle;
public:
ButtonContour();
virtual ~ButtonContour();
static const int num_states = 4;
static const int num_types = 3;
ContourType defaultType;
ContourType type;
ContourState state;
bool alpha_mode;
bool drawButtonSunkenShadow;
int created[num_types][num_states];
int shadowCreated[num_states];
TQColor contour[num_states];
uint c1[num_types][num_states]; // top shadow
uint c2[num_types][num_states]; // outer ring
uint c3[num_types][num_states]; // inner ring
uint c4[num_types][num_states]; // bottom first shadow line
uint c5[num_types][num_states]; // bottom second shadow line
uint c6[num_types][num_states]; // first left shadow line
TQPixmap* btnEdges[num_types][num_states];
TQPixmap* btnVLines[num_types][num_states];
TQPixmap* btnHLines[num_types][num_states];
// for sunken type and sunken flat buttons
TQPixmap* buttonShadowRectangular[num_states];
TQPixmap* buttonShadowRound [num_states];
TQPixmap* buttonShadowHlines[num_states];
TQPixmap* buttonShadowVlines[num_states];
bool alphaMode() {
return alpha_mode;
}
uint color1() {
return c1[type][state];
}
uint color2() {
return c2[type][state];
}
uint color3() {
return c3[type][state];
}
uint color4() {
return c4[type][state];
}
uint color5() {
return c5[type][state];
}
uint color6() {
return c6[type][state];
}
TQColor contourColor(int t) {
return contour[t];
}
TQPixmap* buttonEdges() {
return btnEdges[type][state];
}
TQPixmap* buttonVLines() {
return btnVLines[type][state];
}
TQPixmap* buttonHLines() {
return btnHLines[type][state];
}
void setType(ContourType t = Contour_Sunken) {
type = t;
createPixmaps(type, state);
}
void setState(ContourState s = Contour_Default) {
state = s;
if(s == Contour_Pressed && type != Contour_Sunken)
type = Contour_Simple;
createPixmaps(type, state);
}
void setContour(ContourType t = Contour_Sunken, ContourState s = Contour_Default) {
type = t;
state = s;
createPixmaps(type, state);
}
void setColor(ContourState s, TQColor color) {
contour[s] = color;
uint c2_tmp;
uint c3_tmp;
if(defaultType == Contour_Sunken /*|| defaultType == Contour_Simple*/) {
c2_tmp = tqRgba(contour[s].red(), contour[s].green(), contour[s].blue(), 218);
c3_tmp = tqRgba(contour[s].red(), contour[s].green(), contour[s].blue(), 35);
}
else {
c2_tmp = tqRgba(contour[s].red(), contour[s].green(), contour[s].blue(), 203);
TQColor whiteColor(tqRgba(TQt::white.red(), TQt::white.green(), TQt::white.blue(), 34));
TQColor blackColor(tqRgba(contour[s].red(), contour[s].green(), contour[s].blue(), 35));
c3_tmp = blendColors(whiteColor, blackColor).rgb();
}
for(int t = 0; t < num_types; t++) {
c2[t][s] = c2_tmp; // outer ring
c3[t][s] = c3_tmp; // inner ring
}
}
void setDefaultType(ContourType t = Contour_Raised, bool create = true) {
defaultType = t;
type = t;
if(create)
createPixmaps(type, state);
}
void setAlphaMode() {
alpha_mode = true;
}
void reset() {
type = defaultType;
state = Contour_Default;
alpha_mode = false;
}
TQPixmap* shadowRound() {
return buttonShadowRound[state];
}
TQPixmap* shadowRectangular() {
return buttonShadowRectangular[state];
}
TQPixmap* shadowHLines() {
return buttonShadowHlines[state];
}
TQPixmap* shadowVLines() {
return buttonShadowVlines[state];
}
void createPixmaps(ContourType t = Contour_Sunken, ContourState s = Contour_Default) {
type = t;
state = s;
// for pressed sunken buttons + pressed KMultiTabbarTabs
if(drawButtonSunkenShadow && !shadowCreated[state]) {
TQColor shadowColor = alphaBlendColors(TQt::black, contour[state], 120);
buttonShadowRectangular[state] = new TQPixmap(tintImage(qembed_findImage("btnPressedShadowRectangular"), shadowColor));
buttonShadowRound[state] = new TQPixmap(tintImage(qembed_findImage("btnPressedShadowRound"), shadowColor));
buttonShadowHlines[state] = new TQPixmap(tintImage(qembed_findImage("btnPressedShadowHLines"), shadowColor));
buttonShadowVlines[state] = new TQPixmap(tintImage(qembed_findImage("btnPressedShadowVLines"), shadowColor));
shadowCreated[state] = 1;
}
if(created[type][state])
return;
TQImage btnVLines_img;
TQImage btnHLines_img;
TQImage btnShadow_img;
switch(type) {
case Contour_Simple: // now pressed raised!
btnShadow_img = qembed_findImage("btnRSPr"); // the inner white ring
blend(tintImage(qembed_findImage("btn"), contour[state]), btnShadow_img, btnShadow_img);
btnHLines_img = qembed_findImage("btnHRSPr");
blend(tintImage(qembed_findImage("btnH"), contour[state]), btnHLines_img, btnHLines_img);
btnVLines_img = qembed_findImage("btnVRSPr");
blend(tintImage(qembed_findImage("btnV"), contour[state]), btnVLines_img, btnVLines_img);
break;
case Contour_Sunken:
btnShadow_img = qembed_findImage("btnSSh");
blend(tintImage(qembed_findImage("btn"), contour[state]), btnShadow_img, btnShadow_img);
btnHLines_img = qembed_findImage("btnHSSh");
blend(tintImage(qembed_findImage("btnH"), contour[state]), btnHLines_img, btnHLines_img);
btnVLines_img = qembed_findImage("btnVSSh");
blend(tintImage(qembed_findImage("btnV"), contour[state]), btnVLines_img, btnVLines_img);
break;
case Contour_Raised:
btnShadow_img = qembed_findImage("btn17RaisedShadow3"); // the inner white ring + outer shadow
blend(tintImage(qembed_findImage("btn"), contour[state]), btnShadow_img, btnShadow_img);
btnHLines_img = qembed_findImage("btnHRSh");
blend(tintImage(qembed_findImage("btnH"), contour[state]), btnHLines_img, btnHLines_img);
btnVLines_img = qembed_findImage("btnVRSh");
blend(tintImage(qembed_findImage("btnV"), contour[state]), btnVLines_img, btnVLines_img);
default:
break;
}
btnEdges[type][state] = new TQPixmap(btnShadow_img);
btnVLines[type][state] = new TQPixmap(btnVLines_img);
btnHLines[type][state] = new TQPixmap(btnHLines_img);
created[type][state] = 1;
}
};
class RubberWidget : public TQWidget
{
public:
RubberWidget(Window window);
~RubberWidget();
};
class Rubber
{
friend class DominoStyle;
public:
Rubber(uint col);
~Rubber();
Visual* visual;
Colormap colormap;
XSetWindowAttributes wsa;
Window window;
RubberWidget* parent;
RubberWidget* rubber;
TQRegion mask;
uint color;
void destroy() {
if(parent) {
delete rubber;
delete parent;
window = 0;
parent = 0;
rubber = 0;
}
}
void create(TQRect& r, TQRegion& mask);
void updateMask(TQRegion& mask);
};
// DominoXXX classes to access protected (or private...) members
class DominoTQGroupBox : public TQGroupBox
{
friend class DominoStyle;
public:
DominoTQGroupBox( TQWidget* parent=0, const char* name=0 )
: TQGroupBox( parent, name ) {}
};
class DominoTQWidget : public TQWidget
{
friend class DominoStyleConfig;
friend class DominoStyle;
public:
DominoTQWidget( TQWidget* parent=0, const char* name=0 )
: TQWidget( parent, name ) {}
};
class DominoTQFrame : public TQFrame
{
friend class DominoStyle;
public:
DominoTQFrame( TQFrame* parent=0, const char* name=0 )
: TQFrame( parent, name ) {}
};
// TQWhatsThis
class DominoTQWhatsThat : public TQWidget
{
friend class DominoStyle;
public:
DominoTQWhatsThat(): TQWidget() {}
private:
TQString text;
};
class DominoKToolBarButton : public TDEToolBarButton
{
friend class DominoStyle;
public:
DominoKToolBarButton(): TDEToolBarButton() {}
};
class DominoTQListBoxItem : public TQListBoxItem
{
friend class DominoStyle;
public:
DominoTQListBoxItem(): TQListBoxItem() {}
};
class DominoTQTabWidget : public TQTabWidget
{
friend class DominoStyleConfig;
friend class DominoStyle;
public:
DominoTQTabWidget( TQWidget* parent=0, const char* name=0 )
: TQTabWidget( parent, name ) {}
};
class DominoTQSpinBox : public TQSpinBox
{
friend class DominoStyle;
public:
DominoTQSpinBox( TQFrame* parent=0, const char* name=0 )
: TQSpinBox( parent, name ) {}
};
class DominoTQPixmap : public TQPixmap
{
friend class DominoStyle;
public:
DominoTQPixmap( int w, int h, int depth = -1) : TQPixmap(w, h, depth) {}
};
class DominoTQButton : public TQButton
{
friend class DominoStyle;
public:
DominoTQButton(): TQButton() {}
};
#endif // __DOMINO_H