MonochromeLib : Différence entre versions
Ligne 102 : | Ligne 102 : | ||
Retourne la couleur du pixel aux coordonnées (x, y), ML_BLACK ou ML_WHITE. | Retourne la couleur du pixel aux coordonnées (x, y), ML_BLACK ou ML_WHITE. | ||
Si les coordonnées sont en dehors de l'écran, la fonction retourne ML_TRANSPARENT. | Si les coordonnées sont en dehors de l'écran, la fonction retourne ML_TRANSPARENT. | ||
+ | |||
+ | === ML_line() === | ||
+ | |||
+ | Prototype: | ||
+ | <syntaxhighlight>void ML_line(int x1, int y1, int x2, int y2, ML_Color color);</syntaxhighlight> | ||
+ | |||
+ | Trace une ligne entre les pixels de coordonnées (x1, y1) et (x2, y2) en utilisant l'algorithme de Bresenham. | ||
+ | |||
+ | === ML_horizontal_line() === | ||
+ | |||
+ | Prototype: | ||
+ | <syntaxhighlight>void ML_horizontal_line(int y, int x1, int x2, ML_Color color);</syntaxhighlight> | ||
+ | |||
+ | Dessine une ligne horizontale. | ||
+ | Cette fonction est plus rapide qu'un appel à ML_line avec y1==y2. | ||
+ | |||
+ | === ML_vertical_line() === | ||
+ | |||
+ | Prototype: | ||
+ | <syntaxhighlight>void ML_vertical_line(int x, int y1, int y2, ML_Color color);</syntaxhighlight> | ||
+ | |||
+ | Dessine une ligne verticale. | ||
+ | Cette fonction est plus rapide qu'un appel à ML_line avec x1==x2. | ||
+ | |||
+ | === ML_rectangle() === | ||
+ | |||
+ | Prototype: | ||
+ | <syntaxhighlight>void ML_rectangle(int x1, int y1, int x2, int y2, int border_width, ML_Color border_color, ML_Color fill_color);</syntaxhighlight> | ||
+ | |||
+ | Dessine un rectangle avec ou sans bordure. | ||
+ | Vous pouvez définir la couleur de la bordure et du remplissage du rectangle. | ||
+ | Si vous ne voulez pas de bordure, définissez border_width à 0. | ||
+ | |||
+ | === ML_polygon() === | ||
+ | |||
+ | Prototype: | ||
+ | <syntaxhighlight>void ML_polygon(const int *x, const int *y, int nb_vertices, ML_Color color);</syntaxhighlight> | ||
+ | |||
+ | Dessine un polygone. | ||
+ | Cette fonction demande en paramètre deux tableaux d'entiers, le premier contenant les abscisses des sommets du polygone, et le second contenant les ordonnées. Le paramètre nb_vertices doit être le nombre de sommets du polygone (le nombre de valeurs à lire dans les tableaux x et y). | ||
+ | Ensuite, la fonction trace des lignes entre ces sommets pour dessiner le polygone. | ||
+ | |||
+ | Exemple: | ||
+ | <syntaxhighlight>int abscisses[] = {60, 75, 70, 50, 45}; | ||
+ | int ordonnees[] = {20, 30, 45, 45, 30}; | ||
+ | ML_clear_vram(); | ||
+ | ML_polygon(abscisses, ordonnees, 5, ML_BLACK); | ||
+ | ML_display_vram();</syntaxhighlight> | ||
+ | |||
+ | === ML_filled_polygon() === | ||
+ | |||
+ | Prototype: | ||
+ | <syntaxhighlight>void ML_filled_polygon(const int *x, const int *y, int nb_vertices, ML_Color color);</syntaxhighlight> | ||
+ | |||
+ | Demande les mêmes paramètres que ML_polygon, mais dessine un polygon plein. | ||
+ | |||
+ | === ML_circle() === | ||
+ | |||
+ | Prototype: | ||
+ | <syntaxhighlight>void ML_circle(int x, int y, int radius, ML_Color color);</syntaxhighlight> | ||
+ | |||
+ | Trace un cercle de centre (x, y) et de rayon radius en utilisant l'algorithme de Bresenham. | ||
== La couleur : ML_Color == | == La couleur : ML_Color == |
Version du 17 avril 2014 à 15:58
Type | Bibliothèque logicielle |
Dévelopeur | PierrotLL |
langage | C |
Environnement | Graph 75/85/95 |
Licence | Open source |
Dernière version | 22 novembre 2011 |
MonochromeLib est une bibliothèque de dessin graphique pour le SDK Casio Graph 85.
Elle fournit aux développeurs des fonctions optimisées pour tracer toute sorte de choses à l'écran.
Chaque fonction de MonochromeLib est bien plus rapide que son équivalent dans fxlib.h, et elle fournit de nombreuses fonctionnalités supplémentaires. La dernière version date du 22 novembre 2011.
Sommaire
- 1 Fonctionnalités
- 2 Comment l'utiliser ?
- 3 Fonctions
- 3.1 ML_clear_vram()
- 3.2 ML_clear_screen()
- 3.3 ML_display_vram()
- 3.4 ML_Set_Contrast()
- 3.5 ML_get_contrast()
- 3.6 ML_pixel()
- 3.7 ML_point()
- 3.8 ML_pixel_test()
- 3.9 ML_line()
- 3.10 ML_horizontal_line()
- 3.11 ML_vertical_line()
- 3.12 ML_rectangle()
- 3.13 ML_polygon()
- 3.14 ML_filled_polygon()
- 3.15 ML_circle()
- 4 La couleur : ML_Color
- 5 Liens externes
Fonctionnalités
Monochromelib permet de dessiner dans la VRAM divers formes géométriques (point, ligne, polygone, ellipse) ainsi que des images au format bitmap monochrome.
Comment l'utiliser ?
Pour utiliser la bibliothèque, copiez les 2 fichiers dans le dossier de votre projet, ajoutez MonochromeLib.c à votre projet (dans la fenêtre "Files in project" dans le SDK), ajoutez #include "MonochromeLib.h" au début de votre code. Pour n'ajouter à votre projet que les fonctions dont vous avez besoin, chaque fonction est protégée par un #ifdef, et les #define de chaque fonction sont commentés par défaut. Pour pouvoir utiliser une fonction, il suffit d'éditer MonochromeLib.h et de décommenter les #define des fonctions que vous voulez utiliser.
!!!Important!!! Si vous rencontrez une erreur de compilation de ce type :
** L2310 (E) Undefined external symbol "_ML_pixel" referenced in "C:\...\CASIO\fx-9860G SDK\Projet\Debug\MonochromeLib.obj"
et que le #define de la fonction en question est bien actif dans MonochromeLib.h, alors il faut juste recompiler MonochromeLib.c Pour cela, Utilisez la fonction Project > Rebuilt all dans le SDK. Si cela ne résoud pas le problème, supprimez le dossier Debug de votre projet, et recompilez normalement.
Fonctions
ML_clear_vram()
Prototype:
void ML_clear_vram();
Efface la VRAM. Cette fonction est 5 fois plus rapide que Bdisp_AllClr_VRAM.
ML_clear_screen()
Prototype:
void ML_clear_screen();
Efface l'écran. Cette fonction est 2 fois plus rapide que Bdisp_AllClr_DD. Remarque : Il est inutile d'appeler ML_clear_screen juste avant ML_display_vram.
ML_display_vram()
Prototype:
void ML_display_vram();
Copie le contenu de la VRAM à l'écran. Cette fonction est 2 fois plus rapide que Bdisp_PutDisp_DD. Remarque : Il est inutile d'appeler ML_clear_screen juste avant ML_display_vram.
ML_Set_Contrast()
Prototype:
void ML_set_contrast(unsigned char contrast);
Permet de définir la valeur du contraste. Celle ci doit être comprise entre ML_CONTRAST_MIN et ML_CONTRAST_MAX.
ML_get_contrast()
Prototype:
unsigned char ML_get_contrast();
Retourne la valeur actuelle du contraste.
ML_pixel()
Prototype:
void ML_pixel(int x, int y, ML_Color color);
Permet de définir la couleur d'un pixel de la VRAM. Le pixel en haut à gauche de l'écran a pour coordonnées (x=0, y=0), et le pixel en bas à droite (x=127, y=63).
ML_point()
Prototype:
void ML_point(int x, int y, int width, ML_Color color);
Dessine un point (carré) dans la VRAM, de centre (x, y), dont la longueur des coté (en pixel) est définie par width. Ex:
ML_point(10, 10, 3, ML_BLACK);
dessinera un rectangle noir allant de (9, 9) à (11, 11).
ML_pixel_test()
Prototype:
ML_Color ML_pixel_test(int x, int y);
Retourne la couleur du pixel aux coordonnées (x, y), ML_BLACK ou ML_WHITE. Si les coordonnées sont en dehors de l'écran, la fonction retourne ML_TRANSPARENT.
ML_line()
Prototype:
void ML_line(int x1, int y1, int x2, int y2, ML_Color color);
Trace une ligne entre les pixels de coordonnées (x1, y1) et (x2, y2) en utilisant l'algorithme de Bresenham.
ML_horizontal_line()
Prototype:
void ML_horizontal_line(int y, int x1, int x2, ML_Color color);
Dessine une ligne horizontale. Cette fonction est plus rapide qu'un appel à ML_line avec y1==y2.
ML_vertical_line()
Prototype:
void ML_vertical_line(int x, int y1, int y2, ML_Color color);
Dessine une ligne verticale. Cette fonction est plus rapide qu'un appel à ML_line avec x1==x2.
ML_rectangle()
Prototype:
void ML_rectangle(int x1, int y1, int x2, int y2, int border_width, ML_Color border_color, ML_Color fill_color);
Dessine un rectangle avec ou sans bordure. Vous pouvez définir la couleur de la bordure et du remplissage du rectangle. Si vous ne voulez pas de bordure, définissez border_width à 0.
ML_polygon()
Prototype:
void ML_polygon(const int *x, const int *y, int nb_vertices, ML_Color color);
Dessine un polygone. Cette fonction demande en paramètre deux tableaux d'entiers, le premier contenant les abscisses des sommets du polygone, et le second contenant les ordonnées. Le paramètre nb_vertices doit être le nombre de sommets du polygone (le nombre de valeurs à lire dans les tableaux x et y). Ensuite, la fonction trace des lignes entre ces sommets pour dessiner le polygone.
Exemple:
int abscisses[] = {60, 75, 70, 50, 45}; int ordonnees[] = {20, 30, 45, 45, 30}; ML_clear_vram(); ML_polygon(abscisses, ordonnees, 5, ML_BLACK); ML_display_vram();
ML_filled_polygon()
Prototype:
void ML_filled_polygon(const int *x, const int *y, int nb_vertices, ML_Color color);
Demande les mêmes paramètres que ML_polygon, mais dessine un polygon plein.
ML_circle()
Prototype:
void ML_circle(int x, int y, int radius, ML_Color color);
Trace un cercle de centre (x, y) et de rayon radius en utilisant l'algorithme de Bresenham.
La couleur : ML_Color
Prototype:
typedef enum {ML_TRANSPARENT=-1, ML_WHITE, ML_BLACK, ML_XOR, ML_CHECKER} ML_Color;
ML_Color est une énumération des différentes couleurs utilisables avec MonochromeLib.
Seul ML_TRANSPARENT a une valeur définie à -1, le compilateur donne donc aux autres les valeurs suivantes :
ML_TRANSPARENT = -1
ML_WHITE = 0
ML_BLACK = 1
ML_XOR = 2
ML_CHECKER = 3
ML_XOR permet d'inverser la couleur déjà présente dans la VRAM. ML_CHECKER est une couleur "damier". Elle rend 1 pixel sur 2 blanc, et l'autre noir, selon la rêgle suivante : si (x et y sont pair) ou (x et y sont impairs), alors le pixel devient noir, sinon il devient blanc.