home *** CD-ROM | disk | FTP | other *** search
/ C++ Games Programming / CPPGAMES.ISO / fgl / fglight / expas.arj / TEMP / 08-14.PAS < prev    next >
Pascal/Delphi Source File  |  1995-01-20  |  2KB  |  93 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 = 640;
  11.   HEIGHT = 400;
  12.  
  13. var
  14.   handle   : integer;
  15.   old_mode : integer;
  16.   status   : integer;
  17.   buffer   : pointer;
  18.  
  19. begin
  20.  
  21.   { initialize the video environment }
  22.  
  23.   fg_initpm;
  24.   old_mode := fg_getmode;
  25.   fg_setmode(19);
  26.   fg_vbinit;
  27.  
  28.   { set up a 640x400 virtual buffer }
  29.  
  30. {$IFDEF DPMI}
  31.   buffer := GlobalAllocPtr(gmem_Fixed,Longint(WIDTH)*Longint(HEIGHT));
  32.   if (buffer = NIL) then
  33.   begin
  34.     fg_setmode(old_mode);
  35.     fg_reset;
  36.     writeln('Could not create the virtual buffer.');
  37.     exit;
  38.   end;
  39.   handle := fg_vbdefine(buffer,WIDTH,HEIGHT);
  40. {$ELSE}
  41.   handle := fg_vballoc(WIDTH,HEIGHT);
  42.   if (handle < 0) then
  43.   begin
  44.     fg_setmode(old_mode);
  45.     fg_reset;
  46.     writeln('Could not create the virtual buffer.');
  47.     exit;
  48.   end;
  49. {$ENDIF}
  50.   status := fg_vbopen(handle);
  51.  
  52.   { draw a 320x200 rectangle in each virtual buffer quadrant }
  53.  
  54.   fg_setcolor(9);
  55.   fg_rect(0,319,0,199);
  56.   fg_setcolor(10);
  57.   fg_rect(320,639,0,199);
  58.   fg_setcolor(11);
  59.   fg_rect(0,319,200,399);
  60.   fg_setcolor(12);
  61.   fg_rect(320,639,200,399);
  62.  
  63.   { paste each rectangle to the 320x200 active video page }
  64.  
  65.   fg_vbpaste(0,319,0,199,0,199);
  66.   fg_waitkey;
  67.   fg_vbpaste(320,639,0,199,0,199);
  68.   fg_waitkey;
  69.   fg_vbpaste(0,319,200,399,0,199);
  70.   fg_waitkey;
  71.   fg_vbpaste(320,639,200,399,0,199);
  72.   fg_waitkey;
  73.  
  74.   { paste the center 320x200 subset of the virtual buffer }
  75.  
  76.   fg_vbpaste(160,479,100,299,0,199);
  77.   fg_waitkey;
  78.  
  79.   { close the virtual buffer }
  80.  
  81.   fg_vbclose;
  82. {$IFDEF dpmi}
  83.   GlobalFreePtr(buffer);
  84. {$ELSE}
  85.   fg_vbfree(handle);
  86. {$ENDIF}
  87.  
  88.   { restore original video mode and exit }
  89.  
  90.   fg_setmode(old_mode);
  91.   fg_reset;
  92. end.
  93.