Skalierung GenView (mit Bitmap?)

  • So, ich stelle schon mal mein voraussichtlich letztes Thema zur Diskussion.

    Im GeoLadder verwende ich die Bitmap-Schriftart BISON. Diese Schriftart hat in meinen Augen genau 3 Punktgrössen, die passend sind. Das wäre 9.0, 12.0 und 14.0. Alle anderen Punktgrössen ergeben nicht so Terminal-typische Zeichen.

    Ich habe einmal mit der Skalierung der GenView herumgespielt. Dabei sah es für mich so aus, als wenn ich Schrift mit 12.0 Punkten bei einem Skalierungsfaktor von 2.0 zeichne, die Zeichen dann mit der Punktgrösse 24.0 und entsprechend unschön angezeigt werden. Grundsätzlich ist das ja richtig. Aber in meinem Fall nicht passend.

    Rainer hat mir ja schon einmal empfohlen, in eine Bitmap zu zeichnen. Wäre das eventuell die Lösung? Wenn ich diese Bitmap dann ganzzahlig skaliere, dann sollten auch die Zeichen weiter anständig aussehen. Einfach etwas pixliger, was nicht so schlimm wäre im Gegensatz zu den skalierten Punktgrössen.

  • Wunderbar, das ist genau so, wie ich es mir vorgestellt habe :thumbup:

    Einzig muss sich dann noch zeigen, welchen Einfluss das auf die Performance hat. Ich lösche und zeichne ja immer nur die einzelnen Zeichen, welche sich auch verändert haben. Das sind im Extremfall ca. 15 Zeichen alle 3 oder 4 Ticks (20 oder 15 Hz). Ziel wäre es, wenn das Programm sicher auch noch auf einem GlobalPC oder GeoBook sauber laufen würde. Die ursprüngliche Versionhat so 2% CPU-Last auf dem GlobalPC (100MHz) erzeugt. Die neuere wird sicher etwas langsamer sein.

    Vielen Dank nochmals!

  • Es gibt da möglicherweise schlecht Nachrichten. Birmapfonts sind resistent gegen Skalierung. Dh. Du musst die Zeichen erst in eine Bitmap drawen und dann diese Bitmap im skalierten View darstellen.

    Wenn du jedes Mal die ganze Bitmap neu zeichnest geht natürlich die Performance runter. Deswegen habe ich in R-BASIC im Fall einer Bitmap immer zwei parallele GStates - eins wo die Zeichenbefehle in die Bitmap gehen und eins, das direkt auf den Bildschirm zeichnet. Genau da geht die Skalierung von Bitmap Fonts nicht.

    nach dem Neuzeichnen des View (Verschieben des Primary) sieht es dann so aus - hierbei wird die Bitmap neu dargestellt

    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Ok, das ist zwar schade, aber muss ich wohl akzeptieren. Ich möchte ja möglichst nicht immer allles neu zeichnen...

    Im Moment kann man zwischen 9, 12 und 14 Punkt umschalten. Geht alles super zur Laufzeit. Aber mit den wahnwitzigen VESA-Auflösungen, welche ins GEOS einzug gehalten haben, wird das Ganze dann wieder ziemlich klein :/ Am Besten sieht es aktuell mit EGA aus, wenn man die DOSBOX / DOSEmu2 in den Vollbildmodus umschaltet ;(

    Da bleibt dann aktuell nur der Weg, ein Reverse-Engineering der Bitmaps-Fonts zu versuchen und da weitere Grössen einzubauen. So bis etwa 36 Punkt wären aktuell von nöten. Wenn Falk dann aber 4k bringt, müssten es 72 Punkt sein... und dann kommt irgendwann noch 8k und wer weiss sonst noch was wie 3D und HBI :saint:

    Natürlich wäre der da noch der Ansatz, all die skalierten Zeichen Off-Screen vorzuhalten und per BitBlt einzublenden 8) Sicherlich nicht etwas für so mal schnell zwischendurch.

    Werde mich in dem Fall erst einmal um die Bereinigung / Abschluss des bestehenden Codes und der Hilfe kümmern. Bin trotzdem immer Dankbar für Input, man hat zumindest etwas dazugelernt :thumbup:

  • Wir müssen mal bei Gelegenheit über das Gesamtkonzept reden, wenn du magst (du mir erläutern...) Manchmal tappe ich etwas im Dunkeln, wozu das eine oder andere brauchst. Ich selbst würde ein Ladder-Game entweder komplett auf "KlötzchenGrafik" aufbauen und alle erforderlichen Bitmap im Hintergrund bereithalten. Dann bist du das Sklaierungsproblem zur Laufzeit los. Oder eben einen festen Hintergrund haben und alle beweglichen Figuren als transparente Sprites machen. Das ist aber ein wirklich komplexes Projekt auf meiner ToDo-Liste.

    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Hallo Rainer

    Gerne werde ich Dir über die Architektur erzählen. Das könnten wir sicher in bei Johannes am Treffen durchgehen. Ursprünglich wollte ich den aktuellen Code ja nur "übersetzbar" machen... Aber da ich früher schon einmal eine Version mit grösserem Text auf eine Anfrage erstellte und der Wunsch vom Vollbild noch umsetzen wollte, ist es dann doch einiges mehr geworden. Habe definitiv nicht mit so vielen Stunden gerechnet. Aber es ist ja auch immer ein Weiterkommen. Und von dem her die Odysee eine Reise wert ;)

  • Du hast die Diskussion nicht abgewürgt. Ich wollte selber noch ein paar andere Punkte angehen und war / bin gerade auch noch mit einigen privaten Themen beschäftigt.

    Grundsätzlich möchte ich einmal versuchen, das Format der Bitmap-Fonts zu verstehen. Das Zauberwort hierzu heisst wohl "BSWF". Das ist aber etwas, wo ich doch ein etwas grösseres Zeitfenster zum Dranbleiben brauche.

  • BSW = Berkeley SoftWorks = vorheriger Name der ehemaligen Firma Geoworks (noch aus C=64-Zeiten)

    F = Font

    Meine Prognose: Jeder Buchstabe ist gepackt (einfachstes ZIP-Format wie die Helpfiles oder gepackte Mauszeiger/Icons oder sonst nach GIF-Format-Standard oder bestenfalls TIFF/FAX-Format, also zusätzlich ein Vergleich jeder Zeile mit vorherigen Zeilen)

    Da dort noch BSW steht, stellt sich natürlich die Frage, ob hier nicht sogar nur ein Format vom C=64 übernommen wurde. :/

    There are two rules in life:
    1. Never give out all of the information.

  • Ja, genau. Ich bin am Zusammentragen der Strukturen. So wie es aussieht, sind 3 Punktgrössen das maximum bei Bitmap-Fonts. Mein Plan war da, 6 oder mehr in einen eigenen Font zu verpacken...

    PS: GeoDump kann die Fonts auch dekodieren.