View (Graphics)

Sets new physical coordinate mapping and clipping region for graphics 
keywords

Syntax
   View
   View ( x1, y1 )-( x2, y2 ) [ [, fill_color ] [, border_color ] ]
   View Screen ( x1, y1 )-( x2, y2 ) [ [, fill_color ] [, border_color ] ]

Parameters
   x1 As Integer, y1 As Integer
      The horizontal and vertical offsets, in pixels, of one corner of the 
      viewport relative to the top-left corner of the screen.
   x2 As Integer, y2 As Integer
      The horizontal and vertical offsets, in pixels, of the opposite 
      corner of the viewport relative to the top-left corner of the screen.
   fill_color As ULong
      The color to fill the new viewport.
   border_color As ULong
      The color of the border to draw around the new viewport.

Description
   The viewport, or clipping region, is a rectangular area of the graphics 
   screen, outside of which no graphics drawing will be done. That is, only 
   graphics drawing done within this area will be shown. A graphics screen 
   must be created with Screen or ScreenRes before calling View or View 
   Screen.

   The first statement (View) sets the viewport to encompass the entire 
   screen, which is the default viewport for a new graphics screen.

   The second and third statements (View parameters and View Screen 
   parameters) both allow a new viewport to be defined. The indicated 
   effects for each parameter only occur if that parameter is specified:
      * The corners of the viewport are specified by the x1, y1, x2 and y2 
        parameters.
      * fill_color and border_color are both in the format accepted by 
        Color.
      * The second statement (View parameters) modifies the coordinate 
        mapping of the graphics screen such that coordinates specified for 
        graphics drawing statements and procedures are relative to the 
        top-left corner of the viewport.
      * The third statement (View Screen parameters) modifies the 
        coordinate mapping of the graphics screen such that coordinates 
        specified for graphics drawing statements and procedures are 
        relative to the top-left corner of the screen.
      * In both cases no new scale factor is applied (see Window for 
        that).

Example
   Screen 12
   Dim ip As Any Ptr
   Dim As Integer x, y

   'simple sprite
   ip = ImageCreate(64,64)
   For y = 0 To 63
     For x = 0 To 63
      PSet ip, (x, y), (x\4) Xor (y\4)
     Next x
   Next y

   'viewport with blue border
   Line (215,135)-(425,345), 1, bf
   View (220,140)-(420,340)

   'move sprite around the viewport
   Do

     x = 100*Sin(Timer*2.0)+50
     y = 100*Sin(Timer*2.7)+50
     
     ScreenSync
     ScreenLock
     
     'clear viewport and put image
     Cls 1
     Put (x, y), ip, PSet
      
     ScreenUnlock

   Loop While Inkey = ""

   ImageDestroy(ip)

Differences from QB
   * QBASIC preserves the WINDOW coordinate mapping after subsequent calls 
     to VIEW.
   * FreeBASIC's current behavior is to preserve the WINDOW coordinates 
     after calls to VIEW, or when working on images, meaning that the 
     coordinate mapping may undergo scaling/translations if the viewport 
     changes. (If a WINDOW hasn't been set, there is no coordinate mapping, 
     and so it doesn't change after calls to VIEW.)  The behavior may 
     change in future, but consistent behavior can be assured over 
     inconstent viewport coordinates by re-calling WINDOW whenever you 
     change the VIEW.

See also
   * View Print
   * Screen (Graphics)
   * Window
   * PMap

