Program Fenster3_ImageDemo;

{ ------------------------------------------------------------
  --                Fenster3-ImageDemo                      --
  ------------------------------------------------------------
  -- Autor    : Roger Fischlin                              --
  -- Datum    : 2. März 1992                                --
  -- Compiler : KickPascal V2.10  (c) Maxon Computer        --
  -- Rechte   : Public Domain                               --
  -- --------------------------------------------------------- }

{$incl"intuition.lib","graphics.lib" }

CONST HÖHE   = 40;  { Werte aus dem SPEICHERN-Requester von 'Fenster 3' }
      BREITE = 129;


VAR  Ende         : BOOLEAN;       { Programm beenden }
     Msg          : p_IntuiMessage { Zeiger auf erhaltene IntuiMessage }
     Wd           : p_Window;      { Zeiger auf das Fenster }
     Scr          : p_Screen;      { Zeiger auf den Screen }
     PictureImage : Image;         { Image-Struktur }
     ImageDaten   : Word; IMPORT;  { hinzugelinkte Grafikdaten }
     Farben       : Word; IMPORT;  { hinzugelinkte Farbtabelle }


BEGIN
     { alles öffnen }

     OpenLib(IntBase,'intuition.library',0);
     OpenLib(GfxBase,'graphics.library',0);
     Scr:=Open_Screen(0,0,640,$ffff,2,0,1,HIRES,'Fenster3-Image-Demo');
     Wd:=Open_Window(20,20,320,100,$ffff,_CLOSEWINDOW+NEWSIZE,WINDOWSIZING+WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+SMART_REFRESH+ACTIVATE+RMBTRAP,'Demo',Scr,BREITE,HÖHE,$ffff,$ffff);

     { Image-Struktur initialisieren }
     PictureImage:=Image(0,0,BREITE,HÖHE,2,^ImageDaten,1+2,0,NIL);

     { Farben setzen }
     LoadRGB4(^Scr^.ViewPort,^Farben,4);


     { Bild zeichnen }
     DrawImage(Wd^.RPort,^PictureImage,Wd^.BorderLeft+10,WD^.BorderTop+10);

     { Auf Message warten. Bei neuer Fenstergröße Image erneut malen }
     REPEAT
           Msg:=Wait_Port(WD^.UserPort);
           Msg:=Get_Msg(WD^.UserPort);
           IF Msg<>NIL THEN
              BEGIN
                   Ende:=(Msg^.Class=_CLOSEWINDOW); { Ende bei CLOSE }
                   IF Msg^.Class=NEWSIZE THEN
                      DrawImage(Wd^.RPort,^PictureImage,WD^.BorderLeft+10,WD^.BorderTop+10);
                   Reply_Msg(Msg);
              END
              ELSE Ende:=FALSE;
     UNTIL (Ende);

     { alles wieder schließen }
     Close_Window(Wd);
     Close_Screen(Scr);
     CloseLib(GfxBase);
     CloseLib(IntBase);

End.

{$link "fenster.o" } {Daten liegen im CHIP-Mem }

