Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GEOS-InfoBase-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Dienstag, 17. Dezember 2019, 09:15

Tiefhängende Früchte: bitmap.geo

Eine Sache, die mich stört, seit es den ersten 256-Farben Treiber für PC/GEOS gab, ist, dass die Bitmap-Tools nie vollständig an diesen und die folgenden Treiber angepasst wurden.

Legt man in GeoDraw (Artist) einen schönen Farbverlauf mit 256 Stufen an und konvertiert das Ganze dann via Transform/Convert/Bitmap in eine Bitmap entsteht immer ein 16-Farben Bild, mit entsprechend unzeitgemäßem Aussehen. Dasselbe gilt für Grafiken die man z.B. aus dem Browser importiert und dann in eine Bitmap umwandelt. Auch ein nachträgliches Umwandeln in eine 256 Farben Bitmap via Attributes Menü hilft da dann logischerweise nicht mehr.

Bei der Arbeit an "feed" ist mir das wieder aufgestoßen. Aber Moment mal, wir haben ja jetzt den Source-Code! Also habe ich mir mal angesehen, wie GEOS die Umwandlung durchführt.

Wenn GEOS eine Grafik umwandeln möchte, wird zuerst eine neue Bitmap erzeugt und dann in diese die Grafik gezeichnet. Und hier kommt auch schon der Pferdefuß: neue Bitmaps werden von GEOS standardmäßig mit 72dpi und 16 Farben angelegt. Das mag 1990 eine logische Entscheidung gewesen sein, VGA war da Standard. Aber das wurde nie revidiert, vermutlich auch, weil Bitmaps relativ schnell Speicher-kritisch werden...

Wie dem auch sei: ändert man die interne Voreinstellung von 16 auf 256 Farben, erzeugt GEOS sofort deutlich sanftere Farbverläufe und konvertierte Bilder sehen viel besser aus. Unter Attribute wird auch korrekt eine 256 Farben Bitmap angezeigt.

Im Anhang habe ich für Euch eine aktualisierte bitmap.geo, in der der Standardwert auf 8-Bit (256 Farben) gesetzt wird. Interessant wäre nun zu sehen, inwieweit sich die geänderte Voreinstellung problematisch auf andere Bereiche des Systems auswirkt. Schließlich wird jetzt jede neue Bitmap innerhalb des Systems mit 8 Bit angelegt, benötigt also mehr Speicher. Das könnte Ärger geben, auch wenn mir bisher nix aufgefallen ist...

Vieleicht wissen aber auch unsere GEOS-Cracks mehr... ?

Nachtrag: Ich habe gerade nochmal mit der Original-Library getestet. Auch mit der ist es möglich, bessere Bitmaps zu erzeugen. Dazu legt man eine Bitmap an, setzt diese auf 256 Farben und packt dann die Grafik via Copy/Paste ins Innere. Ist allerdings deutlich umständlicher...
»MeyerK« hat folgende Datei angehängt:
  • bitmap.zip (15,12 kB - 410 mal heruntergeladen - zuletzt: 6. Juli 2020, 17:35)
Bye,
MeyerK

2

Dienstag, 17. Dezember 2019, 09:52

Supercool Konstantin! Genau in diese Richtung sollte es gehen. Auch wenn vermutlich nicht alle Früchte so tief hängen werden.
Bernd

3

Dienstag, 17. Dezember 2019, 11:58

Das Bitmapformat mit 256 Farben war ja schon einstellbar.

Schön wäre es, wenn man die 256 Farben auch selber einsetzen könnte. Also Konstantin, wie wärs mit einem entsprechenden Controller?

4

Dienstag, 17. Dezember 2019, 12:04

Wie meinst Du das, war schon einstellbar? Vor der Konvertierung war nix einzustellen, dachte ich? Es sei denn, man legt eben eine leere Bitmap an und kopiert da das Objekt hinein...

Und den Controller vergessen wir ganz schnell... :wacko:
Bye,
MeyerK

5

Dienstag, 17. Dezember 2019, 17:11

<<Wie meinst Du das, war schon einstellbar?>>
Ich meinte nur in GeoDraw unter Attribute das Bitmap Format.

<<Und den Controller vergessen wir ganz schnell... >>
Warum? Ich habe dich so verstanden, dass du jetzt intensiv ins SDK einsteigst.

6

Mittwoch, 18. Dezember 2019, 11:02

