Home > Xfce, Xfwm4 > XFwm4: XPM file

XFwm4: XPM file

18 Ottobre 2019

Il formato XPM è il formato standard dei pixmap gestiti da X Window.
XPM salva i dati dell’immagine in formato ASCII, formattandoli sottoforma di array di stringhe in formato Standard C. La comodità quindi, è di poter editare tale immagine con un comune text-editor.

Sintassi di un file XPM

Un file XPM deve essere strutturato secondo lo schema seguente:

/* XPM */
static char * <pixmap_name>[] = {
<Values>
<Colors>
<Pixels>
<Extensions>
};

Un file XPM deve sempre cominciare con la stringa XPM delimitata dai token-comments di Standard C.

/* XPM */

Subito dopo il commento di identificazione del file XPM, troviamo la definizione dell’array, che conterrà i dati del pixmap, in formato stringa.

static char * <pixmap_name>[] = {
...
};

All’interno dell’array, quindi, troviamo la definizione e i dati riguardando il pixmap.

<Values>
<Colors>
<Pixels>
<Extensions>

– Values

La sezione definisce, con 6 integer in base 10, come sarà costituito il pixmap, dalle dimensioni al numero di colori utilizzati.
La sintassi della sezione è quindi la seguente:

<width/columns> <height/rows> <numcolors> <cpp> [<x_hotspot><y_hotspot>] [XPMEXT]

dove:
: la larghezza (numero di colonne) del pixmap;
: l’altezza (numero di righe) del pixmap;
: il numero di colori utilizzati nel pixmap;
: chars per pixel, ovvero il numero di caratteri utilizzati per ogni pixel;
[]: opzionale ed indica le coordinate del hotspot dell’immagine;
[XPMEXT]: opzionale, indica che in fondo al file, vengono utilizzate informazioni sul pixmap supplementari.

– Colors

La sezione definisce i caratteri ASCII che difiniscono i colori utilizzati nel pixmap.
Qui verranno definite tante stringhe, quanti saranno i colori utilizzati.
La sintassi per la definizione del colore è la seguente:

<character> { <key> <color> } { <key> <color> }

dove:
: il tipo di carattere utilizzato per la rappresentazione il singolo pixel, nel pixmap;
: indica il tipo di colore/dato utilizzato e può assumere uno dei seguenti valori:

– m: Mono
– s: Symbolic name
– g4: 4 livelli di Scala di Grigio
– g: Sacla di Grigio (più di 4 livelli)
– c: Color

Il symbolic name specifica i colori in fase di caricamento e non verranno quindi generati all’interno del file.
: il colorname in formato RGB esadecimale, preceduto da # (es. #FFFFFF)

Passare a una stringa None significa che il colore è trasparente.

– Pixels

La sezione contiene i dati del bitmap, ovvero un’area composte da tante righe (), dove ogni riga è composta * .
Ogni deve essere un gruppo definito nella sezione .
In sostanza viene rappresentata l’immagine tramite caratteri.

– Extensions

La sezione contiene dati supplementari e deve essere dichiarata all’inizio nella sezione con un assposito flag.
Ogni Extensions supplementare si dichiara a fine file con la seguente sintassi:

XPMEXT <extension-name> <extension-data>

oppure si indica il nome della extension e nella sottosezione, si indicano le multiple extension-data:

XPMEXT <extension-name> 
    <extension-data-1>
    <extension-data-2>

terminata la definizione delle extensions, si deve aggiungere la stringa di fine sezione:

XPMENDEXT

un esempio di chiusura sezione:

"XPMEXT extension-1 data-1",
"XPMEXT extension-2",
"data-2_1",
"data-2_2",
"XPMENDEXT"
};

Esempio

Di seguito un pixmap di un tema Xfwm4 (Greybird), per la precisione il file XPM del bottone di chiusura della titlebar:

/* XPM */
static char * close_prelight_xpm[] = {
"20 24 8 1",
" 	c None",
".	c #939393",
"+	c #FFFFFF",
"@	c #DEDEDE s active_color_2",
"#	c #4B4B4B",
"$	c #666666",
"%	c #E5E5E5",
"&	c #8B8B8B",
"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@##@@@@##@@@@@@",
"@@@@@@$$#@@#$$@@@@@@",
"@@@@@@%$$##$$%@@@@@@",
"@@@@@@@%$$$$%@@@@@@@",
"@@@@@@@@&$$&@@@@@@@@",
"@@@@@@@#$$$$#@@@@@@@",
"@@@@@@#$$%%$$#@@@@@@",
"@@@@@@$$%@@%$$@@@@@@",
"@@@@@@%%@@@@%%@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@"};

Vediamo una sezione alla volta:

/* XPM */

il commento di identificazione del file XPM

static char * close_prelight_xpm[] = {
...
};

definizione dell’array

"20 24 8 1",

sezione dove si definiscono 20 colonne (width), 24 righe (height), 8 colori, 1 carattere per pixel, nessuna coordinata hotspot e nessuna extension supplementare.

" 	c None",
".	c #939393",
"+	c #FFFFFF",
"@	c #DEDEDE s active_color_2",
"#	c #4B4B4B",
"$	c #666666",
"%	c #E5E5E5",
"&	c #8B8B8B",

Questa è la sezione dove si definiscono gli 8 colori, anticipati nella sezione precedente.
lo schema è { } { }
se prendiamo il carattere “@” che fa da sfondo alla croce (la x di chiusura della titlebar), come si nota

"@	c #DEDEDE s active_color_2",

tramite la ‘s’ si definisce, in fase di caricamento, active_color_2, cioè lo sfondo del tema gtk in uso.

infine:

"....................",
"++++++++++++++++++++",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@##@@@@##@@@@@@",
"@@@@@@$$#@@#$$@@@@@@",
"@@@@@@%$$##$$%@@@@@@",
"@@@@@@@%$$$$%@@@@@@@",
"@@@@@@@@&$$&@@@@@@@@",
"@@@@@@@#$$$$#@@@@@@@",
"@@@@@@#$$%%$$#@@@@@@",
"@@@@@@$$%@@%$$@@@@@@",
"@@@@@@%%@@@@%%@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@@@@@@"};

questa è la rappresentazione via carattere, del nostro simbolo.
Ad ogni carattere corrisponde un colore da noi definito e come si nota, l’area è precisamente quella definita nella sezione : 20×24.

Categorie:Xfce, Xfwm4 Tag: ,
I commenti sono chiusi.