home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / MAXONPASCAL3.DMS / in.adf / DEMOS-OS1.3 / Graphdemo.p < prev    next >
Encoding:
Text File  |  1994-07-23  |  5.3 KB  |  146 lines

  1. { MaxonPascal-Anpassung / Test: Falk Zühlsdorff (PackMAN) 1994 }
  2.  
  3. PROGRAM Grafikdemo;
  4.  
  5. Uses Intuition, Graphics;
  6.  
  7. CONST Breite=640; Hoehe=256; MEMF_CHIP=2;
  8.  
  9. TYPE IntArr10=Array[1..10] of Integer;
  10.      LongArr16=Array[1..16] of Long;
  11.  
  12. VAR NeuWindow      :NewWindow;
  13.     MyWindow       :^Window;
  14.     Menu1,Menu2    :Menu;
  15.     Mi1_1,Mi1_2    :MenuItem;
  16.     MiT1_1,MiT1_2,
  17.     Knopftx,
  18.     Textdummy      : IntuiText;
  19.     Knopf,Schieber,
  20.     Textgad        : Gadget;
  21.     KnopfBord,
  22.     TextBord       : Border;
  23.     SchieberInfo   : PropInfo;
  24.     TextInfo       : StringInfo;
  25.     BorderXY,
  26.     TextBordXY     :IntArr10;
  27.     Imageplane     : ^LongArr16;
  28.     Bild           : Image;
  29.     Buffer,
  30.     UndoBuffer     : string[80];
  31.     MoverData      : Array[1..6]of integer;
  32.     Rast           :^RastPort;
  33.     L              :Long;
  34.     i,x2,y2        :Integer;
  35.     MyScreen       : ^Screen;
  36.     Msg,Upt        : ptr;
  37.  
  38.     help           : boolean;
  39.     GHelp          : word;
  40.  
  41. BEGIN
  42.   Imageplane:=ptr(Alloc_mem(SizeOf(LongArr16),MEMF_CHIP));
  43.   Bild:=Image(0,0,32,16,1,imageplane,1,0,Nil);
  44.   Imageplane^:=LongArr16(
  45.     %00011111111111111111111111111000,
  46.     %01110000000000000000000000001110,
  47.     %11100011110011110001111111000111,
  48.     %11000001100001100011100000000011,
  49.     %11000001111111100001111110000011,
  50.     %11000001100001100000000111000011,
  51.     %11000011110011110011111110000011,
  52.     %11000000000000000000000000000011,
  53.     %11000000000000000000000000000011,
  54.     %11000001111111000011111110000011,
  55.     %11000011100000000111000111000011,
  56.     %11000001111110000110000000000011,
  57.     %11000000000111000111000111000011,
  58.     %11100011111110000011111110000111,
  59.     %01110000000000000000000000001110,
  60.     %00011111111111111111111111111000);
  61.   MyScreen:=Open_Screen(0,0,Breite,Hoehe,2,0,1,HIRES or GENLOCK_VIDEO,'Himpelpascal Demo');
  62.   SetRGB4(^MyScreen^.ViewPort,1,15,15,15);
  63.   SetRGB4(^MyScreen^.ViewPort,2,0,0,15);
  64.   SetRGB4(^MyScreen^.ViewPort,3,15,15,15);
  65.   Menu1:=Menu(^Menu2,10,0,80,10,MENUENABLED,'Menü 1',^Mi1_1,0,0,0,0);
  66.   Mi1_1:=MenuItem(^Mi1_2,0,0,80,10,ITEMTEXT or ITEMENABLED or HIGHCOMP,0,
  67.                   ^MiT1_1,Nil,chr(0),Nil,0);
  68.   MiT1_1:=IntuiText(0,1,0,5,3,Nil,'Punkt 1',Nil);
  69.   Mi1_2:=MenuItem(Nil,0,12,80,12,ITEMTEXT or ITEMENABLED or HIGHCOMP or COMMSEQ,
  70.                   0,^MiT1_2,Nil,'2',Nil,0);
  71.   MiT1_2:=IntuiText(0,1,0,5,3,Nil,'Punkt 2',Nil);
  72.   Menu2:=Menu(Nil,100,0,80,10,MENUENABLED,'Menü 2',Nil,0,0,0,0);
  73.   Knopf:=Gadget(Nil,-121,-23,100,20,GADGHCOMP or GRELBOTTOM or GRELRIGHT,
  74.                 RELVERIFY or TOGGLESELECT,BOOLGADGET,^KnopfBord,Nil,
  75.                 ^Knopftx,0,Nil,1,NIL); {NIL nicht 0}
  76.   Knopftx:=Intuitext(1,0,0,(100-11*8)div 2,6,Nil,'Klick here!',Nil);
  77.   KnopfBord:=Border(0,0,1,0,1,5,^BorderXY,Nil);
  78.   BorderXY:=IntArr10(-3,-2,102,-2,102,21,-3,21,-3,-2);
  79.   Schieber:=Gadget(Nil,-16,12,16,-18,GADGHCOMP or GRELHEIGHT or GRELRIGHT,
  80.                    RELVERIFY or GADGIMMEDIATE,PROPGADGET,^Moverdata,Nil,
  81.                    Nil,0,^Schieberinfo,2,NIL);
  82.   SchieberInfo:=Propinfo(FREEVERT or AUTOKNOB,$8000,$8000,0,$8000 div 5,
  83.                          0,0,0,0,0,0);
  84.   TextGad:=Gadget(Nil,8,64,120,8,GADGHCOMP,GADGIMMEDIATE,STRGADGET,^TextBord,
  85.                   Nil,Nil,0,^TextInfo,3,NIL);
  86.   TextInfo:=StringInfo(^Buffer,^Undobuffer,0,76,0,0,0,0,0,0,Nil,0,Nil);
  87.   TextBord:=Border(0,0,1,0,1,5,^TextbordXY,Nil);
  88.   TextBordXY:=IntArr10(-3,-3,123,-3,123,10,-3,10,-3,-3);
  89.   Buffer:='Hallo'; UndoBuffer:='';
  90.   NeuWindow:=NewWindow(125,50,400,120,0,1,GADGETUP or GADGETDOWN,
  91.            ACTIVATE or WINDOWSIZING or WINDOWDRAG or WINDOWDEPTH or WINDOWCLOSE,
  92.            Nil,Nil,'Intuitiondemo',MyScreen,Nil,100,80,Breite,Hoehe,CUSTOMSCREEN);
  93.   MyWindow:=OpenWindow(^Neuwindow);
  94.   IF MyWindow=Nil THEN Error('Fenster kann nicht geöffnet werden!');
  95.   Rast:=MyWindow^.RPort;
  96.   Upt:=MyWindow^.Userport;
  97.   TextDummy:=Intuitext(1,0,0,0,0,Nil,'© by        Himpelsoft & PackMAN',Nil);
  98.   PrintIText(Rast,^TextDummy,10,16);
  99.   help:=SetMenuStrip(MyWindow,^Menu1);
  100.   GHelp:=AddGadget(MyWindow,^Knopf,0);
  101.   GHelp:=AddGadget(MyWindow,^Schieber,1);
  102.   GHelp:=AddGadget(MyWindow,^TextGad,2);
  103.   RefreshGadgets(^Knopf,MyWindow,Nil);
  104.   DrawImage(Rast,^Bild,50,12);
  105.   While Knopf.flags and SELECTED=0 do
  106.     BEGIN
  107.       Msg:=Wait_Port(Upt);
  108.       IF Msg<>Nil THEN
  109.         BEGIN
  110.           Msg:=Get_Msg(Upt);
  111.           Reply_Msg(Msg)
  112.         END
  113.     END;
  114.   GHelp:=RemoveGadget(MyWindow,^Knopf);
  115.   GHelp:=RemoveGadget(MyWindow,^Schieber);
  116.   GHelp:=RemoveGadget(MyWindow,^TextGad);
  117.   ClearMenuStrip(MyWindow);
  118.   For l:=12 to MyWindow^.Height do
  119.     ScrollRaster(Rast,(32-l) div 10,-1,2,12,MyWindow^.Width-4,MyWindow^.Height-2);
  120.   Rast:=^MyScreen^.Rastport;
  121.   x2:=1+MyWindow^.LeftEdge+MyWindow^.Width;
  122.   y2:=1+MyWindow^.TopEdge+MyWindow^.Height;
  123.   For i:=12 to MyWindow^.LeftEdge Do
  124.     ScrollRaster(Rast,1,1+i div 20,0,12,x2,y2);
  125.   CloseWindow(MyWindow);
  126.   For L:=80 to 800 do
  127.     BEGIN
  128.       SetAPen(Rast,1+(L mod 3));
  129.       Move(Rast,Round(320-315*sin(L/50)),Round(130+115*cos(L/80)));
  130.       Draw(Rast,Round(320+315*cos(L/100)),Round(130-115*sin(L/120)));
  131.     END;
  132.   Delay(4*50);
  133.   For L:=1 to Breite div 12 Do
  134.     ScrollRaster(Rast,12,0,0,12,Breite,Hoehe);
  135.   ClearScreen(Rast);
  136.   For i:=1 to Hoehe Do
  137.     BEGIN
  138.       MoveScreen(MyScreen,0,1);
  139.       For L:=1 to 200 do
  140.     END;
  141.   help:=CloseScreen(MyScreen);
  142.   Free_Mem(long(Imageplane),SizeOf(LongArr16));
  143.   writeln; writeln('Text: ',Buffer)
  144. END.
  145.  
  146.