Je suis convaincu que lors de la "grande époque" tu aurais pu faire une excellente suite d'articles sur TP dans les magazines.
Je suis toujours aussi jaloux de ta fonte vectorielle
Pour la fonte vectorielle c'est d'un simplicité enfantine ;D Ca doit pas être bien compliqué en ASM. Y'a pas de copyright lol
Le principe est tout bête et part d'une matrice de code ASCII de taille variable suivant la précision voulu. Si on a une matrice simple par exemple :
Code :
A B C D E F G H I J K L M N O P
"O" sera codé MADPM "A" sera codé MADP-HE "I" sera codé AM "Z" sera codé ADMP
Pour le coté proportionnel ajouter la largeur en début. Par exemple "I" -> 1AM "Z" -> "4ADMP"
La police que j'utilise est codé comme çà (le code est bourrin mais ca marche finalement bien) :
Code :
{ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ Police de caracteres vectorielle et proportionnelle _ ` a b c d e f g h i j k l m n o p q r s t u v }
Type String20 = String[20]; String255 = String[255];
Var Leve : Boolean; Taille, EchX, EchY,Xp,Yp,XDeb : Integer;
Procedure DspVecPic(Dessin:String20); Var i,v:Integer; Begin Leve:=True; GetGraCur(Xp,Yp); For i:=2 To Length(Dessin) Do Case Dessin[i] Of 'A'..'z': Begin v:=Ord(Dessin[i])-65; If Leve Then Begin MovAbs(xp+(v mod Taille)*EchX,yp-(v div Taille)*EchY); Leve:=False; End Else DrwLinAbs(xp+(v mod Taille)*EchX,yp-(v div Taille)*EchY); End; '-' : Leve:=True; End; Val(Dessin[1],v,i); MovAbs(Xp+v*EchX+EchX,Yp); End;
Procedure DspVecStr(S:String255); Var i:Byte; Begin GetGraCur(Xp,Yp); XDeb:=Xp; For i:=1 To Length(S) Do DspVecChr(S[i]); End;
Je vais ajouter un code de controle # pour le GRAS. Je pense qu'avec une fonction de tracé de ligne plus rapide mais moins généraliste et supprimant les controles de sortie d'écran la police pourrait être 3, 4 ou 5 fois plus rapide. Qd j'ai un peu de temps je vais faire une unité FastGraph beaucoup plus rapide (mais plus sensible aux plantages et dédié par mode graphique. un gain de 4 à 5 fois me semble possible). Je suis d'ailleurs étonné de la rapidite de ma fonction cercle qui est pourtant 100% en Pascal et avec la routine d'affichage de pixel du firmware.
Dernière édition par Nemo59 le 22 Avr 2021, 17:28, édité 1 fois.
Roudoudou, je te sens chaud a nous prototyper tout ca
Me concernant si on m'avait demandé de le faire, j'aurai plutôt fait un système vectoriel simplifié à 8 ou 16 directions, avec 1 ou deux bits pour la longueur, un code stop
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum