Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [SDK] MonochromeLib - une lib graphique monochrome
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

[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


Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 25/04/2012 19:02 | #


Il faut taper le nom du fichier avec ".bmp"
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

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 ?
Getkey Hors ligne Membre Points: 232 Défis: 0 Message

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.
Getkey est en cours de chargement. Veuillez patienter...


Mes jeux en pause...
Cliquer pour enrouler
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

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.
Getkey Hors ligne Membre Points: 232 Défis: 0 Message

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.
Getkey est en cours de chargement. Veuillez patienter...


Mes jeux en pause...
Cliquer pour enrouler
Alex BasicC Hors ligne Ancien modérateur Points: 1734 Défis: 83 Message

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
Binary_man Hors ligne Ancien rédacteur Points: 1344 Défis: 19 Message

Citer : Posté le 20/01/2013 17:53 | #


Merci.
Calculettes : Graph 75, Graph 95, classpad 330 et FX-CG20 !!
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 16/08/2013 16:47 | #


On utilise comment Find Sprites In Bitmap ?
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 16/08/2013 17:11 | #


si tu veux creer des bitmaps, utilise plutot sprite coder, qui est plus pratique et facile
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 16/08/2013 17:16 | #


AH super merci
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

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.
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

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é
1337
Lephenixnoir Hors ligne Administrateur Points: 24219 Défis: 170 Message

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".
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

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 ??
1337
Lephenixnoir Hors ligne Administrateur Points: 24219 Défis: 170 Message

Citer : Posté le 03/06/2014 16:04 | #


Mais une ellipse, ça rentre toujours dans un rectangle.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

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
Lephenixnoir Hors ligne Administrateur Points: 24219 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 03/06/2014 17:01 | #


Lephenixnoir a écrit :
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 :
void ML_filled_ellipse_in_rect(int x, int y, int radius1, int radius2, ML_Color color);
Mais si on regarde dans MonochromeLib.c, on trouve :
void ML_filled_ellipse_in_rect(int x1, int y1, int x2, int y2, ML_Color color)

Lephenixnoir Hors ligne Administrateur Points: 24219 Défis: 170 Message

Citer : Posté le 03/06/2014 17:26 | #


Au temps pour moi.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 03/06/2014 17:28 | #


Moi je tenais personnellement a remercier pierotll pour cette magnifique librairie qui m'aide beaucoup
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

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

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 46 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd