Bitmap : soit une ressource pixmap
de profondeur 1, soit un fichier bitmap (fichier texte) comme
fond2:
#define fond2_width 16
#define fond2_height 16
static unsigned char fond2_bits[] = {
0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00,
0x00,
0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00,
0x00,
0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00};
Button1, Button2, Button3, ... les différents boutons d'une souris.
Classes visuelles :
mode d'associations entre pixel et couleur
PseudoColor exemple: un
pixel de [0..255] est associé à une des 256 entrées
de la table des couleurs (palette de 256 couleurs parmi 65536
puissance 3 possible)
DirectColor
exemple: un pixel sur 24 bits est découpé en trois
indices de 8 bits ; chaque indice pointe dans une palette d'intensité
d'une des couleurs de base ; soit une palette de 16 millions de
couleur.
Normalement, une seule palette et classe
visuelle par écran.
Le clavier numérote ses
touches (exemple touche a) selon les spécifications du
constructeurs. Ce numéro est le keycode, entier
de 8 à 255.
Ce keycode + les touches modifiers enfoncés (exemple shift_L)
donne un keysym (exemple XK_A). Les keysyms forme un code symbolique
standard X défini dans X11/keysym.h .
Les modifiers sont Shift, Lock, Control, Meta. Un mapping associe
keycodes + modifiers aux keysyms. Le changement de Map provoque
un événement MappingNotify.
X n'est pas lié à l'ASCII, mais on peut obtenir
la traduction Ascii d'un Keysym (exemple "A").
Pour
manipuler les keysyms, pensez à
#include <X11/keysym.h> dont voici quelques représentants
:
XK_space | l'espace |
XK_parenleft | la parenthèse gauche |
XK_plus | le signe + |
XK_0 | le chiffre 0 |
XK_A | la lettre majuscule A |
XK_a | la lettre minuscule a |
XK_eacute | la lettre minuscule é |
XK_Escape | l'échappement |
XK_Return | l'entrée |
XK_Down | curseur bas |
XK_Shift_L | modifieur majuscule gauche |
XK_Control_R | modifier controle droit |
XK_... | .... |
X11/cursorfont.h : les curseurs
standards
XC_X_Cursor le fameux X
XC_arrow la flèche "normale" qui pointe en haut
à droite
XC_gumby le petit bonhomme
XC_circle un cercle
XC_watch la montre
XC_xterm le curseur
d'insertion dans un texte
XC_hand1 une main
XC_plus le signe +
...
Colormap type des palettes de couleurs : tableau de structure XColor indicé par les pixels.
Cursor type curseur. C'est un pixmap de 2 couleurs, généralement de taille16 x 16, avec un point sensible (hotspot) définissant la position du pointeur, et possédant un masque bitmap qui définit la zone du pixmap dessinée (bit masque à 1).
Font type d'une police
Les
polices se trouvent dans le répertoire /usr/X11R6/lib/X11/fonts
et sont décrites/nommées selon la convention XLDF
(X logical font descriptor) : al-fo-fa-po-in-ec-st-ha-ta-rv-rh-ch-la-je-ve
où
al est l'alias
fo la fonderie (ex: adobe)
fa
la famille (ex: times)
po le poid (ex: medium)
in l'inclinaison r(omain), i(talique)
ec
l'écartement (ex: normal)
st le style
ha la hauteur en pixel
ta la taille
en dixième de points
rv la résolution
verticale
rh la résolution horizontale
ch la chasse m (fixe) ou p(roportionnelle)
la
la largeur moyenne des lettres
je le jeu de caractère
(ex: iso8859)
ve la version du jeu
Des
noms d'alias (beaucoup plus court) nomment certaines polices.
Voir dans /usr/X11R6/lib/X11/fonts/misc/fonts.alias
GC graphic context : ressource définisant les multiples paramètres nécessaires aux requêtes de dessin.
Pixmap : ressource grille rectangulaire
de points, n bitmaps.
Sont des Drawable comme les fenêtres, mais n'ont pas de
couleur d'arrière-plan, ni bordure, ni affichage, ni évènement
(sauf GraphicsExpose et NoExpose lors de requètes de recopie).
Ressource : fenêtre, GC, curseur, police (fonte), palette de couleur (colormap), pixmap. Idenfiées par un entier (ids) de 32 bits, elles sont crées par les applications clients, sont partageables, éphémères et peu consommatrices de mémoires.
typedef
struct {
short width; largeur totale
short ascent; hauteur de tête
short descent; hauteur de queue
} XCharStruct;
structure définissant chaque caractère d'une police
typedef struct {
unsigned long pixel; indice dans la palette (colormap)
unsigned short red, green, blue; intensité [0..65535] du
faisceau
char flags; combinaison de DoRed, DOGreen, BoBlue
...
} XColor; une couleur de la table des couleurs
Les
définitions des couleurs sont dans /usr/X11R6/lib/X11/rgb.txt
XContext type de contexte d'association (fenêtre,données)
typedef struct {
Font fid; l'identificateur de ressource police
...
XCharStruct min_bounds; bornes minimales pour tous ses caractères
XCharStruct max_bounds; bornes maximales pour tous ses caractères
...
int ascent; hauteur maximale des têtes
int descent; hauteur maximales des queues
} XFontStruct;
typedef struct { | role de l'attribut | DefaultGC | masque |
int function; | fct(src, dest) | GCopy | GCFunction |
unsigned long plane_mask; | masque des plans | "full 1" | GCPlaneMask |
unsigned long foreground; | couleur de dessin | O | GCForeground |
unsigned long background; | couleur de fond | 1 | GCBackground |
int line_width; | largeur de ligne | 0 | GCLineWidth |
... | |||
Font font; | fonte de texte | plutot fixe | GCFont |
int subwindow_mode; | comportement | ClipByChildren | GCSubwindowMode |
bool graphics_exposures; | select evenement g_e | True | GCGraphicsExposures |
int clip_x_origin; | origine (x,y) zone dessinée | 0 | GCClipXOrigin |
int clip_y_origin; | origine (x,y) zone dessinée | 0 | GCClipYOrigin |
Pixmap clip_mask; | masque zone dessinée | None | GCClipMask |
... |
typedef struct { | valeur par défaut | masque |
Pixmap background_pixmap; | CWBackPixmap | |
unsigned long background_pixel; | CWBackPixel | |
Pixmap border_pixmap; | CopyFromParent | CWBorderPixmap |
unsigned long border_pixel; | CWBorderPixel | |
int bit_gravity; | ForgetGravity | CWBitGravity |
int win_gravity; | NorthWestGravity | CWWinGravity |
int backing_store; | NotUseful | CWBackingStore |
... | ||
long event_mask; | (liste vide) | CWEventMask |
long do_not_propagate_mask; | (liste vide) | CWDontPropagate |
Bool override_redirect; | False | CWOverrideRedirect |
Colormap colormap; | CopyFromParent | CWColorMap |
Cursor cursor; | CWCursor |
unsigned long masq_attrib est le masque des attributs renseignés dans la structure attrib.
Le BackingStore est assuré sur certaines stations X : elles mémorisent les parties cachées des fenêtres dans une mémoire d'arrière plan.Votre programme doit pouvoir fonctionner sans !
bit_gravity détermine de quel coté le contenu des fenêtres ne bouge pas lors d'une modification de taille de cette fenêtre : NorthGravity (contenu invariant relativement au Nord), NorthEastGravity, ..., NorthWestGravity (par défaut), CenterGravity, ForgetGravity (effacement du contenu), StaticGravity.
CWBitGravity le masque nécessaire au changement d'attribut.
win_gravity détermine de quel coté les sous-fenêtres ne bouge pas lors d'une modification de taille de la fenêtre parente. CWWinGravity le masque nécessaire au changement d'attribut.override_redirect pour annuler/activer la redirection des requêtes vers le W. M. donc son intervention mais aussi son aide.
index général | fonctions de la XLib | événements | types dans XLib |