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.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graph 35+USB/75(+E)/85/95 SD >> Add-ins >> Libtext
Libtext
Version : 2.1 Taille : 21675 octets Ajouté le : 2014-04-03 22:14 Modifié le : 2017-07-15 14:15
Auteur et posteur :
LephenixnoirHors ligneAdministrateurPoints: 24574 Défis: 170 Message
Planète Casio - Add-in Casio - Libtext - LePhenixNoir - Calculatrices
Nombre de visites sur cette page : 16705
Score au progrank : 54
Note actuelle : 9.5/10 noté 1 fois
Vous devez être connecté(e) pour noter (inscription).
2351 téléchargements | Voir les Tests (1)

Ce programme est sous licence Creative Commons 2.0 BY


A cause du changement de processeur des nouvelles Graph 35+ USB, 75 et 95 SD, de nombreux addins sont incompatibles avec ces calculatrices.
Rendre un addin compatible - Plus d'informations sur ce problème - Liste des addins compatibles

Description :

Cette lib est vieille, peu optimisée, et plus maintenue ! Utilisez à vos risques et périls !


Voici la version 2.1 de la libText. La première étant très mal optimisée, je l'ai reprise à zéro pour un code plus propre.
Elle contient 10 polices différents : Les polices de PrintMini() et PrintXY(), la police orginale de Dark Storm Arcadium, 4 polices Serif, deux tailles de polices 7 segments, ainsi que la police de runes.

Toutes les instructions d'utilisation sont dans la documentation.

Fichiers en téléchargement
1. LibText.zip, version 2.1
2. LibText.zip, version 2.0
3. LibText.zip, version 1.0

Chaque archive contient la source, le header, et depuis la v2, une documentation et un tutoriel. N'oubliez pas d'extraire le dossier Images pour voir les images dans la documentation HTML.

Changelog
Cliquez pour enrouler
03.07.2014 -- Version 2.1
→ Ajouté 4 polices de serif, rétabli la police de runes et ajouté deux polices de style 7 segments.

Version 2.0
→ Retiré le système de style (à rétablir) ;
→ Séparé les polices de symboles (absentes cette version) ;
→ Retiré la troisième police en 7*10, qui est à retravailler.

→ Nouvelle gestion des polices en flux de bits, donc économies de mémoire ;
→ Nouvel algorithme d'affichage de texte, universel ;
→ Division de la taille de code par 2.5 ;
→ Facilitation de l'implémentation de nouvelles polices et personnalisées ;
→ Documentation complète.


Tutoriel pour ceux qui ont encore la v1
Cliquez pour enrouler
Dans le cadre du développement de mon application Documents, j'ai du créer une bibliothèque pour l'affichage de polices.
J'ai pensé que celle-ci pourrait être utile.

Elle permet d'afficher du texte, suivant 3 polices. La position dans l'écran est définie en pixels. De plus, grâce au clipping, le texte est affiché en partie, même s'il dépasse, horizontalement ou verticalement.
Enfin, on peut "styliser" le texte, en le barrant, ou en le soulignant une ou deux fois.

Utilisation dans un projet
Pour utiliser TextLib dans un projet, vous devez
- Ajouter TextLib.c aux fichiers du projet
- Inclure TextLib.h au début de votre programme
- Appeler Txt_Init() au début de votre AddIn_main()
- Appeler Txt_Quit() à la fin de l'exécution

Afficher du texte
L'affichage du texte se fait selon quotre fonctions: Txt_Text1, Txt_Text2 et Txt_Text3 selon la taille du texte, Txt_Text4 ou Txt_Rune pour les symboles.

Les paramètres sont les suivants.
Txt_Text1(chaine,x,y,style);

chaine est un pointeur en void *, donc vous pouvez vous passer du cast.
style est défini selon 4 "balises":
- Txt_None correspond à "aucun style"
- Txt_Strike barre le texte
- Txt_Underline souligne le texte
- Txt_UnderDouble souligne également le texte, mais un peu en-dessous.

