wmacpi: Bump to version 1.99r7.
Source obtained from http://sourceforge.net/projects/wmacpi/files/. 2004 August 18 1.99r7 Implemented the libdockapp port - this seems to close Debian bug #227819, but it hasn't received sufficient testing. Implemented a capacity mode for calculating time remaining (as opposed to the normal current rate mode) - this mode samples the remaining capacity of the battery and notes the time at which it was sampled, and uses a history of samples to estimate the rate of drain on the battery. From there it calculates a value for time remaining. Also, various cleanups have gone in: * a reworking of the scrolling code * generic battery number support (rather than just using two pixmaps, one for b1 and one for b2) * stopped the battery glyph from blinking when running on AC
This commit is contained in:
parent
dd9ef3519f
commit
6014b452cb
|
@ -1,3 +1,23 @@
|
||||||
|
2004 August 18 1.99r7
|
||||||
|
Implemented the libdockapp port - this seems to close Debian bug
|
||||||
|
#227819, but it hasn't received sufficient testing.
|
||||||
|
|
||||||
|
Implemented a capacity mode for calculating time remaining (as
|
||||||
|
opposed to the normal current rate mode) - this mode samples the
|
||||||
|
remaining capacity of the battery and notes the time at which it
|
||||||
|
was sampled, and uses a history of samples to estimate the rate of
|
||||||
|
drain on the battery. From there it calculates a value for time
|
||||||
|
remaining.
|
||||||
|
|
||||||
|
Also, various cleanups have gone in:
|
||||||
|
|
||||||
|
* a reworking of the scrolling code
|
||||||
|
|
||||||
|
* generic battery number support (rather than just
|
||||||
|
using two pixmaps, one for b1 and one for b2)
|
||||||
|
|
||||||
|
* stopped the battery glyph from blinking when running on AC
|
||||||
|
|
||||||
2004 July 19 1.99r6
|
2004 July 19 1.99r6
|
||||||
Fix for Debian bug #250792 - the parser for the acpi files was
|
Fix for Debian bug #250792 - the parser for the acpi files was
|
||||||
too stupid to deal with error conditions. I've now added some
|
too stupid to deal with error conditions. I've now added some
|
||||||
|
|
|
@ -14,7 +14,7 @@ BUILD_CLI = 1
|
||||||
|
|
||||||
CC := gcc
|
CC := gcc
|
||||||
CFLAGS := $(OPT) -Wall -W -g -ansi -I/usr/X11R6/include
|
CFLAGS := $(OPT) -Wall -W -g -ansi -I/usr/X11R6/include
|
||||||
LDFLAGS := $(OPT) -L/usr/X11R6/lib -lX11 -lXpm -lXext
|
LDFLAGS := $(OPT) -L/usr/X11R6/lib -lX11 -lXpm -lXext -ldockapp
|
||||||
|
|
||||||
WMSRC := wmacpi.c libacpi.c
|
WMSRC := wmacpi.c libacpi.c
|
||||||
HEADERS := libacpi.h wmacpi.h
|
HEADERS := libacpi.h wmacpi.h
|
||||||
|
|
|
@ -86,12 +86,12 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
globals = (global_t *) malloc(sizeof(global_t));
|
globals = (global_t *) malloc(sizeof(global_t));
|
||||||
|
|
||||||
power_init();
|
power_init(globals);
|
||||||
/* we want to acquire samples over some period of time, so . . . */
|
/* we want to acquire samples over some period of time, so . . . */
|
||||||
for(i = 0; i < samples + 2; i++) {
|
for(i = 0; i < samples + 2; i++) {
|
||||||
for(j = 0; j < globals->battery_count; j++)
|
for(j = 0; j < globals->battery_count; j++)
|
||||||
acquire_batt_info(j);
|
acquire_batt_info(globals, j);
|
||||||
acquire_global_info();
|
acquire_global_info(globals);
|
||||||
usleep(sleep_time);
|
usleep(sleep_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
158
wmacpi/libacpi.c
158
wmacpi/libacpi.c
|
@ -6,17 +6,18 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#include "libacpi.h"
|
#include "libacpi.h"
|
||||||
|
|
||||||
extern char *state[];
|
extern char *state[];
|
||||||
extern global_t *globals;
|
/* extern global_t *globals; */
|
||||||
|
|
||||||
/* local proto */
|
/* local proto */
|
||||||
int acpi_get_design_cap(int batt);
|
int acpi_get_design_cap(int batt);
|
||||||
|
|
||||||
/* initialise the batteries */
|
/* initialise the batteries */
|
||||||
int init_batteries(void)
|
int init_batteries(global_t *globals)
|
||||||
{
|
{
|
||||||
DIR *battdir;
|
DIR *battdir;
|
||||||
struct dirent *batt;
|
struct dirent *batt;
|
||||||
|
@ -83,16 +84,16 @@ int init_batteries(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* a stub that just calls the current function */
|
/* a stub that just calls the current function */
|
||||||
int reinit_batteries(void)
|
int reinit_batteries(global_t *globals)
|
||||||
{
|
{
|
||||||
pdebug("reinitialising batteries\n");
|
pdebug("reinitialising batteries\n");
|
||||||
return init_batteries();
|
return init_batteries(globals);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the actual name of the subdirectory under ac_adapter may
|
/* the actual name of the subdirectory under ac_adapter may
|
||||||
* be anything, so we need to read the directory and use the
|
* be anything, so we need to read the directory and use the
|
||||||
* name we find there. */
|
* name we find there. */
|
||||||
int init_ac_adapters(void)
|
int init_ac_adapters(global_t *globals)
|
||||||
{
|
{
|
||||||
DIR *acdir;
|
DIR *acdir;
|
||||||
struct dirent *adapter;
|
struct dirent *adapter;
|
||||||
|
@ -125,14 +126,14 @@ int init_ac_adapters(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stub that does nothing but call the normal init function */
|
/* stub that does nothing but call the normal init function */
|
||||||
int reinit_ac_adapters(void)
|
int reinit_ac_adapters(global_t *globals)
|
||||||
{
|
{
|
||||||
pdebug("reinitialising ac adapters\n");
|
pdebug("reinitialising ac adapters\n");
|
||||||
return init_ac_adapters();
|
return init_ac_adapters(globals);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* see if we have ACPI support and check version */
|
/* see if we have ACPI support and check version */
|
||||||
int power_init(void)
|
int power_init(global_t *globals)
|
||||||
{
|
{
|
||||||
FILE *acpi;
|
FILE *acpi;
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
|
@ -156,14 +157,14 @@ int power_init(void)
|
||||||
/* yep, all good */
|
/* yep, all good */
|
||||||
fclose(acpi);
|
fclose(acpi);
|
||||||
|
|
||||||
if (!(retval = init_batteries()))
|
if (!(retval = init_batteries(globals)))
|
||||||
retval = init_ac_adapters();
|
retval = init_ac_adapters(globals);
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reinitialise everything, to deal with changing batteries or ac adapters */
|
/* reinitialise everything, to deal with changing batteries or ac adapters */
|
||||||
int power_reinit(void)
|
int power_reinit(global_t *globals)
|
||||||
{
|
{
|
||||||
FILE *acpi;
|
FILE *acpi;
|
||||||
int retval;
|
int retval;
|
||||||
|
@ -173,8 +174,8 @@ int power_reinit(void)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(retval = reinit_batteries()))
|
if (!(retval = reinit_batteries(globals)))
|
||||||
retval = reinit_ac_adapters();
|
retval = reinit_ac_adapters(globals);
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -202,7 +203,7 @@ int check_error(char *buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
power_state_t get_power_status(void)
|
power_state_t get_power_status(global_t *globals)
|
||||||
{
|
{
|
||||||
FILE *file;
|
FILE *file;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
@ -437,7 +438,7 @@ static int calc_charge_time(int batt)
|
||||||
return charge_time;
|
return charge_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
void acquire_batt_info(int batt)
|
void acquire_batt_info(global_t *globals, int batt)
|
||||||
{
|
{
|
||||||
battery_t *binfo;
|
battery_t *binfo;
|
||||||
adapter_t *ap = &globals->adapter;
|
adapter_t *ap = &globals->adapter;
|
||||||
|
@ -472,7 +473,7 @@ void acquire_batt_info(int batt)
|
||||||
|
|
||||||
/* we need to /know/ that we've got a valid state for the
|
/* we need to /know/ that we've got a valid state for the
|
||||||
* globals->power value . . . .*/
|
* globals->power value . . . .*/
|
||||||
ap->power = get_power_status();
|
ap->power = get_power_status(globals);
|
||||||
|
|
||||||
if ((ap->power != AC) && (binfo->charge_state == DISCHARGE)) {
|
if ((ap->power != AC) && (binfo->charge_state == DISCHARGE)) {
|
||||||
/* we're not on power, and not charging. So we might as well
|
/* we're not on power, and not charging. So we might as well
|
||||||
|
@ -491,25 +492,44 @@ void acquire_batt_info(int batt)
|
||||||
binfo->valid = 1;
|
binfo->valid = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void acquire_all_batt_info(void)
|
void acquire_all_batt_info(global_t *globals)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for(i = 0; i < globals->battery_count; i++)
|
for(i = 0; i < globals->battery_count; i++)
|
||||||
acquire_batt_info(i);
|
acquire_batt_info(globals, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void acquire_global_info(void)
|
/*
|
||||||
|
* One of the feature requests I've had is for some way to deal with
|
||||||
|
* batteries that are too dumb or too b0rken to report a present rate
|
||||||
|
* value. The way to do this, obviously, is to record the time that
|
||||||
|
* samples were taken and use that information to calculate the rate
|
||||||
|
* at which the battery is draining/charging. This still won't help
|
||||||
|
* systems where the battery doesn't even report the remaining
|
||||||
|
* capacity, but without the present rate or the remaining capacity, I
|
||||||
|
* don't think there's /anything/ we can do to work around it.
|
||||||
|
*
|
||||||
|
* So, what we need to do is provide a way to use a different method
|
||||||
|
* to calculate the time remaining. What seems most sensible is to
|
||||||
|
* split out the code to calculate it into a seperate function, and
|
||||||
|
* then provide multiple implementations . . .
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* the default implementation - if present rate and remaining capacity
|
||||||
|
* are both reported correctly, we use them.
|
||||||
|
*/
|
||||||
|
int calc_time_remaining_rate(global_t *globals)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int rtime;
|
int rtime;
|
||||||
float rcap = 0;
|
float rcap = 0;
|
||||||
float rate = 0;
|
float rate = 0;
|
||||||
battery_t *binfo;
|
battery_t *binfo;
|
||||||
adapter_t *ap = &globals->adapter;
|
|
||||||
static float rate_samples[SAMPLES];
|
static float rate_samples[SAMPLES];
|
||||||
static int j = 0;
|
|
||||||
static int sample_count = 0;
|
static int sample_count = 0;
|
||||||
|
static int j = 0;
|
||||||
static int n = 0;
|
static int n = 0;
|
||||||
|
|
||||||
/* calculate the time remaining, using the battery's remaining
|
/* calculate the time remaining, using the battery's remaining
|
||||||
|
@ -529,7 +549,8 @@ void acquire_global_info(void)
|
||||||
}
|
}
|
||||||
rate_samples[j] = rate;
|
rate_samples[j] = rate;
|
||||||
j++, sample_count++;
|
j++, sample_count++;
|
||||||
j = j % SAMPLES;
|
if (j >= SAMPLES)
|
||||||
|
j = 0;
|
||||||
|
|
||||||
/* for the first SAMPLES number of calls we calculate the
|
/* for the first SAMPLES number of calls we calculate the
|
||||||
* average based on sample_count, then we use SAMPLES to
|
* average based on sample_count, then we use SAMPLES to
|
||||||
|
@ -562,16 +583,99 @@ void acquire_global_info(void)
|
||||||
rtime = 0;
|
rtime = 0;
|
||||||
out:
|
out:
|
||||||
pdebug("time rem: %d\n", rtime);
|
pdebug("time rem: %d\n", rtime);
|
||||||
globals->rtime = rtime;
|
return rtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* the alternative implementation - record the time at which each
|
||||||
|
* sample was taken, and then use the difference between the latest
|
||||||
|
* sample and the one SAMPLES ago to calculate the difference over
|
||||||
|
* that time, and from there the rate of change of capacity.
|
||||||
|
*
|
||||||
|
* XXX: this code sucks, but largely because batteries aren't exactly
|
||||||
|
* precision instruments - mine only report with about 70mAH
|
||||||
|
* resolution, so they don't report any changes until the difference
|
||||||
|
* is 70mAH. This means that calculating the current rate from the
|
||||||
|
* remaining capacity is very choppy . . .
|
||||||
|
*
|
||||||
|
* To fix this, we should calculate an average over some number of
|
||||||
|
* samples at the old end of the set - this would smooth out the
|
||||||
|
* transitions.
|
||||||
|
*/
|
||||||
|
int calc_time_remaining_cap(global_t *globals)
|
||||||
|
{
|
||||||
|
static float cap_samples[SAMPLES];
|
||||||
|
static int time_samples[SAMPLES];
|
||||||
|
static int sample_count = 0;
|
||||||
|
static int current = 0;
|
||||||
|
static int old = 1;
|
||||||
|
battery_t *binfo;
|
||||||
|
int i;
|
||||||
|
int rtime;
|
||||||
|
int tdiff;
|
||||||
|
float cdiff;
|
||||||
|
float cap = 0;
|
||||||
|
float current_rate;
|
||||||
|
|
||||||
|
for (i = 0; i < globals->battery_count; i++) {
|
||||||
|
binfo = &batteries[i];
|
||||||
|
if (binfo->present && binfo->valid)
|
||||||
|
cap += binfo->remaining_cap;
|
||||||
|
}
|
||||||
|
cap_samples[current] = cap;
|
||||||
|
time_samples[current] = time(NULL);
|
||||||
|
|
||||||
|
/* if we have less than SAMPLES samples so far, we use the first
|
||||||
|
* sample and the current one */
|
||||||
|
if (sample_count < SAMPLES) {
|
||||||
|
cdiff = cap_samples[0] - cap_samples[current];
|
||||||
|
tdiff = time_samples[current] - time_samples[0];
|
||||||
|
current_rate = cdiff/tdiff;
|
||||||
|
} else {
|
||||||
|
/* if we have more than SAMPLES samples, we use the oldest
|
||||||
|
* current one, which at this point is current + 1. This will
|
||||||
|
* wrap the same way that current will wrap, but one cycle
|
||||||
|
* ahead */
|
||||||
|
cdiff = cap_samples[old] - cap_samples[current];
|
||||||
|
tdiff = time_samples[current] - time_samples[old];
|
||||||
|
current_rate = cdiff/tdiff;
|
||||||
|
}
|
||||||
|
if (current_rate == 0)
|
||||||
|
rtime = 0;
|
||||||
|
else
|
||||||
|
rtime = (int)(cap_samples[current]/(current_rate * 60.0));
|
||||||
|
|
||||||
|
sample_count++, current++, old++;
|
||||||
|
if (current >= SAMPLES)
|
||||||
|
current = 0;
|
||||||
|
if (old >= SAMPLES)
|
||||||
|
old = 0;
|
||||||
|
|
||||||
|
pdebug("time rem: %d\n", rtime);
|
||||||
|
return rtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
void acquire_global_info(global_t *globals)
|
||||||
|
{
|
||||||
|
adapter_t *ap = &globals->adapter;
|
||||||
|
|
||||||
|
switch(globals->rt_mode) {
|
||||||
|
case RT_RATE:
|
||||||
|
globals->rtime = calc_time_remaining_rate(globals);
|
||||||
|
break;
|
||||||
|
case RT_CAP:
|
||||||
|
globals->rtime = calc_time_remaining_cap(globals);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* get the power status.
|
/* get the power status.
|
||||||
* note that this is actually reported seperately from the
|
* note that this is actually reported seperately from the
|
||||||
* battery info, under /proc/acpi/ac_adapter/AC/state */
|
* battery info, under /proc/acpi/ac_adapter/AC/state */
|
||||||
ap->power = get_power_status();
|
ap->power = get_power_status(globals);
|
||||||
}
|
}
|
||||||
|
|
||||||
void acquire_all_info(void)
|
void acquire_all_info(global_t *globals)
|
||||||
{
|
{
|
||||||
acquire_all_batt_info();
|
acquire_all_batt_info(globals);
|
||||||
acquire_global_info();
|
acquire_global_info(globals);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define _LIBACPI_H_
|
#define _LIBACPI_H_
|
||||||
|
|
||||||
|
|
||||||
#define LIBACPI_VER "0.90"
|
#define LIBACPI_VER "0.91"
|
||||||
|
|
||||||
/* Here because we need it for definitions in this file . . . */
|
/* Here because we need it for definitions in this file . . . */
|
||||||
#define MAX_NAME 128
|
#define MAX_NAME 128
|
||||||
|
@ -71,22 +71,23 @@ typedef struct {
|
||||||
power_state_t power;
|
power_state_t power;
|
||||||
} adapter_t;
|
} adapter_t;
|
||||||
|
|
||||||
|
/* how to calculate the time remaining */
|
||||||
|
enum rtime_mode {
|
||||||
|
RT_RATE, /* using the current rate, as per the ACPI spec */
|
||||||
|
RT_CAP, /* using the remaining capacity over time */
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int rtime; /* remaining time */
|
int rtime; /* remaining time */
|
||||||
int timer; /* how long been on battery? */
|
int timer; /* how long been on battery? */
|
||||||
int crit_level; /* anything below this is critical low */
|
int crit_level; /* anything below this is critical low */
|
||||||
int battery_count; /* number of batteries found */
|
int battery_count; /* number of batteries found */
|
||||||
|
enum rtime_mode rt_mode;
|
||||||
battery_t *binfo; /* pointer to the battery being monitored */
|
battery_t *binfo; /* pointer to the battery being monitored */
|
||||||
adapter_t adapter;
|
adapter_t adapter;
|
||||||
} global_t;
|
} global_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note that there are some serious problems with this: firstly, handling of
|
|
||||||
* multiple batteries sucks. I've cleaned it up a reasonable amount so far,
|
|
||||||
* but I don't know enough about how multiple batteries are handled in the
|
|
||||||
* actual power management code to be able to do it right. I need to plug
|
|
||||||
* in the second battery for this LifeBook to see how it goes . . .
|
|
||||||
*
|
|
||||||
* Moving percentage to the battery is right, but I think we need a global
|
* Moving percentage to the battery is right, but I think we need a global
|
||||||
* remaining capacity somewhere, too . . .
|
* remaining capacity somewhere, too . . .
|
||||||
*/
|
*/
|
||||||
|
@ -124,16 +125,16 @@ battery_t batteries[MAXBATT];
|
||||||
int verbosity;
|
int verbosity;
|
||||||
|
|
||||||
/* check if apm/acpi is enabled, etc */
|
/* check if apm/acpi is enabled, etc */
|
||||||
int power_init(void);
|
int power_init(global_t *globals);
|
||||||
/* reinitialise everything */
|
/* reinitialise everything */
|
||||||
int power_reinit(void);
|
int power_reinit(global_t *globals);
|
||||||
int reinit_ac_adapters(void);
|
int reinit_ac_adapters(global_t *globals);
|
||||||
int reinit_batteries(void);
|
int reinit_batteries(global_t *globals);
|
||||||
|
|
||||||
/* fill global_t with data */
|
/* fill global_t with data */
|
||||||
void acquire_batt_info(int);
|
void acquire_batt_info(global_t *globals, int batt);
|
||||||
void acquire_all_batt_info(void);
|
void acquire_all_batt_info(global_t *globals);
|
||||||
void acquire_global_info(void);
|
void acquire_global_info(global_t *globals);
|
||||||
void acquire_all_info(void);
|
void acquire_all_info(global_t *globals);
|
||||||
|
|
||||||
#endif /* _WMACPI_H_ */
|
#endif /* _WMACPI_H_ */
|
||||||
|
|
|
@ -99,8 +99,8 @@ static char * master_xpm[] = {
|
||||||
"@. c #027E72",
|
"@. c #027E72",
|
||||||
"#. c #188A86",
|
"#. c #188A86",
|
||||||
"$. c #22B2AE",
|
"$. c #22B2AE",
|
||||||
"%. c #107D79",
|
"%. c #034A40",
|
||||||
"&. c #034A40",
|
"&. c #107D79",
|
||||||
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
|
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
|
||||||
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
|
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
|
||||||
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
|
" . + @ # $ % & * = - % ; > , ' % ) ! ~ { % ] ^ / ( % _ : < [ % } | 1 2 % 3 4 5 6 % 7 8 9 0 % a b c d % e f g h ",
|
||||||
|
@ -126,7 +126,7 @@ static char * master_xpm[] = {
|
||||||
" . % ..% % % % ..........% % % % ..% % % % % % % % ..% % ` . % % .% .% % % .% .% % % .% ..% ..% ..% % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% ",
|
" . % ..% % % % ..........% % % % ..% % % % % % % % ..% % ` . % % .% .% % % .% .% % % .% ..% ..% ..% % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% ",
|
||||||
" . % ..% % % % % % % % % % % % % ....................% % ` . % % % % % . . .% % % . . .% % % % % ..% % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% ",
|
" . % ..% % % % % % % % % % % % % ....................% % ` . % % % % % . . .% % % . . .% % % % % ..% % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % ` . i j k l % m n o p % q r s t % u v w x % y z A B % C D E F % G H I J % K L M N % O P Q R % S T U V % W X Y Z % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
||||||
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . ",
|
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
||||||
" . % % ......% % % . . .#.% #.......#.% #.......#.% #. . . .#.% #.......#.% #.......#.% #.......#.% #.......#.% #.......#.% % ..% % % % % % % ",
|
" . % % ......% % % . . .#.% #.......#.% #.......#.% #. . . .#.% #.......#.% #.......#.% #.......#.% #.......#.% #.......#.% % ..% % % % % % % ",
|
||||||
|
@ -138,23 +138,23 @@ static char * master_xpm[] = {
|
||||||
" . % % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % ` % $.$.$.$.% % % .% % % % .% % ` . % % ......% % % . . .#.% #.......#.% #.......#.% % . . .#.% #.......#.% #.......#.% % . . .#.% #.......#.% #.......#.% % % % ..% % % #.% ",
|
" . % % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % ` % $.$.$.$.% % % .% % % % .% % ` . % % ......% % % . . .#.% #.......#.% #.......#.% % . . .#.% #.......#.% #.......#.% % . . .#.% #.......#.% #.......#.% % % % ..% % % #.% ",
|
||||||
" . % % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
" . % % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
||||||
" . % % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . ",
|
" . % % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . ",
|
||||||
" . % % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % ` % $.% % % $.% % % . . . .% % % ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % . . . . . . . . . . . . . . . . ` . . . . . . . . . . . . . . . . ` ",
|
" . % % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % ` % $.% % % $.% % % . . . .% % % ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % . . . . . . . . . . . . . . . . ` ",
|
||||||
" . % % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % ` % $.$.$.$.% % % .% % % % .% % ` . % % % % % % ..........% % % % ....................% % % #.% % ......% % % ......% % % ..% % % % % % % % % % % % % % % % % % % % ` % % % % % % % % % % % % % % % % ` ",
|
" . % % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % ` % $.$.$.$.% % % .% % % % .% % ` . % % % % % % ..........% % % % ....................% % % #.% % ......% % % ......% % % ..% % % % % % % % % % % % % % % % % % % % ` ",
|
||||||
" . % % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . % % % % % ..% % % % ......% % ..% % % % % % % % ..% % % ..% ..% % % ..% ..% % % ..% ..% ..% ..% % % % % % % % % % % % % % % % % ` % % % % % % % % % % % % % % % % ` ",
|
" . % % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . % % % % % ..% % % % ......% % ..% % % % % % % % ..% % % ..% ..% % % ..% ..% % % ..% ..% ..% ..% % % % % % % % % % % % % % % % % ` ",
|
||||||
" . % % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . % % % % % ..% % % % ..% % % % ..% % % % % % % % ....% % ..% ..% % % ..% ..% % % ..% % ..% ..% % % % % % % % % % % . . . .%.% % ` % % % % % % % % %.........#.% % ` ",
|
" . % % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . % % % % % ..% % % % ..% % % % ..% % % % % % % % ....% % ..% ..% % % ..% ..% % % ..% % ..% ..% % % % % % % % % % % . . . .% % % ` ",
|
||||||
" . % % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . % % % ......% % % % ..% % % % ..% % % % % % % % ....% % #.% #. . . .#.% #. . . .#.% % % ..% % % % % % % % % % % .% % % % ..% % ` % % % % % % % % .% % % % ..% % ` ",
|
" . % % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % ` % $.% % % $.% % .% % % % .% % ` . % % % ......% % % % ..% % % % ..% % % % % % % % ....% % #.% #. . . .#.% #. . . .#.% % % ..% % % % % % % % % % % .% % % % .% % ` ",
|
||||||
" . % % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % ` % $.$.$.$.% % % % . . . .% % % ` . % % ..% % ..% % % % ......% % ..% % % % % % % % ....% % ..% ..% % % ..% ..% % % ..% % ..% ..% % % $.$.$.$.% % % .% % % % ..% % ` % $.$.$.$.% % % .% % % % ..% % ` ",
|
" . % % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % ` % $.$.$.$.% % % % . . . .% % % ` . % % ..% % ..% % % % ......% % ..% % % % % % % % ....% % ..% ..% % % ..% ..% % % ..% % ..% ..% % % $.$.$.$.% % % .% % % % .% % ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` % % % % % % % % % % % % % % % % ` . % ..% % % % ..........% % % % ..% % % % % % % % ..% % % ..% ..% % % ..% ..% % % ..% ..% ..% ..% % $.% % % $.% % .% % % % ..% % ` % $.% % % $.% % .% % % % ..% % ` ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` % % % % % % % % % % % % % % % % ` . % ..% % % % ..........% % % % ..% % % % % % % % ..% % % ..% ..% % % ..% ..% % % ..% ..% ..% ..% % $.% % % $.% % .% % % % .% % ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` % % % % % % % % % % % % % % % % ` . % ..% % % % % % % % % % % % % ....................% % % #.% % ......% % % ......% % % % % ..% % % $.% % % $.% % .% % % % ..% % ` % $.% % % $.% % .% % % % ..% % ` ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` % % % % % % % % % % % % % % % % ` . % ..% % % % % % % % % % % % % ....................% % % #.% % ......% % % ......% % % % % ..% % % $.% % % $.% % .% % % % .% % ` ",
|
||||||
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % $.% % % $.% % % . . . .%.% % ` % $.% % % $.% % %.........%.% % ` ",
|
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % $.% % % $.% % % . . . .% % % ` ",
|
||||||
" . % $.$.$.$.% % % .% % % % ..% % ` % $.$.$.$.% % % ..% % % % .% % ` ",
|
" . % $.$.$.$.% % % .% % % % .% % ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % $.% % % $.% % .% % % % ..% % ` % $.% % % $.% % ..% % % % .% % ` ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % $.% % % $.% % .% % % % .% % ` ",
|
||||||
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % . . . . .% % % % . . . . . . . . . .% % % % % % . . .% % % . . .% % % .% % % % % $.% % % $.% % .% % % % ..% % ` % $.% % % $.% % ..% % % % .% % ` ",
|
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % . . . . .% % % % . . . . . . . . . .% % % % % % . . .% % % . . .% % % .% % % % % $.% % % $.% % .% % % % .% % ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % .% % % % . . .% % .% % % % % % % % .% % % .% .% % % .% .% % % .% .% .% .% % $.% % % $.% % .% % % % ..% % ` % $.% % % $.% % ..% % % % .% % ` ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % .% % % % . . .% % .% % % % % % % % .% % % .% .% % % .% .% % % .% .% .% .% % $.% % % $.% % .% % % % .% % ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % .% % % % .% % % % .% % % % % % % % . .% % .% .% % % .% .% % % .% % .% .% % % $.$.$.$.% % % % . . . .%.% % ` % $.$.$.$.% % % %.........%.% % ` ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % .% % % % .% % % % .% % % % % % % % . .% % .% .% % % .% .% % % .% % .% .% % % $.$.$.$.% % % % . . . .% % % ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % . . .% % % % .% % % % .% % % % % % % % . .% % % % % . . .% % % . . .% % % % .% % % % % % % % % % % % % % % % % % % ` % % % % % % % % % % % % % % % % ` ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % . . .% % % % .% % % % .% % % % % % % % . .% % % % % . . .% % % . . .% % % % .% % % % % % % % % % % % % % % % % % % ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % .% % .% % % % . . .% % .% % % % % % % % . .% % .% .% % % .% .% % % .% % .% .% % % % % % % % % % % % % % % % % % ` % % % % % % % % % % % % % % % % ` ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % .% % .% % % % . . .% % .% % % % % % % % . .% % .% .% % % .% .% % % .% % .% .% % % % % % % % % % % % % % % % % % ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % .% % % % . . . . .% % % % .% % % % % % % % .% % % .% .% % % .% .% % % .% .% .% .% ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % .% % % % . . . . .% % % % .% % % % % % % % .% % % .% .% % % .% .% % % .% .% .% .% ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % .% % % % % % % % % % % % % . . . . . . . . . .% % % % % % . . .% % % . . .% % % % % .% % ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % .% % % % % % % % % % % % % . . . . . . . . . .% % % % % % . . .% % % . . .% % % % % .% % ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . ",
|
||||||
|
@ -162,30 +162,30 @@ static char * master_xpm[] = {
|
||||||
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % $.$.$.% % % % % % @.% @.$.$.$.@.% @.$.$.$.@.% @.% % % @.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% % % % % % % % % % % % % % % % % % % ",
|
" . % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ` . % % $.$.$.% % % % % % @.% @.$.$.$.@.% @.$.$.$.@.% @.% % % @.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% % % % % % % % % % % % % % % % % % % ",
|
||||||
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . % $.% % % $.% % % % % $.% % % % % $.% % % % % $.% $.% % % $.% $.% % % % % $.% % % % % % % % % $.% $.% % % $.% $.% % % $.% % % % % % % % % % % % % % % % % % % ",
|
" ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` . % $.% % % $.% % % % % $.% % % % % $.% % % % % $.% $.% % % $.% $.% % % % % $.% % % % % % % % % $.% $.% % % $.% $.% % % $.% % % % % % % % % % % % % % % % % % % ",
|
||||||
" . % $.% % % $.% % % % % $.% % % % % $.% % % % % $.% $.% % % $.% $.% % % % % $.% % % % % % % % % $.% $.% % % $.% $.% % % $.% % % % % % % % % % % % % % % % % % % ",
|
" . % $.% % % $.% % % % % $.% % % % % $.% % % % % $.% $.% % % $.% $.% % % % % $.% % % % % % % % % $.% $.% % % $.% $.% % % $.% % % % % % % % % % % % % % % % % % % ",
|
||||||
" . % @.% % % @.% % % % % @.% @.$.$.$.@.% % $.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% % % % % @.% &.$.$.$.&.% @.$.$.$.@.% @.$.$.$.@.% % % % % % % % % % % % % ",
|
" . % @.% % % @.% % % % % @.% @.$.$.$.@.% % $.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% % % % % @.% %.$.$.$.%.% @.$.$.$.@.% @.$.$.$.@.% % % % % % % % % % % % % ",
|
||||||
" . % $.% % % $.% % % % % $.% $.% % % % % % % % % $.% % % % % $.% % % % % $.% $.% % % $.% % % % % $.% $.% % % $.% % % % % $.% % % % % % % % % % % % % % % % % % % ",
|
" . % $.% % % $.% % % % % $.% $.% % % % % % % % % $.% % % % % $.% % % % % $.% $.% % % $.% % % % % $.% $.% % % $.% % % % % $.% % % % % % % % % % % % % % % % % % % ",
|
||||||
" . % $.% % % $.% % % % % $.% $.% % % % % % % % % $.% % % % % $.% % % % % $.% $.% % % $.% % % % % $.% $.% % % $.% % % % % $.% % % % % % % % % % % % % % % % % % % ",
|
" . % $.% % % $.% % % % % $.% $.% % % % % % % % % $.% % % % % $.% % % % % $.% $.% % % $.% % % % % $.% $.% % % $.% % % % % $.% % % % % % % % % % % % % % % % % % % ",
|
||||||
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % $.$.$.% % % % % % $.% @.$.$.$.@.% @.$.$.$.@.% % % % % @.% @.$.$.$.@.% @.$.$.$.@.% % % % % @.% @.$.$.$.@.% @.$.$.$.@.% % % % % % % % % % % % % % % % % $.% ",
|
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % $.$.$.% % % % % % $.% @.$.$.$.@.% @.$.$.$.@.% % % % % @.% @.$.$.$.@.% @.$.$.$.@.% % % % % @.% @.$.$.$.@.% @.$.$.$.@.% % % % % % % % % % % % % % % % % $.% ",
|
||||||
" % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
" % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
||||||
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
||||||
"% &.$.$.$.&.% @.$.$.$.% % @.$.$.$.@.% @.$.$.$.% % @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.% % % @.% % % @.% % % % % % % @.% @.% % % @.% @.% % % % % $.% % % $.% @.$.$.$.% % @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.% % % @.% @.% % % @.% @.% % % @.% @.% % % @.% @.% % % @.% @.$.$.$.@.% ",
|
"% %.$.$.$.%.% @.$.$.$.% % @.$.$.$.@.% @.$.$.$.% % @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.% % % @.% % % @.% % % % % % % @.% @.% % % @.% @.% % % % % $.% % % $.% @.$.$.$.% % @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.$.$.$.@.% @.% % % @.% @.% % % @.% @.% % % @.% @.% % % @.% @.% % % @.% @.$.$.$.@.% ",
|
||||||
"% $.% % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % % % $.% % % % % $.% % % % % $.% % % $.% % % $.% % % % % % % $.% $.% % % $.% $.% % % % % $.$.% $.$.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % % % % % $.% % % $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% % % % % $.% ",
|
"% $.% % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % % % $.% % % % % $.% % % % % $.% % % $.% % % $.% % % % % % % $.% $.% % % $.% $.% % % % % $.$.% $.$.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % % % % % $.% % % $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% % % % % $.% ",
|
||||||
"% $.% % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % % % $.% % % % % $.% % % % % $.% % % $.% % % $.% % % % % % % $.% $.% % $.&.% $.% % % % % $.% $.% $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % % % % % $.% % % $.% % % $.% $.% % % $.% $.% % % $.% &.$.% $.&.% $.% % % $.% % % % $.&.% ",
|
"% $.% % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % % % $.% % % % % $.% % % % % $.% % % $.% % % $.% % % % % % % $.% $.% % $.%.% $.% % % % % $.% $.% $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % $.% $.% % % % % % % $.% % % $.% % % $.% $.% % % $.% $.% % % $.% %.$.% $.%.% $.% % % $.% % % % $.%.% ",
|
||||||
"% @.$.$.$.@.% @.$.$.$.% % @.% % % % % @.% % % @.% @.$.$.$.% % @.$.$.$.% % @.&.$.$.@.% @.$.$.$.@.% % % @.% % % % % % % @.% @.$.$.&.% % @.% % % % % @.% % % @.% @.% % % @.% @.% % % @.% @.$.$.$.@.% @.$.% % @.% @.$.$.$.% % @.$.$.$.@.% % % @.% % % @.% % % @.% @.% % % @.% @.% % % @.% % &.$.&.% % @.$.$.$.@.% % &.$.&.% % ",
|
"% @.$.$.$.@.% @.$.$.$.% % @.% % % % % @.% % % @.% @.$.$.$.% % @.$.$.$.% % @.%.$.$.@.% @.$.$.$.@.% % % @.% % % % % % % @.% @.$.$.%.% % @.% % % % % @.% % % @.% @.% % % @.% @.% % % @.% @.$.$.$.@.% @.$.% % @.% @.$.$.$.% % @.$.$.$.@.% % % @.% % % @.% % % @.% @.% % % @.% @.% % % @.% % %.$.%.% % @.$.$.$.@.% % %.$.%.% % ",
|
||||||
"% $.% % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % % % $.% % % % % $.% % % $.% $.% % % $.% % % $.% % % % % % % $.% $.% % $.&.% $.% % % % % $.% % % $.% $.% % % $.% $.% % % $.% $.% % % % % $.% $.% $.% $.% % % $.% % % % % $.% % % $.% % % $.% % % $.% $.% % % $.% $.% $.% $.% &.$.% $.&.% % % % % $.% &.$.% % % % ",
|
"% $.% % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % % % $.% % % % % $.% % % $.% $.% % % $.% % % $.% % % % % % % $.% $.% % $.%.% $.% % % % % $.% % % $.% $.% % % $.% $.% % % $.% $.% % % % % $.% $.% $.% $.% % % $.% % % % % $.% % % $.% % % $.% % % $.% $.% % % $.% $.% $.% $.% %.$.% $.%.% % % % % $.% %.$.% % % % ",
|
||||||
"% $.% % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % % % $.% % % % % $.% % % $.% $.% % % $.% % % $.% % % % % % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % $.% $.% % % $.% $.% % % % % $.% % $.$.% $.% % % $.% % % % % $.% % % $.% % % $.% % % $.% $.% % % $.% $.$.% $.$.% $.% % % $.% % % % % $.% $.% % % % % ",
|
"% $.% % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % % % $.% % % % % $.% % % $.% $.% % % $.% % % $.% % % % % % % $.% $.% % % $.% $.% % % % % $.% % % $.% $.% % % $.% $.% % % $.% $.% % % % % $.% % $.$.% $.% % % $.% % % % % $.% % % $.% % % $.% % % $.% $.% % % $.% $.$.% $.$.% $.% % % $.% % % % % $.% $.% % % % % ",
|
||||||
"% @.% % % @.% @.$.$.$.% % @.$.$.$.@.% $.$.$.$.% % @.$.$.$.@.% $.% % % % % @.$.$.$.@.% @.% % % @.% % % $.% % % @.$.$.$.@.% @.% % % @.% @.$.$.$.&.% @.% % % @.% $.% % % $.% @.$.$.$.@.% @.% % % % % @.$.$.$.@.% @.% % % @.% @.$.$.$.@.% % % @.% % % &.$.$.$.$.% % $.$.$.% % $.% % % $.% @.% % % $.% @.$.$.$.@.% @.$.$.$.@.% ",
|
"% @.% % % @.% @.$.$.$.% % @.$.$.$.@.% $.$.$.$.% % @.$.$.$.@.% $.% % % % % @.$.$.$.@.% @.% % % @.% % % $.% % % @.$.$.$.@.% @.% % % @.% @.$.$.$.%.% @.% % % @.% $.% % % $.% @.$.$.$.@.% @.% % % % % @.$.$.$.@.% @.% % % @.% @.$.$.$.@.% % % @.% % % %.$.$.$.$.% % $.$.$.% % $.% % % $.% @.% % % $.% @.$.$.$.@.% @.$.$.$.@.% ",
|
||||||
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
||||||
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ",
|
||||||
"% % ........% % % . . . .%.% %.........#.% %.........%.% %. . . . .%.% %.........%.% %.........#.% %.........%.% %.........#.% %.........#.% % % % % % % ........% % % ........% % % % % % % ........% % % ........% % % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % % $. . . .$.% ",
|
"% % ........% % % . . . .&.% &.........#.% &.........&.% &. . . . .&.% &.........&.% &.........#.% &.........&.% &.........#.% &.........#.% % % % % % % ........% % % ........% % % % % % % ........% % % ........% % % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % % $. . . .$.% ",
|
||||||
"% ..% % % % ..% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% ..% % % % .% ..% % % % .% .% % % % ..% ..% % % % ..% ..% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % $.% $.% $. .% ",
|
"% ..% % % % ..% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% ..% % % % .% ..% % % % .% .% % % % ..% ..% % % % ..% ..% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % $.% $.% $. .% ",
|
||||||
"% ..% % % % ..% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% ..% % % % .% ..% % % % .% .% % % % ..% ..% % % % ..% ..% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % .$.% $.% .% ",
|
"% ..% % % % ..% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% ..% % % % .% ..% % % % .% .% % % % ..% ..% % % % ..% ..% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % .$.% $.% .% ",
|
||||||
"% ..% % % % ..% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% ..% % % % .% ..% % % % .% .% % % % ..% ..% % % % ..% ..% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % .% $.% $. .% ",
|
"% ..% % % % ..% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% ..% % % % .% ..% % % % .% .% % % % ..% ..% % % % ..% ..% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % .% $.% $. .% ",
|
||||||
"% ..% % % % ..% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% ..% % % % .% ..% % % % .% .% % % % ..% ..% % % % ..% ..% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % .$.% $.% $.% ",
|
"% ..% % % % ..% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% ..% % % % .% ..% % % % .% .% % % % ..% ..% % % % ..% ..% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % .$.% $.% $.% ",
|
||||||
"% %. . . . .%.% % . . . .%.% %.........%.% %.........%.% %.........%.% %.........%.% %.........%.% % . . . .%.% %.........%.% %.........%.% % % % % % %. . . . .%.% %. . . . .%.% % % % % %. . . . .%.% %. . . . .%.% % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % $. . . .$.% % ",
|
"% &. . . . .&.% % . . . .&.% &.........&.% &.........&.% &.........&.% &.........&.% &.........&.% % . . . .&.% &.........&.% &.........&.% % % % % % &. . . . .&.% &. . . . .&.% % % % % &. . . . .&.% &. . . . .&.% % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % $. . . .$.% % ",
|
||||||
"% ..% % % % ..% .% % % % ..% ..% % % % .% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % .% % % % .% ",
|
"% ..% % % % ..% .% % % % ..% ..% % % % .% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % .% % % % .% ",
|
||||||
"% ..% % % % ..% .% % % % ..% ..% % % % .% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % $.$.$.$.$. .% ",
|
"% ..% % % % ..% .% % % % ..% ..% % % % .% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% % % % % % ..% % % % ..% ..% % % % ..% % % % % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % % % % .% % % % .% .% % % % .% % $.$.$.$.$. .% ",
|
||||||
"% ..% % % % ..% .% % % % ..% ..% % % % .% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % $.% % % $.$.% ",
|
"% ..% % % % ..% .% % % % ..% ..% % % % .% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % $.% % % $.$.% ",
|
||||||
"% ..% % % % ..% .% % % % ..% ..% % % % .% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % $.% % % $.$.% ",
|
"% ..% % % % ..% .% % % % ..% ..% % % % .% .% % % % ..% .% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% ..% % % % ..% .% % % % ..% % ..% % % ..% % % % ..% ..% % % % ..% % ..% % ..% % % % ..% ..% % % % ..% % .% % % % .% .% % % % .% % .% % .% % % % .% .% % % % .% % $.% % % $.$.% ",
|
||||||
"% % ........% % % . . . .%.% %.........%.% %.........%.% % . . . .%.% %.........%.% %.........%.% % . . . .%.% %.........%.% %.........%.% % % % % % % ........% % % ........% % % % % % % ........% % % ........% % % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % $.$.$.$.$.% % ",
|
"% % ........% % % . . . .&.% &.........&.% &.........&.% % . . . .&.% &.........&.% &.........&.% % . . . .&.% &.........&.% &.........&.% % % % % % % ........% % % ........% % % % % % % ........% % % ........% % % % . . . .% % % . . . .% % % % % % % . . . .% % % . . . .% % % $.$.$.$.$.% % ",
|
||||||
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % "};
|
"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % "};
|
||||||
|
|
|
@ -17,8 +17,8 @@ static char * master_low_xpm[] = {
|
||||||
", c #188A86",
|
", c #188A86",
|
||||||
"' c #22B2AE",
|
"' c #22B2AE",
|
||||||
") c #C7C7C7",
|
") c #C7C7C7",
|
||||||
"! c #107D79",
|
"! c #034A40",
|
||||||
"~ c #034A40",
|
"~ c #107D79",
|
||||||
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
|
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
|
||||||
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
|
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
|
||||||
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
|
" . ++++@++++@++++@####@####@####@####@$$$$@$$$$@$$$$@$$$$ ",
|
||||||
|
@ -56,23 +56,23 @@ static char * master_low_xpm[] = {
|
||||||
" .@@-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@@= @''''@@@-@@@@-@@= . @@;;;@@@---,@,;;;,@,;;;,@@---,@,;;;,@,;;;,@@---,@,;;;,@,;;;,@@@@;@@@,@ ",
|
" .@@-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@@= @''''@@@-@@@@-@@= . @@;;;@@@---,@,;;;,@,;;;,@@---,@,;;;,@,;;;,@@---,@,;;;,@,;;;,@@@@;@@@,@ ",
|
||||||
" .@@-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
|
" .@@-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
|
||||||
" .@@-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . ",
|
" .@@-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . ",
|
||||||
" .@@@----@@@----@@@@@@@----@@@----@@@= @'@@@'@@@----@@@= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ ................) ................) ",
|
" .@@@----@@@----@@@@@@@----@@@----@@@= @'@@@'@@@----@@@= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ ................) ",
|
||||||
" .@@-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@@= @''''@@@-@@@@-@@= . @@@@@@;;;;;@@@ @;;;;;;;;;;@@ @,@@;;;@@@;;;@@@;@@@@ @@@@@@@@@@@@@@@@) @@@@@@@@@@@@@@@@) ",
|
" .@@-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@@= @''''@@@-@@@@-@@= . @@@@@@;;;;;@@@ @;;;;;;;;;;@@ @,@@;;;@@@;;;@@@;@@@@ @@@@@@@@@@@@@@@@) ",
|
||||||
" .@@-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . @@@@@;@@@@;;;@ @;@@@@@@@@;@@ @;@;@@@;@;@@@;@;@;@;@ @@@@@@@@@@@@@@@@) @@@@@@@@@@@@@@@@) ",
|
" .@@-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . @@@@@;@@@@;;;@ @;@@@@@@@@;@@ @;@;@@@;@;@@@;@;@;@;@ @@@@@@@@@@@@@@@@) ",
|
||||||
" .@@-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . @@@@@;@@@@;@@@ @;@@@@@@@@;;@ @;@;@@@;@;@@@;@@;@;@@ @@@@@@@@@----!@@) @@@@@@@@!;;;;,@@) ",
|
" .@@-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . @@@@@;@@@@;@@@ @;@@@@@@@@;;@ @;@;@@@;@;@@@;@@;@;@@ @@@@@@@@@----@@@) ",
|
||||||
" .@@-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . @@@;;;@@@@;@@@ @;@@@@@@@@;;@ @,@,---,@,---,@@@;@@@ @@@@@@@@-@@@@;@@) @@@@@@@@-@@@@;@@) ",
|
" .@@-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@@= @'@@@'@@-@@@@-@@= . @@@;;;@@@@;@@@ @;@@@@@@@@;;@ @,@,---,@,---,@@@;@@@ @@@@@@@@-@@@@-@@) ",
|
||||||
" .@@@----@@@----@@@@@@@----@@@----@@@= @''''@@@@----@@@= . @@;@@;@@@@;;;@ @;@@@@@@@@;;@ @;@;@@@;@;@@@;@@;@;@@ @''''@@@-@@@@;@@) @''''@@@-@@@@;@@) ",
|
" .@@@----@@@----@@@@@@@----@@@----@@@= @''''@@@@----@@@= . @@;@@;@@@@;;;@ @;@@@@@@@@;;@ @;@;@@@;@;@@@;@@;@;@@ @''''@@@-@@@@-@@) ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= @@@@@@@@@@@@@@@@= . @;@@@@;;;;;@@@ @;@@@@@@@@;@@ @;@;@@@;@;@@@;@;@;@;@ @'@@@'@@-@@@@;@@) @'@@@'@@-@@@@;@@) ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= @@@@@@@@@@@@@@@@= . @;@@@@;;;;;@@@ @;@@@@@@@@;@@ @;@;@@@;@;@@@;@;@;@;@ @'@@@'@@-@@@@-@@) ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= @@@@@@@@@@@@@@@@= . @;@@@@@@@@@@@@ @;;;;;;;;;;@@ @,@@;;;@@@;;;@@@@@;@@ @'@@@'@@-@@@@;@@) @'@@@'@@-@@@@;@@) ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= @@@@@@@@@@@@@@@@= . @;@@@@@@@@@@@@ @;;;;;;;;;;@@ @,@@;;;@@@;;;@@@@@;@@ @'@@@'@@-@@@@-@@) ",
|
||||||
" ===================================== ================= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @'@@@'@@@----!@@) @'@@@'@@!;;;;!@@) ",
|
" ===================================== ================= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @'@@@'@@@----@@@) ",
|
||||||
" . @''''@@@-@@@@;@@) @''''@@@;@@@@-@@) ",
|
" . @''''@@@-@@@@-@@) ",
|
||||||
" . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @'@@@'@@-@@@@;@@) @'@@@'@@;@@@@-@@) ",
|
" . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ @'@@@'@@-@@@@-@@) ",
|
||||||
" ........................................................ . @@@@@@-----@@@ @----------@@ @@@@---@@@---@@@-@@@@ @'@@@'@@-@@@@;@@) @'@@@'@@;@@@@-@@) ",
|
" ........................................................ . @@@@@@-----@@@ @----------@@ @@@@---@@@---@@@-@@@@ @'@@@'@@-@@@@-@@) ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@-@@@@---@ @-@@@@@@@@-@@ @-@-@@@-@-@@@-@-@-@-@ @'@@@'@@-@@@@;@@) @'@@@'@@;@@@@-@@) ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@-@@@@---@ @-@@@@@@@@-@@ @-@-@@@-@-@@@-@-@-@-@ @'@@@'@@-@@@@-@@) ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@-@@@@-@@@ @-@@@@@@@@--@ @-@-@@@-@-@@@-@@-@-@@ @''''@@@@----!@@) @''''@@@!;;;;!@@) ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@-@@@@-@@@ @-@@@@@@@@--@ @-@-@@@-@-@@@-@@-@-@@ @''''@@@@----@@@) ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@---@@@@-@@@ @-@@@@@@@@--@ @@@@---@@@---@@@@-@@@ @@@@@@@@@@@@@@@@) @@@@@@@@@@@@@@@@) ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@---@@@@-@@@ @-@@@@@@@@--@ @@@@---@@@---@@@@-@@@ @@@@@@@@@@@@@@@@) ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@-@@-@@@@---@ @-@@@@@@@@--@ @-@-@@@-@-@@@-@@-@-@@ @@@@@@@@@@@@@@@@) @@@@@@@@@@@@@@@@) ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@-@@-@@@@---@ @-@@@@@@@@--@ @-@-@@@-@-@@@-@@-@-@@ @@@@@@@@@@@@@@@@) ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @-@@@@-----@@@ @-@@@@@@@@-@@ @-@-@@@-@-@@@-@-@-@-@ ))))))))))))))))) ))))))))))))))))) ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @-@@@@-----@@@ @-@@@@@@@@-@@ @-@-@@@-@-@@@-@-@-@-@ ))))))))))))))))) ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @-@@@@@@@@@@@@ @----------@@ @@@@---@@@---@@@@@-@@ ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @-@@@@@@@@@@@@ @----------@@ @@@@---@@@---@@@@@-@@ ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ ",
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . ",
|
||||||
|
@ -80,30 +80,30 @@ static char * master_low_xpm[] = {
|
||||||
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@'''@@@@@@>@>'''>@>'''>@>@@@>@>'''>@>'''>@>'''>@>'''>@>'''>@@@@@@@@@@@@@ @@@@@@ ",
|
" .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= . @@'''@@@@@@>@>'''>@>'''>@>@@@>@>'''>@>'''>@>'''>@>'''>@>'''>@@@@@@@@@@@@@ @@@@@@ ",
|
||||||
" ======================================================== . @'@@@'@@@@@'@@@@@'@@@@@'@'@@@'@'@@@@@'@@@@@@@@@'@'@@@'@'@@@'@@@@@@@@@@@@@ @@@@@@ ",
|
" ======================================================== . @'@@@'@@@@@'@@@@@'@@@@@'@'@@@'@'@@@@@'@@@@@@@@@'@'@@@'@'@@@'@@@@@@@@@@@@@ @@@@@@ ",
|
||||||
" . @'@@@'@@@@@'@@@@@'@@@@@'@'@@@'@'@@@@@'@@@@@@@@@'@'@@@'@'@@@'@@@@@@@@@@@@@ @@@@@@ ",
|
" . @'@@@'@@@@@'@@@@@'@@@@@'@'@@@'@'@@@@@'@@@@@@@@@'@'@@@'@'@@@'@@@@@@@@@@@@@ @@@@@@ ",
|
||||||
" . @>@@@>@@@@@>@>'''>@@'''>@>'''>@>'''>@>'''>@@@@@>@~'''~@>'''>@>'''>@@@@@@@ @@@@@@ ",
|
" . @>@@@>@@@@@>@>'''>@@'''>@>'''>@>'''>@>'''>@@@@@>@!'''!@>'''>@>'''>@@@@@@@ @@@@@@ ",
|
||||||
" . @'@@@'@@@@@'@'@@@@@@@@@'@@@@@'@@@@@'@'@@@'@@@@@'@'@@@'@@@@@'@@@@@@@@@@@@@ @@@@@@ ",
|
" . @'@@@'@@@@@'@'@@@@@@@@@'@@@@@'@@@@@'@'@@@'@@@@@'@'@@@'@@@@@'@@@@@@@@@@@@@ @@@@@@ ",
|
||||||
" . @'@@@'@@@@@'@'@@@@@@@@@'@@@@@'@@@@@'@'@@@'@@@@@'@'@@@'@@@@@'@@@@@@@@@@@@@ @@@@@@ ",
|
" . @'@@@'@@@@@'@'@@@@@@@@@'@@@@@'@@@@@'@'@@@'@@@@@'@'@@@'@@@@@'@@@@@@@@@@@@@ @@@@@@ ",
|
||||||
"................................................................. @@'''@@@@@@'@>'''>@>'''>@@@@@>@>'''>@>'''>@@@@@>@>'''>@>'''>@@@@@@@@@@@@@ @@@@'@ ",
|
"................................................................. @@'''@@@@@@'@>'''>@>'''>@@@@@>@>'''>@>'''>@@@@@>@>'''>@>'''>@@@@@@@@@@@@@ @@@@'@ ",
|
||||||
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
|
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
|
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
|
||||||
"@~'''~@>'''@@>'''>@>'''@@>'''>@>'''>@>'''>@>@@@>@@@>@@@@@@@>@>@@@>@>@@@@@'@@@'@>'''@@>'''>@>'''>@>'''>@>'''>@>'''>@>'''>@>@@@>@>@@@>@>@@@>@>@@@>@>@@@>@>'''>@",
|
"@!'''!@>'''@@>'''>@>'''@@>'''>@>'''>@>'''>@>@@@>@@@>@@@@@@@>@>@@@>@>@@@@@'@@@'@>'''@@>'''>@>'''>@>'''>@>'''>@>'''>@>'''>@>@@@>@>@@@>@>@@@>@>@@@>@>@@@>@>'''>@",
|
||||||
"@'@@@'@'@@@'@'@@@@@'@@@'@'@@@@@'@@@@@'@@@@@'@@@'@@@'@@@@@@@'@'@@@'@'@@@@@''@''@'@@@'@'@@@'@'@@@'@'@@@'@'@@@'@'@@@@@@@'@@@'@@@'@'@@@'@'@@@'@'@@@'@'@@@'@@@@@'@",
|
"@'@@@'@'@@@'@'@@@@@'@@@'@'@@@@@'@@@@@'@@@@@'@@@'@@@'@@@@@@@'@'@@@'@'@@@@@''@''@'@@@'@'@@@'@'@@@'@'@@@'@'@@@'@'@@@@@@@'@@@'@@@'@'@@@'@'@@@'@'@@@'@'@@@'@@@@@'@",
|
||||||
"@'@@@'@'@@@'@'@@@@@'@@@'@'@@@@@'@@@@@'@@@@@'@@@'@@@'@@@@@@@'@'@@'~@'@@@@@'@'@'@'@@@'@'@@@'@'@@@'@'@@@'@'@@@'@'@@@@@@@'@@@'@@@'@'@@@'@'@@@'@~'@'~@'@@@'@@@@'~@",
|
"@'@@@'@'@@@'@'@@@@@'@@@'@'@@@@@'@@@@@'@@@@@'@@@'@@@'@@@@@@@'@'@@'!@'@@@@@'@'@'@'@@@'@'@@@'@'@@@'@'@@@'@'@@@'@'@@@@@@@'@@@'@@@'@'@@@'@'@@@'@!'@'!@'@@@'@@@@'!@",
|
||||||
"@>'''>@>'''@@>@@@@@>@@@>@>'''@@>'''@@>~''>@>'''>@@@>@@@@@@@>@>''~@@>@@@@@>@@@>@>@@@>@>@@@>@>'''>@>'@@>@>'''@@>'''>@@@>@@@>@@@>@>@@@>@>@@@>@@~'~@@>'''>@@~'~@@",
|
"@>'''>@>'''@@>@@@@@>@@@>@>'''@@>'''@@>!''>@>'''>@@@>@@@@@@@>@>''!@@>@@@@@>@@@>@>@@@>@>@@@>@>'''>@>'@@>@>'''@@>'''>@@@>@@@>@@@>@>@@@>@>@@@>@@!'!@@>'''>@@!'!@@",
|
||||||
"@'@@@'@'@@@'@'@@@@@'@@@'@'@@@@@'@@@@@'@@@'@'@@@'@@@'@@@@@@@'@'@@'~@'@@@@@'@@@'@'@@@'@'@@@'@'@@@@@'@'@'@'@@@'@@@@@'@@@'@@@'@@@'@'@@@'@'@'@'@~'@'~@@@@@'@~'@@@@",
|
"@'@@@'@'@@@'@'@@@@@'@@@'@'@@@@@'@@@@@'@@@'@'@@@'@@@'@@@@@@@'@'@@'!@'@@@@@'@@@'@'@@@'@'@@@'@'@@@@@'@'@'@'@@@'@@@@@'@@@'@@@'@@@'@'@@@'@'@'@'@!'@'!@@@@@'@!'@@@@",
|
||||||
"@'@@@'@'@@@'@'@@@@@'@@@'@'@@@@@'@@@@@'@@@'@'@@@'@@@'@@@@@@@'@'@@@'@'@@@@@'@@@'@'@@@'@'@@@'@'@@@@@'@@''@'@@@'@@@@@'@@@'@@@'@@@'@'@@@'@''@''@'@@@'@@@@@'@'@@@@@",
|
"@'@@@'@'@@@'@'@@@@@'@@@'@'@@@@@'@@@@@'@@@'@'@@@'@@@'@@@@@@@'@'@@@'@'@@@@@'@@@'@'@@@'@'@@@'@'@@@@@'@@''@'@@@'@@@@@'@@@'@@@'@@@'@'@@@'@''@''@'@@@'@@@@@'@'@@@@@",
|
||||||
"@>@@@>@>'''@@>'''>@''''@@>'''>@'@@@@@>'''>@>@@@>@@@'@@@>'''>@>@@@>@>'''~@>@@@>@'@@@'@>'''>@>@@@@@>'''>@>@@@>@>'''>@@@>@@@~''''@@'''@@'@@@'@>@@@'@>'''>@>'''>@",
|
"@>@@@>@>'''@@>'''>@''''@@>'''>@'@@@@@>'''>@>@@@>@@@'@@@>'''>@>@@@>@>'''!@>@@@>@'@@@'@>'''>@>@@@@@>'''>@>@@@>@>'''>@@@>@@@!''''@@'''@@'@@@'@>@@@'@>'''>@>'''>@",
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
|
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@",
|
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@",
|
||||||
"@@;;;;@@@----!@!;;;;,@!;;;;!@!----!@!;;;;!@!;;;;,@!;;;;!@!;;;;,@!;;;;,@@@@@ @@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@ @@----@@@----@@@@@@@----@@@----@@ @@'---'@",
|
"@@;;;;@@@----~@~;;;;,@~;;;;~@~----~@~;;;;~@~;;;;,@~;;;;~@~;;;;,@~;;;;,@@@@@ @@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@ @@----@@@----@@@@@@@----@@@----@@ @@'---'@",
|
||||||
"@;@@@@;@-@@@@;@-@@@@;@-@@@@;@;@@@@;@;@@@@-@;@@@@-@-@@@@;@;@@@@;@;@@@@;@@;@@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @'@'@'-@",
|
"@;@@@@;@-@@@@;@-@@@@;@-@@@@;@;@@@@;@;@@@@-@;@@@@-@-@@@@;@;@@@@;@;@@@@;@@;@@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @'@'@'-@",
|
||||||
"@;@@@@;@-@@@@;@-@@@@;@-@@@@;@;@@@@;@;@@@@-@;@@@@-@-@@@@;@;@@@@;@;@@@@;@@;@@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @-'@'@-@",
|
"@;@@@@;@-@@@@;@-@@@@;@-@@@@;@;@@@@;@;@@@@-@;@@@@-@-@@@@;@;@@@@;@;@@@@;@@;@@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @-'@'@-@",
|
||||||
"@;@@@@;@-@@@@;@-@@@@;@-@@@@;@;@@@@;@;@@@@-@;@@@@-@-@@@@;@;@@@@;@;@@@@;@@@@@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @-@'@'-@",
|
"@;@@@@;@-@@@@;@-@@@@;@-@@@@;@;@@@@;@;@@@@-@;@@@@-@-@@@@;@;@@@@;@;@@@@;@@@@@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @-@'@'-@",
|
||||||
"@;@@@@;@-@@@@;@-@@@@;@-@@@@;@;@@@@;@;@@@@-@;@@@@-@-@@@@;@;@@@@;@;@@@@;@@@@@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @-'@'@'@",
|
"@;@@@@;@-@@@@;@-@@@@;@-@@@@;@;@@@@;@;@@@@-@;@@@@-@-@@@@;@;@@@@;@;@@@@;@@@@@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @-'@'@'@",
|
||||||
"@!----!@@----!@!;;;;!@!;;;;!@!;;;;!@!;;;;!@!;;;;!@@----!@!;;;;!@!;;;;!@@@@@ @!----!@!----!@@@@@!----!@!----!@ @@----@@@----@@@@@@@----@@@----@@ @'---'@@",
|
"@~----~@@----~@~;;;;~@~;;;;~@~;;;;~@~;;;;~@~;;;;~@@----~@~;;;;~@~;;;;~@@@@@ @~----~@~----~@@@@@~----~@~----~@ @@----@@@----@@@@@@@----@@@----@@ @'---'@@",
|
||||||
"@;@@@@;@-@@@@;@;@@@@-@-@@@@;@-@@@@;@-@@@@;@;@@@@;@-@@@@;@;@@@@;@-@@@@;@@@@@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @-@@@@-@",
|
"@;@@@@;@-@@@@;@;@@@@-@-@@@@;@-@@@@;@-@@@@;@;@@@@;@-@@@@;@;@@@@;@-@@@@;@@@@@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @-@@@@-@",
|
||||||
"@;@@@@;@-@@@@;@;@@@@-@-@@@@;@-@@@@;@-@@@@;@;@@@@;@-@@@@;@;@@@@;@-@@@@;@@@@@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @'''''-@",
|
"@;@@@@;@-@@@@;@;@@@@-@-@@@@;@-@@@@;@-@@@@;@;@@@@;@-@@@@;@;@@@@;@-@@@@;@@@@@ @;@@@@;@;@@@@;@@@@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@@@@-@@@@-@-@@@@-@ @'''''-@",
|
||||||
"@;@@@@;@-@@@@;@;@@@@-@-@@@@;@-@@@@;@-@@@@;@;@@@@;@-@@@@;@;@@@@;@-@@@@;@@;@@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @'@@@''@",
|
"@;@@@@;@-@@@@;@;@@@@-@-@@@@;@-@@@@;@-@@@@;@;@@@@;@-@@@@;@;@@@@;@-@@@@;@@;@@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @'@@@''@",
|
||||||
"@;@@@@;@-@@@@;@;@@@@-@-@@@@;@-@@@@;@-@@@@;@;@@@@;@-@@@@;@;@@@@;@-@@@@;@@;@@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @'@@@''@",
|
"@;@@@@;@-@@@@;@;@@@@-@-@@@@;@-@@@@;@-@@@@;@;@@@@;@-@@@@;@;@@@@;@-@@@@;@@;@@ @;@@@@;@;@@@@;@@;@@;@@@@;@;@@@@;@ @-@@@@-@-@@@@-@@-@@-@@@@-@-@@@@-@ @'@@@''@",
|
||||||
"@@;;;;@@@----!@!;;;;!@!;;;;!@@----!@!;;;;!@!;;;;!@@----!@!;;;;!@!;;;;!@@@@@ @@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@ @@----@@@----@@@@@@@----@@@----@@ @'''''@@",
|
"@@;;;;@@@----~@~;;;;~@~;;;;~@@----~@~;;;;~@~;;;;~@@----~@~;;;;~@~;;;;~@@@@@ @@;;;;@@@;;;;@@@@@@@;;;;@@@;;;;@@ @@----@@@----@@@@@@@----@@@----@@ @'''''@@",
|
||||||
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@"};
|
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@"};
|
||||||
|
|
|
@ -18,9 +18,12 @@ battery no ]
|
||||||
.RI -s
|
.RI -s
|
||||||
sample rate ]
|
sample rate ]
|
||||||
[
|
[
|
||||||
|
.RI -f
|
||||||
|
]
|
||||||
|
[
|
||||||
.RI -v
|
.RI -v
|
||||||
]
|
]
|
||||||
]
|
[
|
||||||
.RI -n
|
.RI -n
|
||||||
]
|
]
|
||||||
[
|
[
|
||||||
|
@ -99,6 +102,17 @@ minute. Minimum is 1, ie once a minute, default is 20, maximum is 600.
|
||||||
Disable blinking power glyph when charging. Note that it still blinks when
|
Disable blinking power glyph when charging. Note that it still blinks when
|
||||||
the battery reports its capacity state as critical.
|
the battery reports its capacity state as critical.
|
||||||
.TP
|
.TP
|
||||||
|
.B \-f
|
||||||
|
Force the use of capacity mode for calculating time remaining. By defalt
|
||||||
|
.B wmacpi
|
||||||
|
will use the reported values of remaining capacity and present rate to
|
||||||
|
calculate the time remaining on battery. This flag will force the use
|
||||||
|
of the remaining capacity and time samples to calculate the present
|
||||||
|
rate of drain, and from there the time remaining. Note that this mode
|
||||||
|
of calculation generally underreports the time remaining. This mode
|
||||||
|
works around certain buggy ACPI BIOSes that fail to report the current
|
||||||
|
rate.
|
||||||
|
.TP
|
||||||
.B \-w
|
.B \-w
|
||||||
Run wmacpi in command line mode - this operates identically to
|
Run wmacpi in command line mode - this operates identically to
|
||||||
.B acpi
|
.B acpi
|
||||||
|
@ -152,4 +166,4 @@ This manual page was originally written by Simon Richter
|
||||||
<sjr@debian.org> for the Debian GNU/Linux system, and then updated by
|
<sjr@debian.org> for the Debian GNU/Linux system, and then updated by
|
||||||
Simon Fowler.
|
Simon Fowler.
|
||||||
.br
|
.br
|
||||||
Last modification by Simon Fowler <simon@dreamcraft.com.au>, 2004-04-15.
|
Last modification by Simon Fowler <simon@dreamcraft.com.au>, 2004-08-15.
|
||||||
|
|
379
wmacpi/wmacpi.c
379
wmacpi/wmacpi.c
|
@ -18,6 +18,8 @@
|
||||||
|
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
|
|
||||||
|
#include <dockapp.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -35,56 +37,48 @@
|
||||||
#include "libacpi.h"
|
#include "libacpi.h"
|
||||||
#include "wmacpi.h"
|
#include "wmacpi.h"
|
||||||
|
|
||||||
#define WMACPI_VER "1.99r6"
|
#define WMACPI_VER "1.99r7"
|
||||||
|
|
||||||
/* main pixmap */
|
/* main pixmap */
|
||||||
#ifdef LOW_COLOR
|
#ifdef LOW_COLOR
|
||||||
#include "master_low.xpm"
|
#include "master_low.xpm"
|
||||||
|
static char **master_xpm = master_low_xpm;
|
||||||
#else
|
#else
|
||||||
#include "master.xpm"
|
#include "master.xpm"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct {
|
struct dockapp {
|
||||||
Display *display; /* X11 display struct */
|
Display *display; /* display */
|
||||||
int screen; /* current screen */
|
Window win; /* main window */
|
||||||
Window root; /* root window */
|
Pixmap pixmap; /* main pixmap */
|
||||||
Window win; /* one window */
|
Pixmap mask; /* mask pixmap */
|
||||||
Window iconwin; /* another one */
|
|
||||||
Pixmap pixmap; /* UI pixmap, window pixmap */
|
|
||||||
Pixmap mask; /* mask pixmap for shape */
|
|
||||||
GC gc; /* main drawing GC */
|
|
||||||
Pixmap text; /* pixmap for text scroller */
|
Pixmap text; /* pixmap for text scroller */
|
||||||
|
unsigned width; /* width of pixmap */
|
||||||
|
unsigned height; /* height of pixmap */
|
||||||
|
int screen; /* current screen */
|
||||||
int tw; /* text width inside text pixmap */
|
int tw; /* text width inside text pixmap */
|
||||||
int update; /* need to redraw? */
|
int update; /* need to redraw? */
|
||||||
int blink; /* should we blink the LED? (critical battery) */
|
int blink; /* should we blink the LED? (critical battery) */
|
||||||
int bell; /* bell on critical low, or not? */
|
int bell; /* bell on critical low, or not? */
|
||||||
int scroll; /* scroll message text? */
|
int scroll; /* scroll message text? */
|
||||||
int scroll_reset; /* reset the scrolling text */
|
int scroll_reset; /* reset the scrolling text */
|
||||||
} Dockapp;
|
};
|
||||||
|
|
||||||
/* globals */
|
/* globals */
|
||||||
Dockapp *dockapp;
|
struct dockapp *dockapp;
|
||||||
global_t *globals;
|
/* global_t *globals; */
|
||||||
|
|
||||||
/* this gives us a variable scroll rate, depending on the importance of the
|
/* this gives us a variable scroll rate, depending on the importance of the
|
||||||
* message . . . */
|
* message . . . */
|
||||||
#define DEFAULT_SCROLL_RESET 150;
|
#define DEFAULT_SCROLL_RESET 150;
|
||||||
int scroll_reset = DEFAULT_SCROLL_RESET;
|
int scroll_reset = DEFAULT_SCROLL_RESET;
|
||||||
|
|
||||||
/* proto for local stuff */
|
/* copy a chunk of pixmap around the app */
|
||||||
static void new_window(char *name);
|
static void copy_xpm_area(int x, int y, int w, int h, int dx, int dy)
|
||||||
static int open_display(char *display);
|
{
|
||||||
static void redraw_window(void);
|
XCopyArea(DADisplay, dockapp->pixmap, dockapp->pixmap,
|
||||||
static void render_text(char *string);
|
DAGC, x, y, w, h, dx, dy);
|
||||||
static void scroll_text(void);
|
dockapp->update = 1;
|
||||||
static void display_percentage(int percent);
|
|
||||||
static void display_time(int minutes);
|
|
||||||
|
|
||||||
#define copy_xpm_area(x, y, w, h, dx, dy) \
|
|
||||||
{ \
|
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->pixmap, \
|
|
||||||
dockapp->gc, x, y, w, h, dx, dy); \
|
|
||||||
dockapp->update = 1; \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* display AC power symbol */
|
/* display AC power symbol */
|
||||||
|
@ -127,77 +121,35 @@ static void reset_scroll(void) {
|
||||||
dockapp->scroll_reset = 1;
|
dockapp->scroll_reset = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void clear_text_area(void) {
|
||||||
|
copy_xpm_area(66, 9, 52, 7, 6, 50);
|
||||||
|
}
|
||||||
|
|
||||||
static void redraw_window(void)
|
static void redraw_window(void)
|
||||||
{
|
{
|
||||||
if (dockapp->update) {
|
if (dockapp->update) {
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->iconwin,
|
|
||||||
dockapp->gc, 0, 0, 64, 64, 0, 0);
|
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->win,
|
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->win,
|
||||||
dockapp->gc, 0, 0, 64, 64, 0, 0);
|
DAGC, 0, 0, 64, 64, 0, 0);
|
||||||
dockapp->update = 0;
|
dockapp->update = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void new_window(char *name)
|
static void new_window(char *display, char *name, int argc, char **argv)
|
||||||
{
|
{
|
||||||
XpmAttributes attr;
|
/* Initialise the dockapp window and appicon */
|
||||||
Pixel fg, bg;
|
DAInitialize(display, name, 64, 64, argc, argv);
|
||||||
XGCValues gcval;
|
dockapp->display = DADisplay;
|
||||||
XSizeHints sizehints;
|
dockapp->win = DAWindow;
|
||||||
XClassHint classhint;
|
|
||||||
XWMHints wmhints;
|
|
||||||
|
|
||||||
dockapp->screen = DefaultScreen(dockapp->display);
|
|
||||||
dockapp->root = DefaultRootWindow(dockapp->display);
|
|
||||||
|
|
||||||
sizehints.flags = USSize | USPosition;
|
|
||||||
sizehints.width = 64;
|
|
||||||
sizehints.height = 64;
|
|
||||||
|
|
||||||
fg = BlackPixel(dockapp->display, dockapp->screen);
|
|
||||||
bg = WhitePixel(dockapp->display, dockapp->screen);
|
|
||||||
|
|
||||||
dockapp->win = XCreateSimpleWindow(dockapp->display, dockapp->root,
|
|
||||||
0, 0, sizehints.width,
|
|
||||||
sizehints.height, 1, fg, bg);
|
|
||||||
dockapp->iconwin =
|
|
||||||
XCreateSimpleWindow(dockapp->display, dockapp->win, 0, 0,
|
|
||||||
sizehints.width, sizehints.height, 1, fg, bg);
|
|
||||||
|
|
||||||
XSetWMNormalHints(dockapp->display, dockapp->win, &sizehints);
|
|
||||||
classhint.res_name = name;
|
|
||||||
classhint.res_class = name;
|
|
||||||
XSetClassHint(dockapp->display, dockapp->win, &classhint);
|
|
||||||
|
|
||||||
XSelectInput(dockapp->display, dockapp->win,
|
XSelectInput(dockapp->display, dockapp->win,
|
||||||
ExposureMask | ButtonPressMask | ButtonReleaseMask |
|
ExposureMask | ButtonPressMask | ButtonReleaseMask |
|
||||||
StructureNotifyMask);
|
StructureNotifyMask);
|
||||||
XSelectInput(dockapp->display, dockapp->iconwin,
|
|
||||||
ExposureMask | ButtonPressMask | ButtonReleaseMask |
|
|
||||||
StructureNotifyMask);
|
|
||||||
|
|
||||||
XStoreName(dockapp->display, dockapp->win, name);
|
/* create the main pixmap . . . */
|
||||||
XSetIconName(dockapp->display, dockapp->win, name);
|
DAMakePixmapFromData(master_xpm, &dockapp->pixmap, &dockapp->mask,
|
||||||
|
&dockapp->width, &dockapp->height);
|
||||||
gcval.foreground = fg;
|
DASetPixmap(dockapp->pixmap);
|
||||||
gcval.background = bg;
|
DASetShape(dockapp->mask);
|
||||||
gcval.graphics_exposures = False;
|
|
||||||
|
|
||||||
dockapp->gc =
|
|
||||||
XCreateGC(dockapp->display, dockapp->win,
|
|
||||||
GCForeground | GCBackground | GCGraphicsExposures,
|
|
||||||
&gcval);
|
|
||||||
|
|
||||||
attr.exactColors = 0;
|
|
||||||
attr.alloc_close_colors = 1;
|
|
||||||
attr.closeness = 1L << 15;
|
|
||||||
attr.valuemask = XpmExactColors | XpmAllocCloseColors | XpmCloseness;
|
|
||||||
if (XpmCreatePixmapFromData(dockapp->display, dockapp->win,
|
|
||||||
master_xpm, &dockapp->pixmap,
|
|
||||||
&dockapp->mask, &attr) != XpmSuccess) {
|
|
||||||
pfatal("FATAL: Not enough colors for main pixmap!\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* text area is 318x7, or 53 characters long */
|
/* text area is 318x7, or 53 characters long */
|
||||||
dockapp->text = XCreatePixmap(dockapp->display, dockapp->win, 318, 7,
|
dockapp->text = XCreatePixmap(dockapp->display, dockapp->win, 318, 7,
|
||||||
|
@ -207,23 +159,87 @@ static void new_window(char *name)
|
||||||
pfatal("FATAL: Cannot create text scroll pixmap!\n");
|
pfatal("FATAL: Cannot create text scroll pixmap!\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
DAShow();
|
||||||
|
}
|
||||||
|
|
||||||
XShapeCombineMask(dockapp->display, dockapp->win, ShapeBounding, 0, 0,
|
static void copy_to_text_buffer(int sx, int sy, int w, int h, int dx, int dy)
|
||||||
dockapp->mask, ShapeSet);
|
{
|
||||||
XShapeCombineMask(dockapp->display, dockapp->iconwin, ShapeBounding, 0,
|
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
|
||||||
0, dockapp->mask, ShapeSet);
|
DAGC, sx, sy, w, h, dx, dy);
|
||||||
|
}
|
||||||
|
|
||||||
wmhints.initial_state = WithdrawnState;
|
static void copy_to_text_area(int sx, int sy, int w, int h, int dx, int dy)
|
||||||
wmhints.flags = StateHint;
|
{
|
||||||
wmhints.icon_window = dockapp->iconwin;
|
XCopyArea(dockapp->display, dockapp->text, dockapp->pixmap,
|
||||||
wmhints.icon_x = sizehints.x;
|
DAGC, sx, sy, w, h, dx, dy);
|
||||||
wmhints.icon_y = sizehints.y;
|
}
|
||||||
wmhints.window_group = dockapp->win;
|
|
||||||
wmhints.flags =
|
|
||||||
StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
|
|
||||||
XSetWMHints(dockapp->display, dockapp->win, &wmhints);
|
|
||||||
|
|
||||||
XMapWindow(dockapp->display, dockapp->win);
|
static void scroll_text(void)
|
||||||
|
{
|
||||||
|
static int start, end, stop;
|
||||||
|
int x = 6; /* x coord of the start of the text area */
|
||||||
|
int y = 50; /* y coord */
|
||||||
|
int width = 52; /* width of the text area */
|
||||||
|
int height = 7; /* height of the text area */
|
||||||
|
int tw = dockapp->tw; /* width of the rendered text */
|
||||||
|
int sx, dx, w;
|
||||||
|
|
||||||
|
if (!dockapp->scroll)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Conceptually this is viewing the text through a scrolling
|
||||||
|
* window - the window starts out with the end immediately before
|
||||||
|
* the text, and stops when the start of the window is immediately
|
||||||
|
* after the end of the text.
|
||||||
|
*
|
||||||
|
* We begin with the start of the window at pixel (0 - width) and
|
||||||
|
* as we scroll we render only the portion of the window above
|
||||||
|
* pixel 0. The destination of the copy during this period starts
|
||||||
|
* out at the end of the text area and works left as more of the
|
||||||
|
* text is being copied, until a full window is being copied.
|
||||||
|
*
|
||||||
|
* As the end of the window moves out past the end of the text, we
|
||||||
|
* want to keep the destination at the beginning of the text area,
|
||||||
|
* but copy a smaller and smaller chunk of the text. Eventually the
|
||||||
|
* start of the window will scroll past the end of the text, at
|
||||||
|
* which point we stop doing any work and wait to be reset.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (dockapp->scroll_reset) {
|
||||||
|
start = 0 - width;
|
||||||
|
end = 0;
|
||||||
|
stop = 0;
|
||||||
|
clear_text_area();
|
||||||
|
dockapp->scroll_reset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stop)
|
||||||
|
return;
|
||||||
|
|
||||||
|
w = 52;
|
||||||
|
if (end < 52)
|
||||||
|
w = end;
|
||||||
|
else if (end > tw)
|
||||||
|
w = 52 - (end - tw);
|
||||||
|
|
||||||
|
dx = x + 52 - w;
|
||||||
|
if (end > tw)
|
||||||
|
dx = x;
|
||||||
|
|
||||||
|
sx = start;
|
||||||
|
if (start < 0)
|
||||||
|
sx = 0;
|
||||||
|
|
||||||
|
if (start > tw)
|
||||||
|
stop = 1;
|
||||||
|
|
||||||
|
clear_text_area();
|
||||||
|
copy_to_text_area(sx, 0, w, height, dx, y);
|
||||||
|
start += 2;
|
||||||
|
end += 2;
|
||||||
|
|
||||||
|
dockapp->update = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void render_text(char *string)
|
static void render_text(char *string)
|
||||||
|
@ -241,8 +257,7 @@ static void render_text(char *string)
|
||||||
|
|
||||||
/* prepare the text area by clearing it */
|
/* prepare the text area by clearing it */
|
||||||
for (i = 0; i < 54; i++) {
|
for (i = 0; i < 54; i++) {
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
|
copy_to_text_buffer(133, 57, 6, 8, i * 6, 0);
|
||||||
dockapp->gc, 133, 57, 6, 8, i * 6, 0);
|
|
||||||
}
|
}
|
||||||
k = 0;
|
k = 0;
|
||||||
|
|
||||||
|
@ -250,18 +265,14 @@ static void render_text(char *string)
|
||||||
c = toupper(string[i]);
|
c = toupper(string[i]);
|
||||||
if (c >= 'A' && c <= 'Z') { /* letter */
|
if (c >= 'A' && c <= 'Z') { /* letter */
|
||||||
c = c - 'A';
|
c = c - 'A';
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
|
copy_to_text_buffer(c * 6, 67, 6, 7, k, 0);
|
||||||
dockapp->gc, c * 6, 67, 6, 7, k, 0);
|
|
||||||
} else if (c >= '0' && c <= '9') { /* number */
|
} else if (c >= '0' && c <= '9') { /* number */
|
||||||
c = c - '0';
|
c = c - '0';
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
|
copy_to_text_buffer(c * 6 + 66, 58, 6, 7, k, 0);
|
||||||
dockapp->gc, c * 6 + 66, 58, 6, 7, k, 0);
|
|
||||||
} else if (c == '.') {
|
} else if (c == '.') {
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
|
copy_to_text_buffer(140, 58, 6, 7, k, 0);
|
||||||
dockapp->gc, 140, 58, 6, 7, k, 0);
|
|
||||||
} else if (c == '-') {
|
} else if (c == '-') {
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
|
copy_to_text_buffer(126, 58, 6, 7, k, 0);
|
||||||
dockapp->gc, 126, 58, 6, 7, k, 0);
|
|
||||||
}
|
}
|
||||||
k += 6;
|
k += 6;
|
||||||
}
|
}
|
||||||
|
@ -271,69 +282,14 @@ static void render_text(char *string)
|
||||||
scroll_text();
|
scroll_text();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int open_display(char *display)
|
|
||||||
{
|
|
||||||
dockapp->display = XOpenDisplay(display);
|
|
||||||
if (!dockapp->display) {
|
|
||||||
perr("Unable to open display '%s'\n", display);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void scroll_text(void)
|
|
||||||
{
|
|
||||||
static int pos, first, stop;
|
|
||||||
int x = 6;
|
|
||||||
int y = 50;
|
|
||||||
int width = 52;
|
|
||||||
int tw = dockapp->tw;
|
|
||||||
|
|
||||||
if (!dockapp->scroll)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (dockapp->scroll_reset) {
|
|
||||||
pos = 0;
|
|
||||||
first = 0;
|
|
||||||
stop = 0;
|
|
||||||
XCopyArea(dockapp->display, dockapp->pixmap, dockapp->text,
|
|
||||||
dockapp->gc, 0, 0, width, 7, x, y);
|
|
||||||
dockapp->scroll_reset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stop) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((first == 0) && pos == 0) {
|
|
||||||
pos = width;
|
|
||||||
first = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pos == (0 - tw - 2)) {
|
|
||||||
first = 1;
|
|
||||||
pos = width;
|
|
||||||
stop = 1;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pos -= 2;
|
|
||||||
|
|
||||||
if (pos > 0) {
|
|
||||||
copy_xpm_area(66, 9, pos, 7, x, y); /* clear */
|
|
||||||
XCopyArea(dockapp->display, dockapp->text, dockapp->pixmap,
|
|
||||||
dockapp->gc, 0, 0, width - pos, 7, x + pos, y);
|
|
||||||
} else { /* don't need to clear, already in text */
|
|
||||||
XCopyArea(dockapp->display, dockapp->text, dockapp->pixmap,
|
|
||||||
dockapp->gc, abs(pos), 0, width, 7, x, y);
|
|
||||||
}
|
|
||||||
dockapp->update = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void display_percentage(int percent)
|
static void display_percentage(int percent)
|
||||||
{
|
{
|
||||||
static int op = -1;
|
static int op = -1;
|
||||||
static unsigned int obar;
|
static unsigned int obar;
|
||||||
unsigned int bar;
|
unsigned int bar;
|
||||||
|
int width = 54; /* width of the bar */
|
||||||
|
float ratio = 100.0/width; /* ratio between the current percentage
|
||||||
|
* and the number of pixels in the bar */
|
||||||
|
|
||||||
if (percent == -1)
|
if (percent == -1)
|
||||||
percent = 0;
|
percent = 0;
|
||||||
|
@ -355,7 +311,7 @@ static void display_percentage(int percent)
|
||||||
copy_xpm_area(95, 37, 21, 9, 37, 16); /* 100% */
|
copy_xpm_area(95, 37, 21, 9, 37, 16); /* 100% */
|
||||||
op = percent;
|
op = percent;
|
||||||
|
|
||||||
bar = percent / 1.8518;
|
bar = (int)((float)percent / ratio);
|
||||||
|
|
||||||
if (bar == obar)
|
if (bar == obar)
|
||||||
return;
|
return;
|
||||||
|
@ -454,7 +410,7 @@ static void blink_battery_glyph(void)
|
||||||
really_blink_battery_glyph();
|
really_blink_battery_glyph();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_power_panel(void)
|
static void set_power_panel(global_t *globals)
|
||||||
{
|
{
|
||||||
enum panel_states power = PS_NULL;
|
enum panel_states power = PS_NULL;
|
||||||
battery_t *binfo = globals->binfo;
|
battery_t *binfo = globals->binfo;
|
||||||
|
@ -477,7 +433,7 @@ static void set_power_panel(void)
|
||||||
if (binfo->charge_state == CHARGE)
|
if (binfo->charge_state == CHARGE)
|
||||||
blink_power_glyph();
|
blink_power_glyph();
|
||||||
|
|
||||||
if (binfo->state == CRIT)
|
if ((binfo->state == CRIT) && (ap->power == BATT))
|
||||||
blink_battery_glyph();
|
blink_battery_glyph();
|
||||||
|
|
||||||
if (binfo->state == HARD_CRIT) {
|
if (binfo->state == HARD_CRIT) {
|
||||||
|
@ -527,7 +483,7 @@ enum messages {
|
||||||
M_NULL, /* empty starting state */
|
M_NULL, /* empty starting state */
|
||||||
};
|
};
|
||||||
|
|
||||||
static void set_message(void)
|
static void set_message(global_t *globals)
|
||||||
{
|
{
|
||||||
static enum messages state = M_NULL;
|
static enum messages state = M_NULL;
|
||||||
battery_t *binfo = globals->binfo;
|
battery_t *binfo = globals->binfo;
|
||||||
|
@ -583,7 +539,7 @@ static void set_message(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_time_display(void)
|
void set_time_display(global_t *globals)
|
||||||
{
|
{
|
||||||
battery_t *binfo = &batteries[battery_no];
|
battery_t *binfo = &batteries[battery_no];
|
||||||
|
|
||||||
|
@ -595,30 +551,16 @@ void set_time_display(void)
|
||||||
invalid_time_display();
|
invalid_time_display();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* This should really be fixed so that it can handle more than two batteries.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void set_id_1(void)
|
|
||||||
{
|
|
||||||
copy_xpm_area(118, 38, 15, 15, 44, 30);
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_id_2(void)
|
|
||||||
{
|
|
||||||
copy_xpm_area(136, 38, 15, 15, 44, 30);
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_batt_id_area(int bno)
|
void set_batt_id_area(int bno)
|
||||||
{
|
{
|
||||||
switch(bno) {
|
int w = 7; /* Width of the number */
|
||||||
case 0:
|
int h = 11; /* Height of the number */
|
||||||
set_id_1();
|
int dx = 50; /* x coord of the target area */
|
||||||
break;
|
int dy = 31; /* y coord of the target area */
|
||||||
case 1:
|
int sx = (bno + 1) * 7; /* source x coord */
|
||||||
set_id_2();
|
int sy = 76; /* source y coord */
|
||||||
break;
|
|
||||||
}
|
copy_xpm_area(sx, sy, w, h, dx, dy);
|
||||||
}
|
}
|
||||||
|
|
||||||
void usage(char *name)
|
void usage(char *name)
|
||||||
|
@ -632,6 +574,7 @@ void usage(char *name)
|
||||||
"-m <battery number>\tbattery number to monitor\n"
|
"-m <battery number>\tbattery number to monitor\n"
|
||||||
"-s <sample rate>\tnumber of times per minute to sample battery information\n"
|
"-s <sample rate>\tnumber of times per minute to sample battery information\n"
|
||||||
"\t\t\tdefault 20 (once every three seconds)\n"
|
"\t\t\tdefault 20 (once every three seconds)\n"
|
||||||
|
"-f\t\t\tforce the use of capacity mode for calculating time remaining\n"
|
||||||
"-n\t\t\tdo not blink\n"
|
"-n\t\t\tdo not blink\n"
|
||||||
"-w\t\t\trun in command line mode\n"
|
"-w\t\t\trun in command line mode\n"
|
||||||
"-a <samples>\t\tsamples to average over (cli mode only)\n"
|
"-a <samples>\t\tsamples to average over (cli mode only)\n"
|
||||||
|
@ -647,7 +590,7 @@ void print_version(void)
|
||||||
printf(" Using libacpi version %s\n", LIBACPI_VER);
|
printf(" Using libacpi version %s\n", LIBACPI_VER);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cli_wmacpi(int samples)
|
void cli_wmacpi(global_t *globals, int samples)
|
||||||
{
|
{
|
||||||
int i, j, sleep_time = 0;
|
int i, j, sleep_time = 0;
|
||||||
battery_t *binfo;
|
battery_t *binfo;
|
||||||
|
@ -660,8 +603,8 @@ void cli_wmacpi(int samples)
|
||||||
/* we want to acquire samples over some period of time, so . . . */
|
/* we want to acquire samples over some period of time, so . . . */
|
||||||
for(i = 0; i < samples + 2; i++) {
|
for(i = 0; i < samples + 2; i++) {
|
||||||
for(j = 0; j < globals->battery_count; j++)
|
for(j = 0; j < globals->battery_count; j++)
|
||||||
acquire_batt_info(j);
|
acquire_batt_info(globals, j);
|
||||||
acquire_global_info();
|
acquire_global_info(globals);
|
||||||
usleep(sleep_time);
|
usleep(sleep_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -709,9 +652,11 @@ int main(int argc, char **argv)
|
||||||
int sleep_rate = 10;
|
int sleep_rate = 10;
|
||||||
int sleep_time = 1000000/sleep_rate;
|
int sleep_time = 1000000/sleep_rate;
|
||||||
int scroll_count = 0;
|
int scroll_count = 0;
|
||||||
|
enum rtime_mode rt_mode = RT_RATE;
|
||||||
battery_t *binfo;
|
battery_t *binfo;
|
||||||
|
global_t *globals;
|
||||||
|
|
||||||
dockapp = calloc(1, sizeof(Dockapp));
|
dockapp = calloc(1, sizeof(struct dockapp));
|
||||||
globals = calloc(1, sizeof(global_t));
|
globals = calloc(1, sizeof(global_t));
|
||||||
|
|
||||||
dockapp->blink = 1;
|
dockapp->blink = 1;
|
||||||
|
@ -731,7 +676,7 @@ int main(int argc, char **argv)
|
||||||
* are available /before/ we can decide if the battery we want to
|
* are available /before/ we can decide if the battery we want to
|
||||||
* monitor is available. */
|
* monitor is available. */
|
||||||
/* parse command-line options */
|
/* parse command-line options */
|
||||||
while ((ch = getopt(argc, argv, "d:c:m:s:a:hnwbrvV")) != EOF) {
|
while ((ch = getopt(argc, argv, "d:c:m:s:a:fhnwbrvV")) != EOF) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 'c':
|
case 'c':
|
||||||
if (optarg) {
|
if (optarg) {
|
||||||
|
@ -768,6 +713,9 @@ int main(int argc, char **argv)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'f':
|
||||||
|
rt_mode = RT_CAP;
|
||||||
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -805,10 +753,12 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (power_init())
|
if (power_init(globals))
|
||||||
/* power_init functions handle printing error messages */
|
/* power_init functions handle printing error messages */
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
|
globals->rt_mode = rt_mode;
|
||||||
|
|
||||||
if (battery_no > globals->battery_count) {
|
if (battery_no > globals->battery_count) {
|
||||||
pfatal("Battery %d not available for monitoring.\n", battery_no);
|
pfatal("Battery %d not available for monitoring.\n", battery_no);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -816,30 +766,26 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
/* check for cli mode */
|
/* check for cli mode */
|
||||||
if (cli) {
|
if (cli) {
|
||||||
cli_wmacpi(samples);
|
cli_wmacpi(globals, samples);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
battery_no--;
|
battery_no--;
|
||||||
|
|
||||||
/* open local or command-line specified display */
|
|
||||||
if (open_display(display))
|
|
||||||
exit(1);
|
|
||||||
|
|
||||||
/* make new dockapp window */
|
/* make new dockapp window */
|
||||||
/* Don't even /think/ of asking me why, but if I set the window name to
|
/* Don't even /think/ of asking me why, but if I set the window name to
|
||||||
* "acpi", the app refuses to dock properly - it's just plain /weird/.
|
* "acpi", the app refuses to dock properly - it's just plain /weird/.
|
||||||
* So, wmacpi it is . . . */
|
* So, wmacpi it is . . . */
|
||||||
new_window("wmacpi");
|
new_window(display, "wmacpi", argc, argv);
|
||||||
|
|
||||||
/* get initial statistics */
|
/* get initial statistics */
|
||||||
acquire_all_info();
|
acquire_all_info(globals);
|
||||||
binfo = &batteries[battery_no];
|
binfo = &batteries[battery_no];
|
||||||
globals->binfo = binfo;
|
globals->binfo = binfo;
|
||||||
pinfo("monitoring battery %s\n", binfo->name);
|
pinfo("monitoring battery %s\n", binfo->name);
|
||||||
clear_time_display();
|
clear_time_display();
|
||||||
set_power_panel();
|
set_power_panel(globals);
|
||||||
set_message();
|
set_message(globals);
|
||||||
set_batt_id_area(battery_no);
|
set_batt_id_area(battery_no);
|
||||||
|
|
||||||
/* main loop */
|
/* main loop */
|
||||||
|
@ -868,6 +814,7 @@ int main(int argc, char **argv)
|
||||||
binfo = globals->binfo;
|
binfo = globals->binfo;
|
||||||
pinfo("changing to monitor battery %d\n", battery_no + 1);
|
pinfo("changing to monitor battery %d\n", battery_no + 1);
|
||||||
set_batt_id_area(battery_no);
|
set_batt_id_area(battery_no);
|
||||||
|
dockapp->update = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -899,19 +846,19 @@ int main(int argc, char **argv)
|
||||||
* translates to 600 sleeps. So, we change the default sample
|
* translates to 600 sleeps. So, we change the default sample
|
||||||
* rate to 20, and the calculation below becomes . . .*/
|
* rate to 20, and the calculation below becomes . . .*/
|
||||||
if (sample_count++ == ((sleep_rate*60)/samplerate)) {
|
if (sample_count++ == ((sleep_rate*60)/samplerate)) {
|
||||||
acquire_all_info();
|
acquire_all_info(globals);
|
||||||
|
|
||||||
/* we need to be able to reinitialise batteries and adapters, because
|
/* we need to be able to reinitialise batteries and adapters, because
|
||||||
* they change - you can hotplug batteries on most laptops these days
|
* they change - you can hotplug batteries on most laptops these days
|
||||||
* and who knows what kind of shit will be happening soon . . . */
|
* and who knows what kind of shit will be happening soon . . . */
|
||||||
if (batt_count++ >= batt_reinit) {
|
if (batt_count++ >= batt_reinit) {
|
||||||
if(reinit_batteries())
|
if(reinit_batteries(globals))
|
||||||
pfatal("Oh my god, the batteries are gone!\n");
|
pfatal("Oh my god, the batteries are gone!\n");
|
||||||
batt_count = 0;
|
batt_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ac_count++ >= ac_reinit) {
|
if (ac_count++ >= ac_reinit) {
|
||||||
if(reinit_ac_adapters())
|
if(reinit_ac_adapters(globals))
|
||||||
pfatal("What happened to our AC adapters?!?\n");
|
pfatal("What happened to our AC adapters?!?\n");
|
||||||
ac_count = 0;
|
ac_count = 0;
|
||||||
}
|
}
|
||||||
|
@ -934,9 +881,9 @@ int main(int argc, char **argv)
|
||||||
* much time remained until the batteries were fully charged . . .
|
* much time remained until the batteries were fully charged . . .
|
||||||
* That would be rather useful, though given it would vary rather a lot
|
* That would be rather useful, though given it would vary rather a lot
|
||||||
* it seems likely that it'd be little more than a rough guesstimate. */
|
* it seems likely that it'd be little more than a rough guesstimate. */
|
||||||
set_time_display();
|
set_time_display(globals);
|
||||||
set_power_panel();
|
set_power_panel(globals);
|
||||||
set_message();
|
set_message(globals);
|
||||||
display_percentage(binfo->percentage);
|
display_percentage(binfo->percentage);
|
||||||
scroll_text();
|
scroll_text();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue