Grafik-Font 3x5 & 5x5 Pixel

  • 1
  • 2
  • Seite 1 von 2
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Grafik-Font 3x5 & 5x5 Pixel

 · 
Gepostet: 21.12.2020 - 15:26 Uhr  ·  #1
Hallo @ all,

habs doch getan .... einen 3x5 Pixel-Font mit einer (vorerst) einfachen Ausgaberoutine gemacht.
Die Zeichen #00 - #31 sind nicht definiert. Keine Drehung. Oben links ist die Koordinatenangabe.

Noch schnell was zum Aufbau des Arrays: Der erste Wert der 3er-Gruppe ist im Zeichen links, der 2. Mitte, der 3. rechts. Verwendet wird vom Byte 2^0 - 2^4, wobei 2^0 im Zeichen oben ist.

Beispiel '2' = $19,$15,$12
Code
$19 = %xxx11001 = . . . x x     x
$15 = %xxx10101 = . . . x   x   x
$12 = %xxx10010 = . . . x     x   

..... Kopf nach rechts neigen und schauen :D

Gruss
Harry

Code

Const
  SF3x5     : Array[0..383] of Byte =  ($00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00,   //   0
                                        $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00,   //   4
                                        $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00,   //   8
                                        $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00,   //  12
                                        $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00,   //  16
                                        $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00,   //  20
                                        $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00,   //  24
                                        $00,$00,$00, $00,$00,$00, $00,$00,$00, $00,$00,$00,   //  28
                                        $00,$00,$00, $00,$17,$00, $03,$00,$03, $1F,$0A,$1F,   //  32 Space ! " #
                                        $16,$1F,$0D, $19,$04,$13, $0A,$15,$1A, $00,$03,$00,   //  36 $ % & '
                                        $00,$0E,$11, $11,$0E,$00, $0A,$04,$0A, $04,$0E,$04,   //  40 ( ) * +
                                        $10,$08,$00, $04,$04,$04, $00,$10,$00, $10,$0C,$03,   //  44 , - . /
                                        $1F,$11,$1F, $12,$1F,$10, $19,$15,$12, $15,$15,$0A,   //  48 0 1 2 3
                                        $07,$04,$1F, $17,$15,$09, $0E,$15,$09, $19,$05,$03,   //  52 4 5 6 7
                                        $1F,$15,$1F, $17,$15,$0F, $00,$0A,$00, $10,$0A,$00,   //  56 8 9 : ;
                                        $04,$0A,$11, $0A,$0A,$0A, $11,$0A,$04, $02,$19,$06,   //  60 < = > ?
                                        $0E,$15,$16, $1E,$05,$1E, $1F,$15,$0A, $0E,$11,$11,   //  64 @ A B C
                                        $1F,$11,$0E, $1F,$15,$11, $1F,$05,$01, $0E,$11,$1D,   //  68 D E F G
                                        $1F,$04,$1F, $00,$1F,$00, $10,$0F,$00, $1F,$04,$1B,   //  72 H I J K
                                        $1F,$10,$10, $1F,$06,$1F, $1F,$0E,$1F, $0E,$11,$0E,   //  76 L M N O
                                        $1F,$05,$02, $06,$09,$16, $1F,$05,$1A, $12,$15,$09,   //  80 P Q R S
                                        $01,$1F,$01, $0F,$10,$0F, $07,$18,$07, $1F,$0C,$1F,   //  84 T U V W
                                        $1B,$04,$1B, $03,$1C,$03, $19,$15,$13, $00,$1F,$11,   //  88 X Y Z [
                                        $03,$0C,$10, $11,$1F,$00, $02,$01,$02, $10,$10,$10,   //  92  ] ^ _
                                        $02,$05,$02, $0C,$12,$1C, $1F,$12,$0C, $0C,$12,$12,   //  96 ° a b c
                                        $0C,$12,$1F, $0C,$1A,$14, $04,$1F,$05, $14,$1A,$0C,   // 100 d e f g
                                        $1F,$02,$1C, $00,$1D,$00, $10,$0D,$00, $1F,$08,$14,   // 104 h i j k
                                        $00,$1F,$00, $1E,$06,$1E, $1C,$02,$1C, $0C,$12,$0C,   // 108 l m n o
                                        $1E,$0A,$04, $04,$0A,$1E, $1E,$04,$02, $14,$0A,$00,   // 112 p q r s
                                        $02,$1F,$02, $0E,$10,$0E, $06,$18,$06, $0E,$18,$0E,   // 116 t u v w
                                        $12,$0C,$12, $16,$08,$0E, $1A,$1E,$16, $04,$1F,$11,   // 120 x y z {
                                        $00,$1B,$00, $11,$1F,$04, $06,$02,$03, $1F,$1F,$1F);  // 124 | } ~ Block

