WIP : added some graphics primitives in modgint + fonts on fxCG (same as fx9860G) + turtle/matplotl libraries + examples #2
Loading…
Reference in New Issue
No description provided.
Delete Branch "(deleted):dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hello Lephe,
voici quelques propositions d'ajouts sur PythonExtra destinées à répondre à quelques unes des demandes en cours (selon ton listing ici des requêtes ):
Fonction de dessin de cercle (Ptitjoz #194511) : fonctions ajoutées via deux fichiers sources
primitives.h
&primitives.c
+ ajout des callbacks dansmodgint.c
, c'est Ok pourfx9860G
etfx-CG50
, juste aucun tracé si les couleurs sontC_LIGHT
ouC_DARK
dans les fonctions surfx9860G
(mais OK pourPrizm
)Ajout des fontes de tailles différentes sur
fx-CG50
. Pour le moment j'ai mis les mêmes que pour lafx9860G
, je ferai je pense une itération avec des fontes plus grosses, plus lisibles et spécifiques à laPrizm
.Compatibilité avec turtle (Tuper4 #194656) : j'ai créé deux librairies à partir de la version officielle de Casio. L'officiel est dans le fichier
.zip
et j'ai légèrement modifié pour que ça tourne sur le port micropython. Notamment la fonctionround()
de Python n'est pas couverte dans micropython, j'ai donc ajusté. C'est le fichierturtle.py
dansports/sh/examples/casioplot35
etcasioplot90
. Un example d'utilisation est donné danstestturtle.py
. ATTENTION, à cause du bug des chemin relatif, ça ne fonctionne que quand tout est à la racine pour le moment. Testé et fonctionnel surfx9860G
et surPrizm
.Compatibilité avec matplotl : là encore j'ai créé deux librairies à partir de la version officielle de Casio. En gros idem que pour
turtle
. C'est cette fois le fichiermatplotl.py
dansports/sh/examples/casioplot35
etcasioplot90
. Un example d'utilisation est donné danstestmatplotl.py
. ATTENTION, à cause du bug des chemin relatif, ça ne fonctionne que quand tout est à la racine pour le moment. Testé et fonctionnel surPrizm
par contre ne fonctionne pas surfx9860G
car pas assez de mémoire (le module est assez gros, je suis pas trop surpris de ce côté là. Si tu parviens à nous dégoter plus de RAM, ce sera à retester.Moteur de gris (Ptitjoz #194757) : Rien de poussé ici, j'ai fait la base, mais manque de RAM, ça bloque le lancement de PythonExtra (pas de crash, mais juste la ligne "PythonExtra" s'affiche à l'écran, rien de plus, la seule action possible est de quitter l'addin).
Correction du bug des imports relatifs (Ptitjoz #194757) : je confirme le bug. Dès qu'on a un call a
import
dans un module importé depuis un sous répertoire, il cherche dans la racine au lieu du répertoire courant.Bug sur l'émulateur (Ptitjoz #194519) : J'ai pas remarqué sur ma machine, je poursuis les investigations.
Correction de bug des fichiers mal fermés (Ptitjoz #194757) : idem, pas eu ce problème (encore), je poursuis les investigations.
Fonction de dessin d'image (Ena0 #194556, Tuper4 #194749) : pas regardé.
@+ Sly
Ouf, classiquement c'est un truc immense haha. Prenons les choses dans l'ordre.
Je vais commencer factoriser un chouille les primitives graphiques et les ajouter à gint. La dernière chose que je veux c'est avoir des fonctions du module gint de PythonExtra qui existent pas dans la lib de base. Je fais ça vite fait demain et je reviens vers toi juste après.
Salut,
oui c'était l'idée de base mais je voulais pas rajouter une PR dans gint. Idéalement, si tu sais les mettre les primitives dans un coin un peu spécifique de gint, cela permettrait de rajouter qq primitives au fil de l'eau (par exemple les polygones). J'aimerais à terme proposer les primitives simples disponibles dans
SDL_gfx
(le but n'étant pas de proposer une librairie qui fait tout, mais d'avoir qq fonctions de base pour faire des rendus simples).C'est pour cela que j'ai fait des fichiers séparés primitives.c & .h. Juste en passant j'ai pas vérifié pour le dwindow, je passe par dline() et dpixel() donc je pense que c'est OK, mais j'ai pas checké.
Mais je te laisse gérer, tu es le boss :) We keep in touch ...
Ah ben oui, c'est fait. J'ai ajouté deux fonctions
dcircle()
etdellipse()
dans18a7b9ae5b
.Ouais j'ai un peu longtemps dit que c'était pas le rôle de gint parce qu'il y avait pas de moyen facile d'avoir toutes les fonctionnalités qui vont bien... mais en fin de compte j'ai l'impression de bloquer un truc qui pourrait être parfois utile. Donc go. Je vois pas d'inconvénient à le mettre dans
<gint/display.h>
(comme je l'ai fait là), autant ne pas créer un header en plus.Je vais pousser ça à côté. J'espère que m'en veux pas si je merge pas directement ta PR, comme il y a de tout (et des bouts comme
primitives.{c,h}
que je vais pas récupérer) c'est plus simple comme ça.Yep, j'ai vu et ça me convient parfaitement cette manière de procéder.
Ok,
c3dc438b82
ajoutedcircle()
etdellipse()
.Au passage j'ai deux commits en plus :
8823d1f473
: Ajout dekeypressed()
,keyreleased()
etcleareventflips()
cccc2787b5
: Le fix des imports relatifs que j'avais déjà posté sur le forum mais pas encore pousséLes polices 4x4, 4x6 et 5x7 n'ont de sens que sur la Graph mono. @Slyvtt As-tu le temps de voir si tu peux récupérer/reconstruire une image des autres polices du casioplot officiel? La plage ASCII devrait suffire dans un premier temps.
Concernant turtle et matplotlib, je préférerais ne pas avoir deux versions séparées. On devrait supporter tout ce qui est nécessaire pour que le module marche tel quel puisque ça fait partie de la compatibilité avec l'appli Python officielle.
La fonction
round()
est un builtin, tu n'as pas besoin de l'importer - le modulebuiltins
est préchargé comme si le programme commençait parfrom builtins import *
. Le problème que tu avais c'est que la version deround()
qui était fournie ne permettait pas d'arrondir à un nombre variable de chiffres significatifs. J'ai activé cette fonctionnalité dans5e2b33b148
.Avec ça les modules originaux de l'annonce sur Planète Casio chargent tels quels, sauf matplotlib sur 35+E II comme tu l'as vu.
Si une implémentation interne (comme le Python officiel) est envisagée un jour, on gagnera en mémoire / vitesse à le faire en C.
Voici pour répondre à ta demande. 3 Fonts officielles de Casioplot :
J'ai fait rapidos le fichier
fxconv-metadata.txt
, mais il faudra peut être vérifier les valeurs depadding
que j'ai laissé à 1, mais j'ai un doute et j'ai pas pu essayer.Cela correspond pour les 3 fontes au charset
print
, du chr(32) au chr(127) donc.Je viens de merger avec upstream (1.12.0 + des brouettes), ce qui inclut notamment la correction du bug de non-fermeture des fichiers en cas d'erreur. Je t'invite à re-tester mais ça devrait être bon.
Désolé hie j'ai eu un méga souci sur mon portable, ça m'a coûté un backup complet et une full réinstall. J'ai testé les fontes ce matin et ai remarqué des soucis. Voici donc la version corrigée (et testée) des fontes Casioplot (dans fichier
Fonts Casioplot.tar.gz
avec le fichierfxconv-metadata.txt
correctement calé). J'en profite aussi pour te passer un mini addin de test qui montre le résultat dansfontAddin.tar.gz
. Je testerai ce que tu as push avec la MaJ majeure de micropython durant le weekend normalement.Merci. Résumé de ce qu'il reste de cette issue/PR après 0.2.0-beta:
Salut,
Pour le moteur de gris, je regarderai si le up de version plus les modifs apportées permettent de passer. Je pense que l'ajout des VRAM nécessaires au moteur rendent les ressources disponibles trop limites. Mais je vais checker.
Pour le bug de l'émulateur, perso j'arrive pas à reproduire, j'ai demandé des infos à Ptitjoz.
Pour
dimage()
, il me semble compliqué de repartir des fonctions actuelles d'imports de fichiers (viafxconv
). Par contre je me demande si passer par une lib du style stb_image ne serait pas le bon truc. On pourrait ainsi charger uneimage_t
en RAM directement via un fichier (avec la moulinette de conversion adhoc) et ensuite faire undimage()
de cette image via les fonctions degint
.Y'aurait potentiellement la
libPNG
pour le faire direct sinon.Cette PR peut être fermée, les éléments restants ont été repris dans les différents tickets individuels mis en place.
Pull request closed