Moin.
Ich habe diese neue bitmap.geo mal ausprobiert. Also... Ich sehe überhaupt keinen Unterschied, nicht beim Konvertieren innerhalb des GeoDraw-Dokumentes und auch nicht beim Exportieren in eine Bitmap ?(
In den Voreinstellungen ist ein Echtfarbentreiber eingestellt...
Gruß Achim



PC/GEOS unter Linux in der DOSEMU = UNSCHLAGBAR!

7

Mittwoch, 18. Dezember 2019, 13:08

Hallo Achim,

was genau hast Du probiert? Unter welcher Version von GEOS?
Bye,
MeyerK

8

Mittwoch, 18. Dezember 2019, 16:24

Konstantin, verrätst du, was genau du in der Bitmap-Library verändert hast?

9

Mittwoch, 18. Dezember 2019, 17:38

Ja! Eine 4 in eine 8 :D

https://github.com/bluewaysw/pcgeos/blob…tmap/bitmap.asm

Zeile 1150, BMF_4BIT => BMF_8BIT

Das ist quasi der Konstruktor des Bitmap-Objects, der die Standard-Werte setzt. Auf ds:[di].VBI_bmFormat greifen später die Funktionen zu, die die Konvertierung vornehmen, via CreateBitmapCommon etc....
Bye,
MeyerK

10

Mittwoch, 18. Dezember 2019, 19:32

Danke!

Die Änderung wirkt sich auf in z.B. GeoDraw erzeugte Bitmapgrafiken aus. Vor wurde jede Bitmap im 4-Bit-Farbmodus erzeugt, jetzt im 8-Bit-Farbmodus (Unter Attribute - Bitmap Format zu sehen). :)

Erzeugt man z.B. ein Vektorgrafikobjekt mit Farverlauf und transformiert die Grafik ins Bitmap-Format, so ist der Effekt sehr deutlich zu sehen. :)

Aber wie gesagt, jetzt fehlt ein Controller, damit man auch Zugriff auf die Farben bekommt.

11

Mittwoch, 18. Dezember 2019, 20:51

Wilfried, was meinst Du mit "es fehlt ein Controller"?. Du hast doch unter Attribute Zugriff auf alle Farben für Linien und Flächen...?
Bye,
MeyerK

12

Mittwoch, 18. Dezember 2019, 20:57

Nicht für Bitmaps

13

Mittwoch, 18. Dezember 2019, 21:05

Okay, das muss ich mir mal ansehen! Danke!
Bye,
MeyerK

14

Mittwoch, 18. Dezember 2019, 21:38

Ich habe mir die Sache noch mal mit Hilfe von Andreas genialer Online-Live-Demo angesehen. So wie ich das sehe, wirken sich die unter "Attributes" ausgewählten Farben auch auf die Bitmap-Tools aus. Im Farb-Controller kann man dort auch unter "Custom" endlos Farben auswählen... oder verstehe ich da was falsch?
Bye,
MeyerK

15

Donnerstag, 19. Dezember 2019, 10:03

Hallo Achim,

was genau hast Du probiert? Unter welcher Version von GEOS?
Moin Konstatin.
Ich benutze BBE 4.13 deutsch in DOSEmu/LinuxMint 19.2.

Zunächst habe ich in GeoDraw ein geometrisches Objekt erstellt. Dessen Fläche habe ich mit einem Farbverlauf mit 255 Abstufungen gefüllt.
Sodann habe ich diese Grafik über /Transformieren/Konvertieren/In Bitmap konvertieren in eben diese verwandelt. Das Ergebnis war... unansehnlich.

Genauso ist das Ergebnis, wenn ich die GeoDraw-Grafik über /Grafik exportieren in ein Bitmap mit 256 Farben exportiere.

verlauf.BMP
Update:
Im Fenster Bitmap-Format lassen sich Farbtiefe und Auflösung einstellen. Das geht aber erst nach Erstellung des Bitmaps. Wenn ich dann das Bitmap von Standard-72 dpi nach 300 dpi verändere (oder noch höher - falls der Rechner mitmacht), ändert sich aber nichts an der Darstellung auf dem Bildschirm...
Gruß Achim



PC/GEOS unter Linux in der DOSEMU = UNSCHLAGBAR!

sebi

Schüler

Beiträge: 69

Beruf: Software-Entwickler

  • Nachricht senden

16

Donnerstag, 19. Dezember 2019, 10:07

Faszinierend, Konstantin :-)!

Hätte zwei Nebenfragen:
1) Wie hast du in dem Quellcode diese Zeile 1150 gefunden? Wußtest du schon, in welcher Datei du suchen mußt?
2) Welche geniale Online-live-Demo?

17

