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 es 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}; |