Der Mauszeiger besteht in Haiku aus einen Datensatz. Diesen kann man entsprechend in seinem eigenen Programm anpassen. Die Mauszeiger in Haiku sind 16px * 16px groß. Andere größen funktionieren derzeit nicht.

Wir haben ein kleines Tool geschrieben, um diesen Datensatz zu generieren. Das Tool können Sie bald auf software.besly.de oder im Haiku Depot (bitte denken Sie daran, unser Repo hinzuzufügen, sofern ist nicht schon vorhanden ist) herunterladen.


Gespeichert wird der Datensatz wie folgt:

const uint8 FACE[] = { 16,1,7,7,
63, 252, 64, 2, 128,1, 152, 25, 172, 45, 173, 173, 165, 165, 153, 153, 129, 129, 131, 193, 176, 13, 175,245, 160, 5, 159, 249, 64, 2, 63, 252,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

Die erste Zahl nach der geschweiften Klammer gibt die Größe des Zeigers an, gefolgt von der Farbtiefe (derzeit funktioniert nur Monochrome und somit ist eine 1 zu setzen. Danach folgt die Definition des Klickpunktes des Mauszeigers. Das heißt, wo in der Grafik des Mauszeigers der ausfühbare Punkt liegt.

Das Koordinatensystem beginnt oben links mit 0,0. Die Y-Koordinate wird von der ersten Zahl beschrieben, dann folgt die X-Koordinate. In unserer Grafik haben wir den Hotspot anders Farbig markiert.

0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 0,10 0,11 0,12 0,13 0,14 0,15
0,1 1,1 2,1 3,1 4,1 5,1 6,1 7,1 8,1 9,1 10,1 11,1 12,1 13,1 14,1 15,1
0,2 1,2 2,2 3,2 4,2 5,2 6,2 7,2 8,2 9,2 10,2 11,2 12,2 13,2 14,2 15,2
0,3 1,3 2,3 3,3 4,3 5,3 6,3 7,3 8,3 9,3 10,3 11,3 12,3 13,3 14,3 15,3
0,4 1,4 2,4 3,4 4,4 5,4 6,4 7,4 8,4 9,4 10,4 11,4 12,4 13,4 14,4 15,4
0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5 10,5 11,5 12,5 13,5 14,5 15,5
0,6 1,6 2,6 3,6 4,6 5,6 6,6 7,6 8,6 9,6 10,6 11,6 12,6 13,6 14,6 15,6
0,7 1,7 2,7 3,7 4,7 5,7 6,7 7,7 8,7 9,7 10,7 11,7 12,7 13,7 14,7 15,7
0,8 1,8 2,8 3,8 4,8 5,8 6,8 7,8 8,8 9,8 10,8 11,8 12,8 13,8 14,8 15,8
0,9 1,9 2,9 3,9 4,9 5,9 6,9 7,9 8,9 9,9 10,9 11,9 12,9 13,9 14,9 15,9
0,10 1,10 2,10 3,10 4,10 5,10 6,10 7,10 8,10 9,10 10,10 11,10 12,10 13,10 14,10 15,10
0,11 1,11 2,11 3,11 4,11 5,11 6,11 7,11 8,11 9,11 10,11 11,11 12,11 13,11 14,11 15,11
0,12 1,12 2,12 3,12 4,12 5,12 6,12 7,12 8,12 9,12 10,12 11,12 12,12 13,12 14,12 15,12
0,13 1,13 2,13 3,13 4,13 5,13 6,13 7,13 8,13 9,13 10,13 11,13 12,13 13,13 14,13 15,13
0,14 1,14 2,14 3,14 4,14 5,14 6,14 7,14 8,14 9,14 10,14 11,14 12,14 13,14 14,14 15,14
0,15 1,15 2,15 3,15 4,15 5,15 6,15 7,15 8,15 9,15 10,15 11,15 12,15 13,15 14,15 15,15

 

Der erste lange Zahlenblock beschreibt die schwarz, der zweite lange Zahlenblock beschreibt die weiß, gesetzten Pixel.

Der beiden langen Zahlenblöcke werden von links nach rechts und von oben nach unten geschrieben. Transparenz funktioniert nur bei den weißen Pixeln, schwarze Pixel sind immer deckend.

Hier finden Sie ein Beispiel für ein Fadenkreuz mit weißen Hintergrund.

  Ergebnis für   BYTE BYTE                    Ergebnis für  
BYTE Weiße Pixel Schwarze Pixel   Weiße Pixel Schwarze Pixel BYTE
0 254 1                  128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 1
2 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 3
4 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 5
6 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 7
8 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 9
10 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 11
12 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 13
14 0 255 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 0 255 15
16 0 255 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 0 255 17
18 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 19
20 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 21
22 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 23
24 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 25
26 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 27
28 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 29
30 254 1 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1 127 128 31

 

Das obige Bespiel als Code, die schwarzen Pixel haben wir in der Tabelle gelb dargestellt, damit man die Zahlen lesen kann.

const uint8 FACE[] = { 16,1,7,7,
    1, 128,     1, 128,     1, 128,     1, 128,     1, 128,     1, 128,     1, 128, 255, 255, 255, 255,     1, 128,     1, 128,     1, 128,     1, 128,     1, 128,     1, 128,     1, 128,
254, 127, 254, 127, 254, 127, 254, 127, 254, 127, 254, 127, 254, 127,      0,    0,     0,     0, 254, 127, 254, 127, 254, 127, 254, 127, 254, 127, 254, 127, 254, 127};