ritzle | Comment utiliser les niveaux de gris :
Pour pouvoir utiliser les 4 niveaux de gris (appelés "grayscales" en anglais) sous TIGCC, il faut tout d'abord les activer. Pour cela, il faut utiliser l'instruction suivante :
GrayOn();
Cette instruction permettra d'utiliser les niveaux de gris dans la suite du programme. Elle renvoie un short, qui a pour valeur TRUE si les 4 niveaux de gris ont bien été activés, et FALSE s'ils ne l'ont pas été.
Il ne faudra pas oublier de désactiver les niveaux de gris à la fin du programme, sinon l'affichage risque de bugger (le TIOS n'utilise pas de niveaux de gris) :
GrayOff();
Il existe une fonction qui permet de savoir si les niveaux de gris sont activés ou non. Sa syntaxe est la suivante :
IsGrayMode();
Cette fonction renvoie une valeur de type short, qui est égale à TRUE si les niveaux de gris sont actifs, et à FALSE dans le cas contraire.
J'ai dit précédemment qu'il fallait utiliser deux plans : LIGHT_PLANE pour le gris clair, et DARK_PLANE pour le gris foncé. Pour sélectionner le plan actif, il convient d'utiliser la fonction suivante :
SetPlane(nom_du_plan);
Si l'écran clignote, on peut modifier la fréquence de rafraîchissement. Pour cela, il faut utiliser la fonction suivante :
GrayAdjust( valeur );
Cette fonction prend en argument un short, dont la valeur va de -28 à 127 sur TI-89, et de 0 à 127 sur TI-92plus. La valeur par défaut est de 0, ce qui correspond aux réglages d'usine. Les valeurs inférieures à 0 permettent d'augmenter la fréquence de rafraîchissement, tandis que celles positives permettent de la diminuer. La fréquence restera la même jusqu'à ce que la TI soit éteinte. La valeur sera réinitialisée à l'allumage.
Maintenant, il vaut mieux que je donne un exemple (pour TI-GCC) :
Code :
- #define SAVE_SCREEN
- #include <tigcclib.h>
- #define USE_TI89 // Compile for TI-89
- void _main(void)
- {
- short i=0;
- if(!GrayOn()) return;
- //Active les niveaux de gris, et quitte en cas d'erreur lors de leur activation...
- FontSetSys(F_4x6); //petite police de caractères
- SetPlane(LIGHT_PLANE); //plan actif : gris clair
- ClrScr(); //efface le plan actif
- DrawStrXY(20, 3, "Pas de Plan actif", A_NORMAL);
- SetPlane(DARK_PLANE); //plan actif : gris foncé
- ClrScr(); //efface le plan actif
- DrawStrXY(20, 3, "Pas de Plan actif", A_NORMAL);
- ngetchx(); //Attends qu'une touche soit pressée
- SetPlane(LIGHT_PLANE);
- for(i=11 ; i<=20 ; i++)
- {
- DrawLine(0, i, 18, i, A_NORMAL);
- }
- DrawStrXY(20, 14, "LIGHT_PLANE actif", A_NORMAL);
- ngetchx();
- //Dessine un rectangle sur le plan gris clair
- SetPlane(DARK_PLANE);
- for(i=22 ; i<=31 ; i++)
- {
- DrawLine(0, i, 18, i, A_NORMAL);
- }
- DrawStrXY(20, 25, "DARK_PLANE actif", A_NORMAL);
- ngetchx();
- //Dessine un rectangle sur le plan gris clair
- SetPlane(LIGHT_PLANE);
- for(i=33 ; i<=42 ; i++)
- {
- DrawLine(0, i, 18, i, A_NORMAL);
- }
- DrawStrXY(20, 36, "LIGHT_PLANE et DARK_PLANE actifs", A_NORMAL);
- SetPlane(DARK_PLANE);
- for (i=33 ; i<=42 ; i++)
- {
- DrawLine(0, i, 18, i, A_NORMAL);
- }
- DrawStrXY(20, 36, "LIGHT_PLANE et DARK_PLANE actifs", A_NORMAL);
- ngetchx();
- //Dessine un rectangle sur le plan gris clair puis sur le plan gris foncé : le résultat apparaîtra en noir car il sera affiché en permanence à l'écran
- GrayOff(); // Permet de désactiver les niveaux de gris, chose qu'il est impératif de faire avant de quitter le programme.
- }
|
ce programme dessine quatre rectangles, ou 3 selon le point de vue Vous remarquerez qu'il n'est pas très optimisé, mais on le comprend mieux.
Ce programme est en nostub : on n'a pas besoin d'une librairie particulière comme gray4lib pour qu'il fonctionne.
Toutes les fonctions de dessin sont utilisables, il suffit d'afficher sur le bon plan.
pour afficher peu de choses en noir, il vaut mieux dessiner sur les 2 plans que de désactiver les niveaux de gris, l'activation/désactivation est assez lente.
|