(*---------------------------------------------------------------------------
 :Program.    IntuiPointer.mod
 :Contents.   Prozeduren zum Setzen des Mauszeigers auf 'Busy' (ZZ)
 :Author.     Bernd Preusing
 :Address.    Gerhardstr. 16  D-2200 Elmshorn
 :Copyright.  Public Domain
 :Language.   Oberon-2
 :Translator. Amiga Oberon 2.42d
 :History.    V1.0, 08-Oct-89, Bernd Preusing
 :History.    V1.1, 10-Jan-90, [bne]: original (ZZ).-Image
 :History.    V1.2, 10-Jan-92, Christian Stiens: original OS2.0 BusyPointer
 :History.    V1.3, 06-Oct-92, Christian Stiens: animated busy pointer
---------------------------------------------------------------------------*)

MODULE IntuiPointer;

IMPORT I := Intuition;

(* $DataChip+ *)

TYPE Data = ARRAY 36 OF INTEGER;

CONST ClockData = Data(
  00000U,00000U,
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FECU, 03FF8U,07FDEU, 03FF8U,07FBEU,
  07FFCU,0FF7FU, 07EFCU,0FFFFU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U);

TYPE Data2 = ARRAY 16,36 OF INTEGER;

CONST AnimClockData = Data2(
  00000U,00000U,                                               (* 00 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01EF8U, 01FF0U,03EFCU, 03FF8U,07EFEU, 03FF8U,07EFEU,
  07FFCU,0FEFFU, 07EFCU,0FFFFU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 01 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FB8U, 01FF0U,03FBCU, 03FF8U,07F7EU, 03FF8U,07F7EU,
  07FFCU,0FEFFU, 07EFCU,0FFFFU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 02 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FECU, 03FF8U,07FDEU, 03FF8U,07FBEU,
  07FFCU,0FF7FU, 07EFCU,0FFFFU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 03 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FE6U,
  07FFCU,0FF9FU, 07EFCU,0FF7FU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 04 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,0FF03U, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 05 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,0FF7FU, 07FFCU,0FF9FU, 03FF8U,07FE6U,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 06 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,0FFFFU, 07FFCU,0FF7FU, 03FF8U,07FBEU,
  03FF8U,07FDEU, 01FF0U,03FECU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 07 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,0FFFFU, 07FFCU,0FEFFU, 03FF8U,07F7EU,
  03FF8U,07F7EU, 01FF0U,03FBCU, 007C0U,01FB8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 08 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,0FFFFU, 07FFCU,0FEFFU, 03FF8U,07EFEU,
  03FF8U,07EFEU, 01FF0U,03EFCU, 007C0U,01EF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 09 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,0FFFFU, 07FFCU,0FEFFU, 03FF8U,07DFEU,
  03FF8U,07DFEU, 01FF0U,03BFCU, 007C0U,01BF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 10 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,0FFFFU, 07FFCU,0FDFFU, 03FF8U,07BFEU,
  03FF8U,077FEU, 01FF0U,02FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 11 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,0FDFFU, 07FFCU,0F3FFU, 03FF8U,04FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 12 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,07FFEU,
  07FFCU,0FFFFU, 07EFCU,081FFU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 13 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,03FFCU, 03FF8U,07FFEU, 03FF8U,04FFEU,
  07FFCU,0F3FFU, 07EFCU,0FDFFU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 14 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01FF8U, 01FF0U,02FFCU, 03FF8U,077FEU, 03FF8U,07BFEU,
  07FFCU,0FDFFU, 07EFCU,0FFFFU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U,
  00000U,00000U,                                               (* 15 *)
  00400U,007C0U, 00000U,007C0U, 00100U,00380U, 00000U,007E0U,
  007C0U,01BF8U, 01FF0U,03BFCU, 03FF8U,07DFEU, 03FF8U,07DFEU,
  07FFCU,0FEFFU, 07EFCU,0FFFFU, 07FFCU,0FFFFU, 03FF8U,07FFEU,
  03FF8U,07FFEU, 01FF0U,03FFCU, 007C0U,01FF8U, 00000U,007E0U,
  00000U,00000U);

PROCEDURE Normal* (win: I.WindowPtr);
BEGIN
  I.ClearPointer(win);
END Normal;

PROCEDURE Busy* (win: I.WindowPtr);
BEGIN
  I.SetPointer(win,ClockData,16,16,-6,0);
END Busy;

PROCEDURE AnimBusy* (win: I.WindowPtr; num: INTEGER);
BEGIN
  I.SetPointer(win,AnimClockData[num MOD 16],16,16,-6,0);
END AnimBusy;

END IntuiPointer.

