use MOONLIGHT symbol
[mono.git] / mcs / class / Mono.Cairo / Samples / x11 / x11.cs
1 //
2 //
3 //      X11 Interface
4 //      Authors: Hisham Mardam Bey <hisham.mardambey@gmail.com>
5 //
6
7 //
8 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29
30 using System;
31 using Cairo;
32 using System.Runtime.InteropServices;
33
34                                                 
35         public class Window {
36                 
37                 protected IntPtr display;
38                 protected int screen;
39                 protected IntPtr window;
40                 protected IntPtr gc;
41                 protected uint width = 0;
42                 protected uint height = 0;
43                 
44                 public Window () {
45                 }
46                 
47                 public Window (uint width, uint height)
48                 {
49                         this.width = width;
50                         this.height = height;
51                         
52                         display = X11.XOpenDisplay (0);
53                                                 
54                         IntPtr root = X11.XDefaultRootWindow (display);
55                         screen = X11.XDefaultScreen (display);
56                         
57                         window = X11.XCreateSimpleWindow (display, root, 0, 0,
58                                               width, height, (ulong)0,
59                                               X11.XWhitePixel (display, screen),
60                                               X11.XWhitePixel (display, screen));                                                                       
61                 }
62                 
63                 public int Show ()
64                 {
65                         return X11.XMapWindow(display, window);
66                 }
67         
68                 public int Clear ()
69                 {
70                         return X11.XClearWindow (display, window);
71                 }
72                 
73                 public uint Width {
74                         get { return width; }
75                         set { width = value; }
76                 }
77                 
78                 public uint Height {
79                         get { return height; }
80                         set { height = value; }
81                 }
82                 
83                 public IntPtr Display {
84                         get { return display; }
85                 }
86                 
87                 public IntPtr XWindow {
88                         get { return window; }
89                 }
90                 
91                 public int Screen {
92                         get { return screen; }
93                 }
94                 
95                 public void Close ()
96                 {
97                          X11.XCloseDisplay(display);
98                 }
99                                                 
100         }
101
102         
103         public class X11
104         {
105                 [DllImport("X11")]
106                   internal static extern IntPtr XDefaultVisual (IntPtr display,
107                                                                 int screen_number);
108                 
109                 [DllImport("X11")]
110                   internal static extern IntPtr XDefaultRootWindow (IntPtr display);
111                 
112                 [DllImport("X11")]
113                   internal static extern int XDefaultScreen (IntPtr display);
114                 
115                 [DllImport("X11")]
116                   internal static extern IntPtr XCreateSimpleWindow (IntPtr display,
117                                                               IntPtr window,
118                                                               int x,
119                                                               int y,
120                                                               uint width,
121                                                               uint height,
122                                                               ulong border_width,
123                                                               ulong border,
124                                                               ulong background);
125                 [DllImport("X11")]
126                   internal static extern int XMapWindow (IntPtr display,
127                                                          IntPtr window);
128                 
129                 [DllImport("X11")]
130                   internal static extern int XClearWindow (IntPtr display,
131                                                            IntPtr window);
132                 
133                 [DllImport("X11")]
134                   internal static extern IntPtr XOpenDisplay (int display_name);
135
136                 [DllImport("X11")]
137                   internal static extern IntPtr XScreenOfDisplay (IntPtr display,
138                                                                   int screen_number);
139                                                 
140                 [DllImport("X11")]
141                   internal static extern int XCloseDisplay(IntPtr display);
142                 
143                 [DllImport("X11")]
144                   internal static extern ulong XBlackPixel (IntPtr display,
145                                                             int screen);
146                 
147                 [DllImport("X11")]
148                   internal static extern ulong XWhitePixel (IntPtr display,
149                                                             int screen);
150                 
151                 [DllImport("X11")]
152                   internal static extern int XNextEvent (IntPtr display,
153                                                          IntPtr event_return);
154         }
155