1 /* Copyright (C) 2000  Free Software Foundation
2 
3    This file is part of libgcj.
4 
5 This software is copyrighted work licensed under the terms of the
6 Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
7 details.  */
8 
9 package gnu.gcj.xlib;
10 
11 import gnu.gcj.RawData;
12 
13 /**
14  * A flyweight class that denotes an X11 screen.  Display and screen
15  * number is the only data kept by this class.  The real screen
16  * structure is stored in the display.  There may exist several
17  * objects denoting the same screen.
18  *
19  * @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
20  */
21 public final class Screen
22 {
23   static final int UNKNOWN = -1;
24 
25   Display display;
26   int screenNumber = UNKNOWN;
27   RawData structure;
28 
Screen(Display display, RawData screenStructure)29   Screen(Display display, RawData screenStructure)
30   {
31     structure = screenStructure;
32     this.display = display;
33   }
34 
Screen(Display display)35   public Screen(Display display)
36   {
37     this(display, display.getDefaultScreenNumber());
38   }
39 
Screen(Display display, int screenNumber)40   public Screen(Display display, int screenNumber)
41   {
42     this.display = display;
43     this.screenNumber = screenNumber;
44     initStructure();
45   }
46 
getDisplay()47   public final Display getDisplay()
48   {
49     return display;
50   }
51 
getRootWindow()52   public Window getRootWindow()
53   {
54     int rootXID = getRootWindowXID();
55     return display.getWindow(rootXID);
56   }
57 
getRootVisual()58   public Visual getRootVisual()
59   {
60     RawData visualStructure = getRootVisualStructure();
61     int depth = getRootDepth();
62     return new Visual(visualStructure, this, depth);
63   }
64 
getRootVisualStructure()65   private native RawData getRootVisualStructure();
66 
getRootDepth()67   public native int getRootDepth();
getRootWindowXID()68   public native int getRootWindowXID();
getDefaultColormapXID()69   public native int getDefaultColormapXID();
70 
initStructure()71   native void initStructure();
72 
getDefaultColormap()73   public Colormap getDefaultColormap()
74   {
75     return new Colormap(this, getDefaultColormapXID());
76   }
77 
getScreenNumber()78   public final int getScreenNumber()
79   {
80     if (screenNumber == UNKNOWN)
81       screenNumber = findScreenNumber();
82     return screenNumber;
83   }
84 
findScreenNumber()85   public native int findScreenNumber();
86 }
87