On peut combiner plusieurs styles ensembles, en les séparant du symbole "|":
Txt_Text2("Mon texte stylisé !",10,10,Txt_Underline | Txt_UnderDouble);

Ces styles fonctionnent aussi avec les symboles, bien que sans intérêt.

Caractères spéciaux
Pour insérer un caractère précis (pour les symboles ou ceux au-delà de la quatrième ligne), procédez comme suit.
* Déterminez le numéro du caractère dans la table. Commencez à 0 et comptez-en 32 par ligne. Le dernier est donc 255.
* Convertissez cette valeur en octal (vous pouvez le faire avec la calculatrice de Windows, mode "Programmation").
* Écrivez-là sur trois chiffres (plus lisible) en rajoutant s'il le faut des '0' devant.
* Faites-là précéder d'un '\'.
Txt_Text1("\377",1,1,Txt_None);

Dans cet exemple, le dernier caractère de la table sera affiché.

Caractères doubles
Pour utiliser un caractère double, insérez simplement le code du premier caractère (à gauche) dans la chaîne.
Liste des codes spéciaux
Cliquer pour enrouler
- Équivalent: "\326"
- Double flèche: "\330"

Les caractères suivants ne sont doubles qu'avec Txt_Text1
- Infini: "\332"
- ae: "\334"
- oe: "\336"


Erreurs courantes
- Une System Error dès que vous essayez d'écrire du texte: Vérifiez que vous avez bien initialisé au début du programme avec Txt_Init().
- "Undefined function...": Vérifiez l'inclusion de TextLib.h au début du fichier.

Autres fonctions
Cliquer pour enrouler
Pour son fonctionnement, la bibliothèque utilise d'autres fonctions.

Txt_Pixel(int x, int y, int v)
Celle-ci est simple, elle affiche un pixel à l'écran.
Et je n'ai pas piqué la fonction de PierrotLL, j'ai simplement obtenu le même résultat après optimisation.

Txt_Char() et Txt_Text()
Ce sont les deux fonctions de texte appelées par les fonctions classiques. Il ne vous avancera à rien de les utiliser.


Les polices
Voici les 4 polices d'écriture disponibles.





Important
Un grand merci à Gollum pour avoir dessiné les runes, et donné l'idée de la quatrième police.


Note sur 10 Commentaire Date de notation
9.5Voir le testLe 20.08.2014 à 19:34

Commentaires :

Pages: Précédente | 1, 2, 3, 4, 5, 6, 7 | Suivante

LephenixnoirHors ligneAdministrateurPoints: 24574 Défis: 170 Message
Posté le 08-04-2014 à 16:59 | #
Au fait Ninestars, si tu veux pouvoir accéder à la fonction par un paramètre, tu peux écrire toi-même cette fonction (comme je l'ai dit, je ne voudrais pas l'inclure directement dans la lib pour des raisons de puissance), ou alors, tu peux toutjours essayer
void (*Text[3])(void *,int,int,int) = { Txt_Text1, Txt_Text2, Txt_Text3 };
(*Text[id])(/*paramètres*/);

Mais je ne suis pas sûr que ça fonctionne.
NinestarsHors ligneMembrePoints: 2462 Défis: 24 Message
Posté le 08-04-2014 à 22:44 | #
Ok je vois.
Le code vu comme ça, j'ai aucune idée de si il fonctionne, j'ai pas le niveau, mais j'essaierai aux prochaines vacances (je programme en C que pendant les vacances)

