home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / TRCBGI11 / BGIDEMO.002 < prev    next >
Text File  |  1993-01-06  |  6KB  |  197 lines

  1. (* Color demonstration routines for BGIDemo *)
  2. (* you should include this code in your version of BGIDemo.PAS and call
  3.    the 4 procedures succesively after ColorPlay. *)
  4.  
  5. procedure ColorPlane0;
  6. const
  7.   XBars = 16;
  8.   YBars = 16;
  9. var
  10.   I, J     : word;
  11.   X, Y     : word;
  12.   Color    : word;
  13.   ViewInfo : ViewPortType;
  14.   Width    : word;
  15.   Height   : word;
  16.   OldPal   : PaletteType;
  17. begin
  18.  if MaxColor=255 then begin
  19.   MainWindow('256 color demonstration');
  20.   StatusLine('Esc aborts or press a key');
  21.   GetViewSettings(ViewInfo);
  22.   with ViewInfo do
  23.   begin
  24.     Width := (x2-x1) div XBars;
  25.     Height := (y2-y1) div YBars;
  26.   end;
  27.   X := 0; Y := 0;
  28.   Color := 0;
  29.   for J := 1 to YBars do
  30.   begin
  31.     for I := 1 to XBars do
  32.     begin
  33.       SetFillStyle(SolidFill, Color);
  34.       Bar(X, Y, X+Width, Y+Height);
  35.       Inc(X, Width+1);
  36.       Inc(Color);
  37.       Color := Color mod (MaxColor+1);
  38.     end;
  39.     X := 0;
  40.     Inc(Y, Height+1);
  41.   end;
  42.   waittogo;
  43.  end;
  44. end;
  45.  
  46. procedure ColorPlane1;
  47. const
  48.   Esc = #27;
  49. var MaxColVal:LongInt;
  50.     ViewPort : ViewPortType;
  51.     Stepx,stepy:integer;
  52.     x,y,xs,ys,yl,xl:integer;
  53.     M2,color:LongInt;
  54.     Ch : char;
  55.     h1,h2,m1,mi2,s1,s2,hd1,hd2:word;
  56. begin
  57.   if MaxColor>255 then begin
  58.     MainWindow('Colorplane green/red');
  59.     StatusLine('Esc aborts or press a key');
  60.     if MaxColor<32768 then MaxColVal:=32 else MaxColVal:=256;
  61.     M2:=MaxColVal*MaxColVal;
  62.     GetViewSettings(ViewPort);
  63.     Gettime(h1,m1,s1,hd1);
  64.     with ViewPort do begin
  65.       stepx:=((x2-x1) div (MaxColVal+1))+1;
  66.       stepy:=((y2-y1) div (MaxColVal+1))+1;
  67.       for y:=0 to MaxColVal-1 do begin
  68.         for ys:=0 to StepY-1 do begin
  69.           yl:=y*StepY+ys;
  70.           for x:=0 to MaxColVal-1 do begin
  71.             if MaxColVal=32 then
  72.               Color:=LongInt(x)*MaxColVal+LongInt(y)*M2
  73.             else
  74.               Color:=LongInt(x)*MaxColVal+LongInt(y);
  75.             xl:=x*StepX;
  76.             for xs:=0 to StepX-1 do begin
  77.               PutPixel(xl+xs,yl,color);
  78.               if keypressed then begin
  79.                 Ch := ReadKey;
  80.                 if ch = #0 then ch := readkey;      { trap function keys }
  81.                 if Ch = Esc then
  82.                   Halt(0)                           { terminate program }
  83.                 else begin
  84.                   ClearDevice;            { clear screen, go on with demo }
  85.                   exit;
  86.                 end;
  87.               end;
  88.             end;
  89.           end;
  90.         end;
  91.       end;
  92.     end;
  93.     Gettime(h2,mi2,s2,hd2);
  94.     waittogo;
  95.   end;
  96. end;
  97.  
  98. procedure ColorPlane2;
  99. const
  100.   Esc = #27;
  101. var MaxColVal:LongInt;
  102.     ViewPort : ViewPortType;
  103.     Stepx,stepy:integer;
  104.     x,y,xs,ys,yl,xl:integer;
  105.     color:LongInt;
  106.     Ch : char;
  107.     M2:LongInt;
  108. begin
  109.   if MaxColor>255 then begin
  110.     MainWindow('Colorplane green/blue');
  111.     StatusLine('Esc aborts or press a key');
  112.     if MaxColor<32768 then MaxColVal:=32 else MaxColVal:=256;
  113.     M2:=MaxColVal*MaxColVal;
  114.     GetViewSettings(ViewPort);
  115.     with ViewPort do begin
  116.       stepx:=((x2-x1) div (MaxColVal+1))+1;
  117.       stepy:=((y2-y1) div (MaxColVal+1))+1;
  118.       for y:=0 to MaxColVal-1 do begin
  119.         for ys:=0 to StepY-1 do begin
  120.           yl:=y*StepY+ys;
  121.           for x:=0 to MaxColVal-1 do begin
  122.             if MaxColVal=32 then
  123.               Color:=LongInt(x)*MaxColVal+LongInt(y)
  124.             else
  125.               Color:=LongInt(x)*MaxColVal+LongInt(y)*M2;
  126.             xl:=x*StepX;
  127.             for xs:=0 to StepX-1 do begin
  128.               PutPixel(xl+xs,yl,color);
  129.               if keypressed then begin
  130.                 Ch := ReadKey;
  131.                 if ch = #0 then ch := readkey;      { trap function keys }
  132.                 if Ch = Esc then
  133.                   Halt(0)                           { terminate program }
  134.                 else begin
  135.                   ClearDevice;            { clear screen, go on with demo }
  136.                   exit;
  137.                 end;
  138.               end;
  139.             end;
  140.           end;
  141.         end;
  142.       end;
  143.     end;
  144.     waittogo;
  145.   end;
  146. end;
  147.  
  148. procedure ColorPlane3;
  149. const
  150.   Esc = #27;
  151. var MaxColVal:LongInt;
  152.     ViewPort : ViewPortType;
  153.     Stepx,stepy:integer;
  154.     x,y,xs,ys,yl,xl:integer;
  155.     color:LongInt;
  156.     Ch : char;
  157.     M2:LongInt;
  158. begin
  159.   if MaxColor>255 then begin
  160.     MainWindow('Colorplane blue/red');
  161.     StatusLine('Esc aborts or press a key');
  162.     if MaxColor<32768 then MaxColVal:=32 else MaxColVal:=256;
  163.     M2:=MaxColVal*MaxColVal;
  164.     GetViewSettings(ViewPort);
  165.     with ViewPort do begin
  166.       stepx:=((x2-x1) div (MaxColVal+1))+1;
  167.       stepy:=((y2-y1) div (MaxColVal+1))+1;
  168.       for y:=0 to MaxColVal-1 do begin
  169.         for ys:=0 to StepY-1 do begin
  170.           yl:=y*StepY+ys;
  171.           for x:=0 to MaxColVal-1 do begin
  172.             if MaxColVal=32 then
  173.               Color:=LongInt(y)*M2+LongInt(x)
  174.             else
  175.               Color:=LongInt(x)*M2+LongInt(y);
  176.             xl:=x*StepX;
  177.             for xs:=0 to StepX-1 do begin
  178.               PutPixel(xl+xs,yl,color);
  179.               if keypressed then begin
  180.                 Ch := ReadKey;
  181.                 if ch = #0 then ch := readkey;      { trap function keys }
  182.                 if Ch = Esc then
  183.                   Halt(0)                           { terminate program }
  184.                 else begin
  185.                   ClearDevice;            { clear screen, go on with demo }
  186.                   exit;
  187.                 end;
  188.               end;
  189.             end;
  190.           end;
  191.         end;
  192.       end;
  193.     end;
  194.     waittogo;
  195.   end;
  196. end;
  197.