 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 26.03.2005, 00:40 Titel: freeBASIC: PRINT-Ersatz |
|
|
Das Problem mit Print in Grafik-Modi ist allgemein bekannt.
ungenau Positionierbar, der Hintergrund geht verloren, und außerdem is das Format auf 8x8 bzw 8x16 festgelegt.
Viele fortgeschrittene Programmierer ahben schon nen Ersatz dafür gechrieben, meistens auf ner externen Datei basierend, in der die Zeichenmuster für jeden ASCII-Character gespeichert sind.
Nur sind die meisten dieser Routinen immer noch auf feste Formate beschränkt.
Deswegen schreibe ich seit 2 Tagen ein einer Eigenen Routine, die dieser Einschränkung nicht mehr unterliegt.
Weitere Features:
- Eingebaute INPUT-Routine
- Wahlweise Hintergrundfarbe oder Transparenzeffekt
- frei Vergrößerbar/Verkleinerbar
- File-Header
(ich glaub, das sollt ich jetz kurz erklären:)
Bei manchen Schriftarten würde man gerne mehr infos Mitgeben, als nur den Dateinamen. Erstellungsdatum, Name des Erstellers, ...
Diese können direkt in der Datei integriert werden.
Zurzeit hab ichs so organisiet, das maximal 256 Infos in den Header gepackt werden können, und alles zusammen maximal 64 KB.
Dateiintertnes Format:
Header-Size: 2 bytes
Zahl der Header-inahlte: 1 Byte
CHR$(255) 1 Byte (leitet Name eines Header-Elements ein)
Name des Header-Elements, wie etwa "Datum": ?? Bytes
CHR$(255) 1 Byte (beendet Header-Element-Name)
Inhalt des Header-Elements, wie etwa "03-25-2005": ?? Bytes
CHR$(13) leitet nächstes Element ein.
Höhe: 1 Byte
Charmap:
Breite des Zeichens: 1 Byte
Zeichenmuster: Höhe * (Breite / 8 ) + SGN(Breite MOD 8 ) Bytes
Das scheint ganz gut zu funktionieren; ich hab bis jetzt immerhin schon die Laderoutine geschrieben bzw die anzeige-Routinen.
Das einzige, was momentan noch zu tun ist, ist ein gescheiter editor.
Syntax
Denkbar einfach. Zuerst eine Schriftdatei Laden:
LoadFontFile Dateiname AS STRING
und dann eine Anzeigeoption wählen:
-für normales Anzeigen:
SFont Text AS STRING, x AS INTEGER, y AS INTEGER, fore AS INTEGER, back AS INTEGER
fore und back sind dabei Farbwerte. Wenn back kleiner 0 ist, wird der Text transparent ausgeben.
- für vergrößerte/verkleinerte ausgabe:
BFont Text AS STRING, x AS INTEGER, y AS INTEGER, fore AS INTEGER, back AS INTEGER, factor AS SINGLE
- Der input-ersatz:
IFont Text AS STRING, x AS INTEGER, y AS INTEGER, fore AS INTEGER, back AS INTEGER, Ans AS STRING
und nicht vergesen, den Speicher freigeben:
UnLoadFont
Das ganze wird nämlich für die benutzung im Programm in einem Pointer Muster[] gespeichert; die Offsets sind in einem Array Adrs(1 TO 255, 2)
Tja... wie bei jedem Thread in diesem Forum:
Was haltet ihr davon, könnte das was werden, hat wer Tips?
Danke fürs lesen!
Have a nice day
Ciao! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Zuletzt bearbeitet von Dusky_Joe am 01.04.2005, 19:02, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 30.03.2005, 21:58 Titel: |
|
|
Das nenn ich ein gutes vorhaben! mal sehen, ob ich 's benutzze  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 01.04.2005, 18:54 Titel: |
|
|
Ah, endlich jemanden, dens interessiert *g*
Wie gesagt, die Hauptroutinen stehen schon, und funktionieren, nur der Editor macht bisweilen noch Probleme.
Arbeite grade an der Größenänderung der Zeichen... als nächstes wirds wohl die ersten Speicher-Funktionen geben, damit man schon mal Fonts erstellen kann.
Und wenn ich erst mal so weit bin, wirds wohl auch den ersten DL-Link geben.
Ich musste dieses Projekt aber kurz zurückstecken, weil ich nen HTML-BB-Parser schreiben musste....
Naja, der is jetz fertig, also gehts wieder an die Arbeit *g*
Und du gehörst zu den ersten, denen ich das fertige Ding schicke  _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Quark48