Sinon pourquoi pas rajouter la police en gras et en italique, enfin je pense que la résolution te limite...
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1243 Défis: 54 Message
Posté le 08-04-2014 à 22:55 | #
Si ce sont juste le fait d'effectuer un call et un return qui posent un soucis, si ta fonction n'est pas trop "lourde" (si j'ai bien compris c'est juste de changer l'adresse vers laquelle pointe la police utilisée en choisissant parmis l'adresse des trois autres ? Enfin, au pire, là n'est pas la question, je n'ai pas tout lu attentivement à ce niveau la ), tu peux toujours passer ta fonction en inline (si c'est permit par le compilateur, avec celui-ci, on ne sait jamais... :-/ ). Enfin je suppose que ça repondrait à peut près au problème, non ?
LephenixnoirHors ligneAdministrateurPoints: 24574 Défis: 170 Message
Posté le 09-04-2014 à 06:31 | #
Nemhardy a écrit :
[...] tu peux toujours passer ta fonction en inline [...]

Désolé, je ne connais pas le concept, ou le terme. Tu pourrais détailler ?

À propos de mon code, il s'agit d'un tableau de pointeurs sur des fonctions, très souple à utiliser. En fait je ne change pas la police, je change la fonction appelée.

Les polices en gras et en italique, comme ce ne sont que des bitmaps (faut pas rêver non plus...), il faudrait les refaire, ce qui triplerait l'espace mémoire occupé par ces polices, et les dimensions actuelles ne suffiraient pas (pas assez large), donc il faudrait (encore) de nouvaux algorithmes d'affichage, qui diminueraient considérablement la vitesse à l'exécution.
On verra, mais ça paraît difficile (d'autant plus qu'on ne s'en sert que peu).
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1243 Défis: 54 Message
Posté le 09-04-2014 à 07:35 | #
Ah oui, j'avais pas fais gaffe au code mis plus haut... Du coup l'intérêt d'inliner est peut être limité...
Sinon en gros, on peut un peu faire l'analogie avec les macros : en rajoutant le mot-clef "inline" devant ta déclaration de fonction, celle-ci sera remplacée dans le code par le compilateur à chaque appel.
Par exemple :
inline [purple]int[/purple] max(int a, [purple]int[/purple] b)
{
  [b][blue]return[/blue][/b] (a > b) ? a : b;
}

Si tu as par exemple
a = max(x, y);


Le compilateur va remplacer par
a = (x > y) ? x : y;


(Oui c'est l'exemple de Wikipedia et alors )
Dans cet exemple ça ressemble beaucoup à une macro, mais ça marche aussi avec des codes plus complexes. L'inconvénient c'est la taille finale de ce que tu compiles, mais du coup t'as plus de call/return pour une fonction que tu utiliserais souvent par exemple (par exemple une fonction permettant d'allumer un pixel ou autre qui reste assez légère mais assez utilisée)

Après comme je l'ai dit ça reste peu être d'un intérêt limité ici, mais moi je l'en sert de temps en temps, car ça permet de diminuer pas mal certaines vitesses d'exécution.
LephenixnoirHors ligneAdministrateurPoints: 24574 Défis: 170 Message
Posté le 09-04-2014 à 08:44 | #
Mais c'est génial !
Le problème de la macro, c'est qu'elle remplace le texte, mais que la fonction n'existe pas en tant que telle, c'est pourquoi je pense que le tableau que j'ai mis ne fonctionnera pas.

Mais avec ton code, la fonction existe, et ni call ni ret !

J'essaie ça dès que je peux
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1243 Défis: 54 Message
Posté le 09-04-2014 à 12:33 | #
J'ai un peu peur que ça ne fonctionne pas... :-/ De ce que je viens de lire, c'est implémenté en C99 et il le semble que le compilateur de renhesas ne lit que du C89... Enfin j'espère que ça fonctionnera
LephenixnoirHors ligneAdministrateurPoints: 24574 Défis: 170 Message
Posté le 28-04-2014 à 11:45 | #
J'ai mis à jour. Au menu, une nouvelle police de runes et d'icônes.
Elle s'utilise avec Txt_Text4() ou Txt_Runes().



Également reglé un problème dans l'espacement des caractères.
Dark stormHors ligneLabélisateurPoints: 11641 Défis: 176 Message
Posté le 28-04-2014 à 20:33 | #
Sympa
DarkysunHors ligneMembrePoints: 1747 Défis: 52 Message
Posté le 20-05-2014 à 18:18 | #
a ouais classe en tout cas si je fais un jeu ca sera avec lib.text 8)

Pages: Précédente | 1, 2, 3, 4, 5, 6, 7 | Suivante

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 181 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