MODULE EHBDemo;


(*****************************************************************************)
(*                                                                           *)
(*  Modul: EHBDemo                         Version 1.0 vom 1. November 1990  *)
(*                                                                           *)
(*  Für M2Amiga Modula-2 von Olaf Pfeiffer                                   *)
(*                                                                           *)
(*---------------------------------------------------------------------------*)
(*                                                                           *)
(*  Das Programm zeigt die Unterstützung des "Extra-Halfbrite"-Modus durch   *)
(*  die GraphicTreasures. Es wird automatisch eine Farbpalette mit fünf      *)
(*  Grundfarben erstellt, die jeweils in 9 verschieden Intensitäten vor-     *)
(*  liegt. Durch die Fadexxx Prozeduren ist ein einfaches Aus- und Überb-    *)
(*  blenden möglich.                                                         *)
(*                                                                           *)
(*****************************************************************************)

(* $F- $R- $V- $N- *)


FROM Dos       IMPORT Delay;
FROM Graphics  IMPORT RastPortPtr, SetAPen, WritePixel, Draw, AreaDraw,
                      AreaMove, AreaEnd, AreaEllipse, Move;

(* Die folgenden Importe beziehen sich auf die GraphicTreasures *)

FROM GfxDecs   IMPORT GfxPtr, GfxMode;
FROM GfxSystem IMPORT OpenStdGfx, CloseGfx, OpenArea, CloseArea,
                      GetRastPortPtr;
FROM ColorLib  IMPORT SetColors, SetEHBColors, ColToEHB, EHBToCol, FadeOut;


VAR Gfx:   GfxPtr;
    RP:    RastPortPtr;
    m,n,p: INTEGER;
    co,il: INTEGER;
    bool:  BOOLEAN;

BEGIN
  Gfx := OpenStdGfx(EHB,FALSE);                 (* "Grafik-Screen" öffnen *)
  RP := GetRastPortPtr(Gfx);
  SetColors(Gfx,0,0,"111 FFF F00 0F0 00F 888"); (* Farben setzen *)
  SetEHBColors(Gfx,0,"444 999 A44 4A4 44A");    (* EHB-Farben setzen *)
  SetAPen(RP,ColToEHB(1,1));
  FOR m := 0 TO 4 DO                            (* Ausgabe aller EHB-Farben *)
    FOR n := 0 TO 8 DO
      bool := AreaMove(RP,n*35,   m*40+15);
      bool := AreaDraw(RP,n*35+30,m*40+15);
      bool := AreaDraw(RP,n*35+30,m*40+50);
      bool := AreaDraw(RP,n*35,   m*40+50);
      bool := AreaEnd(RP);
      EHBToCol(RP^.fgPen,co,il);
      SetAPen(RP,ColToEHB(co,il+1));
    END;
    SetAPen(RP,ColToEHB(co+1,1));
  END;
  p := 0;
  FOR n := 0 TO 6 DO                       (* Ausgabe der restlichen Farben *)
    FOR m := 0 TO 1 DO
      SetAPen(RP,m*32+n);
      bool := AreaMove(RP,p*22,   220);
      bool := AreaDraw(RP,p*22+17,220);
      bool := AreaDraw(RP,p*22+17,245);
      bool := AreaDraw(RP,p*22,   245);
      bool := AreaEnd(RP);
      INC(p);
    END;
  END;
  Delay(100); SetEHBColors(Gfx,50,"68A A86 4AA A4A AA4");  (* Überblenden *)
  Delay(100); FadeOut(Gfx,50);                             (* Ausblenden *)
  CloseGfx(Gfx);
END EHBDemo.
