ScreenCopy

Copies the contents of a graphical page into another graphical page

Syntax
   Declare Function ScreenCopy ( ByVal from_page As Long = -1, ByVal 
   to_page As Long = -1 ) As Long

Usage
   ScreenCopy [ from_page ] [, to_page ]

Parameters
   from_page
      page to copy from
   to_page
      page to copy to

Return Value
   Returns zero (0) if successful, or a non-zero error code to indicate a 
   failure.

Description
   from_page is the page to copy from. If this argument is omitted, the 
   current work page is assumed.  to_page is the page to copy to. If this 
   argument is omitted, the currently visible page is assumed.  Page 
   numbers range from 0 to num_pages - 1, where num_pages is the number of 
   pages specified when setting the graphics mode with ScreenRes or Screen.

   You can use this function to add a double buffer to your graphics. Any 
   graphics screen mode with multiple pages supports this function.

   ScreenCopy is inactive if the destination page is locked.

   There are two other functions similar to this: Flip and PCopy.  Flip is 
   designed to work in OpenGL modes, while PCopy supports console pages on 
   some platforms.  Both do the same thing as ScreenCopy in normal graphics 
   modes.

   The error code returned by ScreenCopy can be checked using Err in the 
   next line. The function version of  ScreenCopy returns directly the 
   error code as a 32 bit Long.

Example
   See also ScreenSet example.

   '' 320x200x8, with 3 pages
   Screen 13,,3

   '' image for working page #1 (visible page #0)
   ScreenSet 1, 0
   Cls
   Circle( 160, 100 ), 90, 1 ,,,, f
   Circle( 160, 100 ), 90, 15
   Print "Press 2 to copy page #2 to visible page"
   Print "Press escape to exit"

   '' image for working page #2 (visible page #0)
   ScreenSet 2, 0
   Cls
   Line( 50, 50 )-( 270, 150 ), 2, bf
   Line( 50, 50 )-( 270, 150 ), 15, b
   Print "Press 1 to copy page #1 to visible page"
   Print "Press escape to exit"

   '' page #0 is the working page (visible page #0)
   ScreenSet 0, 0
   Cls
   Print "Press 1 to copy page #1 to visible page"
   Print "Press 2 to copy page #2 to visible page"
   Print "Press escape to exit"

   Dim k As String

   Do
     k = Inkey
     Select Case k
     Case Chr(27)
      Exit Do
     Case "1"
      ScreenCopy 1, 0
     Case "2"
      ScreenCopy 2, 0
     End Select

     Sleep 25
   Loop

Dialect Differences
   * Not available in the -lang qb dialect unless referenced with the 
     alias __Screencopy.

Differences from QB
   * New to FreeBASIC. It is a graphics-only version of PCopy - which 
     works in both text and graphics modes.

See also
   * PCopy
   * Screen (Graphics)
   * ScreenRes
   * ScreenSet

