Hi Folks,
Falk hat gerade meinen Beitrag zum Treffen für dieses Jahr gemerged (wer sagt, dass das immer erst NACH dem Treffen sein muss!?) Was gibt's also Neues? Ich habe die PNG-Funktionalität, die ich letztes Jahr vorgestellt habe, deutlich erweitert.
Das betrifft zunächst das Handling von Alpha-Transparenzen beim Import von PNGs. Leider muss ich ein paar theoretische Erklärungen zum Thema Transparenz vorausschicken, um die Tragweite des Patches besser erklären zu können. Das ist mir leider letztes Jahr nicht so gut geglückt, deshalb jetzt hier.
Moderne Systeme begreifen Transparenzen in einem Bildpixel in einer Abstufung von 0 - 255 (128 ist dann sozusagen halbdurchsichtig oder halbtransparent); so genannte Alpha-Transparenzen. In Echtfarben-PNGs hat oft jedes einzelne Pixel einen solchen Alpha-Transparenzwert. Damit kann man zum Beispiel weiche Kanten in Bildern realisieren. GEOS hingegen kann nur: ein Pixel ist sichtbar oder durchsichtig. Wenn man nun ein modernes Bild mit Alpha-Transparenzen ins GEOS Format umwandeln will, muss man Kompromisse eingehen.
Letztlich gibt es zwei Möglichkeiten: (1) entweder man verrechnet den 255er Transparenzwert mit einer vorher festgelegten Hintergrundfarbe (die ominöse "blend color" im Graphics Viewer). Das Ergebnis sieht immer sehr gut bzw. optimal aus, aber Transparenzen gibt es hinterher nicht mehr. Das Bild hat dann die Hintergrundfarbe, die man als blend color angegeben hat. Wenn man das Motiv zum Beispiel mit weißer Hintergrundfarbe verrechnet und anschließend über einem, sagen wir, blauen Hintergrund einfügt, hat es trotzdem einen weißen Hintergrund und verschmilzt nicht mit dem blau.
Oder aber (2), man wandelt die 255er Transparenz in eine GEOS 0/1 Transparenz um (sogenannte Maske), indem man guckt, ob ein Pixel EHER durchsichtig oder undurchsichtig ist. Den Grenzwert kann man selbst wählen, zum Beispiel alles über 128 macht man durchsichtig, alles unter 128 macht man undurchsichtig. Das Ergebnis hängt vom Motiv ab: hat das Originalbild sowieso klare Kanten und Transparenzwerte bei 0 und 255 (zum Beispiel bei Logos oder Clip-Arts) wird das Ergebnis ganz gut aussehen und man kann das Bild hinterher auf beliebig farbigen Hintergründen präsentieren. Hat das Originalbild mit Hilfe der Transparenzen jedoch weiche Verläufe oder Kanten realisiert, sieht das Ergebnis abgehackt, stufig oder ausgefranst aus. Im schlimmsten Fall werde große Teile des Bildes gar nicht mehr dargestellt.
Hier bringt mein Patch nun ein bisschen mehr Flexibilität. Bisher war es so, dass man lediglich Variante 1 im Graphics Viewer nutzen konnte, wobei man mit der mysteriösen "Set PNG Blend Color" Funktion die Hintergrundfarbe setzen konnte. Diese Option ist aus dem Graphics Viewer jetzt wieder verschwunden (sorry Achim, aber die Arbeit mit der Hilfe war trotzdem nicht umsonst, denn die Funktionalität ist nur umgezogen, siehe unten...). Im Graphics Viewer geht es darum, ein Bild schnell zu betrachten und in jedem Fall immer alle Bildteile darzustellen. Daher nutzt der Graphics Viewer jetzt immer die Blend Color weiß für optimale Darstellung. Wenn man ein Bild via "Copy" in die Zwischenablage einfügt und dann in GeoDraw einfügt, hat es aber keine Transparenz, was schlecht sein kann, wenn man es für ein eigenes Projekt weiterverarbeiten will...
Dehalb gibt es jetzt, NEU, einen echten super-duper PNG-Impex Filter! Man kann also direkt in GeoDraw auf "Importieren" klicken und dann dort eine PNG-Datei in der Liste auswählen. Und da gibt es dann einen kleinen "Import Options" Dialog, in dem man auswählen kann, ob man (1) oder (2) für die Umwandlung eines Alpha-Kanals verwenden will. Für den Import von Clip-Arts oder Logos empfiehlt sich hier halt immer Variante 2. In diesen Impex-Filter ist für meine Verhältnisse viel Arbeit geflossen, denn ich wollte das Ding so weit wie möglich in C schreiben. Marcus hat in den späten Tagen des zweiten Zeitalters noch dafür gesorgt, dass da schon einige Filter in C vorlagen und darauf konnte ich aufbauen.
Das zweite große Feature, was dazugekommen ist - wer hätte das gedacht - ist PNG Export! Dies war mit Hilfe von KI in wenigen Tagen gewebt. Man kann Bilder als 1 Bit (monochrome), 4 Bit (16 Farben), 8 Bit (256 Farben) und 32 Bit (16 Millionen Farben) exportieren - letzteres erzeugt für transparente Bildteile eine Transparenzmaske bei der Umwandlung in eine Bitmap und wandelt diese Maske dann in einen Alphakanal um, so dass Transparenzen in einer mit GeoDraw erstellten GEOS Grafik auch als solche exportiert werden.
Letzteres Feature ist noch nicht so gut getestet. Auch könnte man zum Beispiel überlegen, ob man noch eine 24-bit Variante einbaut, bei der gar keine Transparenz exportiert wird. Hier seid ihr gefragt, mit "Testen, Testen, Testen und an die User denken".
Ich wünsche Euch viel Spaß und freue mich wie immer über produktives Feedback.