von Michael Christoph
Man kann es fast nicht glauben, aber in der graphics.library selber sind
keine neuen Funktionen hinzugekommen. Im Hintergrund kümmert sich
die layers.library um die Organisation der Daten und intuition sorgt für
die Interaktion mit dem Benutzer. Dazwischen liegt die graphics.library
sie ist für die Anzeige der Daten verantwortlich. In »AmigaOS
4« arbeitet das Picasso-Treiber-System (allerdings in PPC nativ
Form). Erst mit 4.1 soll das neue SNAP-Treiber-System Einzug halten. In
diesem Zusammenhang ist dann auch mit einer Überarbeitung der graphics. Interface
und Layers Die layers.library verrichtet ihre Aufgabe im »Untergrund«
und ist bei normalen Anwendungen auch nicht interessant. Viele der höheren
OS-Funktionen (in intuition und datatypes) greifen auf Funktionen der
layers.library zurück. Die eine Aufgabe ist das Organisieren von
Bildbereichen, die angezeigt oder verdeckt sind. Dazu gehört auch
die optimierte Abarbeitung von Refreshes. Die andere Aufgabe ist das Clipping,
also dafür zu sorgen, dass nicht über einen bestimmten Bereich
hinaus gezeichnet wird. Auch ein zu langer Text kann dadurch nur zum Teil
angezeigt werden. Neu sind die Funktionen ShowLayer und HideLayer, die
ihre praktische Anwendung bereits im letzten Kursteil anhand von ShowWindow
und HideWindow demonstriert haben. Auch das Füllen von Hintergrundbereichen
lässt sich jetzt einfacher automatisieren. Interessierte seien an
die Funktionen CreateBackFillHock und DeleteBackFillHook, sowie SetBackFillHookAttrs
und GetBackFillHookAttrs verwiesen.
Arbeit mit Schriften Viel interessanter wird es aber mit den Schriften, die ja auch von der graphics.library auf den Bildschirm gebracht werden (mit der Text-Funktion). Das alte »IntellitiFont«-Installations-Programm wurde in den Ruhestand geschickt und durch »FontManager« ersetzt. Dieses Programm erlaubt die Installation von neuen Schriften für den Amiga. Notwendig ist es deshalb, da bestimmte Informationen in den .font-Dateien (bei Bitmap-Schriften) bzw. .otag-Dateien (bei skalierbaren Schriften) hinterlegt werden. Die altbekannten »Agfa Intelliti«-Schriften werden vom FontManager auch weiterhin unterstützt, auch wenn kaum derartige Schriften im Umlauf sind. Interessanter wird es aber bei den aus dem PC-Bereich stammenden TrueType-Schriften und den aus dem Druckbereich stammenden PostScript-Schriften (Type1). Damit begnügt sich der FontManager aber noch nicht. Auch andere, eher unbekannte Schriftarten finden Unterstützung, wie z.B. die OpenType-Schriften. Sind die Schriften erst einmal installiert, macht der Amiga keinen Unterschied mehr zwischen den verschiedenen Schriftarten. Und auch programmseitig lassen sich alle Schriften identisch verwenden und anzeigen. Das geht sogar soweit, dass die Schriften automatisch antialiasied (das heißt, mit geglätteten Kanten) dargestellt werden, wenn der entsprechende Punkt in den »Font Preferences« gesetzt ist. Eine weitergehende Unterstützung finden allerdings die skalierbaren Schriften unter Verwendung der neuen Funktionen der diskfont.library. Die bullet.library sollte nicht mehr verwendet werden. Alle notwendigen Funktionen sind jetzt direkt in der diskfont.library zu finden. Auch spezielle Libraries wie die type1.library oder ttf werden nicht mehr benötigt und müssen vom Programm nicht mehr angefordert (geöffnet) werden. Neues
beim Encoding
Die ISO-8859-Zeichensätze für die Kodierungen von europäischen Schriftzeichen wurden von der »European Computer Manufacturer`s Association« (ECMA) entwickelt und in den 80er-Jahren von der internationalen Organisation für Standardisierung (ISO) genormt. Die internationale Norm »ISO 8859« beschreibt gegenwärtig zehn verschiedene Zeichensätze (8859-1 bis 8859-10). Jedes Zeichen (engl. »character«) ist in einem Byte (8 Bit) kodiert. Jeder Zeichensatz (engl. »Character Encoding Scheme«, CES) kann also bis zu 256 Zeichen (druckbare Zeichen und Steuerzeichen) umfassen. Unter den zehn ISO-8859-Standards dienen sechs zur Kodierung lateinischer Schriften (Latin-1 bis Latin-6) und je ein weiterer für das kyrillische, arabische, griechische und hebräische Alphabet. Die erste Hälfte der Zeichen aller Latin-Zeichensätze (Zeichen Nr. 0 bis Nr. 127) stimmt mit dem »American Standard Code for Information Interchange« (ASCII) überein, in den übrigen 128 Zeichen, in denen sie über den ASCII hinausgehen, unterscheiden sich alle ISO-Zeichensätze voneinander. Zu jedem Zeichen enthalten die Sätze eine standardisierte Beschreibung, zum Beispiel wird das deutsche ß als »LATIN SMALL LETTER SHARP S« bezeichnet. Mit »AmigaOS 4« kann jetzt im Locale-Einsteller festgelegt werden, welche Kodierung benutzt werden soll. Beim Öffnen einer Schriftt wird dann automatisch nach einer passenden Kodierung gesucht. Wird keine passende Schrift gefunden, wird noch nach einer Schrift ohne Kodierungsinformationen gesucht. Trifft beides nicht zu, schlägt das Öffnen der Schrift fehl. Namensgleiche Schriften mit anderer Kodierung werden auf keinen Fall verwendet. Da die Schrifteinstellung vom Anwender getroffen wird, kann sich kein Programmierer mehr darauf verlassen, dass z.B. das Copyright-Symbol © an ASCII-Code 169 zu finden ist. Stattdessen ist es besser, die neutrale Formulierung "(C)" zu verwenden. Auch Cataloge müssen jetzt mit der korrekten Kodierung versehen werden, wobei hier aber normalerweise bereits die Sprache für eine eindeutige Zuordnung ausreicht. Eine Besserung der Situation wird sich mit der geplanten Einführung von Unicode einstellen. Da hierbei zwei Bytes je Zeichen verwendet werden, steht ein Bereich von 0 bis 65535 zur Verfügung. Also ausreichend, um alle Arten von Sonderzeichen einer festen ID zuordnen zu können. Unicode wird allerdings erst nach der Version 4.0 ein Thema. Direktes Layout
Nach dieser ganzen Theorie folgt jetzt die praktische Anwendung. Solange die Texte einfach auf den Bildschirm gepinselt werden, reichen Move() und Text() aus. Eventuell geben Sie noch ein OpenDiskFont() und SetFont() zum Öffnen und Verwenden der Schrift an alles altbekannte Funktionen. Sollen die einzelnen Buchstaben aber gedreht, gestaucht oder auch ein anderer Zeichenabstand verwendet werden, wird es schon interessanter. All das lässt sich einfach über die neuen Funktionen der diskfont.library realisieren. Voraussetzung ist aber, dass es sich um eine skalierbare Schrift handelt. Mit den alten Bitmap-Fonts funktioniert es nicht. Bevor es allerdigs losgeht, muss erst einmal die FontEngine geöffnet werden (s. Listing 2). Die verschiedenen Aktionen und auch die gewünschten Buchstaben legen Sie per ESetInfo() fest. Bei einem Returncode von 0 war alles in Ordnung (Listing 3). amit wären die Daten vorbereitet und können über EObtainInfo ausgelesen werden (Listing 4). Wie der kurze Ausschnitt schon zeigt, stehen in der GlyphMap-Struktur die Bitmap-Daten des Zeichens zur Verfügung und können direkt in das Fenster geblittet werden. Mit Hilfe von EReleaseInfo() geben Sie die belegten Ressourcen schließlich am Ende wieder frei. Jedoch noch ausführlicher sind die Zusammenhänge im Source-Code von »myFontView« zu finden. Der nächste Teil befasst sich mit dem Datatype-System. Für den Programmierer hat sich zwar kaum etwas geändert, aber die Handhabung soll trotzdem in Erinnerung gerufen werden. Auch AHI wird beim Sound-Datatype ein Thema sein. lb |
|
Download: |
---|
os4prog-4-gfx-src.lha, 101.162 bytes |
Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster
AMIGA schicken.
Zuletzt aktualisiert am 19. November 2004, Michael Christoph.