Converted the titlebar buttons from using fixed pixmaps to dynamically

calculated pixmaps based on bitmaps for each shade and the extended KDE color
scheme. That means you can now specify button colors for both active
and inactive windows.

svn path=/trunk/kdebase/kwin/; revision=33415
This commit is contained in:
Daniel M. Duley 1999-11-10 16:07:19 +00:00
parent b47ce2b623
commit 40966ef808
3 changed files with 307 additions and 167 deletions

View file

@ -6,163 +6,11 @@
#include <qtoolbutton.h>
#include <qlabel.h>
#include <qdrawutil.h>
#include <qbitmap.h>
#include "workspace.h"
#include "options.h"
static const char * close_xpm[] = {
/* width height num_colors chars_per_pixel */
"16 16 3 1",
/* colors */
" s None c None",
". c white",
"X c #707070",
/* pixels */
" ",
" ",
" .X .X ",
" .XX .XX ",
" .XX .XX ",
" .XX .XX ",
" .XX.XX ",
" .XXX ",
" .XXX ",
" .XX.XX ",
" .XX .XX ",
" .XX .XX ",
" .XX .XX ",
" .X .X ",
" ",
" "};
static const char * maximize_xpm[] = {
/* width height num_colors chars_per_pixel */
"16 16 3 1",
/* colors */
" s None c None",
". c white",
"X c #707070",
/* pixels */
" ",
" ",
" ........... ",
" .XXXXXXXXXX ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X........X ",
" .XXXXXXXXXX ",
" ",
" ",
" "};
static const char * minimize_xpm[] = {
/* width height num_colors chars_per_pixel */
"16 16 3 1",
/* colors */
" s None c None",
". c white",
"X c #707070",
/* pixels */
" ",
" ",
" ",
" ",
" ",
" ",
" ... ",
" . X ",
" .XX ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
static const char * normalize_xpm[] = {
/* width height num_colors chars_per_pixel */
"16 16 3 1",
/* colors */
" s None c None",
". c #707070",
"X c white",
/* pixels */
" ",
" ",
" ........... ",
" .XXXXXXXXXX ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X .X ",
" .X........X ",
" .XXXXXXXXXX ",
" ",
" ",
" "};
static const char * pinup_xpm[] = {
/* width height num_colors chars_per_pixel */
"16 16 4 1",
/* colors */
" s None c None",
". c #707070",
"X c white",
"o c #a0a0a0",
/* pixels */
" ",
" ",
" ",
" .. . ",
" .X. .. ",
" .XX...X. ",
"XXXXXX.oXoXoX. ",
"oooooo.oXoXoX. ",
".......oo.o.o. ",
" .o...... ",
" ... .. ",
" .. . ",
" ",
" ",
" ",
" "};
static const char * pindown_xpm[] = {
/* width height num_colors chars_per_pixel */
"16 16 4 1",
/* colors */
" s None c None",
". c #707070",
"X c white",
"o c #a0a0a0",
/* pixels */
" ",
" ",
" .... ",
" ..XXXX. ",
" ...XXXXXX. ",
" .X.XXXooo. ",
" .XX.XXooo.. ",
" .XX..Xoo... ",
" .XXXX..... ",
" .XXXoooo.. ",
" .Xoooo... ",
" .oooo... ",
" ...... ",
" ",
" ",
" "};
#include "stdclient_bitmaps.h"
static QPixmap* close_pix = 0;
static QPixmap* maximize_pix = 0;
@ -170,19 +18,164 @@ static QPixmap* minimize_pix = 0;
static QPixmap* normalize_pix = 0;
static QPixmap* pinup_pix = 0;
static QPixmap* pindown_pix = 0;
static QPixmap* menu_pix = 0;
static QPixmap* dis_close_pix = 0;
static QPixmap* dis_maximize_pix = 0;
static QPixmap* dis_minimize_pix = 0;
static QPixmap* dis_normalize_pix = 0;
static QPixmap* dis_pinup_pix = 0;
static QPixmap* dis_pindown_pix = 0;
static QPixmap* dis_menu_pix = 0;
static bool pixmaps_created = FALSE;
/**
* Pixmap creation routine that creates full pixmaps out of bitmaps
* for each shade and the user defined titlebutton foreground colors. There
* is a large amount of QBitmap constructors/copies here since loadFromData
* with type XBM doesn't seem to work with QBitmaps, the only way I could get
* a load from data is via the constructor :( Matthias, do you know about
* this? <mosfet@kde.org>
*/
static void create_pixmaps()
{
if ( pixmaps_created )
return;
pixmaps_created = true;
close_pix = new QPixmap( close_xpm );
maximize_pix = new QPixmap( maximize_xpm );
minimize_pix = new QPixmap( minimize_xpm );
normalize_pix = new QPixmap( normalize_xpm );
pinup_pix = new QPixmap( pinup_xpm );
pindown_pix = new QPixmap( pindown_xpm );
QPainter pact, pdis;
QBitmap bitmap;
QColor actHigh = options->color(Options::ButtonFg, true).light(150);
QColor actMed = options->color(Options::ButtonFg, true);
QColor actLow = options->color(Options::ButtonFg, true).dark(120);
QColor disHigh = options->color(Options::ButtonFg, false).light(150);
QColor disMed = options->color(Options::ButtonFg, false);
QColor disLow = options->color(Options::ButtonFg, false).dark(120);
close_pix = new QPixmap(16, 16);
dis_close_pix = new QPixmap(16, 16);
pact.begin(close_pix); pdis.begin(dis_close_pix);
bitmap = QBitmap(16, 16, close_white_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actHigh); pdis.setPen(disHigh);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, close_dgray_bits, true);
pact.setPen(actLow); pdis.setPen(disLow);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
pact.end(); pdis.end();
bitmap = QBitmap(16, 16, close_mask_bits, true);
close_pix->setMask(bitmap); dis_close_pix->setMask(bitmap);
minimize_pix = new QPixmap(16, 16);
dis_minimize_pix = new QPixmap(16, 16);
pact.begin(minimize_pix); pdis.begin(dis_minimize_pix);
bitmap = QBitmap(16, 16, iconify_white_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actHigh); pdis.setPen(disHigh);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, iconify_dgray_bits, true);
pact.setPen(actLow); pdis.setPen(disLow);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
pact.end(); pdis.end();
bitmap = QBitmap(16, 16, iconify_mask_bits, true);
minimize_pix->setMask(bitmap); dis_minimize_pix->setMask(bitmap);
maximize_pix = new QPixmap(16, 16);
dis_maximize_pix = new QPixmap(16, 16);
pact.begin(maximize_pix); pdis.begin(dis_maximize_pix);
bitmap = QBitmap(16, 16, maximize_white_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actHigh); pdis.setPen(disHigh);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, maximize_dgray_bits, true);
pact.setPen(actLow); pdis.setPen(disLow);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
pact.end(); pdis.end();
bitmap = QBitmap(16, 16, maximize_mask_bits, true);
maximize_pix->setMask(bitmap); dis_maximize_pix->setMask(bitmap);
normalize_pix = new QPixmap(16, 16);
dis_normalize_pix = new QPixmap(16, 16);
pact.begin(normalize_pix); pdis.begin(dis_normalize_pix);
bitmap = QBitmap(16, 16, maximizedown_white_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actHigh); pdis.setPen(disHigh);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, maximizedown_dgray_bits, true);
pact.setPen(actLow); pdis.setPen(disLow);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
pact.end(); pdis.end();
bitmap = QBitmap(16, 16, maximizedown_mask_bits, true);
normalize_pix->setMask(bitmap); dis_normalize_pix->setMask(bitmap);
menu_pix = new QPixmap(16, 16);
dis_menu_pix = new QPixmap(16, 16);
pact.begin(menu_pix); pdis.begin(dis_menu_pix);
bitmap = QBitmap(16, 16, menu_white_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actHigh); pdis.setPen(disHigh);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, menu_dgray_bits, true);
pact.setPen(actLow); pdis.setPen(disLow);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
pact.end(); pdis.end();
bitmap = QBitmap(16, 16, menu_mask_bits, true);
menu_pix->setMask(bitmap); dis_menu_pix->setMask(bitmap);
pinup_pix = new QPixmap(16, 16);
dis_pinup_pix = new QPixmap(16, 16);
pact.begin(pinup_pix); pdis.begin(dis_pinup_pix);
bitmap = QBitmap(16, 16, pinup_white_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actHigh); pdis.setPen(disHigh);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, pinup_gray_bits, true);
pact.setPen(actMed); pdis.setPen(disMed);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, pinup_dgray_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actLow); pdis.setPen(disLow);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
pact.end(); pdis.end();
bitmap = QBitmap(16, 16, pinup_mask_bits, true);
pinup_pix->setMask(bitmap); dis_pinup_pix->setMask(bitmap);
pindown_pix = new QPixmap(16, 16);
dis_pindown_pix = new QPixmap(16, 16);
pact.begin(pindown_pix); pdis.begin(dis_pindown_pix);
bitmap = QBitmap(16, 16, pindown_white_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actHigh); pdis.setPen(disHigh);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, pindown_gray_bits, true);
pact.setPen(actMed); pdis.setPen(disMed);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
bitmap = QBitmap(16, 16, pindown_dgray_bits, true);
bitmap.setMask(bitmap);
pact.setPen(actLow); pdis.setPen(disLow);
pact.drawPixmap(0, 0, bitmap);
pdis.drawPixmap(0, 0, bitmap);
pact.end(); pdis.end();
bitmap = QBitmap(16, 16, pindown_mask_bits, true);
pindown_pix->setMask(bitmap); dis_pindown_pix->setMask(bitmap);
}
@ -228,21 +221,36 @@ StdClient::StdClient( Workspace *ws, WId w, QWidget *parent, const char *name )
button[i]->setMouseTracking( TRUE );
button[i]->setFixedSize( 20, 20 );
}
if(miniIcon().isNull())
button[0]->setIconSet(isActive() ? *menu_pix : *dis_menu_pix);
else
button[0]->setIconSet( miniIcon() );
button[1]->setIconSet( isSticky()?*pindown_pix:*pinup_pix );
button[1]->setIconSet(isSticky() ? isActive() ? *pindown_pix : *dis_pindown_pix :
isActive() ? *pinup_pix : *dis_pinup_pix );
connect( button[1], SIGNAL( clicked() ), this, ( SLOT( toggleSticky() ) ) );
button[2]->hide();
button[3]->setIconSet( *minimize_pix );
button[3]->setIconSet(isActive() ? *minimize_pix : *dis_minimize_pix);
connect( button[3], SIGNAL( clicked() ), this, ( SLOT( iconify() ) ) );
button[4]->setIconSet( *maximize_pix );
button[4]->setIconSet(isActive() ? *maximize_pix : *dis_maximize_pix);
connect( button[4], SIGNAL( clicked() ), this, ( SLOT( maximize() ) ) );
button[5]->setIconSet( *close_pix );
button[5]->setIconSet(isActive() ? *close_pix : *dis_close_pix);
connect( button[5], SIGNAL( clicked() ), this, ( SLOT( closeWindow() ) ) );
}
void StdClient::activeChange(bool on)
{
if(miniIcon().isNull())
button[0]->setIconSet(on ? *menu_pix : *dis_menu_pix);
button[1]->setIconSet(isSticky() ? on ? *pindown_pix : *dis_pindown_pix :
on ? *pinup_pix : *dis_pinup_pix );
button[3]->setIconSet(on ? *minimize_pix : *dis_minimize_pix);
button[4]->setIconSet(on ? *maximize_pix : *dis_maximize_pix);
button[5]->setIconSet(on ? *close_pix : *dis_close_pix);
Client::activeChange(on);
}
StdClient::~StdClient()
{
@ -329,6 +337,9 @@ void StdClient::init()
void StdClient::iconChange()
{
if(miniIcon().isNull())
button[0]->setIconSet(isActive() ? *menu_pix : *dis_menu_pix);
else
button[0]->setIconSet( miniIcon() );
button[0]->repaint( FALSE );
}

View file

@ -21,6 +21,7 @@ protected:
void iconChange();
void maximizeChange( bool );
void stickyChange( bool );
void activeChange( bool );
private:
QToolButton* button[6];

128
stdclient_bitmaps.h Normal file
View file

@ -0,0 +1,128 @@
#ifndef __STDCLIENT_BITMAPS_H
#define __STDCLIENT_BITMAPS_H
/**
* The standard client has the capability to color it's titlebar buttons
* according to the new color scheme. In order to do this it needs a bitmap
* for each shade which it draws into a pixmap with the appropriate color.
* These are all the bitmaps.
*/
static unsigned char close_white_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x04, 0x08, 0x08, 0x04, 0x10, 0x02,
0x20, 0x01, 0x40, 0x00, 0x40, 0x00, 0x20, 0x01, 0x10, 0x02, 0x08, 0x04,
0x04, 0x08, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00};
static unsigned char close_dgray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0c,
0xc0, 0x06, 0x80, 0x03, 0x80, 0x03, 0xc0, 0x06, 0x60, 0x0c, 0x30, 0x18,
0x18, 0x30, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00};
static unsigned char close_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x1c, 0x38, 0x38, 0x1c, 0x70, 0x0e,
0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, 0x70, 0x0e, 0x38, 0x1c,
0x1c, 0x38, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00};
static unsigned char iconify_white_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x03, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char iconify_dgray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char iconify_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x03, 0x80, 0x02, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char maximize_white_bits[] = {
0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x04, 0x00, 0x04, 0x08, 0x04, 0x08,
0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0xf4, 0x0f,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char maximize_dgray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x08, 0x10, 0x08, 0x10,
0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10,
0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char maximize_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xfc, 0x1f, 0x0c, 0x18, 0x0c, 0x18,
0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0xfc, 0x1f,
0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char maximizedown_white_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x08, 0x10,
0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10,
0x08, 0x10, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00};
static unsigned char maximizedown_dgray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x04, 0x00, 0x04, 0x08,
0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08,
0xf4, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char maximizedown_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xfc, 0x1f, 0x0c, 0x18,
0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18,
0xfc, 0x1f, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00};
static unsigned char menu_white_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfc, 0x3f, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char menu_dgray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char menu_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfc, 0x3f, 0x04, 0x20, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char pindown_white_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1f, 0xa0, 0x03,
0xb0, 0x01, 0x30, 0x01, 0xf0, 0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char pindown_gray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char pindown_dgray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x10, 0x70, 0x20, 0x50, 0x20,
0x48, 0x30, 0xc8, 0x38, 0x08, 0x1f, 0x08, 0x18, 0x10, 0x1c, 0x10, 0x0e,
0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char pindown_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x1f, 0xf0, 0x3f, 0xf0, 0x3f,
0xf8, 0x3f, 0xf8, 0x3f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf0, 0x1f, 0xf0, 0x0f,
0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char pinup_white_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x11,
0x3f, 0x15, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char pinup_gray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x0a, 0xbf, 0x0a, 0x80, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char pinup_dgray_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x40, 0x31, 0x40, 0x2e,
0x40, 0x20, 0x40, 0x20, 0x7f, 0x2a, 0x40, 0x3f, 0xc0, 0x31, 0xc0, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned char pinup_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0xc0, 0x31, 0xc0, 0x3f,
0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xc0, 0x3f, 0xc0, 0x31, 0xc0, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
#endif