Geos Pixel Editor

  • Hallo zusammen,

    Anbei eine recht stabile BETA Version meines neuen Geos Pixel Editor.
    Einsatzzweck sind kleine Grafiken, also Icons, Buttons, Toolbars, Bullets, etc.


    In Verbindung mit dem TokenPCXTool ist es damit möglich, Icons für GEOS zu erstellen, auch ohne das man graue Haare bekommt ;)

    Weitere Features:
    - Erstellen von Graphic-Strings (schnelle Methode für kleine Pixelgrafiken in den GEOS-Office-Anwendungen)
    - Selektieren + Copy/Paste
    - Unterstützt Paletten abseits von Standard
    - Öffnen: BMP ; Speichern: BMP oder PCX
    - Alternative Zeichenmethode für Linien (Geos-intern ist das etwas fehlerbehaftet)
    - Inkrementelles Kopieren für gemappte Grafiken z.B. in Verbindung mit dem R-Basic-Blockgrafik-Editor


    [size=12]UPDATE 10.02.2022:[/size]

    Version 0.6.26 steht ab sofort zur Verfügung.

    Release Notes:
    - GIF öffnen + speichern (langsam; GIF89a Transparenz ww. möglich)
    - Fest eingebaute Vorlage für das PCX-Token-Tool, macht es sehr einfach, 256-Farben-Icons für GEOS zu entwerfen.
    - Neue Toolbar-Icons (Danke an Bernd für die Zuarbeit!)
    - Transparenz für 256-Farben-Grafiken (noch experimentell)
    - Verknüpfen von Dateitypen mit GPixEd oder Öffnen per 'Öffnen mit' ist ab sofort möglich
    - Unterstützung für S/W (1-Bit) oder Truecolor (24-Bit)-Grafiken. Speichern dieser als auch als GIF/PCX-8-Bit-Grafik möglich.
    - Palettenoptimierung (Quantisieren/Erweitern)
    - Öffnen weiterer Dateitypen neben BMP: JPG,GIF, ICO, PCX


    [size=12]UPDATE 02.04.2022:

    [/size]Version 0.7.21 steht ab sofort zur Verfügung.

    Release Notes:
    - Einfache Transformationen (Drehen, Spiegeln) möglich
    - RGB-Truecolor-Palette (Bei 24 Bit Farbtiefe)
    - An- und Abdockbares Vorschaufenster. Dockt bei größeren Grafiken automatisch ab.
    - GIF speichern stabiler und schneller
    - PCX speichern jetzt in allen Farbtiefen möglich
    - Bugfixes, Bugfixes, Bugfixes

    [size=12]UPDATE 11.07.2022:

    [/size]Version 0.8.1 steht ab sofort zur Verfügung.

    - Lesen des TransparentColorIndex beim Öffnen von .GIF -> Nachbearbeiten transparenter GIFs damit jetzt möglich.
    - Wenn möglich (Farbtiefe < 24 Bit) wird immer Transparenz verwendet
    - Interne Objektstruktur optimiert
    - Bildinformationen im Öffnen-Dialog
    - Ein etwas größeres Hamburger-Menü von Bernd - DANKE! :thumbup:
    - Diverse Bugfixes und Work-Arounds

    [size=12]UPDATE 28.12.2022:

    [/size]Version 0.9.5 0.9.6 steht ab sofort zur Verfügung.

    - GOC-Quellcode-Export für SDK-Programmierer z.B. zur Erstellung von Ressourcen
    - Das Einfügen größerer Grafiken aus der Zwischenablage in eine kleine Zielgrafik ist jetzt möglich. Hierbei unterstützt ein Dialog bei der Ausrichtung.
    - Bei 8-BPP-Grafiken sind die aktiven Farben jetzt anpassbar. Hierzu reicht ein Doppelklick auf die ausgewählte Vorder- oder Hintergrundfarbe
    - Neues Transformationswerkzeug: Pixelweises schieben. Dies kann sowohl innerhalb einer Auswahl wie auch auf die komplette Grafik angewendet werden.
    - Ini-Datei, merkt sich zuletzt benutzte Ordner, Rastergröße, etc.
    - Performance+ bei Aufbau des Rasters, Bugfixes, Oberflächenanpassungen


    [size=12]UPDATE 15.11.2023

    Version 1.0.1 :thumbup:

    [/size]- Hilfedatei hinzugefügt - lässt sich wie gewohnt über das Fragezeichen in der Titelleiste öffnen
    - "Farbechtes" Kopieren / Einfügen bei von der Standardpalette abweichenden Grafiken (programmintern)
    - Erinnerung bei nicht gespeicherten Grafiken
    - Ungespeicherte Grafiken können optional nach dem Beenden für den nächsten Start erhalten bleiben (Bei System-Shutdown automatisch)
    - 1-Bit-Modus s/w jetzt ohne geditherte Palette
    - Bugfixes und Geschwindigkeitsoptimierungen


    Download (aktuellste Version)

    Viele Grüße,
    Mario

  • Hallo Sebastian,
    echt cooles Teil!


    ToDo:
    - PCX öffnen
    - GIF-Grafiken öffnen/speichern (hier bräuchte ich Hilfe - ich scheitere am LZ77-Algorithmus - eventuell gibt es ja aber eine Library, welche man von R-Basic aus nutzen kann? ?( )

    Wieso? Wende dich vertrauensvoll an ReadBitmapFromFile. In der Doku sollte auch stehen, welche Fromate es lesen kann. Eigentlich alles, was Gonzo auch kann. GIF und PCX geht auch jeden Fall.
    Außerdem kannst du ja mal die Beispiele nach ReadBitmapFromFile durchsuchen (Strg-D).

    Gruß
    Rainer

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

    Einmal editiert, zuletzt von Rainer (25. Januar 2022 um 16:48)

  • Grafiken auch als GIF speichern zu können wäre wirklich klasse. Umso größer ne Grafik wird, desto mehr macht sich die Differenz bei der Dateigröße bemerkbar. Der Screenshot vorhin lag bei 261KB als BMP und bei 12KB als GIF.

    Ausserdem ist GIF sowieso das natürliche 'allgemeine Grafikformat' für GEOS, oder? :D

  • Hallo zusammen.

    Ersteinmal vielen Dank für das durchweg positive Feedback.

    Wieso? Wende dich vertrauensvoll an ReadBitmapFromFile. In der Doku sollte auch stehen, welche Fromate es lesen kann. Eigentlich alles, was Gonzo auch kann. GIF und PCX geht auch jeden Fall.
    Außerdem kannst du ja mal die Beispiele nach ReadBitmapFromFile durchsuchen (Strg-D).


    Auweia, was für ein Frevel :whistling: Wie oft habe schon im Handbuch geblättert und die Beispiele genutzt und trotzdem gibt es immer wieder Überraschungen und Dinge die ich so nicht vermutet hätte. Aarrgh, das ärgert mich.. Wahrscheinlich hatte ich das ReadBitmapFromFile zu wörtlich genommen. Dann sind das natürlich nur noch Kleinigkeiten, die ich recht schnell nachliefern kann.


    Was mir aufgefallen ist: Unten rechts kann man die Positionsbezeichnung nicht komplett lesen. Ist ein bischen abgeschnitten..


    Zu den halb verdeckten Koordinaten: Ich verwende selbst einen etwas größeren Systemfront - damit sieht alles gut aus. Lässt sich aber, genauso wie die Zählung ab 1, leicht beheben.


    Viele Grüße,
    Mario

  • Rainer
    Ich habe das Kapitel im Handbuch jetzt nochmal gelesen und es so verstanden: Es ist tatsächlich möglich all diese schönen Formate u.a. auch GIF per ReadBitmapFromFile zu lesen, jedoch nicht mit WriteBitmapToFile zu schreiben. Ich komme also um einen selbst geschriebenen GIF-Encoder nicht drumherum, wenn ich auch das Speichern dieses Formats möglich machen möchte?

    Viele Grüße,
    Mario

  • Hallo Mario,
    (sorry für die falsche Anrede .. :)
    Den GIF-Decoder habe ich irgendwo in Netz gefunden und an GEOS angepasst. Einen Encoder habe ich nie versucht, die Algoithmen empfinde ich als ziemlich komplex. Aus heutiger Sicht muss man sehen, dass es in GEOS schon einen GIF Encoder gibt (für die Export-Funktion in GeoDraw). Der ist allerdings nicht perfekt, die Bilder sind z.T. pixelweise verschoben. Man müsste ihn also noch mal durchchecken oder gleich einen neuen schreiben. Und ich hatte damals auch keinen Zugriff darauf und ob und wie das aktuell geht, weiß ich nicht.

    Also jein, vom Prinzip her müsstes du wohl einen Encoder schreiben. Unter R-BASIC könnte das aber sehr langsam werden. Vielleicht findet sich ja ein anderer Weg.

    Rainer

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

  • Hallo Bernd,

    Steht schon auf dem Zettel. Ich hatte eigentlich vor die Transparenz intern mit einem Muster z.B. Kreuz darzustellen.
    Das eigentliche Problem ist aber, dass aktuell nur GIF eine Information über eine transparente Farbe mitliefert. GIF kann ich aber (noch) nicht speichern, deshalb macht die Funktion noch keinen Sinn.
    Für transparente Toolbar-Icons (wie ich sie links auch verwende) eignet sich aktuell nur der GraphicString. Dieser ist von Haus aus transparent - man muss sich beim Zeichnen der Symbolik aufgrund der Aufnahme-Strategie allerdings disziplinieren, da das zeichnen ja aufgenommen wird und nur eine begrenzte Anzahl Schritte/Elemente zur Verfügung stehen.


    Viele Grüße,
    Mario

  • Steht schon auf dem Zettel. Ich hatte eigentlich vor die Transparenz intern mit einem Muster z.B. Kreuz darzustellen.
    Das eigentliche Problem ist aber, dass aktuell nur GIF eine Information über eine transparente Farbe mitliefert. GIF kann ich aber (noch) nicht speichern, deshalb macht die Funktion noch keinen Sinn.

    Ok. Oft wird Transparenz ja durch ein Schachbrettmuster dargestellt. Wenn vorhanden, verwende ich stattdessen gerne diagonal verlaufende Linien. Das sieht nicht so 'unruhig' aus.

    Zitat

    Für transparente Toolbar-Icons (wie ich sie links auch verwende) eignet sich aktuell nur der GraphicString. Dieser ist von Haus aus transparent - man muss sich beim Zeichnen der Symbolik aufgrund der Aufnahme-Strategie allerdings disziplinieren, da das zeichnen ja aufgenommen wird und nur eine begrenzte Anzahl Schritte/Elemente zur Verfügung stehen.

    Könntest du dir vorstellen, die originalen (und evtl. angepassten) GEOS-Icons zu verwenden? Johannes hat die alle mal als GIFs gespeichert. Die verwende ich - mit einem Zeichenprogramm auf meinem Hostsystem - meist als Grundlage, um Icons für die R-BASIC-Apps zu zeichnen / anzupassen. Würde ich für dich machen, falls du keine Lust / keine Zeit dafür hast.

  • Für transparente Toolbar-Icons (wie ich sie links auch verwende) eignet sich aktuell nur der GraphicString.


    Folgendes sollte gehen (ungestested, aus dem Kopf): Der Icon-Editor erzeugt von hause aus transparente Bitmap-Grafiken. Die kannst du von dort in einer Datei speichern (Unter "Icon" -> Schreibe in Datei ..., NICHT Schreibe Quellcode). Das ist ein spezielles Format, dass du von R-BASIC aus in die Picture-List einlesen kannst. Dann hast du die Bitmaps als Captions für deine Toolbars zur Verfügung (Befehl: CaptionPicture).
    Rainer

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

  • Könntest du dir vorstellen, die originalen (und evtl. angepassten) GEOS-Icons zu verwenden? Johannes hat die alle mal als GIFs gespeichert. Die verwende ich - mit einem Zeichenprogramm auf meinem Hostsystem - meist als Grundlage, um Icons für die R-BASIC-Apps zu zeichnen / anzupassen. Würde ich für dich machen, falls du keine Lust / keine Zeit dafür hast.

    Hallo Bernd,
    Sehr sehr gern! Das würde dem Programm ein wenig mehr GEOS-look&feel zurückgeben. Wenn du das übernehmen könntest, wäre ich dir sehr dankbar. Ein transparentes .GIF pro Werkzeug wäre top. Ich binde das ganze dann als Picturelist ein.

    Das ist ein spezielles Format, dass du von R-BASIC aus in die Picture-List einlesen kannst.

    Stimmt, eine Windows-Bitmap mit hinterlegten Maske würde ja auch transparent dargestellt. Das könnte ich implementieren. Oder handelt es sich dort um ein ganz anderes/spezielles Dateiformat? Beim testen mit dem Iconeditor kam ich nur bis zum KR-09 :cursing:

    Viele Grüße,
    Mario

  • Hallo Bernd,
    Sehr sehr gern! Das würde dem Programm ein wenig mehr GEOS-look&feel zurückgeben. Wenn du das übernehmen könntest, wäre ich dir sehr dankbar. Ein transparentes .GIF pro Werkzeug wäre top. Ich binde das ganze dann als Picturelist ein.

    Ich habe da mal was vorbereitet... :D
    Wenn du Änderungen möchtest, weitere Icons brauchst usw., einfach melden. Und wenn du es ganz original möchtest, kannste auch die Icons verwenden, die Johannes erstellt hat und die sich in USERDATA/R-BASIC/IMAGES befinden (wenn du sie von Rainers R-BASIC-Seite heruntergeladen hast).

  • Ich habe da mal was vorbereitet... :D

    Hallo Bernd,

    Wow! Ich danke dir! Das sieht wirklich sehr gut aus! Was aktuell noch fehlt ist die Pipette zum Aufnehmen der Farbe.
    Weiterhin habe ich deine GIFs auch gleich genutzt um die Maskenfunktion des BitmapContents zu testen und zu implementieren.
    Die Transparenz wird aus deinen GIFs also schonmal richtig gelesen und dargestellt.

  • Hier die Pipette.

    PS: Ich hatte oben ja was von diagonalem Hintergrundmuster geschrieben. Tatsächlich verwende ich das auch bei dem von mir verwendeten Programm, allerdings nur, weil mich das alternative Schachbrettmuster (siehe Screenshot ;-)) um den Verstand gebracht hat. :wacko:
    Deine ursprüngliche Variante mit horizontalen und vertikalen Linien (plus gleichmäßig durchgehender Hintergrundfarbe) ist natürlich auch sehr praktisch...

  • Hallo Mario,

    Zitat von »Rainer«
    Das ist ein spezielles Format, dass du von R-BASIC aus in die Picture-List einlesen kannst.

    Stimmt, eine Windows-Bitmap mit hinterlegten Maske würde ja auch transparent dargestellt. Das könnte ich implementieren. Oder handelt es sich dort um ein ganz anderes/spezielles Dateiformat? Beim testen mit dem Iconeditor kam ich nur bis zum KR-09 :cursing:


    1. ReadBitmapFromFile liest auch transparente BMP 's unter Beibehaltung der Transparenz.
    2. Es gibt sehr viele Versionen des Icon-Editors. Der Icon-Edito auf meiner (R-BASIC) Webseite sollte stabil laufen. Ich benutze ihn ständig.
    3. Mit "In Datei speichern" schreibt der Icon-Editor die Bitmap als HugeArrary in eine VM-Datei, wobei der Kopfblock des HugeArray als Mapblock gesetzt wird. Aus GEOS-Sicht ist das die primitivste aller Varianten. Mit der VMFiles Library könntest du da rankommen, möglicherweise musst du aber Klimmzüge machen, weil, wenn ich mich recht erinnere, der Mapblock aus BASIC-Sicht nicht der aus SDK-Sicht ist. Das steht alles in der Doku.

    Gruß
    Rainer

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