screen.xml

The screen.xml is used to store information about the configuration of the graphical layout of the display, and the way CornerStone applications should use the screen. The screen.xml contains one main block MultiHead that contains the critical information for the system. The key concepts of the MultiHead screen setup are:

  • Window gives information regarding one OpenGL window.
  • Area corresponds to an OpenGL viewport. With projection-based system each area typically corresponds to one projector. Within an area one can do keystone correction and edge-blending for each projector. With Cells, one usually uses just one big area, since there is no need for per-display keystone calibration.

The meaning of the various elements is listed below:

  • MultiHead is the main block that contains information about the display setup. All of the actual information is inside this node

    • widthcm is the width of the display in centimeters. This information may be used by the applications to do gesture detection. For example the display size is needed when trying to determine how much users hands have moved in the physical world
    • window represents one OpenGL window in the computer desktop. At the moment there can only be one window.

      • area represents an OpenGL viewport, inside the window.

        • active indicates if application content should be drawn on this area. Active is almost always set to 1 (aka true). There are some special cases where non-active areas are useful. Since the computer vision calibration window is drawn also on the inactive areas you can have a separate monitor that you use to adjust the computer vision parameters, but it does not contain any application content.
        • comment is a text node where you can store general comments about the area. It is meant to be an aid in documenting complex multihead setups.
        • graphicslocation is a 2D vector that specifies the origin for the OpenGL graphics inside the area. If you are using just one area, this is typically "0 0" (=origin). If multiple areas are in use the areas graphicslocation is set up match the graphics coordinates of the top-right corner of the area on its left side.
        • graphicssize indicates the area used for OpenGL projection. in practice the graphicslocation and graphicssize values are combined and fed to gluOrtho call that is used to set up the bottom-line OpenGL projection.
        • keystone contains information about keystone correction. It is also used to rotate the graphics output in cases where the Cell (or projector) might be rotated 90 degrees. Actual contents of the keystone are:
          • rotations indicates the number of rotations that have been applied to the keystone. This is used in keystone calibration UI to make sure the arrow-buttons lead the keystone correction to the expected direction.
          • v1,v2,v3,v4 are 2D vectors that contain keystone control point coordinates. The values are in relative terms, so the range for the parameters is 0-1.
        • location specifies the pixel location of the area, inside the window. The location is counted from the bottom-left corner.
        • seams contains information for the edge-blending. The four numbers give the width of the edge-blend in pixels, for each side of the area: left, right, top and bottom.
        • size indicates the size of the area, in screen pixels. Size, together with location define the parameters that are passed to the glViewport command.
      • frameless indicates if the OpenGL window should have a border. This is usually set to zero on production systems. In testing and development phases it may make sense to to use borders.

      • fullscreen node controls if the application should open in full-screen mode. On system operating systems one must use full-screen mode to be able to hide the operating system task bars.
      • location is the location of the OpenGL window on the screen. The origin is at the top-left or bottom-left corner of the desktop, depending on the operating system. When a Cell is used in a stand-alone mode (no other display is connected) this is set to "0 0", while if the Cell is to the right to some monitor this value could be "1650 0" etc. In some cases negative values can be useful, although this is somewhat rare.
      • resizeable is a boolean value (so 0 or 1) that indicates if the window should allow resizing. Usually this is set to zero.
      • size gives the size of the display on the desktop, in pixels. If the window is opened with full-screen arguments, then size should match the computer desktop size. Otherwise the OpenGL viewports might end up in the most random locations, depending on the operating system.