[SDK] MonochromeLib - une lib graphique monochrome
Posté le 09/06/2010 02:22
MonochromeLib, qu'est ce que c'est ?
MonochromeLib est une bibliothèque de dessin 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.
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.
N'attendez plus !
Une documentation complète est maintenant fournie dans l'archive zip, en anglais et en français.
Questions récurrentes :
Problème : voici mon code, le compilateur ne veux pas le compiler :
unsigned char image[] = { ... };
ML_clear_vram();
ML_BMP_OR(image, 21, 42, 34, 34);
ML_clear_vram();
Solution : toutes les fonctions de MonochromeLib s'appellent en minuscule : les seules majuscules sont celles du "ML". Relisez la doc ou le
wiki, et regardez l'orthographe exacte de la fonction.
Version actuelle : 22 novembre 2011
Télécharger MonochromeLib
Citer : Posté le 25/04/2012 19:02 | #
Il faut taper le nom du fichier avec ".bmp"
Citer : Posté le 25/04/2012 20:09 | #
Ça fonctionne très bien chez moi et chez les autres alors il n'y a pas de raisons. Il faut que l'image soit dans le même dossier que l'exécutable, et n'ait pas d'espaces dans son nom. Tu la fais glisser sur l'exécutable, et ça l'encode.
Ça t'affiche quoi quand tu dis que ça ne fonctionne pas ?
Citer : Posté le 26/04/2012 17:56 | #
L'image d'exemple ne contient pas d'espace et est dans le même répertoire que le .exe
@pierotll: Ça m'affiche "End." très vite et le programme se ferme.
Citer : Posté le 26/04/2012 20:37 | #
Et normalement ça ouvre le fichier output.txt mais si ça ne le fait pas tu peux l'ouvrir manuellement.
Citer : Posté le 28/04/2012 15:26 | #
En fait il n'a pas créé de output.txt.
Du coup je l'ai créé manuellement et il ne s'est pas rempli.
J'ai testé les short et ça marche ! Merci.
Citer : Posté le 20/01/2013 14:59 | # | Fichier joint
Je reposte Find Sprites In Bitmap la page le possédant ayant été archivée
Citer : Posté le 20/01/2013 17:53 | #
Merci.
Citer : Posté le 16/08/2013 16:47 | #
On utilise comment Find Sprites In Bitmap ?
Citer : Posté le 16/08/2013 17:11 | #
si tu veux creer des bitmaps, utilise plutot sprite coder, qui est plus pratique et facile
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 16/08/2013 17:16 | #
AH super merci
Citer : Posté le 24/08/2013 13:19 | #
Damn, sprite coder déconne ! Avec mes PNG paint-made, il ne lit que du vide
Ajouté le 24/08/2013 à 13:23 :
En jpg ça marche.
Citer : Posté le 03/06/2014 14:15 | #
Bonjour,
Je soupçonne une petite erreur :
void ML_ellipse(int x, int y, int radius1, int radius2, ML_Color color);
void ML_ellipse_in_rect(int x1, int y1, int x2, int y2, ML_Color color);
void ML_filled_ellipse(int x, int y, int radius1, int radius2, ML_Color color);
void ML_filled_ellipse_in_rect(int x, int y, int radius1, int radius2, ML_Color color);
Ça ne devrait pas plutôt être comme ça ? Si on suit la logique par rapport au précédent qui n'est pas " filled"
void ML_filled_ellipse_in_rect([b]int x1, int y1, int x2, int y2,[/b] ML_Color color);
Merci et désolé si je me suis trompé
Citer : Posté le 03/06/2014 15:57 | #
Ah, tu penses que le proto est erroné ? Pour être sûr, je te conseille d'aller voir dans les sources.
Malgré tout je suis sûr que c'est du au fait que l'algorithme est différent -- car oui, pour tracer le bord on ne s'y prend pas du tout de la même manière que pour remplir. À la réflexion, ça paraît même plus logique qu'on donne les rayons.
Enfin, la doc (en HTML) devrait pouvoir confirmer ce prototype. De manière générale, le travail de PierrotLL est "sûr".
Citer : Posté le 03/06/2014 16:00 | #
ben oui mais si on mets un radius, ça ne sers a rien de definir l'ellipse dans un rectangle ??
Citer : Posté le 03/06/2014 16:04 | #
Mais une ellipse, ça rentre toujours dans un rectangle.
Citer : Posté le 03/06/2014 16:56 | #
Oui, mais cela ne servirai à rien d'avoir les deux dernière fonctions (les 2 filled) si les arguments sont les même et que le résultat est le même
Citer : Posté le 03/06/2014 16:58 | #
C'est sans doute aucun parce que l'algorithme qui trace l'ellipse pleine utilise le rayon plutôt que les coordonnées de sommets du rectangle circonscrit, et en soi c'est plutôt logique.
Au pire tu peux faire ta propre fonction basée sur celle de ML qui prend les arguments que tu as cités sans problème.
Citer : Posté le 03/06/2014 17:01 | #
C'est sans doute aucun parce que l'algorithme qui trace l'ellipse pleine utilise le rayon plutôt que les coordonnées de sommets du rectangle circonscrit, et en soi c'est plutôt logique.
Je suis d'accord avec toi, mais on a deux fonctions qui font la même chose à partir des même argument, donc à priori une qui sert à rien, ce qui ne ressemble pas à PLL
Ajouté le 03/06/2014 à 17:04 :
D'ailleurs, dans les sources, si on regarde dans MonochromeLib.h, on a ça :
Citer : Posté le 03/06/2014 17:26 | #
Au temps pour moi.
Citer : Posté le 03/06/2014 17:28 | #
Moi je tenais personnellement a remercier pierotll pour cette magnifique librairie qui m'aide beaucoup
Citer : Posté le 03/06/2014 22:30 | #
Tu as parfaitement raison Xavier59, l'erreur est présente dans le header et dans la doc.
MonochromeLib aurait bien besoin d'une mise à jour. Si vous pouviez m'aider à rassembler tous les trucs à corriger pour me faire une todo-list, je veux bien repasser dessus une dernière fois.
Après franchement si vous vous sentez d'y apporter vos modifications, je n'y vois aucun inconvénient. Je ne suis plus du tout présent et ne code plus rien pour calculette, donc si la lib continue d'être utilisée elle aura besoin de gens pour la maintenir. Je pense notamment à la compatibilité SH4, c'est le genre de truc dont on ne peut pas se passer.
Pour la todo-list, voici ce que j'ai pour le moment :
- ML_filled_ellipse_in_rect : corriger paramètres (header+doc)
- ML_bmp : il me semble qu'une des fonctions AND ne se comporte pas correctement
- ML_vram_adress : corriger en address (gérer rétro-compatibilité)
- ML_get_contrast : ne fonctionne pas
- Compatibilité SH4
- Fournir une todo-list et un changelog avec la release
Si vraiment motivé :
- Intégrer le module de texte que j'avais commencé
- Tester les performances d'autres algo pour les polygones pleins
- Ajouter une fonction ML_horizontal_scroll_area
- Ajouter une fonction de tracé de ligne large
- Inclure un convertisseur bitmap, ça évitera les prises de tête pour les débutants
- Enrichir la doc
- Commenter le code
@Eltoredo : Tu n'imagines pas à quel point ça me fait plaisir de voir que ce projet vieux de maintenant 4 ans est encore une référence