2.3 cursor

Grafikcursor, die verwendet werden sollen, müssen zuvor deklariert werden. Das Schlüsselwort hierzu ist cursor, gefolgt von dem Cursoridentifikator und der Cursordefinition.

Definition

{ export | reexport } cursor <Bezeichner> <cursorSpec> | <variantDef>
cursorSpec ::= <cursorBitmap> | "<vordefinierter Cursor>" ;
cursorBitmap ::= <x>, <y>,
                 <cursorString>
             [ , <cursorString> ]
variantDef ::=
{
           0 : <cursorSpec>
  [ <Nummer> : <cursorSpec> ]
}

Beispiel

Nicht variant

cursor MyCursor "XC_cross";

Variant

cursor MyCursor
{
  0: "XC_cross";
  1: "Cross";
}

2.3.1 Bitmap-Cursor

<x> und <y> bezeichnen wie bei der Definition eines Musters die jeweilige Ausdehnung in X- bzw. Y-Richtung in Pixel.

Der IDM lässt beliebige Breiten (<x>) und Höhen (<y>) für die Cursor zu. Die meisten Grafiksysteme begrenzen die Größe eines Cursors jedoch auf 32 * 32 Pixel (z.B. MS Windows) bzw. 16 * 16 Pixel (z.B. Motif).

<cursorString> bezeichnet eine Zeichenkette mit genau <x> Zeichen. Sie sollten genau <y> Zeichenketten mit jeweils <x> Zeichen spezifizieren.

In <cursorString> zulässige Zeichen sind Punkt(.), Leerzeichen( ), Plus(+), Doppelkreuz (#) und der Großbuchstabe X. Die einzelnen Zeichen haben folgende Bedeutung:

.
  (Leerzeichen)

Übernehmen der Hintergrundfarbe, d.h. der Cursor ist an dieser Stelle transparent.

+

Diese Stellen werden mit der invertierten Hintergrundfarbe dargestellt. Dies ist wichtig für Fälle, bei denen die Vordergrundfarbe identisch mit der Hintergrundfarbe ist.

#

Diese Stellen werden mit der Vordergrundfarbe gezeichnet, die vom Fenstersystem definiert ist.

X

Wird ein Objekt mit dem Cursor angeklickt, so muss dieser Hotspot auf dem Objekt sein, andernfalls wird das Anklicken nicht registriert. Dieses Zeichen muss genau einmal in der Definition des Cursors vorkommen. Ist kein X-Zeichen angegeben, geht der DM davon aus, dass der Hotspot in der Mitte des angegebenen Objektes liegt.

Beispiel

cursor Pointer 16, 16,
  "........+.......",
  ".......+++......",
  "......++X++.....",
  ".....++###++....",
  "....++#####++...",
  "...++#######++..",
  "..++#########++.",
  "..+++++###+++++.",
  ".....++###++....",
  ".....++###++....",
  ".....++###++....",
  ".....++###++....",
  ".....++###++....",
  ".....++###++....",
  ".....++###++....",
  ".....+++++++....";

Anmerkung zum IDM für Windows

Mit Cursor ist der Mauszeiger gemeint – der Begriff Cursor hat in Microsoft Windows eine andere Bedeutung.

Die Cursorgröße in Microsoft Windows ist 32 x 32 (mit EGA- oder VGA-Auflösung). Eine andere Größe ist nicht erlaubt! Daher passt der Dialog Manager den Cursor an, indem mit Transparenten aufgefüllt wird oder der rechte bzw. untere Rand abgeschnitten werden.

2.3.2 Vordefinierte Cursor

Eine Liste der auf dem jeweiligen System zur Verfügung stehenden vordefinieren Cursor kann über das Attribut .cursorname[integer] am setup Objekt erfragt werden.

2.3.2.1 Unabhängige UI-Cursor

Die UI-Cursorressourcen sind WSI-unabhängige vordefinierte Cursor, die auf allen Systemen in ähnlicher Ausprägung bzw. Bedeutung verfügbar sind. Herangezogen werden hierzu die Default-Cursor, die vom aktuellen Desktop/Window Manager oder Theme verwendet werden. Die einheitlichen CURSOR-Ressourcen sind wie folgt definiert:

2.3.2.2 Motif

Bei der Definition über den Namen wird der entsprechende X-Cursor aus den Cursor-Zeichensätzen des X-Windows geladen:

Beispiel

cursor Clockcursor "XC_clock";

2.3.2.3 Qt

Es gibt folgende benannte Cursors, bei denen der entsprechende Qt CursorShape geladen wird:

Die Darstellung der Cursors kann je nach UI-Stil unterschiedlich sein.

2.3.2.4 Microsoft Windows

Bei der Definition über den Namen wird der entsprechende Cursor aus dem Bestand der Microsoft Windows Objekte genommen.

Für Microsoft Windows Systeme gibt es folgende vordefinierte System-Cursor:

Hinweise