home *** CD-ROM | disk | FTP | other *** search
/ C++ Games Programming / CPPGAMES.ISO / fgl / fglight / expas.arj / TEMP / 08-16.PAS < prev    next >
Pascal/Delphi Source File  |  1995-01-20  |  2KB  |  91 lines

  1. program main;
  2. {$IFDEF DPMI}
  3. uses fgmain, fgmisc, fgvb, WinAPI;
  4. {$ELSE}
  5. {$M 16384,0,16384}
  6. uses fgmain, fgmisc, fgvb;
  7. {$ENDIF}
  8.  
  9. const
  10.   WIDTH = 1000;
  11.   HEIGHT = 50;
  12.  
  13. var
  14.   handle   : integer;
  15.   old_mode : integer;
  16.   status   : integer;
  17.   x        : integer;
  18.   buffer   : pointer;
  19.  
  20. begin
  21.  
  22.   { initialize the video environment }
  23.  
  24.   fg_initpm;
  25.   old_mode := fg_getmode;
  26.   fg_setmode(20);
  27.   fg_vbinit;
  28.  
  29.   { fill the screen with light blue pixels }
  30.  
  31.   fg_setcolor(9);
  32.   fg_fillpage;
  33.  
  34.   { set up the virtual buffer }
  35.  
  36. {$IFDEF DPMI}
  37.   buffer := GlobalAllocPtr(gmem_Fixed,Longint(WIDTH)*Longint(HEIGHT));
  38.   if (buffer = NIL) then
  39.   begin
  40.     fg_setmode(old_mode);
  41.     fg_reset;
  42.     writeln('Could not create the virtual buffer.');
  43.     exit;
  44.   end;
  45.   handle := fg_vbdefine(buffer,WIDTH,HEIGHT);
  46. {$ELSE}
  47.   handle := fg_vballoc(WIDTH,HEIGHT);
  48.   if (handle < 0) then
  49.   begin
  50.     fg_setmode(old_mode);
  51.     fg_reset;
  52.     writeln('Could not create the virtual buffer.');
  53.     exit;
  54.   end;
  55. {$ENDIF}
  56.   status := fg_vbopen(handle);
  57.  
  58.   { fill the virtual buffer with a series of narrow rectangles }
  59.  
  60.   for x := 0 to WIDTH-1 do
  61.   begin
  62.     fg_setcolor(x);
  63.     fg_rect(x,x,0,HEIGHT-1);
  64.   end;
  65.  
  66.   { scroll the virtual buffer through a 100x50 window on the }
  67.   { visual page, such that the top half scrolls left and the }
  68.   { bottom half scrolls right }
  69.  
  70.   for x := 0 to WIDTH-100 do
  71.   begin
  72.     fg_vbpaste(x,x+99,0,24,110,99);
  73.     fg_vbpaste(WIDTH-100-x,WIDTH-1-x,25,49,110,124);
  74.   end;
  75.   fg_waitkey;
  76.  
  77.   { close the virtual buffer }
  78.  
  79.   fg_vbclose;
  80. {$IFDEF dpmi}
  81.   GlobalFreePtr(buffer);
  82. {$ELSE}
  83.   fg_vbfree(handle);
  84. {$ENDIF}
  85.  
  86.   { restore original video mode and exit }
  87.  
  88.   fg_setmode(old_mode);
  89.   fg_reset;
  90. end.
  91.