replace button pixmaps with bitmaps so they can be colored later (e.g. greyed out when the button is unavailable)...

svn path=/trunk/kdebase/kwin/; revision=369673
This commit is contained in:
Sandro Giessl 2004-12-10 17:58:37 +00:00
parent 46259d08ff
commit c8ebd222c4
3 changed files with 146 additions and 497 deletions

View file

@ -1,7 +1,7 @@
/*
This is the new kwindecoration kcontrol module
Copyright (c) 2004, Sandro Giessl
Copyright (c) 2004, Sandro Giessl <sandro@giessl.com>
Copyright (c) 2001
Karol Szwed <gallium@kde.org>
http://gallium.n3.net/
@ -91,7 +91,7 @@ Button::Button()
{
}
Button::Button(const QString& n, const QPixmap& i, QChar t, bool d, bool s)
Button::Button(const QString& n, const QBitmap& i, QChar t, bool d, bool s)
: name(n),
icon(i),
type(t),
@ -104,6 +104,18 @@ Button::~Button()
{
}
// helper function to deal with the Button's bitmaps more easily...
QPixmap bitmapPixmap(const QBitmap& bm, const QColor& color)
{
QPixmap pm(bm.size() );
pm.setMask(bm);
QPainter p(&pm);
p.setPen(color);
p.drawPixmap(0,0,bm);
p.end();
return pm;
}
ButtonSource::ButtonSource(QWidget *parent, const char* name)
: KListView(parent, name)
@ -203,7 +215,7 @@ QDragObject *ButtonSource::dragObject()
if (i) {
ButtonDrag *bd = new ButtonDrag(i->button(), viewport(), "button_drag");
bd->setPixmap(i->button().icon);
bd->setPixmap(bitmapPixmap(i->button().icon, colorGroup().foreground() ));
return bd;
}
@ -226,17 +238,22 @@ Button ButtonDropSiteItem::button()
int ButtonDropSiteItem::width()
{
return m_button.icon.width();
// return m_button.icon.width();
return 20;
}
int ButtonDropSiteItem::height()
{
return m_button.icon.height();
// return m_button.icon.height();
return 20;
}
void ButtonDropSiteItem::draw(QPainter *p, QRect r)
void ButtonDropSiteItem::draw(QPainter *p, const QColorGroup& cg, QRect r)
{
p->drawPixmap(r.left(), r.top(), m_button.icon);
// p->fillRect(r, cg.base() );
p->setPen(cg.foreground() );
QBitmap &i = m_button.icon;
p->drawPixmap(r.left()+(r.width()-i.width())/2, r.top()+(r.height()-i.height())/2, i);
}
@ -464,7 +481,7 @@ void ButtonDropSite::mousePressEvent( QMouseEvent* e )
m_selected = buttonAt(e->pos() );
if (m_selected) {
ButtonDrag *bd = new ButtonDrag(m_selected->button(), this);
bd->setPixmap(m_selected->button().icon);
bd->setPixmap(bitmapPixmap(m_selected->button().icon, colorGroup().foreground() ) );
bd->dragMove();
}
}
@ -560,7 +577,7 @@ void ButtonDropSite::drawButtonList(QPainter *p, const ButtonList& btns, int off
for (ButtonList::const_iterator it = btns.begin(); it != btns.end(); ++it) {
QRect itemRect = (*it)->rect;
if (itemRect.isValid() ) {
(*it)->draw(p, itemRect);
(*it)->draw(p, colorGroup(), itemRect);
}
offset += (*it)->width();
}
@ -598,7 +615,8 @@ void ButtonDropSite::drawContents( QPainter* p )
ButtonSourceItem::ButtonSourceItem(QListView * parent, const Button& btn)
: QListViewItem(parent),
m_button(btn)
m_button(btn),
m_dirty(true)
{
setButton(btn);
}
@ -609,6 +627,16 @@ ButtonSourceItem::~ButtonSourceItem()
void ButtonSourceItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int align)
{
// we need the color group cg, so to the work here, not in setButton...
if (m_dirty) {
if (m_button.supported) {
setPixmap(0, bitmapPixmap(m_button.icon, cg.foreground() ) );
} else {
setPixmap(0, bitmapPixmap(m_button.icon, cg.mid() ) );
}
m_dirty = false;
}
if (m_button.supported) {
QListViewItem::paintCell(p,cg,column,width,align);
} else {
@ -622,11 +650,10 @@ void ButtonSourceItem::paintCell(QPainter *p, const QColorGroup &cg, int column,
void ButtonSourceItem::setButton(const Button& btn)
{
m_button = btn;
m_dirty = true; // update the pixmap when in paintCell()...
if (btn.supported) {
setPixmap(0, btn.icon);
setText(0, btn.name);
} else {
setPixmap(0, btn.icon);
setText(0, i18n("%1 (unavailable)").arg(btn.name) );
}
}
@ -684,27 +711,49 @@ Button ButtonPositionWidget::getButton(QChar type, bool& success) {
success = true;
if (type == 'R') {
return Button(i18n("Resize"), QPixmap(button_resize_xpm), 'R', false, true);
QBitmap bmp(resize_width, resize_height, resize_bits, true);
bmp.setMask(bmp);
return Button(i18n("Resize"), bmp, 'R', false, true);
} else if (type == 'L') {
return Button(i18n("Shade"), QPixmap(button_shade_xpm), 'L', false, true);
QBitmap bmp(shade_width, shade_height, shade_bits, true);
bmp.setMask(bmp);
return Button(i18n("Shade"), bmp, 'L', false, true);
} else if (type == 'B') {
return Button(i18n("Keep Below Others"), QPixmap(button_below_others_xpm), 'B', false, true);
QBitmap bmp(keepbelowothers_width, keepbelowothers_height, keepbelowothers_bits, true);
bmp.setMask(bmp);
return Button(i18n("Keep Below Others"), bmp, 'B', false, true);
} else if (type == 'F') {
return Button(i18n("Keep Above Others"), QPixmap(button_above_others_xpm), 'F', false, true);
QBitmap bmp(keepaboveothers_width, keepaboveothers_height, keepaboveothers_bits, true);
bmp.setMask(bmp);
return Button(i18n("Keep Above Others"), bmp, 'F', false, true);
} else if (type == 'X') {
return Button(i18n("Close"), QPixmap(button_close_xpm), 'X', false, true);
QBitmap bmp(close_width, close_height, close_bits, true);
bmp.setMask(bmp);
return Button(i18n("Close"), bmp, 'X', false, true);
} else if (type == 'A') {
return Button(i18n("Maximize"), QPixmap(button_maximize_xpm), 'A', false, true);
QBitmap bmp(maximize_width, maximize_height, maximize_bits, true);
bmp.setMask(bmp);
return Button(i18n("Maximize"), bmp, 'A', false, true);
} else if (type == 'I') {
return Button(i18n("Minimize"), QPixmap(button_minimize_xpm), 'I', false, true);
QBitmap bmp(minimize_width, minimize_height, minimize_bits, true);
bmp.setMask(bmp);
return Button(i18n("Minimize"), bmp, 'I', false, true);
} else if (type == 'H') {
return Button(i18n("Help"), QPixmap(button_help_xpm), 'H', false, true);
QBitmap bmp(help_width, help_height, help_bits, true);
bmp.setMask(bmp);
return Button(i18n("Help"), bmp, 'H', false, true);
} else if (type == 'S') {
return Button(i18n("On All Desktops"), QPixmap(button_on_all_desktops_xpm), 'S', false, true);
QBitmap bmp(onalldesktops_width, onalldesktops_height, onalldesktops_bits, true);
bmp.setMask(bmp);
return Button(i18n("On All Desktops"), bmp, 'S', false, true);
} else if (type == 'M') {
return Button(i18n("Menu"), QPixmap(button_menu_xpm), 'M', false, true);
QBitmap bmp(menu_width, menu_height, menu_bits, true);
bmp.setMask(bmp);
return Button(i18n("Menu"), bmp, 'M', false, true);
} else if (type == '_') {
return Button(i18n("--- spacer ---"), QPixmap(button_spacer_xpm), '_', true, true);
QBitmap bmp(spacer_width, spacer_height, spacer_bits, true);
bmp.setMask(bmp);
return Button(i18n("--- spacer ---"), bmp, '_', true, true);
} else {
return Button();
success = false;

View file

@ -1,7 +1,7 @@
/*
This is the new kwindecoration kcontrol module
Copyright (c) 2004, Sandro Giessl
Copyright (c) 2004, Sandro Giessl <sandro@giessl.com>
Copyright (c) 2001
Karol Szwed <gallium@kde.org>
http://gallium.n3.net/
@ -31,6 +31,7 @@
#ifndef __BUTTONS_H_
#define __BUTTONS_H_
#include <qbitmap.h>
#include <qevent.h>
#include <qdragobject.h>
#include <qlistbox.h>
@ -44,11 +45,11 @@ class Button
{
public:
Button();
Button(const QString& name, const QPixmap& icon, QChar type, bool duplicate, bool supported);
Button(const QString& name, const QBitmap& icon, QChar type, bool duplicate, bool supported);
virtual ~Button();
QString name;
QPixmap icon;
QBitmap icon;
QChar type;
bool duplicate;
bool supported;
@ -79,7 +80,7 @@ class ButtonDropSiteItem
int width();
int height();
void draw(QPainter *p, QRect rect);
void draw(QPainter *p, const QColorGroup& cg, QRect rect);
private:
Button m_button;
@ -100,6 +101,7 @@ class ButtonSourceItem : public QListViewItem
Button button() const;
private:
Button m_button;
bool m_dirty;
};
/**

View file

@ -1,6 +1,7 @@
/*
This is the new kwindecoration kcontrol module
Copyright (c) 2004, Sandro Giessl <sandro@giessl.com>
Copyright (c) 2001
Karol Szwed <gallium@kde.org>
http://gallium.n3.net/
@ -27,486 +28,83 @@
*/
// Button icon bitmap data which is hopefully generic enough to be recognized by everyone.
// Button pixmaps (screenshots of kde1 buttons which all people know well now)
// ============================================================================
// close.xbm:
#define close_width 12
#define close_height 12
static unsigned char close_bits[] = {
0x00, 0x00, 0x06, 0x06, 0x0e, 0x07, 0x9c, 0x03, 0xf8, 0x01, 0xf0, 0x00,
0xf0, 0x00, 0xf8, 0x01, 0x9c, 0x03, 0x0e, 0x07, 0x06, 0x06, 0x00, 0x00 };
/* XPM */
const char * button_close_xpm[] = {
"20 20 16 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #FFFFFF",
"$ c #6E6E6E",
"% c #F0F0F0",
"& c #EFEFEF",
"* c #EEEEEE",
"= c #EDEDED",
"- c #ECECEC",
"; c #EBEBEB",
"> c #EAEAEA",
", c #E9E9E9",
"' c #E8E8E8",
") c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@#$@@@@@@@@#$@@@@",
"%%%%#$$%%%%%%#$$%%%%",
"&&&&&#$$&&&&#$$&&&&&",
"&&&&&&#$$&&#$$&&&&&&",
"*******#$$#$$*******",
"========#$$$========",
"========#$$$========",
"-------#$$#$$-------",
";;;;;;#$$;;#$$;;;;;;",
";;;;;#$$;;;;#$$;;;;;",
">>>>#$$>>>>>>#$$>>>>",
",,,,#$,,,,,,,,#$,,,,",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"))))))))))))))))))))",
"))))))))))))))))))))"};
// help.xbm:
#define help_width 12
#define help_height 12
static unsigned char help_bits[] = {
0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x01, 0x8c, 0x01, 0xc0, 0x01,
0xe0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00 };
// keepaboveothers.xbm:
#define keepaboveothers_width 12
#define keepaboveothers_height 12
static unsigned char keepaboveothers_bits[] = {
0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, 0xf8, 0x01, 0x60, 0x00, 0xfe, 0x07,
0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
/* XPM */
const char * button_help_xpm[] = {
"20 20 16 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #6E6E6E",
"$ c #F0F0F0",
"% c #FFFFFF",
"& c #EFEFEF",
"* c #EEEEEE",
"= c #EDEDED",
"- c #ECECEC",
"; c #EBEBEB",
"> c #EAEAEA",
", c #E9E9E9",
"' c #E8E8E8",
") c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@#####@@@@@@@",
"$$$$$$$##%%%##$$$$$$",
"&&&&&&&##%&&##%&&&&&",
"&&&&&&&&%%&&##%&&&&&",
"***********##%%*****",
"==========##%%======",
"=========##%%=======",
"---------##%--------",
";;;;;;;;;;%%;;;;;;;;",
";;;;;;;;;##;;;;;;;;;",
">>>>>>>>>##%>>>>>>>>",
",,,,,,,,,,%%,,,,,,,,",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"))))))))))))))))))))",
"))))))))))))))))))))"};
// keepbelowothers.xbm:
#define keepbelowothers_width 12
#define keepbelowothers_height 12
static unsigned char keepbelowothers_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07,
0xfe, 0x07, 0x60, 0x00, 0xf8, 0x01, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00 };
/* XPM */
const char * button_maximize_xpm[] = {
"20 20 16 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #FFFFFF",
"$ c #F0F0F0",
"% c #6E6E6E",
"& c #EFEFEF",
"* c #EEEEEE",
"= c #EDEDED",
"- c #ECECEC",
"; c #EBEBEB",
"> c #EAEAEA",
", c #E9E9E9",
"' c #E8E8E8",
") c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@###########@@@@@",
"$$$$#%%%%%%%%%%$$$$$",
"&&&&#%&&&&&&&#%&&&&&",
"&&&&#%&&&&&&&#%&&&&&",
"****#%*******#%*****",
"====#%=======#%=====",
"====#%=======#%=====",
"----#%-------#%-----",
";;;;#%;;;;;;;#%;;;;;",
";;;;#%########%;;;;;",
">>>>#%%%%%%%%%%>>>>>",
",,,,,,,,,,,,,,,,,,,,",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"))))))))))))))))))))",
"))))))))))))))))))))"};
// maximize.xbm:
#define maximize_width 12
#define maximize_height 12
static unsigned char maximize_bits[] = {
0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04,
0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0xfe, 0x07, 0x00, 0x00 };
/* XPM */
const char * button_menu_xpm[] = {
"20 20 21 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #000000",
"# c #F1F1F1",
"$ c #FFFFFF",
"% c #C3C3C3",
"& c #F0F0F0",
"* c #EFEFEF",
"= c #FFFFC0",
"- c #FFDCA8",
"; c #EEEEEE",
"> c #C05800",
", c #EDEDED",
"' c #ECECEC",
") c #EBEBEB",
"! c #808080",
"~ c #EAEAEA",
"{ c #E9E9E9",
"] c #E8E8E8",
"^ c #E7E7E7",
"....................",
"....................",
"+++++++++@@+++++++++",
"####@@@@@$$@@@@@####",
"####@$$@%%%%@$$@####",
"&&&@@$$@@@@@@$$@&&&&",
"***@=@$$$$$$$$$@****",
"***@-@$%%%%%%$$@****",
";;;;>=@$$$$$$$$@;;;;",
",,,,@-@$%%%%%$$@,,,,",
",,,,@>=@$$$$$$$@,,,,",
"''''@@-@$%%%%$$@''''",
"))))@!>=@$$$$$$@))))",
"))))@$@-@$$$$$$@))))",
"~~~~@$!>@$$$$$$@~~~~",
"{{{{@$$!@$$$$$$@{{{{",
"{{{{@!!!!!!!!!!@{{{{",
"]]]]@@@@@@@@@@@@]]]]",
"^^^^^^^^^^^^^^^^^^^^",
"^^^^^^^^^^^^^^^^^^^^"};
// menu.xbm:
#define menu_width 12
#define menu_height 12
static unsigned char menu_bits[] = {
0x00, 0x00, 0xfc, 0x03, 0xf4, 0x02, 0x04, 0x02, 0xf4, 0x02, 0x04, 0x02,
0xf4, 0x02, 0x04, 0x02, 0xf4, 0x02, 0x04, 0x02, 0xfc, 0x03, 0x00, 0x00 };
/* XPM */
const char * button_minimize_xpm[] = {
"20 20 16 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #F0F0F0",
"$ c #EFEFEF",
"% c #EEEEEE",
"& c #FFFFFF",
"* c #EDEDED",
"= c #6E6E6E",
"- c #ECECEC",
"; c #EBEBEB",
"> c #EAEAEA",
", c #E9E9E9",
"' c #E8E8E8",
") c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"####################",
"$$$$$$$$$$$$$$$$$$$$",
"$$$$$$$$$$$$$$$$$$$$",
"%%%%%%%%%&&&%%%%%%%%",
"*********&*=********",
"*********&==********",
"--------------------",
";;;;;;;;;;;;;;;;;;;;",
";;;;;;;;;;;;;;;;;;;;",
">>>>>>>>>>>>>>>>>>>>",
",,,,,,,,,,,,,,,,,,,,",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"))))))))))))))))))))",
"))))))))))))))))))))"};
// minimize.xbm:
#define minimize_width 12
#define minimize_height 12
static unsigned char minimize_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x00, 0x00 };
// onalldesktops.xbm:
#define onalldesktops_width 12
#define onalldesktops_height 12
static unsigned char onalldesktops_bits[] = {
0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xfe, 0x07,
0xfe, 0x07, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00 };
/* XPM */
const char * button_on_all_desktops_xpm[] = {
"20 20 17 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #F0F0F0",
"$ c #6E6E6E",
"% c #EFEFEF",
"& c #FFFFFF",
"* c #EEEEEE",
"= c #B7B7B7",
"- c #EDEDED",
"; c #ECECEC",
"> c #EBEBEB",
", c #EAEAEA",
"' c #E9E9E9",
") c #E8E8E8",
"! c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"########$$#####$####",
"%%%%%%%%$&$%%%$$%%%%",
"%%%%%%%%$&&$$$&$%%%%",
"**&&&&&&$=&=&=&$****",
"--======$=&=&=&$----",
"--$$$$$$$==$=$=$----",
";;;;;;;;$=$$$$$$;;;;",
">>>>>>>>$$$>>>$$>>>>",
">>>>>>>>$$>>>>>$>>>>",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"''''''''''''''''''''",
"))))))))))))))))))))",
"!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!!!!!!!!!!!!"};
// resize.xbm:
#define resize_width 12
#define resize_height 12
static unsigned char resize_bits[] = {
0x00, 0x00, 0xfe, 0x07, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04,
0x7e, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0xfe, 0x07, 0x00, 0x00 };
/* XPM */
const char * button_spacer_xpm[] = {
"20 20 15 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #F0F0F0",
"$ c #6E6E6E",
"% c #EFEFEF",
"& c #EEEEEE",
"* c #EDEDED",
"= c #ECECEC",
"- c #EBEBEB",
"; c #EAEAEA",
"> c #E9E9E9",
", c #E8E8E8",
"' c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"######$######$######",
"%%%%%$$%%%%%%$$%%%%%",
"%%%%$$%%%%%%%%$$%%%%",
"&&&$$&&&&&&&&&&$$&&&",
"**$$************$$**",
"***$$**********$$***",
"====$$========$$====",
"-----$$------$$-----",
"------$------$------",
";;;;;;;;;;;;;;;;;;;;",
">>>>>>>>>>>>>>>>>>>>",
">>>>>>>>>>>>>>>>>>>>",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"''''''''''''''''''''"};
// shade.xbm:
#define shade_width 12
#define shade_height 12
static unsigned char shade_bits[] = {
0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
/* XPM */
const char * titlebarspacer_xpm[] = {
"6 20 7 1",
" c None",
". c #FFFFFF",
"+ c #E9E9E9",
"@ c #D3D3D3",
"# c #BEBEBE",
"$ c #A8A8A8",
"% c #929292",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%",
".+@#$%"};
/* XPM */
const char * button_above_others_xpm[] = {
"20 20 16 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #FFFFFF",
"$ c #F0F0F0",
"% c #6E6E6E",
"& c #EFEFEF",
"* c #EEEEEE",
"= c #EDEDED",
"- c #ECECEC",
"; c #EBEBEB",
"> c #EAEAEA",
", c #E9E9E9",
"' c #E8E8E8",
") c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@###########@@@@@",
"$$$$#%%%%%%%%%%$$$$$",
"&&&&#%&&&&&&&#%&&&&&",
"&&&&#%&&#%%&&#%&&&&&",
"****#%*#%%%%*#%*****",
"====#%#%%%%%%#%=====",
"====#%==#%%==#%=====",
"----#%--#%%--#%-----",
";;;;#%;;#%%;;#%;;;;;",
";;;;#%########%;;;;;",
">>>>#%%%%%%%%%%>>>>>",
",,,,,,,,,,,,,,,,,,,,",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"))))))))))))))))))))",
"))))))))))))))))))))"};
/* XPM */
const char * button_below_others_xpm[] = {
"20 20 16 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #FFFFFF",
"$ c #F0F0F0",
"% c #6E6E6E",
"& c #EFEFEF",
"* c #EEEEEE",
"= c #EDEDED",
"- c #ECECEC",
"; c #EBEBEB",
"> c #EAEAEA",
", c #E9E9E9",
"' c #E8E8E8",
") c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@###########@@@@@",
"$$$$#%%%%%%%%%%$$$$$",
"&&&&#%&&##&&&#%&&&&&",
"&&&&#%&&#%%&&#%&&&&&",
"****#%**#%%**#%*****",
"====#%###%%==#%=====",
"====#%#%%%%%%#%=====",
"----#%-#%%%%-#%-----",
";;;;#%;;#%%;;#%;;;;;",
";;;;#%########%;;;;;",
">>>>#%%%%%%%%%%>>>>>",
",,,,,,,,,,,,,,,,,,,,",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"))))))))))))))))))))",
"))))))))))))))))))))"};
/* XPM */
const char * button_shade_xpm[] = {
"20 20 16 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #FFFFFF",
"$ c #F0F0F0",
"% c #6E6E6E",
"& c #EFEFEF",
"* c #EEEEEE",
"= c #EDEDED",
"- c #ECECEC",
"; c #EBEBEB",
"> c #EAEAEA",
", c #E9E9E9",
"' c #E8E8E8",
") c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@###########@@@@@",
"$$$$#%%%%%%%%%%$$$$$",
"&&&&#%########%&&&&&",
"&&&&#%%%%%%%%%%&&&&&",
"*********#**********",
"========#%%=========",
"=======#%%%%========",
"------#%%%%%%-------",
";;;;;;;;#%%;;;;;;;;;",
";;;;;#;#;#;#;#;;;;;;",
">>>>>%>%>%>%>%>>>>>>",
",,,,,,,,,,,,,,,,,,,,",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"))))))))))))))))))))",
"))))))))))))))))))))"};
/* XPM */
const char * button_resize_xpm[] = {
"20 20 16 1",
" c None",
". c #F3F3F3",
"+ c #F2F2F2",
"@ c #F1F1F1",
"# c #FFFFFF",
"$ c #F0F0F0",
"% c #6E6E6E",
"& c #EFEFEF",
"* c #EEEEEE",
"= c #EDEDED",
"- c #ECECEC",
"; c #EBEBEB",
"> c #EAEAEA",
", c #E9E9E9",
"' c #E8E8E8",
") c #E7E7E7",
"....................",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@###########@@@@@",
"$$$$#%%%%%%%%%%$$$$$",
"&&&&#%...#%..#%&&&&&",
"&&&&#%...#%..#%&&&&&",
"****#%...#%..#%*****",
"====#%####%..#%=====",
"====#%%%%%%..#%=====",
"----#%.......#%-----",
";;;;#%.......#%;;;;;",
";;;;#%########%;;;;;",
">>>>#%%%%%%%%%%>>>>>",
",,,,,,,,,,,,,,,,,,,,",
",,,,,,,,,,,,,,,,,,,,",
"''''''''''''''''''''",
"))))))))))))))))))))",
"))))))))))))))))))))"};
// spacer.xbm:
#define spacer_width 12
#define spacer_height 12
static unsigned char spacer_bits[] = {
0x00, 0x00, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x54, 0x03,
0xac, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x00, 0x00 };
// vim: ts=4