Donnerstag, 19. Dezember 2019, 11:13

Ich muss zurückrudern: Konstantin, du hast recht. Die Farbencontroller lassen sich auf eine selbsterstellte Bitmap anwenden. Mir ist das entgangen, weil ich vorgegangen bin wie bei Vektorgrafiken: Objekt markieren und dann die Farbe auswählen. Bei Bitmaps geht es eben immer nur über das Füllwerkzeug aus der Werkzeugleiste.

Den Unterschied zwischen der Original-Library und der veränderten Library von Konstantin lässt sich wie folgt beobachten: Bitmap Grafik erstellen, Flächenfarbencontroller öffnen, Farbe auswählen und bestätigen, dann mit Füllwerkzeug ins Objekt klicken. Geht man auf weitere Farben und versucht es mit den dort angezeigten 8Bit Farben, dann zeigt sich der Unterschied. Mit der Original-Library klappt es in der Regel nicht mehr (es sei denn, man trifft zufällig eine der 4Bit_Farben), mit der veränderten Library kann die Farbe beliebig wählen. Geht man auf die nächste Stufe (RGB), dann geht es nur, wenn man eine der 256 8Bit Farben trifft.

Beim Ausprobieren stellte sich heraus, dass das Färben nur geht, wenn man durchgehend nur die entsprechende Farbpalette nimmt. Erwischt man eine andere Farbe, dann ist Schluss, das Objekt ändert die zuletzt eingestellte Farbe nicht mehr (ein Bug?).

18

Donnerstag, 19. Dezember 2019, 11:23

Achim:

Siehst du einen Unterschied, wenn du deine 8Bit Grafik über Bitmap Format in 4Bit transformierst?

19

Donnerstag, 19. Dezember 2019, 15:20

Faszinierend, Konstantin :-)!

Hätte zwei Nebenfragen:
1) Wie hast du in dem Quellcode diese Zeile 1150 gefunden? Wußtest du schon, in welcher Datei du suchen mußt?
2) Welche geniale Online-live-Demo?


Ich bin so froh, dass Du fragst, so kann ich meine Eitelkeit befriedigen ;)
Also: durch Nachdenken und suchen im Code bin ich auf folgende Funktion gestoßen
MSG_GB_CONVERT_SELECTED_GROBJS_TO_BITMAP (https://github.com/bluewaysw/pcgeos/blob…y/bodyImpex.asm)

Diese ruft eine Funktion namens:
MSG_BG_CREATE_VIS_BITMAP auf (https://github.com/bluewaysw/pcgeos/blob…mapGuardian.asm)

Der Bitmap Guardian überprüft vermutlich, ob eine Bitmap zu groß werden und den Rechner crashen könnte und versucht das
zu verhindern, denke ich. Er hüllt quasi den eigentlichen Bitmap-Erzeugungsaufruf ein, der mit folgender Funktion
eingeleitet wird:
MSG_VIS_BITMAP_CREATE_BITMAP (https://github.com/bluewaysw/pcgeos/blob…tmap/bitmap.asm)

Die wiederum ruft eine Funktion namens
CreateBitmapCommon auf (in derselben Datei, bitmap.asm)

Und die setzt das Bitmap-Format für die neue Bitmap mit folgender Zeile:
mov al, ds:[di].VBI_bmFormat
will heißen: der Inhalt aus ds:[di].VBI_bmFormat soll ins Register al bewegt werden.

Sucht man nun danach, wo das Bitmap-Format in ds:[di].VBI_bmFormat übertragen wird, findet man die Funktion
MSG_META_INITIALIZE, in der es folgende Zeile gibt:
mov ds:[di].VBI_bmFormat, BMF_4BIT

In der MSG_META_INITIALIZE Funktion wird also der Standardwert für die Bitmaps auf 4-Bit = 16 Farben gesetzt.
Ändert man die 4 in eine 8, sind es 256 Farben, da auch die Konstante BMF_8BIT definiert ist.

Und zu Deiner zweiten Frage: Andreas Bollhalder hat mehrere Online Demos von GEOS am Laufen, die Du Dir mit
einem VNC Viewer ansehen kannst. Absolut sauber umgesetzt:
https://geodb.org/s2/
Bye,
MeyerK

20

Donnerstag, 19. Dezember 2019, 15:21

Achim:

Siehst du einen Unterschied, wenn du deine 8Bit Grafik über Bitmap Format in 4Bit transformierst?
Sehr guter Ansatz, Wilfried!
Bye,
MeyerK

Ähnliche Themen

Thema bewerten