Les fonctions de haut niveau
void DrawPlane(short x,short y,Plane *plane,void *dest,TM_Mode mode,TM_Type type);
Cette fonction affiche le plan plane
à partir des coordonnées x
et y
, dans l'écran (virtuel ou non) d'adresse dest
.
Elle s'occupe toute seule de rafraichir le grand écran virtuel lorsque c'est nécessaire.
Les paramètres plane
, type
et mode
ont des types particuliers, voici à quoi ils correspondent :
plane
est l'adresse d'une structure de type Plane
, dont voici la définition :
typedef struct
{
void *matrix; // Matrice de tiles
unsigned short width; // Largeur de la map
void *sprites; // Tableau de sprites
char *big_vscreen; // Grand écran virtuel
long mask; // Obsolete (kept for compatibility)
long reserved1; // Utilisé en interne (ne pas modifier)
short force_update; // Pour forcer l'actualisation du grand écran virtuel.
}Plane;
type
indique le type de plan : taille des sprites (8x8 ou 16x16), matrice codée sur des char ou sur des short, utilisation des niveaux de gris ou non. C'est un paramètre de type TM_Type
, ce type étant complexe, regardez dans le header si vous voulez vraiment savoir à quoi il correspond, mais ce n'est pas indispensable pour pouvoir utiliser la fonction, car j'ai défini des macros qui peuvent s'utiliser directement en paramètre (reportez vous à l'annexe pour les connaître).
mode
permet de spécifier le mode d'affichage : RPLC
, OR
, MASK
, TRANW
ou TRANB
. Ce paramètre est de type TM_Mode
, ce type est également compliqué, si vous voulez savoir à quoi il correspond, regardez dans le header. J'ai également défini plusieurs macros qui peuvent être utilisées directement en paramètre, reportez vous à l'annexe.
Cette fonction actualise le grand écran virtuel si nécessaire seulement. Pour forcer la réactualisation, mettez une valeur non nulle dans le champ force_update
de votre Plane
, la fonction DrawBuffer
remettra ce champ à 0 après que l'actualisation ait eu lieu. Il est indispensable de faire ça à l'initialisation, avant que le plane n'ait été affiché.
Pour voir un exemple d'utilisation de cette fonction, jetez un coup d'oeil à l'exemple1 fourni avec la librairie.
Note : Il est recommandé d'utiliser les macros prévues à cet effet pour les paramètres type
et mode
.
void DrawAnimatedPlane(short x,short y,AnimatedPlane *plane,void *dest,TM_Mode mode,TM_AnimType type);
Affiche le plan animé plane
à partir des coordonnées x
et y
, dans l'écran (virtuel ou non) d'adresse dest
.
Met automatiquement le grand écran virtuel du plane à jour lorsque c'est nécessaire.
Le paramètre plane
est l'adresse d'une structure AnimatedPlane
, voici sa définition :
typedef struct
{
Plane p;
void *tabanim; // Matrice d'animations
short nb_anim; // Nombre d'animations
short nb_step; // Nombre d'étapes d'animation
short step; // Numéro de l'étape d'animation courante
short step_length; // Durée d'une étape (en nombre d'images)
short frame; // Numéro de l'image de l'étape courante
}AnimatedPlane;
Cette structure contient donc un Plane
suivi de toutes les informations nécessaires pour l'animer.
La matrice du Plane
ne contiendra pas des numéros de sprites, mais des numéros d'animation, et la fonction ira chercher le numéro de sprite correspondant dans la tableau d'animations tabanim
.
Le paramètre mode
est exactement le même que pour la fonction précédente, reportez vous à l'annexe pour connaître toutes ses valeurs possibles.
Le paramètre type
fonctionne comme dans la fonction précédente, mais ses valeurs possibles ne sont pas les mêmes, elles sont également données dans l'annexe.
void DrawGrayPlane(short x,short y,Plane *plane,void *dest1,void *dest2,TM_GMode mode,TM_GType type);
Cette fonction affiche le plan plane
à partir des coordonnées x
et y
, dans l'écran (virtuel ou non) d'adresses dest1/dest2
.
Elle s'occupe toute seule de rafraichir le grand écran virtuel lorsque c'est nécessaire.
Les paramètres plane
, type
et mode
ont des types particuliers, voici à quoi ils correspondent :
plane
est l'adresse d'une structure de type Plane
, dont voici la définition :
typedef struct
{
void *matrix; // Matrice de tiles
unsigned short width; // Largeur de la map
void *sprites; // Tableau de sprites
char *big_vscreen; // Grand écran virtuel
long mask; // Obsolete (kept for compatibility)
long reserved1; // Utilisé en interne (ne pas modifier)
short force_update; // Pour forcer l'actualisation du grand écran virtuel.
}Plane;
type
indique le type de plan : taille des sprites (8x8 ou 16x16), matrice codée sur des char ou sur des short, utilisation des niveaux de gris ou non. C'est un paramètre de type TM_GType
, ce type étant complexe, regardez dans le header si vous voulez vraiment savoir à quoi il correspond, mais ce n'est pas indispensable pour pouvoir utiliser la fonction, car j'ai défini des macros qui peuvent s'utiliser directement en paramètre (reportez vous à l'annexe pour les connaître).
mode
permet de spécifier le mode d'affichage : RPLC
, OR
, MASK
, TRANW
ou TRANB
. Ce paramètre est de type TM_GMode
, ce type est également compliqué, si vous voulez savoir à quoi il correspond, regardez dans le header. J'ai également défini plusieurs macros qui peuvent être utilisées directement en paramètre, reportez vous à l'annexe.
Cette fonction actualise le grand écran virtuel si nécessaire seulement. Pour forcer la réactualisation, mettez une valeur non nulle dans le champ force_update
de votre Plane
, la fonction DrawBuffer
remettra ce champ à 0 après que l'actualisation ait eu lieu. Il est indispensable de faire ça à l'initialisation, avant que le plane n'ait été affiché.
Pour voir un exemple d'utilisation de cette fonction, jetez un coup d'oeil à l'exemple1 fourni avec la librairie.
Note : Il est recommandé d'utiliser les macros prévues à cet effet pour les paramètres type
et mode
.
void DrawGrayAnimatedPlane(short x,short y,AnimatedPlane *plane,void *dest1,void *dest2,TM_GMode mode,TM_GAnimType type);
Affiche le plan animé plane
à partir des coordonnées x
et y
, dans l'écran (virtuel ou non) d'adresses dest1/dest2
.
Met automatiquement le grand écran virtuel du plane à jour lorsque c'est nécessaire.
Le paramètre plane
est l'adresse d'une structure AnimatedPlane
, voici sa définition :
typedef struct
{
Plane p;
void *tabanim; // Matrice d'animations
short nb_anim; // Nombre d'animations
short nb_step; // Nombre d'étapes d'animation
short step; // Numéro de l'étape d'animation courante
short step_length; // Durée d'une étape (en nombre d'images)
short frame; // Numéro de l'image de l'étape courante
}AnimatedPlane;
Cette structure contient donc un Plane
suivi de toutes les informations nécessaires pour l'animer.
La matrice du Plane
ne contiendra pas des numéros de sprites, mais des numéros d'animation, et la fonction ira chercher le numéro de sprite correspondant dans la tableau d'animations tabanim
.
Le paramètre mode
est exactement le même que pour la fonction précédente, reportez vous à l'annexe pour connaître toutes ses valeurs possibles.
Le paramètre type
fonctionne comme dans la fonction précédente, mais ses valeurs possibles ne sont pas les mêmes, elles sont également données dans l'annexe.
Cette fonction est utilisée dans l'exemple 3 fourni avec la librairie.
void DrawTiles(short col,short ligne,short larg,void *tab,void *dest,void *sprts,TM_TilesType type);
Affiche directement le plan tab
dans le buffer de destination dest
à partir de la ligne ligne
et de la colonne col
.
Cette fonction est un peu différente des autres, puisqu'elle affiche directement les tiles (sans les scroller) à partir de la matrice de tiles dans un buffer de destination de la taille de l'écran (240x128 pixels).
L'affichage se fait en mode RPLC
, il est donc inutile d'effacer la destination avant d'afficher dessus.
J'ai pensé qu'il pourrait être utile de fournir cette fonction, même si elle s'éloigne du fonctionnement des autres qui permettent de scroller le plan au pixel près.
Description des paramètres attendus :
col
: numéro de la colonne à partir de laquelle on souhaite afficher le plan.
ligne
: numéro de la ligne à partir de laquelle on souhaite afficher le plan.
larg
: largeur de la matrice (en nombre de tiles, pas en pixels).
tab
: matrice de tiles.
dest
: buffer de destination (ce n'est pas un big_vscreen).
sprts
: liste des sprites à utiliser pour afficher le plan.
type
: type du plan. Indique à la fonction si la matrice de tiles est une matrice de char
ou de short
, la taille des tiles (16x16 ou 8x8), s'ils sont en niveaux de gris ou en noir et blanc, et enfin, si l'affichage doit se faire seulement sur la partie de l'écran visible par une TI-89 ou non. Le type TM_TilesType
étant assez particulier, le header TileMap.h
fournit des macros pour tous les styles possibles de matrices de tiles. Se reporter à l'annexe pour les trouver.
void DrawGrayTiles(short col,short ligne,short larg,void *tab,void *dest1,void *dest2,void *sprts,TM_GTilesType type);
Affiche directement le plan tab
dans le buffer de destination dest1/dest2
à partir de la ligne ligne
et de la colonne col
.
Cette fonction est un peu différente des autres, puisqu'elle affiche directement les tiles (sans les scroller) à partir de la matrice de tiles dans un buffer de destination de la taille de l'écran (240x128 pixels).
L'affichage se fait en mode RPLC
, il est donc inutile d'effacer la destination avant d'afficher dessus.
J'ai pensé qu'il pourrait être utile de fournir cette fonction, même si elle s'éloigne du fonctionnement des autres qui permettent de scroller le plan au pixel près.
Description des paramètres attendus :
col
: numéro de la colonne à partir de laquelle on souhaite afficher le plan.
ligne
: numéro de la ligne à partir de laquelle on souhaite afficher le plan.
larg
: largeur de la matrice (en nombre de tiles, pas en pixels).
tab
: matrice de tiles.
dest
: buffer de destination (ce n'est pas un big_vscreen).
sprts
: liste des sprites à utiliser pour afficher le plan.
type
: type du plan. Indique à la fonction si la matrice de tiles est une matrice de char
ou de short
, la taille des tiles (16x16 ou 8x8), s'ils sont en niveaux de gris ou en noir et blanc, et enfin, si l'affichage doit se faire seulement sur la partie de l'écran visible par une TI-89 ou non. Le type TM_GTilesType
étant assez particulier, le header TileMap.h
fournit des macros pour tous les styles possibles de matrices de tiles. Se reporter à l'annexe pour les trouver.