00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
#include "kdrawutil.h"
00019
#include <qdrawutil.h>
00020
00021 void kDrawNextButton(
QPainter *p,
int x,
int y,
int w,
int h,
00022
const QColorGroup &g,
bool sunken,
00023
const QBrush *fill)
00024 {
00025
QPen oldPen = p->
pen();
00026
int x2 = x+w-1;
00027
int y2 = y+h-1;
00028 p->
fillRect(x+1, y+1, w-2, h-2,
00029 fill ? *fill : g.
brush(QColorGroup::Button));
00030 p->
setPen(sunken ? Qt::black : g.
light());
00031 p->
drawLine(x, y, x2-1, y);
00032 p->
drawLine(x, y, x, y2-1);
00033 p->
setPen(sunken ? g.
midlight() : g.
mid());
00034 p->
drawLine(x+1, y2-1, x2-1, y2-1);
00035 p->
drawLine(x2-1, y+1, x2-1, y2-1);
00036 p->
setPen(sunken ? g.
light() : Qt::black);
00037 p->
drawLine(x, y2, x2, y2);
00038 p->
drawLine(x2, y, x2, y2);
00039 p->
setPen(oldPen);
00040 }
00041
00042
00043 void kDrawNextButton(
QPainter *p,
const QRect &r,
const QColorGroup &g,
00044
bool sunken,
const QBrush *fill)
00045 {
00046 kDrawNextButton(p, r.
x(), r.
y(), r.
width(), r.
height(), g, sunken, fill);
00047 }
00048
00049 void kDrawBeButton(
QPainter *p,
int x,
int y,
int w,
int h,
00050
const QColorGroup &g,
bool sunken,
const QBrush *fill)
00051 {
00052
QPen oldPen = p->
pen();
00053
int x2 = x+w-1;
00054
int y2 = y+h-1;
00055 p->
setPen(g.
dark());
00056 p->
drawLine(x+1, y, x2-1, y);
00057 p->
drawLine(x, y+1, x, y2-1);
00058 p->
drawLine(x+1, y2, x2-1, y2);
00059 p->
drawLine(x2, y+1, x2, y2-1);
00060
00061
00062
if(!sunken){
00063 p->
setPen(g.
light());
00064 p->
drawLine(x+2, y+2, x2-1, y+2);
00065 p->
drawLine(x+2, y+3, x2-2, y+3);
00066 p->
drawLine(x+2, y+4, x+2, y2-1);
00067 p->
drawLine(x+3, y+4, x+3, y2-2);
00068 }
00069
else{
00070 p->
setPen(g.
mid());
00071 p->
drawLine(x+2, y+2, x2-1, y+2);
00072 p->
drawLine(x+2, y+3, x2-2, y+3);
00073 p->
drawLine(x+2, y+4, x+2, y2-1);
00074 p->
drawLine(x+3, y+4, x+3, y2-2);
00075 }
00076
00077
00078 p->
setPen(sunken? g.
light() : g.
mid());
00079 p->
drawLine(x2-1, y+2, x2-1, y2-1);
00080 p->
drawLine(x+2, y2-1, x2-1, y2-1);
00081
00082 p->
setPen(g.
mid());
00083 p->
drawLine(x+1, y+1, x2-1, y+1);
00084 p->
drawLine(x+1, y+2, x+1, y2-1);
00085 p->
drawLine(x2-2, y+3, x2-2, y2-2);
00086
00087
if(fill)
00088 p->
fillRect(x+4, y+4, w-6, h-6, *fill);
00089
00090 p->
setPen(oldPen);
00091 }
00092
00093 void kDrawBeButton(
QPainter *p,
QRect &r,
const QColorGroup &g,
bool sunken,
00094
const QBrush *fill)
00095 {
00096 kDrawBeButton(p, r.
x(), r.
y(), r.
width(), r.
height(), g, sunken, fill);
00097 }
00098
00099 void kDrawRoundButton(
QPainter *p,
const QRect &r,
const QColorGroup &g,
00100
bool sunken)
00101 {
00102
int x, y, x2, y2;
00103 r.
coords(&x, &y, &x2, &y2);
00104
if(r.
width() > 16 && r.
height() > 16){
00105
QPen oldPen = p->
pen();
00106
QPointArray hPntArray, lPntArray;
00107 hPntArray.
putPoints(0, 12, x+4,y+1, x+5,y+1,
00108 x+3,y+2, x+2,y+3, x+1,y+4, x+1,y+5,
00109 x+1,y2-5, x+1,y2-4, x+2,y2-3,
00110 x2-5,y+1, x2-4,y+1, x2-3,y+2);
00111
00112 lPntArray.
putPoints(0, 17, x2-5,y2-1, x2-4,y2-1,
00113 x2-3,y2-2, x2-2,y2-3, x2-1,y2-5, x2-1,y2-4,
00114
00115 x+3,y2-2, x+4,y2-1, x+5,y2-1,
00116 x2-2,y+3, x2-1,y+4, x2-1,y+5,
00117
00118 x2-5,y2-2, x2-4,y2-2,
00119 x2-3,y2-3,
00120 x2-2,y2-5, x2-2,y2-4);
00121
00122 p->
setPen(sunken ? g.
dark() : g.
light());
00123 p->
drawLine(x+6, y, x2-6, y);
00124 p->
drawLine(0, y+6, 0, y2-6);
00125 p->
drawPoints(hPntArray);
00126
00127 p->
setPen(sunken ? g.
light() : g.
dark());
00128 p->
drawLine(x+6, y2, x2-6, y2);
00129 p->
drawLine(x+6, y2-1, x2-6, y2-1);
00130 p->
drawLine(x2, y+6, x2, y2-6);
00131 p->
drawLine(x2-1, y+6, x2-1, y2-6);
00132 p->
drawPoints(lPntArray);
00133 p->
setPen(oldPen);
00134 }
00135
else
00136 qDrawWinPanel(p, x, y, r.
width(), r.
height(), g, sunken);
00137 }
00138
00139 void kDrawRoundButton(
QPainter *p,
int x,
int y,
int w,
int h,
00140
const QColorGroup &g,
bool sunken)
00141 {
00142
QRect r(x, y, w, h);
00143 kDrawRoundButton(p, r, g, sunken);
00144 }
00145
00146
#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2)
00147
00148 void kDrawRoundMask(
QPainter *p,
int x,
int y,
int w,
int h,
bool clear)
00149 {
00150
00151
static const QCOORD btm_left_fill[]={ 0,0,1,0,2,0,3,0,4,0,0,1,1,1,2,1,3,1,4,1,
00152 1,2,2,2,3,2,4,2,2,3,3,3,4,3,3,4,4,4 };
00153
00154
static const QCOORD btm_right_fill[]={ 0,0,1,0,2,0,3,0,4,0,0,1,1,1,2,1,3,1,4,
00155 1,0,2,1,2,2,2,3,2,0,3,1,3,2,3,0,4,1,4 };
00156
00157
static const QCOORD top_left_fill[]={ 3,0,4,0,2,1,3,1,4,1,1,2,2,2,3,2,4,2,0,3,
00158 1,3,2,3,3,3,4,3,0,4,1,4,2,4,3,4,4,4 };
00159
00160
static const QCOORD top_right_fill[]={ 0,0,1,0,0,1,1,1,2,1,0,2,1,2,2,2,3,2,0,
00161 3,1,3,2,3,3,3,4,3,0,4,1,4,2,4,3,4,4,4 };
00162
00163
if(clear)
00164 p->
fillRect(x, y, w, h,
QBrush(Qt::color0, Qt::SolidPattern));
00165
00166
QBrush fillBrush(Qt::color1, Qt::SolidPattern);
00167 p->
setPen(Qt::color1);
00168
if(w > 16 && h > 16){
00169
int x2 = x+w-1;
00170
int y2 = y+h-1;
00171
QPointArray a(QCOORDARRLEN(top_left_fill), top_left_fill);
00172 a.
translate(1, 1);
00173 p->
drawPoints(a);
00174 a.setPoints(QCOORDARRLEN(btm_left_fill), btm_left_fill);
00175 a.
translate(1, h-6);
00176 p->
drawPoints(a);
00177 a.setPoints(QCOORDARRLEN(top_right_fill), top_right_fill);
00178 a.
translate(w-6, 1);
00179 p->
drawPoints(a);
00180 a.setPoints(QCOORDARRLEN(btm_right_fill), btm_right_fill);
00181 a.
translate(w-6, h-6);
00182 p->
drawPoints(a);
00183
00184 p->
fillRect(x+6, y, w-12, h, fillBrush);
00185 p->
fillRect(x, y+6, x+6, h-12, fillBrush);
00186 p->
fillRect(x2-6, y+6, x2, h-12, fillBrush);
00187 p->
drawLine(x+6, y, x2-6, y);
00188 p->
drawLine(x+6, y2, x2-6, y2);
00189 p->
drawLine(x, y+6, x, y2-6);
00190 p->
drawLine(x2, y+6, x2, y2-6);
00191
00192 }
00193
else
00194 p->
fillRect(x, y, w, h, fillBrush);
00195 }
00196
00197 void kRoundMaskRegion(
QRegion &r,
int x,
int y,
int w,
int h)
00198 {
00199
00200
00201 r +=
QRect(x+6, y+0, w-12, h);
00202 r += QRect(x+5, y+1, 1, h-2);
00203 r += QRect(x+4, y+1, 1, h-2);
00204 r += QRect(x+3, y+2, 1, h-4);
00205 r += QRect(x+2, y+3, 1, h-6);
00206 r += QRect(x+1, y+4, 1, h-8);
00207 r += QRect(x, y+6, 1, h-12);
00208
int x2 = x+w-1;
00209 r += QRect(x2-5, y+1, 1, h-2);
00210 r += QRect(x2-4, y+1, 1, h-2);
00211 r += QRect(x2-3, y+2, 1, h-4);
00212 r += QRect(x2-2, y+3, 1, h-6);
00213 r += QRect(x2-1, y+4, 1, h-8);
00214 r += QRect(x2, y+6, 1, h-12);
00215 }
00216
00217 void kColorBitmaps(
QPainter *p,
const QColorGroup &g,
int x,
int y,
00218
QBitmap *lightColor,
QBitmap *midColor,
00219
QBitmap *midlightColor,
QBitmap *darkColor,
00220
QBitmap *blackColor,
QBitmap *whiteColor)
00221 {
00222
QBitmap *bitmaps[]={lightColor, midColor, midlightColor, darkColor,
00223 blackColor, whiteColor};
00224
00225
QColor colors[]={g.
light(), g.
mid(), g.
midlight(), g.
dark(),
00226 Qt::black, Qt::white};
00227
00228
int i;
00229
for(i=0; i < 6; ++i){
00230
if(bitmaps[i]){
00231
if(!bitmaps[i]->mask())
00232 bitmaps[i]->setMask(*bitmaps[i]);
00233 p->
setPen(colors[i]);
00234 p->
drawPixmap(x, y, *bitmaps[i]);
00235 }
00236 }
00237 }
00238
00239 void kColorBitmaps(
QPainter *p,
const QColorGroup &g,
int x,
int y,
int w,
00240
int h,
bool isXBitmaps,
const uchar *lightColor,
00241
const uchar *midColor,
const uchar *midlightColor,
00242
const uchar *darkColor,
const uchar *blackColor,
00243
const uchar *whiteColor)
00244 {
00245
const uchar *data[]={lightColor, midColor, midlightColor, darkColor,
00246 blackColor, whiteColor};
00247
00248
QColor colors[]={g.
light(), g.
mid(), g.
midlight(), g.
dark(),
00249 Qt::black, Qt::white};
00250
00251
int i;
00252
QBitmap b;
00253
for(i=0; i < 6; ++i){
00254
if(data[i]){
00255 b =
QBitmap(w, h, data[i], isXBitmaps);
00256 b.setMask(b);
00257 p->
setPen(colors[i]);
00258 p->
drawPixmap(x, y, b);
00259 }
00260 }
00261 }
00262
00263
00264