G_ICON et G_CICON
Si vous désirez utiliser des icônes monochrome dans
vos ressources, c'est l'objet que vous devez utiliser. Il est
cependant préférable d'utiliser des objets G_CICON
qui permettent d'utiliser de la couleur.
L'ob_spec d'un G_ICON pointe vers la structure suivant :
typedef struct icon_block {
void *ib_pmask; // Pointeur vers le masque de l'ic“ne
void *ib_pdata; // Pointeur vers les datas de l'ic“ne
char *ib_ptext; // Pointeur vers le texte
char *ib_char; // Lettre (de lecteur) de l'ic“ne et couleur
unsigned short ib_xchar; // position du caractŠre de l'ic“ne par...
unsigned short ib_ychar; // ... rapport a l'origine de celui-ci
unsigned short ib_xicon; // Position en X et Y...
unsigned short ib_yicon; // ...de l'ic“ne par rapport … ob_x/ob_y
unsigned short ib_wicon; // Largeur du plan de bit de l'ic“ne
unsigned short ib_hicon; // Idem hauteur
unsigned short ib_xtext; // Position en X et Y du texte de l'ic“ne...
unsigned short ib_ytext; // ...par rapport … ob_x/ob_y
unsigned short ib_wtext; // Largeur du texte
unsigned short ib_htext; // Hauteur du texte
} icon_block;
Le champ "ib_pmask" est un pointeur vers le masque de l'icône
(souvent en blanc) qui évite que le fond soit dessiné
sur la zone où les bits sont positionné. "ib_pdata"
est un pointeur vers le dessin proprement dit de l'icône
monochrome, et ib_ptext permet d'ajouter du texte sous l'icône.
Par exemple dans le cas d'un fichier, il est souhaitable d'y placer
le nom de celui-ci.
Les icônes couleurs (G_CICON) sont des icônes monochrome
auquel on ajoute un pointeur en fin de structure icon_block :
typedef struct cicon_data {
icon_block mono_block; // Structure d'ic“ne monochrome
cicon *resolution_list; // Pointeur sur la liste chaŚn‚ de r‚solution
}cicon_data;
"*resolution_list" est un pointeur vers une liste chaînée
de plans de bits correspondant eux différentes résolution.
Ces structures sont de la forme suivante :
typedef struct cicon {
unsigned short num_planes; // Nombre de plan de la structure
void *color_data; // Pointeur vers le dessin
void *color_mask; // Pointeur vers le masque
void *selected_data; // Pointeur vers le dessin (s‚lectionn‚)
void *selected_mask; // Pointeur vers le masque (s‚lectionn‚)
struct cicon *next_rez; // Pointeur vers la r‚solution suivante
} cicon_block;
Il n'est pas obligé d'avoir une partie sélectionné
dans une icône. A ce moment là, "selected_data" contient
"-1". Pour terminer la liste chaînée, next_rez contient
un pointeur sur z‚ro (NULL).
Lors du chargement d'une ressource en mémoire depuis le disque,
le système recherche l'icône de résolution égale
ou immédiatement inférieure à celle de l'écran,
puis applique une transformation pour passer le plan de bit au format de l'‚cran.
Retour à l'index G_BOUNDING et G_BOUNDED