(*---------------------------------------------------------------------------
    :Program.     IntuiPointer.mod
    :Contents.    Prozeduren zum Setzen des Mauszeigers auf 'Busy' (ZZ)
    :Author.      Klaus Hlawaty
    :Address.     Waldhof 1
    :Address.     D-3579 Schrecksbach 1
    :Copyright.   Public Domain, ---> bei Bernd Preusing.
    :Language.    Oberon
    :Translator.  OBERON v2.13 / OLink v2.13d
    :History.     V1.0  - 08-Oct-89 Bernd Preusing
    :History.     V1.1  - 10-Jan-90 [bne] (original (ZZ).-Image)
    :History.     v1.1o - 02-Dec-90 Umsetzung von Modula2 auf Oberon.
    :Bugs.        none
    :Remark.      Please, create beautiful pointers for me! [bne]
    :Support.     Umsetzung des Modula2-Programmes von
    :Support.       Bernd Preusing
    :Support.       Gerhardstr. 16  D-2200 Elmshorn
    :Support.       04121/22486
---------------------------------------------------------------------------*)
MODULE IntuiPointer;

IMPORT 
            Exec,
            Intuition,
        Ol: OberonLib,
        s : SYSTEM;

CONST
  POINTERSIZE = (22+2)*2*2; (* Never change this! [bep] Why? [bne] *)
  DataSize    = POINTERSIZE DIV 4;

TYPE
   DataT = ARRAY DataSize OF LONGINT;

CONST
     ZZData  =DataT(000000000H,
                    006000600H,
                    00F400F40H,
                    03FE03FE0H,
                    07FE07FE0H,
                    07FF061F0H,
                    07FF87BF8H,
                    0FFF8F7F8H,
                    07FFC61FCH,
                    07FFC7F0CH,
                    03FFE3FDEH,
                    07FFC7FBCH,
                    03FFC3F0CH,
                    01FF81FF8H,
                    007F007F0H,
                    001C001C0H,
                    007000700H,
                    00FC00FC0H,
                    006800680H,
                    000000000H,
                    000C000C0H,
                    000E000E0H,
                    000400040H,
                    000000000H);  (* MousePointer Daten, werden kopiert *)

VAR
    ZZVar : POINTER TO DataT;

PROCEDURE Normal*(Win:Intuition.WindowPtr);
(* ------------------------------------------------------------------------
   :Input.     Win: POINTER auf die Windowstruktur.
   :Semantic.  Setzt normalen Mausezeiger.
------------------------------------------------------------------------ *)
BEGIN
  Intuition.ClearPointer(Win);
END Normal;

PROCEDURE Busy*(Win:Intuition.WindowPtr);
(* ------------------------------------------------------------------------
   :Input.     Win: POINTER auf die 'beschäftigte' Windowstruktur.
   :Semantic.  Mausezeiger schläft.
------------------------------------------------------------------------ *)
BEGIN
  Intuition.SetPointer(Win,ZZVar^,22,16,-7,-7);
END Busy;

BEGIN (* ---------- Modulerumpf ---------- *)
  INCL(Ol.MemReqs,Exec.chip);     (* MousePointer Daten ins CipMem *)
  NEW(ZZVar);
  EXCL(Ol.MemReqs,Exec.chip);
  ZZVar^ := ZZData;

CLOSE
  IF(ZZVar # NIL)THEN
    DISPOSE(ZZVar);
  END;

END IntuiPointer.
