home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / OGLE.ZIP / OGLE.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1989-09-04  |  2.3 KB  |  79 lines

  1.  
  2. {a program to show the three possible eye styles on the screen}
  3. program Ogle;
  4. uses crt,graph,mouse,eyes;
  5.  
  6. var SysClock : word absolute $40:$6C;
  7.     EyeData : array[0..10] of EyeDataRec;
  8.     EyeSize : integer;
  9.     MaxEye : integer;
  10.  
  11.     i,gr,gd:integer;
  12.     OldClock:word;
  13.  
  14. begin
  15.    gd := 0;  gr := 0;    {start up the graphics}
  16.    InitGraph(gd,gr,'');
  17.    i := GraphResult;
  18.    if GraphResult <> GrOK then
  19.    begin
  20.      Writeln('GraphError:',GrOK);
  21.      Halt(1);
  22.    end;
  23.  
  24.    SetFillStyle(CloseDotFill,white);  {init the screen}
  25.    Bar(0,0,GetMaxX,GetMaxY);
  26.    InitMouse;
  27.    ShowMouse;
  28.  
  29.    MaxEye := 2;          {init the eyes}
  30.    EyeSize := 10;
  31.  
  32.    if (gd = EGA) or (gd = VGA) then
  33.    begin
  34.      MakeEyes(EyeData[0],(GetMaxX div 3),GetMaxY div 3,
  35.                EyeSize,2,white,brown,blue);
  36.      MakeEyes(EyeData[1],((GetMaxX div 3)*2),GetMaxY div 3,
  37.                EyeSize*2,1,black,white,yellow);
  38.      MakeEyes(EyeData[2],(GetMaxX div 2),(GetMaxY div 3)*2,
  39.                EyeSize*3,0,red,green,black);
  40.    end
  41.    else
  42.    begin
  43.      MakeEyes(EyeData[0],(GetMaxX div 3),GetMaxY div 3,
  44.                EyeSize,2,white,black,black);
  45.      MakeEyes(EyeData[1],((GetMaxX div 3)*2),GetMaxY div 3,
  46.                EyeSize*2,1,black,white,white);
  47.      MakeEyes(EyeData[2],(GetMaxX div 2),(GetMaxY div 3)*2,
  48.                EyeSize*3,0,black,white,white);
  49.    end;
  50.  
  51.    HideMouse;                               {show which eyes are which}
  52.    setcolor(white);
  53.    Outtextxy(EyeData[0].Lecx-EyeData[0].Exr,
  54.               EyeData[0].Lecy+EyeData[0].Eyr+4,' Log2');
  55.    Outtextxy(EyeData[1].Lecx-EyeData[1].Exr,
  56.               EyeData[1].Lecy+EyeData[1].Eyr+4,'   Scaled');
  57.    Outtextxy(EyeData[2].Lecx,
  58.               EyeData[2].Lecy+EyeData[2].Eyr+4,'  Clipped');
  59.    ShowMouse;
  60.  
  61.    i := 0;
  62.    while not keypressed do              {Do it until a key is pressed}
  63.    begin
  64.      if (OldClock <> SysClock) then     {only update on clock change}
  65.      begin                              {this minimizes flicker}
  66.        ReadMouse;
  67.        OldClock := SysClock;
  68.        LookAt(EyeData[i],GetMx(MouseX),GetMy(MouseY)); {update the eyes}
  69.        inc(i);
  70.        if i > MaxEye then i := 0;       {rotate through all the eyes}
  71.      end;
  72.    end;
  73.    HideMouse;
  74.    CloseGraph;   {all done, go home}
  75. end.
  76.  
  77.  
  78.  
  79.