Anmeldungsdatum: 16.10.2004 Beiträge: 559 Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern
|
Verfasst am: 01.04.2005, 18:56 Titel: |
|
|
Hallo!
Klasse! Endlich mal wer, der das Problem löst
Wenns für QB ist, dann nehm ichs her  _________________ Grüßle, Stefan
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht!
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/ |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 01.04.2005, 19:09 Titel: |
|
|
Sorry, is leider FB. Um die Pixelmuster im Speicher abzulegen, verwende ich ALLOCATE, einen reinen FB-Befehl...
Aber als abhilfe könnt ich dir den Vorgänger dazu empfehlen.
Dazu gehst du auf www.qbasic.de/wettbewerb, und lädst dir SKYFISH.ZIP runter. Darin sind unter anderem ein paar Font-Routinen für QB incl einer FontFile.
Ich glaube, da sind SFont, BFont, VFont und IFont dabei. (VFont gibt Bunte Schrift aus). Der nachteil dabei ist, dass ich die Pixelmuster recht ineffektiv gespeichert hab (20 KB für eine Datei), und das Pixelformat festgelegt ist, entweder auf 16x8 oder 8x8.
Aber praktisch is es allemal, habs schon in einigen QB-Progs benutzt, und war wahnsinnig froh drum *g* _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Quark48

Anmeldungsdatum: 16.10.2004 Beiträge: 559 Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern
|
Verfasst am: 01.04.2005, 19:14 Titel: |
|
|
Hallo!
Danke trozdem  _________________ Grüßle, Stefan
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht!
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/ |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 11.04.2005, 17:09 Titel: |
|
|
So, die Font Edit 0.1.3 ist da. Wie man aus der Versionsnummer schon lesen kann - das Ding kann praktisch nix...
Immerhin, speichern und Laden geht. Dafür habe ich übrigens die Windows-Dialoge verwendet, unter Linux wirds also nicht laufen...
Tragisch...
Im Paket ist neben dem Editor (compilert und als Quellcode) auch noch eine Reihe von .BAS-files.
Die sollen verdeutlichen, wie die Daten aufgebaut sind, bzw. wie eine Datei geladen wird.
In der read_fonts_charset_10.bas sind dann die eigentlichen Routinen. Einfach kopieren, einfügen, fertig.
Die Syntax wurde ja oben schon erklärt, ist aber eh recht einfach zu verstehn *g*
Fehlt nur noch der Link zum Donwload:
http://dhost.info/siteofkaos/freeBASIC/FB-Font.zip
Würde mich über Kommentare, Vorschläge, ... freuen!
Danke, Ciao _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
ts-soft

Anmeldungsdatum: 13.02.2005 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: 20.04.2005, 16:48 Titel: |
|
|
Nettes Programm, aber:
>> Immerhin, speichern und Laden geht.
Beim laden, kurz nach Auswahl einer *.fbf Datei erschein ein Systemfehler
>> Fehlgeschlagene Anwendung font_edit.exe, Version 0.1.3.0, fehlgeschlagenes Modul ntdll.dll, Version 5.1.2600.2180, Fehleradresse 0x00010f29.
Mein System: WinXP Pro SP 2
Gruß
Thomas |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 20.04.2005, 17:00 Titel: |
|
|
Interessant...
Hier verwende ich die WIN-API. Wird der Dialog angezeigt, oder stürzt das Prog schon ab, wenn du nur auf Datei->Laden klickst?
Wie man aus der Fehlermeldung schon erkennen kann ist der Fehler ja nicht in meinem Code aufgetreten...
evtl lags aber auch an nem Bedienugsfehler beim Aufruf der API-Funktionen...
Kommt der Fehler jedes mal, oder hast du's nur einmal probiert?
Danke fürs Downloaden! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
ts-soft

Anmeldungsdatum: 13.02.2005 Beiträge: 26 Wohnort: Berlin
|
Verfasst am: 20.04.2005, 17:11 Titel: |
|
|
Dusky_Joe hat Folgendes geschrieben: | Interessant...
Hier verwende ich die WIN-API. Wird der Dialog angezeigt, oder stürzt das Prog schon ab, wenn du nur auf Datei->Laden klickst? |
Der Dialog wird angezeigt, ich wähle eine Datei und Systemfehler. Da die Fehlermeldung auf die NTDLL.DLL hinweist, nehme ich an, das der Fehler mit WinXP oder NT allgemein zu tun hat.
Dusky_Joe hat Folgendes geschrieben: | Kommt der Fehler jedes mal, oder hast du's nur einmal probiert? |
Kommt jedesmal, konnte noch keine Datei laden, lediglich die beim starten geladene kann ich bearbeiten.
Gruß
Thomas
(ts-soft) |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 04.03.2007, 04:46 Titel: |
|
|
Hi, ich habe gerade mal hier in den Archiven gestöbert, was es da zum Thema Font noch gibt um noch weitere mögliche Alternativ Methoden in meiner Seite aufzulisten, ich wollte mir dein Programm deswegen kurz ansehen aber der letzte Link funktioniert leider nicht mehr.... _________________
 |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|