// Ausgabe Text als 3x5-Matrix; 0,0 ist immer oben, links
Procedure chDraw3x5(X,Y:Integer;Text:String[32]);
  Var XC   : Integer;
      CC   : Integer;
      PC   : Integer;
  Begin
    For XC:=1 to Length(Text) do
      PC:=Integer(Ord(Text[XC]));
      For CC:=0 to 2 do
        gDrawLine(X+((XC-1)*4)+CC,Y,X+((XC-1)*4)+CC,Y+4,Mirror8(SF3x5[PC*3+CC]));
        EndFor;
      EndFor;
  End chDraw3x5;

.
.
.

    chDraw3x5(105,111,' !"#$%&'+#39+'()*+,-./0123456789:;<=>?');
    chDraw3x5(105,117,'@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_');
    chDraw3x5(105,123,#96+'abcdefghijklmnopqrstuvwxyz{|}~'+#127);


[Edit]Hab das 'r' geändert, es hat mir nicht gefallen. Rechts oberhalb ist jetzt noch ein Punkt dazu gekommen.

[Edit]"f" hatte einen Fehler
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Grafik-Font 3x5 Pixel

 · 
Gepostet: 22.12.2020 - 13:20 Uhr  ·  #2
Fertig :) .... TxtRot0, 90, 180 und 270 funktionieren.
Was nicht geht und was ich auch nicht vor habe zu implementieren, ist gSetTextJustify, gSetTextMode und gSetTextBkGnd. Da die Ausgabe eigentlich kein Text ist, sondern Linien mit Mustern, wäre das auch nicht ganz so einfach .... ok gSetTextJustify könnte man evtl. mit einem Offset erschlagen.

[Edit]Das Thema hatte ich früher schon mal angesprochen: topic.php?t=3262

Code
Procedure chDraw3x5(X,Y:Integer;TRotation:TTxtRotate;Text:String[32]);
  Var XC          : Integer;
      X2,Y2       : Integer;
      CC          : Integer;
      PC          : Integer;
  Begin
    For XC:=1 to Length(Text) do
      PC:=Integer(Ord(Text[XC]));
      Case TRotation of
        TxtRot0  :X2:=X+((XC-1)*4);
                  Y2:=Y+4;
                  For CC:=0 to 2 do
                    gDrawLine(X2+CC,Y,X2+CC,Y2,Mirror8(SF3x5[PC*3+CC]));
                    EndFor;
                 |
        TxtRot90 :X2:=X+4;
                  Y2:=Y-((XC-1)*4);
                  For CC:=0 to 2 do
                    gDrawLine(X,Y2-CC,X2,Y2-CC,Mirror8(SF3x5[PC*3+CC]));
                    EndFor;
                 |
        TxtRot180:X2:=X-((XC-1)*4);
                  Y2:=Y-4;
                  For CC:=0 to 2 do
                    gDrawLine(X2-CC,Y,X2-CC,Y2,(SF3x5[PC*3+CC]) SHL 3);
                    EndFor;
                 |
        TxtRot270:X2:=X-4;
                  Y2:=Y+((XC-1)*4);
                  For CC:=0 to 2 do
                    gDrawLine(X,Y2+CC,X2,Y2+CC,(SF3x5[PC*3+CC]) SHL 3);
                    EndFor;
                 |
        EndCase;
      EndFor;
  End chDraw3x5;


Die an die Procedure übergebenen Koordinaten beziehen sich immer auf den oberen linken Punkt des Textes bzw. des ersten Zeichens, egal in welche Richtung man schreibt.

Die Ausgabe im Foto erfolgte so (das Display hat 240x128 Pixel):
Code
    chDraw3x5(  0,  0,TxtRot0,' !"#$%&'+#39+'()*+,-./0123456789:;<=>?');
    chDraw3x5(  0,  6,TxtRot0,'@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_');
    chDraw3x5(  0, 12,TxtRot0,#96+'abcdefghijklmnopqrstuvwxyz{|}~'+#127);
    gDrawString(84,18,1,1,TxtRot0,'TxtRot0');

    chDraw3x5(  0,127,TxtRot90,' !"#$%&'+#39+'()*+,-./0123456789:');
    chDraw3x5(  6,127,TxtRot90,'@ABCDEFGHIJKLMNOPQRSTUVWXYZ');
    chDraw3x5( 12,127,TxtRot90,#96+'abcdefghijklmnopqrstuvwxyz');
    chDraw3x5( 18,127,TxtRot90,';<=>?[]^_{|}~'+#127);
    gDrawString(25,129,1,1,TxtRot90,'TxtRot90');
    
    chDraw3x5(239,127,TxtRot180,' !"#$%&'+#39+'()*+,-./0123456789:;<=>?');
    chDraw3x5(239,121,TxtRot180,'@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_');
    chDraw3x5(239,115,TxtRot180,#96+'abcdefghijklmnopqrstuvwxyz{|}~'+#127);
    gDrawString(167,108,1,1,TxtRot180,'TxtRot180');
    
    chDraw3x5(239,  0,TxtRot270,' !"#$%&'+#39+'()*+,-./0123456789:');
    chDraw3x5(233,  0,TxtRot270,'@ABCDEFGHIJKLMNOPQRSTUVWXYZ');
    chDraw3x5(227,  0,TxtRot270,#96+'abcdefghijklmnopqrstuvwxyz');
    chDraw3x5(221,  0,TxtRot270,';<=>?[]^_{|}~'+#127);
    gDrawString(213,-2,1,1,TxtRot270,'TxtRot270');
    
    gDispRefresh;


Harry
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Grafik-Font 3x5 Pixel

 · 
Gepostet: 08.01.2021 - 13:40 Uhr  ·  #3
Ich hab noch einen Font mit 5x5 Pixel gefunden. Besteht Interesse?
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Grafik-Font 3x5 & 5x5 Pixel

 · 
Gepostet: 16.03.2021 - 11:10 Uhr  ·  #4
Ich habs mal in eine Unit verpackt und zusätzlich einen 5x5-Pixel-Font integriert.

Harry
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: Grafik-Font 3x5 & 5x5 Pixel

 · 
Gepostet: 16.03.2021 - 11:49 Uhr  ·  #5
Hallo Harry,

das schaue ich mir bei Gelegenheit mal auf meinen Display an, dann würde ich noch mehr platz haben um Informationen anzuzeigen.

Danke

Thorsten
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Grafik-Font 3x5 & 5x5 Pixel

 · 
Gepostet: 18.09.2023 - 14:52 Uhr  ·  #6
Seltsamerweise kann ich diese Unit nicht mehr compilieren mit 6.00.03 .... ein komischer Fehler.
Mit der letzten Version von Rolf ( :( ) geht es.

Gruss
Harry

PS: In Zeile 236 steht "Begin" ;)
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: Grafik-Font 3x5 & 5x5 Pixel

 · 
Gepostet: 20.09.2023 - 11:37 Uhr  ·  #7
Can you please send me your project, Harry and I will look into it.
---------------------------------------------------------------------
Können Sie mir bitte Ihr Projekt schicken, Harry, und ich werde es mir ansehen.
Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: Grafik-Font 3x5 & 5x5 Pixel

 · 
Gepostet: 20.09.2023 - 12:32 Uhr  ·  #8
Hi Harry.

I can find no reference to updGraphicText.PCU. Is it ne you have written? Have you tried the LIB version?

------------------------------------------------------------------------------------------------------------------------------------

Ich kann keinen Hinweis auf updGraphicText.PCU finden. Haben Sie das geschrieben? Haben Sie die LIB-Version ausprobiert?
  • 1
  • 2
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 8 · Cache Hits: 14   135   149 · Page-Gen-Time: 0.023861s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI