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 » WebCalc
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

WebCalc

Posté le 26/03/2014 18:58

Je me suis rendu compte qu'on niveau lecteurs de documents... on n'avait pas grand-chose. Après divers tests et choix, je me suis tourné vers le standard : on aura donc un afficheur de documents basé sur les langages HTML/CSS.


À cette occasion, j'ai également programmé une petit lib (qui viendra en remplacement de l'actuelle libtext) qui permet d'utiliser des polices custom sans limites de proportionnalité, taille, alignement, etc., ainsi qu'un interpréteur TeX pour afficher les formules mathématiques, lui-même pas encore complet puisqu'il ne gère que quelques éléments (racines, fractions, vecteurs, ...).

\frac{\frac{12}{\sqrt{5}}+14}{\vec{AB}.\frac{3\vec{BC}}{2}}+\sqrt{\frac{4}{\frac{1}{2}at}} = \frac{\frac{2}{BC}}{17}\sum{x=\frac{2}{5}}{\sqrt{\frac{3}{n}}}\frac{x}{2}

L'image a expiré, j'en remettrai une avec la prochaine version du moteur !


Fichier joint


Précédente 1, 2, 3 ··· 6, 7, 8, 9, 10, 11, 12 ··· 19, 20, 21 Suivante
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 22/09/2014 06:27 | # | Fichier joint


Pour tout ce qui est schémas dans les cours, par exemple. Bien souvent, un document sans image c'est moins attirant.
Mais du coup on a le problème du stockage... ben oui, on va pas mettre 36 fichiers pour la page web.
Enfin, j'ai plus ou moins résolu le problème depuis un certain temps déjà, donc ça va de ce côté-là.


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gollum Hors ligne Membre Points: 1262 Défis: 2 Message

Citer : Posté le 22/09/2014 07:07 | #


Avec un bord blanc pour se detachrr ou pas ?
https://telegram.me/BrokenClock
Je suis de l'autre coté de la manche maintenant. Yay.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 22/09/2014 13:36 | #


Lephenixnoir a écrit :
Pour tout ce qui est schémas dans les cours, par exemple. Bien souvent, un document sans image c'est moins attirant.
Mais du coup on a le problème du stockage... ben oui, on va pas mettre 36 fichiers pour la page web.
Enfin, j'ai plus ou moins résolu le problème depuis un certain temps déjà, donc ça va de ce côté-là.



est-ce qu'un format d'image vectorielles ne ferait pas l'affaire si c'est plus pour des schémas ?
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 22/09/2014 13:44 | #


Non car ce serait beaucoup trop lourd. Sur un écran si petit, c'est beaucoup plus rentable de faire du matriciel.
Et puis, je veux qu'on puisse faire tout avec ces pages html, des cours, des docs, etc...

Ajouté le 22/09/2014 à 19:19 :
J'ai mis à jour le post principal.

Ajouté le 22/11/2014 à 10:42 :
Le moteur d'affichage étant vraiment, vraiment pas évolué du tout, je vais le réécrire du début (en fait, on peut dire que je l'écris tout court...).
Pour m'adapter à tous les cas de figure, il faut que je fasse des tests avec un grand nombre de propriétés mais ce serait compliqué de les faire varier dans le programme, pour chaque élément de la page... du coup il serait plus facile d'implémenter le CSS, mais j'ai un problème : stocker toutes les règles serait très consommateur de mémoire.

J'ai donc eu une idée : soit inclure les stylesheets à la fin, soit ne les lire qu'à la fin, et appliquer directement toutes les règles lues aux éléments concernés.
Conséquence : ça rend plus facile l'héritage de propriétés et plus difficile la gestion de la priorité des sélecteurs.

Au cas où, imaginez-vous possible de se passer de niveau de priorité des sélecteurs CSS ?
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 22/11/2014 11:02 | #


Le niveau de priorité est pas forcément important, ce qui est important c'est de ne pas pouvoir sélectionner les lignes à gauches si t'arrive à les implanter !
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 22/11/2014 11:19 | #


Je trouve le niveau de priorité super important mais ton projet serait super même sans.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 22/11/2014 11:25 | #


