• Nach dem inspirierenden XXI. Syhraer Geos-Treffen möchte ich den Schwung nutzen und nah am Ball bleiben. Daher dachte ich, es sei eine gute Idee, hier im Forum ein Thema zu meinem vorgestellten Programm „Bildinfos“ zu eröffnen und dort regelmäßig über Fortschritte zu berichten. So erhöhe ich meine Motivation, ihr erhaltet Infos, man kann sich (hoffentlich) austauschen und dabei das Forum beleben.

  • Aufgrund des allgemeinen Interesses an diesem Bildformat habe ich heute das Format QOI – Quite OK Image implementiert.

    QOI wurde erst vor 355 Tagen vorgestellt und sieht sich als schnellere Alternative zu PNG. Es stellt nur 24-Bit-Bilder dar und besitzt als Alleinstellungsmerkmal eine einfache Kodierung. Zur verlustfreien Komprimierung setzt es auf Lauflängen- und Differenzkodierungen. Andere moderne Formate, wie HEIC oder WebP, stammen dagegen aus dem Videobereich und besitzen sehr, sehr komplexe Kodierungen.

    Seit heute vermag „Bildinfos“, die Eigenschaften eines QOI-Bildes auszulesen, sie anzuzeigen und das Bild selbst darzustellen.

    Eine Besonderheit war die Handhabung der Transparenzen, die QOI-Bilder einsetzen können. Dies ist mein erstes Graphikformat mit Transparenz. In einem ersten Schritt habe ich mich entschlossen, die Transparenzen in feste RGB-Werte umzurechnen, um das Bild korrekt darzustellen. Als nächstes werde ich wohl erforschen, welche Möglichkeiten sich noch bieten und welche Optionen dafür angeboten werden sollen.

  • QOI als relativ 'simpel' aufgebautes und schnelles 24bit-Format sollte doch ein tolles auch für GEOS geeignetes systemübergreifendes Grafikformat abgeben, oder?

    Dein Programm BildInfo würde ich natürlich auch gerne ausprobieren. :)

  • QOI als relativ 'simpel' aufgebautes und schnelles 24bit-Format sollte doch ein tolles auch für GEOS geeignetes systemübergreifendes Grafikformat abgeben, oder?


    Wäre mal eine Idee!

    Dein Programm BildInfo würde ich natürlich auch gerne ausprobieren.


    Freue mich über Dein Interesse :). Das Programm ist noch in einem frühen Stadium, aber es soll bald eine 0.1-Version geben. Johannes alias Monet zaubert gerade ein Icon. Dann würde ich mich wegen einer neuen Webseite bei Dir melden wollen ^^ .

  • Habe weiter an dem interessanten Thema Transparenz gearbeitet. Nun können als Hintergründe auch richtige Farben (statt Weiß) und das aus Photosh... bekannte Transparenzschachbrettmuster verwendet werden. Letzteres mogelt hier zwar etwas, weil es keine echte Transparenz anzeigt, sondern fest ins Bild eingeschrieben ist, aber a) zeigt es die transparenten Bereiche an und b) sieht es gut aus :). Die Anhänge zeigen die neuen Erfolge sehr schön.
    Als nächstes schaue ich mal, wie ich mit R-Basic Bilder mit echten Transparenzen erzeuge. Das hatte ich noch nicht.

  • Hallo Sebi,
    prinzipiell kann GEOS 24Bit Bilder mit Transparenz. R-BASIC sollte das auch unterstützen. Bei Mono und 8Bit Bildern geht das auch. Der Versuch, in die Transparenz-Maske von 24Bit Bitmaps zu schreiben, crasht aber nach meinen Versuchen das System (Info aus der erinnerung von vor ein paar Jahren :) . Man kann da aber tricksen, ich bin mir aber nicht sicher, ob sich das im Handbuch geschrieben habe, oder ob ich das nur beim TIFF Konverter für Gonzo umgesetzt habe - ist zu lange her.
    Gruß
    Rainer

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

  • Die große Transparenzoffensive geht weiter! Heute sind zwei tolle Funktionen hinzugekommen:

    • Die Transparenz eines QOI-Bildes kann nun optional in eine echte Geos-Transparenz umgewandelt werden! Um die originale 8-Bit-Transparenz auf 1 Bit zu reduzieren, wird ein (vorgebbarer) Schwellwert benutzt. So könnten bspw. alle Pixel, deren originale Transparenz mehr als 60 % beträgt, auch im Geos-Bild transparent werden, die restlichen bleiben voll sichtbar. Das funktioniert weniger gut bei langen Verläufen, aber ziemlich gut bei freigestellten Objekten wie dem QOI-Logo, wo (bis auf ein paar Kantenglättungs-Pixel) die Transparenz entweder 0 % oder 100 % beträgt.
    • Auf Wunsch kann die Transparenz auch invertiert werden. Die im Original sichtbaren Pixel werden also transparent und umgekehrt. Dies funktioniert in den beiden Modi „Geos-Transparenz“ und „Transparenz in Farben umrechnen“.


    Im Anhang finden sich erhellende Beispiele. Die beiden Bilder mit Geos-Transparenzen wurden in GeoDraw eingefügt, um die echte Transparenz sichtbar zu machen.

  • Hallo Sebi,
    prinzipiell kann GEOS 24Bit Bilder mit Transparenz. R-BASIC sollte das auch unterstützen. Bei Mono und 8Bit Bildern geht das auch. Der Versuch, in die Transparenz-Maske von 24Bit Bitmaps zu schreiben, crasht aber nach meinen Versuchen das System (Info aus der erinnerung von vor ein paar Jahren :) . Man kann da aber tricksen, ich bin mir aber nicht sicher, ob sich das im Handbuch geschrieben habe, oder ob ich das nur beim TIFF Konverter für Gonzo umgesetzt habe - ist zu lange her.
    Gruß
    Rainer


    Hallo Rainer!
    Danke für den Hinweis! Hast du (natürlich) im Handbuch beschrieben: Objekt-Handbuch 9, S. 445 :) .
    Das System crasht, wenn man direkt in die Maske schreibt, aber wenn man die Maske zeilenweise im VRAM bearbeitet und dann die gesamte Bildzeile in die Bitmap rüberschiebt, dann sollte es klappen. Und genauso war es! Da ich die Bitmap sowieso zeilenweise über das VRAM aufbaue, konnte ich die Erstellung der Maske problemlos integrieren.

    Eine Frage hätte ich, zu der ich bislang keine Antwort fand: Die Bitmap zeigt die transparenten Bereiche immer weiß an. Gibt es da eine Möglichkeit, eine andere Farbe vorzugeben? Die Hintergrundfarbe wird dafür nicht genommen. Im Anhangsbeispiel sieht man, wie der gelbe Hintergrund weiß wird. Der Code dazu ist quasi so:

    Code
    mybitmap.defaultColor = red, yellow
    mybitmap.bitmapFormat 400, 200, 23, BF_PALETTE

    Besten Dank!

  • Eine Frage hätte ich, zu der ich bislang keine Antwort fand: Die Bitmap zeigt die transparenten Bereiche immer weiß an. Gibt es da eine Möglichkeit, eine andere Farbe vorzugeben? Die Hintergrundfarbe wird dafür nicht genommen. Im Anhangsbeispiel sieht man, wie der gelbe Hintergrund weiß wird. Der Code dazu ist quasi so:

    Hallo Sebi,
    Meines Erachtens musst du das Masken-Flag bei deinem Bitmapcontent mit setzten:

    Code
    mybitmap.bitmapFormat 400, 200, 23, BF_PALETTE + BF_MASK

    Dann wird der transparente Bereich in der grauen Hintergrundfarbe dargestellt.

    Gruß, Bario

  • Probier mal im Ui-Code in der View unter viewattrs = ... + VA_SAME_COLOR_AS_PARENT_WIN

    Damit würde die View transparent. Ansonsten ist der Hintergrund die Farbe aus viewColor


    Das wäre auch meine Antwort. Wobei ich ViewColor bevorzugen würde. Ich überlegen gerade am Schachbrettmuster, aber da fällt mir nichts simples ein, weil das View keinen OnDraw Handler hat (nicht eingebaut, weil wer braucht denn sowas??).
    OK, man könnte ein VisContent nehmen (VisContent.OnDraw macht das Schachbrettmuster) und die Bitmap durch ein VisObj ausgeben ... ???
    Gruß
    Rainer

    PS. VA_SAME_COLOR_AS_PARENT_WIN macht das View nicht transparnet (leider), sondern setzt viewColor auf die Farbe des Parents. Bei einem der Bücher von Burkard Oertel (?) gab es ein Bild, wo der GeoManger transparent ist, also das GEOS-Hintergrundbild durchscheint. Das wäre echt cool, aber ich fürchte, das geht nicht so einfach. (man soll aber nie nie sagen)

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

  • Heute gibt's weniger spektakuläre Neuerungen, sondern eher eine Transparenzkonsolidierung:

    • Die beim letzten Mal vorgestellten Möglichkeiten der Transparenzdarstellung habe ich jetzt im Code generalisiert, so daß sie auch leicht von anderen Bildformaten, sofern sie Transparenz unterstützen, leicht verwendet werden können.
    • Zudem legte ich fest, welche Optionen den Nutzern zugänglich sein sollen. Danach folgte noch Fleißarbeit: Optionsdarstellung im UI-Code umsetzen, das Laden der aktuellen Werte in den Optionsdialog und das Speichern der ausgewählten Werte.
      Bei den Optionen habe ich zwischen 1-Bit- und Mehr-Bit-Transparenz (wohl meist 8 Bit) unterschieden. Erstere kennt nur die Möglichkeiten sichtbar und transparent und kann 1:1 in eine Geos-Transparenz gewandelt werden. Leider habe ich aktuell kein Beispiel, um das zu testen. Die Zweite bringt Abstufungen der Sichtbarkeit, was einen Schwellwert für die Wandlung in eine Geos-Transparenz erfordert und einen wählbaren Hintergrund erlaubt.
      Die Möglichkeiten sind in den angehängten Bildern dargestellt.
  • Die Transparenz ließ mich nicht aus ihren Klauen (unsichtbare Monster sind einfach die hartnäckigsten!) und gab keine Ruhe, bis ich eine weitere phantastische Funktion implementierte:

    • Von Bildern mit Transparenzen (aktuell nur QOI-Bilder) läßt sich die Transparenzmaske anzeigen!
    • Die Transparenzmaske ist eine Graustufengraphik, in der transparente Bildbereiche weiß und sichtbare schwarz dargestellt werden. Bei 8-Bit-Transparenzen erscheinen die Zwischenstufen als Grautöne, 1-Bit-Transparenzen sind Schwarz-Weiß-Bilder.
    • Dafür habe ich das Programm erheblich erweitert. Bislang wurden Bilder, deren Farbpaletten und Sonderfälle, wie die Pinselmuster bei MacPaint-Bildern, angezeigt. Nun ist als neue Klasse die Transparenzmaske hinzugekommen, was intern etliche Anpassungen erforderte und auf dem Hauptfenster an einer neuen Schaltfläche „Maske anzeigen“ erkennbar ist.
    • Die Beispiele zeigen ein Kreuz mit transparentem Hintergrund und die zugehörige Maske. Hier befinden sich die grauen Pixel an den Kreuzkanten und sind daher kaum sichtbar, die Maske wirkt wie eine s/w-Graphik. Das Würfelbild (das ich wegen der Hochladegrößenbeschränkung arg verkleinern mußte) und seine Maske zeigen da schon mehr Transparenzeffekte.
  • Nun habe ich die noch offene Frage nach der Hintergrundfarbe bei echten Geos-Transparenzen geklärt:

    • Rainer und Bario hatten ja die viewColor-Eigenschaft der die Bitmap beheimatenden View vorgeschlagen. Originelle Idee, entbehrt nach einigem Nachdenken aber nicht einer gewissen Logik: Ist die Bitmap transparent, dann scheint die Farbe der View durch. Auf jeden Fall funktioniert es! Vielen Dank Euch beiden!
    • Anbei das Logo mit echter Transparenz und farbigem Hintergrund.
    • Entsprechend habe ich auch den Optionsdialog um die neue Möglichkeit erweitert. Der ist inzwischen ganz schön angewachsen. Da wäre eine Aufteilung mittels des neuen Tab-Elements überlegenswert.
    • Hiermit sollte die Arbeit an den Transparenzen vorerst abgeschlossen sein. Es sei denn, Ihr habt noch Wünsche :)! Zudem steht noch der Test für die Darstellung von Bildern mit 1-Bit-Transparenzen aus. Den kann ich gerade aber nicht durchführen, da QOI-Bilder nur 8-Bit-Transparenzen haben. Dafür muß ich warten, bis mir mal ein entsprechendes Format über den Weg läuft.
  • Nach den vielen neuen Funktionen der letzten zwei Wochen waren mal wieder Aufräumarbeiten nötig. Nicht gerade der Traum eines Programmierers, aber notwendig. Da es heute schon ganz gut gelaufen war, beschloß ich, im Strom weiter zu schwimmen und noch eine Abendschicht einzulegen. Nachfolgend einige Beispiele, damit der treue Leser zu erahnen vermag, was so zum schmutzigen Programmieralltag gehört – nach den prächtigen Präsentationen:

    • Die neuen QOI-Funktionen habe ich durchgesehen, Code geändert, bereinigt, verständlicher kommentiert.
    • Mit der letztes Jahr hinzugekommenen, genial-hilfreichen R-Basic-Funktion habe ich unbenutzte Variablen und Funktionen aufgespürt, bereinigt und entfernt. So ist nun der gesamte Programm-Code wieder etwas sauberer geworden.
    • Die Anzeigefunktionen der verschiedenen Bildformate hatten im Laufe der Zeit eine unterschiedliche Parameterstruktur entwickelt. Diese habe ich nun auf den neuesten Stand vereinheitlicht.
    • Die im Quell-Code de- und aktivierbare und beim Optimieren benutzte Möglichkeit, die Zeitdauer der Bilderstellung zu ermessen, ist nun eine allgemein verfügbare Nutzeroption geworden. Dazu mußten alle Bildfunktionen aktualisiert werden.
    • Die Bildformate Dr. Halo Pic und PCPaint 2 tragen beide dieselbe Dateiendung PIC. Die Umschaltung erfolgte bisher im manuell im Quell-Code. Nun erkennt eine neue Funktion, welches der beiden Formate vorliegt.
    • Ähnlich der Fall beim Degas-Format. Da die normale und die komprimierte Variante im Aufbau recht unterschiedlich sind, gibt es für jede eine eigene Anzeigefunktion. Auch hier erfolgt nun die Auswahl automatisch und nicht mehr manuell im Code.


    Nach der Verschnaufspause bin ich auf die nächste Etappe gespannt! Wird es weitere Aufräumarbeiten (von denen noch einige warten) geben? Werden erst teilweise implementierte Formate, wie GEM Raster, endlich vervollständigt? Schmuggelt sich ein neues heißes Format, wie QOI – bei dem ich immer an den hübschen japanischen Karpfen denken muß – es tat, hinein? Wird nun der Umbau der Oberfläche in Angriff genommen? Wird endlich ein Konzept für die Angabe der Farbdarstellungen entwickelt? Lassen wir uns gemeinsam überraschen! Bleiben Sie dran!

  • Ich find das alles auch mächtig spannend. allerdings schein ich mal wieder zu dumm zum gucken zu sein. :)
    Ich seh irgendwo den Downloaflink nicht, damit ich mein Interesse auch mal am lebenden Objekt befriedigen kann. :)

    Viele Grüße
    Klaus / Locke

    Grüße Klaus / Locke

  • Ja, der Link, der paßt sich dem Thema an und ist transparent gehalten. Es gilt nur, ihn zu finden :).

    Alternativ wartet der Link auf die Alpha-Version, die auf das Icon wartet, das auf seine Erschaffung durch den angeheuerten Künstler wartet, der auf seine himmlische Inspiration wartet. So hängt alles an höchster Stelle.