home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sa104os2.zip / SATHR104.ZIP / SATHER / CONTRIB / SCHNETTR / XLIB / SCREEN.SA < prev    next >
Text File  |  1994-11-25  |  5KB  |  147 lines

  1. -- -*-Sather-*-
  2. -- access to the X window system routines
  3. -- (c) 1994/11/22 - 1994/11/24 by Erik Schnetter
  4.    
  5.    
  6.    
  7. class X_SCREEN is
  8.    -- handle a screen.
  9.  
  10. -- internal representation
  11.    readonly attr display: X_DISPLAY; -- display the screen is on
  12.    readonly attr c_screen: EXT_OB; -- pointer to the C Screen structure
  13.    
  14. -- create a non-attached screen
  15.    create: SAME post result.Void is return new end;
  16.    
  17. -- create a screen from an external object
  18.    create (display: X_DISPLAY, c_screen: EXT_OB): SAME post ~result.Void is
  19.       res ::= new;
  20.       res.display := display;
  21.       res.c_screen := c_screen;
  22.       return res;
  23.    end; -- create
  24.    
  25. -- is this object attached to a screen?
  26.    Void: BOOL is return void(self) or void(c_screen) end;
  27.    
  28. -- black pixel value
  29.    BlackPixel: INT pre ~Void is
  30.       return C_X_SCREEN::X_BlackPixelOfScreen(c_screen)
  31.    end; -- BlackPixel
  32.    
  33. -- white pixel value
  34.    WhitePixel: INT pre ~Void is
  35.       return C_X_SCREEN::X_WhitePixelOfScreen(c_screen)
  36.    end; -- WhitePixel
  37.    
  38. -- number of colormap cells
  39.    Cells: INT pre ~Void is
  40.       return C_X_SCREEN::X_CellsOfScreen(c_screen)
  41.    end; -- Cells
  42.    
  43. -- default colormap
  44.    DefaultColormap: X_COLORMAP pre ~Void is
  45.       return #X_COLORMAP(display,C_X_SCREEN::X_DefaultColormapOfScreen(c_screen))
  46.    end; -- DefaultColormap
  47.    
  48. -- default depth
  49.    DefaultDepth: INT pre ~Void is
  50.       return C_X_SCREEN::X_DefaultDepthOfScreen(c_screen)
  51.    end; -- DefaultDepth
  52.    
  53. -- default visual
  54.    DefaultVisual: X_VISUAL pre ~Void post ~result.Void is
  55.       return #X_VISUAL(display,C_X_SCREEN::X_DefaultVisualOfScreen(c_screen))
  56.    end; -- DefaultVisual
  57.    
  58. -- does this screen support backing stores?
  59. -- (returns X_WINDOW_DEFS::WhenMapped, NotUseful, or Always)
  60.    DoesBackingStore: INT
  61.       pre ~Void post result=X_WINDOW_DEFS::WhenMapped or result=X_WINDOW_DEFS::NotUseful or result=X_WINDOW_DEFS::Always is
  62.       return C_X_SCREEN::X_DoesBackingStore(c_screen)
  63.    end; -- DoesBackingStore
  64.    
  65. -- does this screen support save unders?
  66.    DoesSaveUnders: BOOL pre ~Void is
  67.       return C_X_SCREEN::X_DoesSaveUnders(c_screen)
  68.    end; -- DoesSaveUnders
  69.    
  70. -- event mask of the root screen
  71.    EventMask: ARRAY{INT} pre ~Void post ~void(result) is
  72.       mask::=C_X_SCREEN::X_EventMaskOfScreen(c_screen);
  73.       res::=#ARRAY{INT}(INT::asize); cnt::=0;
  74.       loop pos::=INT::asize.times!;
  75.      if mask.bit(pos) then res[cnt]:=pos; cnt:=cnt+1; end;
  76.       end;
  77.       return res.resize(cnt);
  78.    end; -- EventMask
  79.    
  80. -- height in pixels
  81.    Height: INT pre ~Void post result>0 is
  82.       return C_X_SCREEN::X_HeightOfScreen(c_screen)
  83.    end; -- Height
  84.    
  85. -- height in millimeters
  86.    HeightMM: INT pre ~Void post result>=0 is
  87.       return C_X_SCREEN::X_HeightMMOfScreen(c_screen)
  88.    end; -- HeightMM
  89.    
  90. -- maximum number of colormaps
  91.    MaxCmaps: INT pre ~Void post result>0 is
  92.       return C_X_SCREEN::X_MaxCmapsOfScreen(c_screen)
  93.    end; -- MaxCmaps
  94.    
  95. -- minimum number of colormaps
  96.    MinCmaps: INT pre ~Void post result>0 is
  97.       return C_X_SCREEN::X_MinCmapsOfScreen(c_screen)
  98.    end; -- MinCmaps
  99.    
  100. -- number of planes in the root window
  101.    Planes: INT pre ~Void post result>0 is
  102.       return C_X_SCREEN::X_PlanesOfScreen(c_screen)
  103.    end; -- Planes
  104.    
  105. -- root window
  106.    RootWindow: X_WINDOW pre ~Void post ~result.Void is
  107.       return #X_WINDOW(display,C_X_SCREEN::X_RootWindowOfScreen(c_screen))
  108.    end; -- RootWindow
  109.    
  110. -- width in pixels
  111.    Width: INT pre ~Void post result>0 is
  112.       return C_X_SCREEN::X_WidthOfScreen(c_screen)
  113.    end; -- Width
  114.    
  115. -- width in millimeters
  116.    WidthMM: INT pre ~Void post result>=0 is
  117.       return C_X_SCREEN::X_WidthMMOfScreen(c_screen)
  118.    end; -- WidthMM
  119.    
  120. end; -- class X_SCREEN
  121.    
  122.    
  123.    
  124. external class C_X_SCREEN is
  125.    
  126.    X_BlackPixelOfScreen(screen:EXT_OB):INT;
  127.    X_WhitePixelOfScreen(screen:EXT_OB):INT;
  128.    X_CellsOfScreen(screen:EXT_OB):INT;
  129.    X_DefaultColormapOfScreen(screen:EXT_OB):INT;
  130.    X_DefaultDepthOfScreen(screen:EXT_OB):INT;
  131.    X_DefaultVisualOfScreen(screen:EXT_OB):EXT_OB;
  132.    X_DoesBackingStore(screen:EXT_OB):INT;
  133.    X_DoesSaveUnders(screen:EXT_OB):BOOL;
  134.    X_DisplayOfScreen(screen:EXT_OB):EXT_OB;
  135.    X_EventMaskOfScreen(screen:EXT_OB):INT;
  136.    X_HeightOfScreen(screen:EXT_OB):INT;
  137.    X_HeightMMOfScreen(screen:EXT_OB):INT;
  138.    X_MaxCmapsOfScreen(screen:EXT_OB):INT;
  139.    X_MinCmapsOfScreen(screen:EXT_OB):INT;
  140.    X_PlanesOfScreen(screen:EXT_OB):INT;
  141.    X_RootWindowOfScreen(screen:EXT_OB):INT;
  142.    X_WidthOfScreen(screen:EXT_OB):INT;
  143.    X_WidthMMOfScreen(screen:EXT_OB):INT;
  144.    
  145. end; -- class C_X_SCREEN
  146.    
  147.