Eltoredo a écrit :
[...] ce qui est important c'est de ne pas pouvoir sélectionner les lignes à gauches [...]

Les lignes à gauche ?

Eltored a écrit :
si t'arrive à les implanter !

Les implémenter.
Enfin, je suppose.

Legolas a écrit :
Je trouve le niveau de priorité super important mais ton projet serait super même sans.

Je dis pas que ce serait impossible, en fait j'ai déjà plusieurs idées d'implémentation mais elles ne sont pas sûres. Déjà les sélecteurs... :3

Disons que si j'applique les propriétés comme je l'ai expliqué, ça va être dur au niveau hover etc...
Ou alors je ne stocke en mémoire que ces styles-là.

Ajouté le 22/11/2014 à 15:05 :
Au fait, je viens de regarder la taille de l'application : 38 ko. Avec le TeX qui en fait environ 32 (à nuancer, il y a une partie de fxlib en double dedans), je pense qu'il faudra compter autour de 100 pour un moteur complet -- ça me paraît raisonnable, j'avais craint plus.

Ajouté le 22/11/2014 à 17:10 :
Le parser CSS me paraît plus que raisonnable pour l'utilisation que je veux en faire.
[b]Fichier CSS :[/b]
html
{
    margin: 2;
}

body h1
{
    border-size: 1;
    border-color: black;
    background: linear-gradient(bottom,#ffffff,#e5e5e5);
}

#id > a:visited
{
    color: white;
}

#id, h2.class:nth-child(odd):hover
{
    background: red;
}


[b]Log[/b]
~~ \\crd0\page.css
~~ "html"
    "margin" : "2"
~~ "body h1"
    "border-size" : "1"
    "border-color" : "black"
    "background" : "linear-gradient(bottom,#ffffff,#e5e5e5)"
~~ "#id > a:visited"
    "color" : "white"
~~ "#id, h2.class:nth-child(odd):hover"
    "background" : "red"

Oui j'ai complètement abusé sur les sélecteurs et ne faites pas attention au linear-gradient qui n'existera jamais, c'était des tests.

Ajouté le 23/11/2014 à 11:54 :
Ok, mon interpréteur CSS gère maintenant la sélection avec les formats suivants :
tag { }

parent child { }

parent > child { }

parent2 > parent1 [...] child { }

Pour ceux qui ça intéresse, voici les fichiers avec lesquels j'ai fait les tests.
HTML - CSS - log

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 23/11/2014 19:08 | #


Ce serait possible de gérer les :hover et autres ?
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 23/11/2014 19:37 | #


Legolas a écrit :
Ce serait possible de gérer les :hover et autres ?

Pour être franc, je ne pense pas.
Il faudrait stocker les règles car je ne peux pas les appliquer instantanément, et déjà rien que ça ce serait le bordel. Je viens de penser à un moyen intelligent de le faire mais ça reste moche.
En plus il faut gérer le curseur, etc., et les events sinon ça sert à rien. Il faudrait pouvoir appeler du callback sur un clic, bref toute une galère.

Si j'ai la mémoire et la puissance je regarderai les events mais en toute franchise c'est peu probable qu'on puisse mettre du CSS dessus.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 23/11/2014 20:52 | #


Ok pas grave.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 23/11/2014 21:21 | #


J'ai une dernière bonne nouvelle : le moteur ne comporte pour l'instant pas le moindre bug tant que le code HTML/CSS est correct.
Le seul que j'aie trouvé, c'est lorsqu'on quitte l'application, l'émulateur plante si on en lance une autre : exception CPU. Vous le connaissez aussi et il est dangereux, car il peut provoquer un reset du processeur sur la machine (style un écran rapide avec un trait noir horizontal ou plus rarement vertical, puis reboot comme souvent sur SH4 ou niveaux de gris).
Il est dû à un problème très simple : quitter sur un IsKeyDown(). Pourquoi, je ne sais pas. En tous cas, utiliser GetKey() résoud le problème.

Ah oui, j'ai 100% de compatibilité SH4 aussi.

Ajouté le 31/12/2014 à 11:45 :
Ok, alors j'ai bien avancé sur le projet.

J'ai écrit une fonction qui calcule récursivement la taille de chaque division. Pour l'instant elle ne fonctionne que pour les block... mais elle fonctionne très bien.
Je peux aussi calculer la taille des divisions qui contiennent du texte (imprtant...) et les afficher, de même que tous les block.

Il n'y a pas de stylesheet interne au moteur par défaut, donc tous les h1-h6, p, etc. sont identiques. Je verrai plus tard, mais c'est possible que je mette plutôt un fichier CSS dans les données. Je verrai juste s'il n'est pas trop gros.

Voilà donc la liste des propriétés CSS actuellement supportées et utilisées :
→ display (uniquement "block") ;
→ margin ;
→ border ;
→ padding ;
→ font-family (5 polices différentes, tourne avec la libText) ;
→ maxWidth et maxHeight en théorie, le premier vu qu'il n'a aucun effet sur les block et le second parce que je n'ai pas encore implémenté le scrolling dans les divisions et que je n'ai pas fait de tests.

Je précise que j'ai pas encore implémenté de raccourcis pour margin, border et padding. Le scrolling existe mais juste sur toute la page. Le html fait maximum 127 pixels car il faut mettre la scrollbar (si le document passe dans 64px elle est pas dessiné). Dans l'exemple, il y a un pixel de margin-right au body.



Bon, on devrait bientôt avoir quelque chose d'utilisable...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 31/12/2014 11:46 | #


Génial
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
-florian66- Hors ligne Ancien rédacteur Points: 2384 Défis: 20 Message

Citer : Posté le 31/12/2014 11:49 | #


Vraiment cool
In Arch, I trust ! And you ?
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

Citer : Posté le 31/12/2014 11:50 | #


Bravo, content de voir que ton projet avance C'est quoi la plus petite taille de police qui serra disponible ?
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 31/12/2014 11:53 | #


La plus petite police c'est du 3*5. J'ai repris celle du système (Text en Basic), mais la version éditée (pour être plus "régulière") n'est pas tout à fait à mon goût, donc je la rééditerai sans doute.


Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

Citer : Posté le 31/12/2014 12:34 | #


Super je trouve qu'avoir une petite police est indispensable sinon on est obligé de scroller tout le temps et c'est pas du tout pratique !! Quand tu dis rééditer, tu veux dire modifier la police ?
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 31/12/2014 13:42 | #


Yep, elle est pas encore tout à fait assez lisible et régulière.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Scientifix Hors ligne Membre Points: 762 Défis: 30 Message

Citer : Posté le 31/12/2014 13:53 | #


Si tu veux je pourrais te donner (quand tu auras et quand j'aurais fini) mes eActivities de maths (regroupent cours et formules (de 1èreS, TS, spé maths et au-delà) de manière lisible, claire et succincte) pour faire un fichier cours (un peu comme "Formel" de CASIO Allemagne) ... dis moi si ça te tentes
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 31/12/2014 14:22 | #


Si ça me tente ? C'est prévu
Sinon je veux bien tes synthèses, je complèterais alors avec mon cours pour couvrir un maximum d'informations.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 31/12/2014 14:55 | #


En fait jai jamais rien comptis a ce projet : tu veux fairr un interpreteur de html/css sur la calto omg ? Ceci permettrait de faire des jeux comme avec le basic ?
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 31/12/2014 14:58 | #


C'est pas tout à fait ça.

HTML est un langage qui permet de décrire la structure des documents : c'est lui qui est utilisé pour écrire des page web ("là, un en-tête, ensuite un gros titre, un tableau, le tout contenu dans un même bloc...").
CSS permet de décrire le style du document : il permet de mettre en forme les éléments ("le bloc va ici, le tableau a un fond bleu clair avec une bordure grise de 2 pixels de large...").

WebCalc est un programme qui permet de lire des documents écrits avec HTML et CSS, parce que ce sont deux langages de référence, et de les afficher. En d'autres termes, il permet d'afficher des pages web simples.

Tu vois mieux maintenant ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3 ··· 6, 7, 8, 9, 10, 11, 12 ··· 19, 20, 21 Suivante

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 90 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