Exotische Objekte unter GEM

Beispiel 1

Oft sieht man in professionellen Programmen Dialoge, die mit ankreuzbaren Rechtecken, Linien, Unterstrichen und vielen Effekten mehr ihr Outfit verbessern. Der enthusiastische ST-Programmierer neigt natürlich dazu, seine Machwerke mit ähnlich akribisch gemachten Dialogen zu schmücken, greift eventuell zum Resource Construction Set und erlebt spätestens da eine böse Überraschung:

Es gibt diese Objekte unter GEM offensichtlich nicht. Da werden lediglich Rechtecke und Texte angeboten, vielleicht hier ein Schatten, da ein Füllmuster, aber von ankreuzbaren Buttons etc. keine Spur.

Die Fachliteratur verweist an dieser Stelle in der Regel an sogenannte „User defined Objects“, zu deutsch, der Programmierer soll gefälligst selbst seine Objekte pinseln.

Da hier ohne fundierte AES- und Assembler-Kenntnisse in aller Regel nichts zu holen und ein großer Zeitaufwand und viel mühevolle Kleinstarbeit gefragt ist, überlegt sich wohl der Löwenanteil der Programmierer, ob sich dieser Aufwand wirklich lohnt, zumal es auch ohne geht.

Fazit: die Software spricht weiterhin optisch lediglich die Leute an, die einen Apfel nur vom Wochenmarkt her kennen, „exotische“ Objekte bleiben weiterhin Anwendern von Windows, X-Windows, Open Look und anderen Benutzeroberflächen vorbehalten ... traurig, traurig.

Der geneigte Leser bemerkt natürlich jetzt schon: es geht doch. Und zwar ohne Assembler. Mit dem RCS. Zumindest im Schwarzweißmodus.

Durch geschicktes Kombinieren und Überlagern von Object-Flags und GEM-Standardobjekten kann man elegante und interessante Dialoge erstellen, die oben genannten Benutzeroberflächen kaum nachstehen. Man wird jedoch nicht darum herumkommen, selbst ein wenig zu experimentieren.

Auf die hier verwendeten Objekte soll im folgenden näher eingegangen werden. Das Eselsohr des „Fliegenden Dialoges“ finden Sie bei den Button-Elementen am Ende der folgenden Liste. Gesagt werden sollte zuvor noch, daß als Füllfarbe immer „1“ verwendet wurde. Ein äußerer Rahmen ist ein Rahmen, der sich außerhalb des Objektes ansiedelt, ein innerer geht nach innen. Dies hört sich zwar trivial an, doch bei Verwechslungen lassen sich manche Objekte nicht erzeugen.

Beispiel 2

Damit Sie hier nicht gleich ganz von Informationen erschlagen werden, haben wir noch den C-Quelltext einer Resource-Datei, die alle gezeigten Objekte enthält, abgedruckt (siehe Tab.).

Probleme und Inkompatibilitäten

Zum Schluß sollen hier noch einige Dinge erwähnt werden, die im Umgang mit diesen Objekten wichtig sind:

Es lassen sich ganz sicher noch mehr Objekttypen finden, wenn man nur genügend lange mit dem RCS „herumspielt“. Lassen Sie sich nicht irritieren, wenn das RCS-Objekte falsch darstellt, am besten behelfen Sie sich mit einem Programm, das Resourcen einliest und sie, ohne individuell darauf einzugehen, testet.

Angekreuzter Knopf:

Dieses Objekt ist ein ganz normales Rechteck mit folgenden Flaggen:
Crossed, Selected, Füllmuster: Vollfüllung, Füllfarbe 1.

Doppel- & Dreifachlinien:

wurden mit dem Gleichheitszeichen bzw. dem dreifachen Gleichheitszeichen (semantische Äquivalenz der Prädikatenlogik) erzeugt.

Der Witz dabei ist, daß zuerst ein Objekt „Text“ an die entsprechende Stelle zu setzen ist, jedoch mittelzentriert und mit einem um ein Zeichen zu großes unsichtbares Rahmenfeld. Die Zeichen werden dadurch ein wenig versetzt ausgegeben, und zwar um vier Pixel. Legt man an die gleiche Stelle einen „String“, so wird dieser unversetzt und transparent darübergelegt, die unschönen Lücken zwischen den Zeichen werden somit überdeckt und verschwinden

Linien:

sind auch kein Problem. Es ist lediglich ein Rechteck mit einem „äußeren“ Rahmen zu zeichnen. Darüber wird ein weißes Rechteck ohne Rahmen gelegt, das alles außer der gewünschten Linie verdeckt, indem es die zu verdeckenden Kanten überlagert. Schriftzüge in solche Rahmen hinein, ähnlich denen in Beispiel 1, erzeugt man durch zentrierte „Texf-Objekte, die 2 Zeichenhöhen hoch sind. Der Text wird dann auch in vertikaler Richtung zentriert, so daß er zwischen den eigentlichen Zeilen erscheint.

Round Buttons:

Nichts leichter als das! Erzeugen Sie ein Objekt des Typs „BOXTEXT“ mit äußeren Rahmen. Links und rechts wird der senkrechte Strich von einem „ICON“ überdeckt, das im Zustand „Normal“ einen Halbkreis, im Zustand „Selected“ einen gefüllten Halbkreis darstellt. Dies geschieht durch geeignete Wahl der Masken-Bits. Probieren Sie selbst! Das Objekt sollte den Zustand „Exit" haben, so daß nach Anwahl die Icons per Programm mit selektiert werden können. Der Textrahmen kann aber auch so gestaltet werden, daß er die Icons überdeckt. Beim Anklicken wird dann nicht nur alles invertiert, das Objekt wird eckig!

Button-Elemente à la Unix: Status-Bits und Füllung (Farbe immer 1):
Crossed, Füllung in ST-Desktop-Graustufe.
Crossed, Disabled, Füllung ganz schwarz
Crossed, Disabled, Selected, Füllung schwarz
Crossed, Selected, Füllung wie ST-Desktop

Welches dieser Pfeilelemente für welche Richtung geeignet ist, probieren Sie am besten aus. Verwenden Sie zum Entwurf jedoch nicht das ATARI RCS 2.0, da dieses die Objekte falsch darstellt. Die Vorgängerversionen hierzu eignen sich besser.


Daniel Frühwirth
Aus: ST-Computer 06 / 1992, Seite 128

Links

Copyright-Bestimmungen: siehe Über diese Seite