This file is indexed.

/usr/share/doc/libghc-glut-doc/html/src/Graphics-UI-GLUT-State.html is in libghc-glut-doc 2.4.0.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>Graphics/UI/GLUT/State.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-2"></a><span class='hs-comment'>-- |</span>
<a name="line-3"></a><span class='hs-comment'>-- Module      :  Graphics.UI.GLUT.State</span>
<a name="line-4"></a><span class='hs-comment'>-- Copyright   :  (c) Sven Panne 2002-2005</span>
<a name="line-5"></a><span class='hs-comment'>-- License     :  BSD-style (see the file libraries/GLUT/LICENSE)</span>
<a name="line-6"></a><span class='hs-comment'>--</span>
<a name="line-7"></a><span class='hs-comment'>-- Maintainer  :  sven.panne@aedion.de</span>
<a name="line-8"></a><span class='hs-comment'>-- Stability   :  stable</span>
<a name="line-9"></a><span class='hs-comment'>-- Portability :  portable</span>
<a name="line-10"></a><span class='hs-comment'>--</span>
<a name="line-11"></a><span class='hs-comment'>-- GLUT maintains a considerable amount of programmer visible state. Some (but</span>
<a name="line-12"></a><span class='hs-comment'>-- not all) of this state may be directly retrieved.</span>
<a name="line-13"></a><span class='hs-comment'>--</span>
<a name="line-14"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-15"></a>
<a name="line-16"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>UI</span><span class='hs-varop'>.</span><span class='hs-conid'>GLUT</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span> <span class='hs-layout'>(</span>
<a name="line-17"></a>   <span class='hs-comment'>-- * State of all windows</span>
<a name="line-18"></a>   <span class='hs-varid'>windowBorderWidth</span><span class='hs-layout'>,</span> <span class='hs-varid'>windowHeaderHeight</span><span class='hs-layout'>,</span>
<a name="line-19"></a>
<a name="line-20"></a>   <span class='hs-comment'>-- * State of the /current window/</span>
<a name="line-21"></a>   <span class='hs-varid'>rgba</span><span class='hs-layout'>,</span>
<a name="line-22"></a>   <span class='hs-conid'>BufferDepth</span><span class='hs-layout'>,</span> <span class='hs-varid'>rgbaBufferDepths</span><span class='hs-layout'>,</span> <span class='hs-varid'>colorBufferDepth</span><span class='hs-layout'>,</span>
<a name="line-23"></a>   <span class='hs-varid'>doubleBuffered</span><span class='hs-layout'>,</span> <span class='hs-varid'>stereo</span><span class='hs-layout'>,</span>
<a name="line-24"></a>   <span class='hs-varid'>accumBufferDepths</span><span class='hs-layout'>,</span> <span class='hs-varid'>depthBufferDepth</span><span class='hs-layout'>,</span> <span class='hs-varid'>stencilBufferDepth</span><span class='hs-layout'>,</span>
<a name="line-25"></a>   <span class='hs-conid'>SampleCount</span><span class='hs-layout'>,</span> <span class='hs-varid'>sampleCount</span><span class='hs-layout'>,</span> <span class='hs-varid'>formatID</span><span class='hs-layout'>,</span>
<a name="line-26"></a>   <span class='hs-varid'>fullScreenMode</span><span class='hs-layout'>,</span>
<a name="line-27"></a>
<a name="line-28"></a>   <span class='hs-comment'>-- * GLUT state pertaining to the layers of the /current window/</span>
<a name="line-29"></a>   <span class='hs-varid'>damaged</span><span class='hs-layout'>,</span>
<a name="line-30"></a>
<a name="line-31"></a>   <span class='hs-comment'>-- * Timing</span>
<a name="line-32"></a>   <span class='hs-varid'>elapsedTime</span><span class='hs-layout'>,</span>
<a name="line-33"></a>
<a name="line-34"></a>   <span class='hs-comment'>-- * Device information</span>
<a name="line-35"></a>
<a name="line-36"></a>   <span class='hs-comment'>-- $DeviceInformation</span>
<a name="line-37"></a>   <span class='hs-varid'>screenSize</span><span class='hs-layout'>,</span> <span class='hs-varid'>screenSizeMM</span><span class='hs-layout'>,</span>
<a name="line-38"></a>   <span class='hs-varid'>hasKeyboard</span><span class='hs-layout'>,</span>
<a name="line-39"></a>   <span class='hs-conid'>ButtonCount</span><span class='hs-layout'>,</span> <span class='hs-varid'>numMouseButtons</span><span class='hs-layout'>,</span>
<a name="line-40"></a>   <span class='hs-varid'>numSpaceballButtons</span><span class='hs-layout'>,</span>
<a name="line-41"></a>   <span class='hs-conid'>DialCount</span><span class='hs-layout'>,</span> <span class='hs-varid'>numDialsAndButtons</span><span class='hs-layout'>,</span>
<a name="line-42"></a>   <span class='hs-varid'>numTabletButtons</span><span class='hs-layout'>,</span>
<a name="line-43"></a>   <span class='hs-conid'>AxisCount</span><span class='hs-layout'>,</span> <span class='hs-conid'>PollRate</span><span class='hs-layout'>,</span> <span class='hs-varid'>joystickInfo</span><span class='hs-layout'>,</span>
<a name="line-44"></a>   <span class='hs-varid'>supportedNumAuxBuffers</span><span class='hs-layout'>,</span> <span class='hs-varid'>supportedSamplesPerPixel</span><span class='hs-layout'>,</span>
<a name="line-45"></a>
<a name="line-46"></a>   <span class='hs-comment'>-- * GLUT information</span>
<a name="line-47"></a>   <span class='hs-varid'>glutVersion</span><span class='hs-layout'>,</span> <span class='hs-varid'>initState</span>
<a name="line-48"></a><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-49"></a>
<a name="line-50"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span>
<a name="line-51"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
<a name="line-52"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Marshal</span><span class='hs-varop'>.</span><span class='hs-conid'>Alloc</span>
<a name="line-53"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Marshal</span><span class='hs-varop'>.</span><span class='hs-conid'>Array</span>
<a name="line-54"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span>
<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Storable</span>
<a name="line-56"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span><span class='hs-varop'>.</span><span class='hs-conid'>OpenGL</span> <span class='hs-layout'>(</span> <span class='hs-conid'>GLenum</span><span class='hs-layout'>,</span> <span class='hs-conid'>Size</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-57"></a>                                 <span class='hs-layout'>,</span> <span class='hs-conid'>StateVar</span><span class='hs-layout'>,</span> <span class='hs-varid'>makeStateVar</span>
<a name="line-58"></a>                                 <span class='hs-layout'>,</span> <span class='hs-conid'>GettableStateVar</span><span class='hs-layout'>,</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-layout'>)</span>
<a name="line-59"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>UI</span><span class='hs-varop'>.</span><span class='hs-conid'>GLUT</span><span class='hs-varop'>.</span><span class='hs-conid'>Overlay</span>
<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>UI</span><span class='hs-varop'>.</span><span class='hs-conid'>GLUT</span><span class='hs-varop'>.</span><span class='hs-conid'>QueryUtils</span>
<a name="line-61"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>UI</span><span class='hs-varop'>.</span><span class='hs-conid'>GLUT</span><span class='hs-varop'>.</span><span class='hs-conid'>Raw</span>
<a name="line-62"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>UI</span><span class='hs-varop'>.</span><span class='hs-conid'>GLUT</span><span class='hs-varop'>.</span><span class='hs-conid'>Window</span>
<a name="line-63"></a>
<a name="line-64"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-65"></a>
<a name="line-66"></a><span class='hs-comment'>-- | Contains 'True' when the current layer of the /current window/ is in RGBA</span>
<a name="line-67"></a><span class='hs-comment'>-- mode, 'False' means color index mode.</span>
<a name="line-68"></a>
<a name="line-69"></a><a name="rgba"></a><span class='hs-definition'>rgba</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Bool</span>
<a name="line-70"></a><span class='hs-definition'>rgba</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span><span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>i2b</span> <span class='hs-varid'>glut_WINDOW_RGBA</span>
<a name="line-71"></a>
<a name="line-72"></a><span class='hs-comment'>-- | Bit depth of a buffer</span>
<a name="line-73"></a>
<a name="line-74"></a><a name="BufferDepth"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>BufferDepth</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Int</span>
<a name="line-75"></a>
<a name="line-76"></a><span class='hs-comment'>-- | Contains the number of red, green, blue, and alpha bits in the color buffer</span>
<a name="line-77"></a><span class='hs-comment'>-- of the /current window\'s/ current layer (0 in color index mode).</span>
<a name="line-78"></a>
<a name="line-79"></a><a name="rgbaBufferDepths"></a><span class='hs-definition'>rgbaBufferDepths</span> <span class='hs-keyglyph'>::</span>
<a name="line-80"></a>   <span class='hs-conid'>GettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>BufferDepth</span><span class='hs-layout'>,</span> <span class='hs-conid'>BufferDepth</span><span class='hs-layout'>,</span> <span class='hs-conid'>BufferDepth</span><span class='hs-layout'>,</span> <span class='hs-conid'>BufferDepth</span><span class='hs-layout'>)</span>
<a name="line-81"></a><span class='hs-definition'>rgbaBufferDepths</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-82"></a>   <span class='hs-varid'>r</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_RED_SIZE</span>
<a name="line-83"></a>   <span class='hs-varid'>g</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_GREEN_SIZE</span>
<a name="line-84"></a>   <span class='hs-varid'>b</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_BLUE_SIZE</span>
<a name="line-85"></a>   <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_ALPHA_SIZE</span>
<a name="line-86"></a>   <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span><span class='hs-layout'>,</span> <span class='hs-varid'>g</span><span class='hs-layout'>,</span> <span class='hs-varid'>b</span><span class='hs-layout'>,</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
<a name="line-87"></a>
<a name="line-88"></a><span class='hs-comment'>-- | Contains the total number of bits in the color buffer of the /current</span>
<a name="line-89"></a><span class='hs-comment'>-- window\'s/ current layer. For an RGBA layer, this is the sum of the red,</span>
<a name="line-90"></a><span class='hs-comment'>-- green, blue, and alpha bits. For an color index layer, this is the number</span>
<a name="line-91"></a><span class='hs-comment'>-- of bits of the color indexes.</span>
<a name="line-92"></a>
<a name="line-93"></a><a name="colorBufferDepth"></a><span class='hs-definition'>colorBufferDepth</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>BufferDepth</span>
<a name="line-94"></a><span class='hs-definition'>colorBufferDepth</span> <span class='hs-keyglyph'>=</span>
<a name="line-95"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_BUFFER_SIZE</span>
<a name="line-96"></a>
<a name="line-97"></a><span class='hs-comment'>-- | Contains 'True' when the current layer of the /current window/ is double</span>
<a name="line-98"></a><span class='hs-comment'>-- buffered, 'False' otherwise.</span>
<a name="line-99"></a>
<a name="line-100"></a><a name="doubleBuffered"></a><span class='hs-definition'>doubleBuffered</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Bool</span>
<a name="line-101"></a><span class='hs-definition'>doubleBuffered</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>i2b</span> <span class='hs-varid'>glut_WINDOW_DOUBLEBUFFER</span>
<a name="line-102"></a>
<a name="line-103"></a><span class='hs-comment'>-- | Contains 'True' when the current layer of the /current window/ is stereo,</span>
<a name="line-104"></a><span class='hs-comment'>-- 'False' otherwise.</span>
<a name="line-105"></a>
<a name="line-106"></a><a name="stereo"></a><span class='hs-definition'>stereo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Bool</span>
<a name="line-107"></a><span class='hs-definition'>stereo</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>i2b</span> <span class='hs-varid'>glut_WINDOW_STEREO</span>
<a name="line-108"></a>
<a name="line-109"></a><span class='hs-comment'>-- | Contains the number of red, green, blue, and alpha bits in the accumulation</span>
<a name="line-110"></a><span class='hs-comment'>-- buffer of the /current window\'s/ current layer (0 in color index mode).</span>
<a name="line-111"></a>
<a name="line-112"></a><a name="accumBufferDepths"></a><span class='hs-definition'>accumBufferDepths</span> <span class='hs-keyglyph'>::</span>
<a name="line-113"></a>   <span class='hs-conid'>GettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>BufferDepth</span><span class='hs-layout'>,</span> <span class='hs-conid'>BufferDepth</span><span class='hs-layout'>,</span> <span class='hs-conid'>BufferDepth</span><span class='hs-layout'>,</span> <span class='hs-conid'>BufferDepth</span><span class='hs-layout'>)</span>
<a name="line-114"></a><span class='hs-definition'>accumBufferDepths</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-115"></a>   <span class='hs-varid'>r</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_ACCUM_RED_SIZE</span>
<a name="line-116"></a>   <span class='hs-varid'>g</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_ACCUM_GREEN_SIZE</span>
<a name="line-117"></a>   <span class='hs-varid'>b</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_ACCUM_BLUE_SIZE</span>
<a name="line-118"></a>   <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_ACCUM_ALPHA_SIZE</span>
<a name="line-119"></a>   <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>r</span><span class='hs-layout'>,</span> <span class='hs-varid'>g</span><span class='hs-layout'>,</span> <span class='hs-varid'>b</span><span class='hs-layout'>,</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
<a name="line-120"></a>
<a name="line-121"></a><span class='hs-comment'>-- | Contains the number of bits in the depth buffer of the /current window\'s/</span>
<a name="line-122"></a><span class='hs-comment'>-- current layer.</span>
<a name="line-123"></a>
<a name="line-124"></a><a name="depthBufferDepth"></a><span class='hs-definition'>depthBufferDepth</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>BufferDepth</span>
<a name="line-125"></a><span class='hs-definition'>depthBufferDepth</span> <span class='hs-keyglyph'>=</span>
<a name="line-126"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_DEPTH_SIZE</span>
<a name="line-127"></a>
<a name="line-128"></a><span class='hs-comment'>-- | Contains the number of bits in the stencil buffer of the /current</span>
<a name="line-129"></a><span class='hs-comment'>-- window\'s/ current layer.</span>
<a name="line-130"></a>
<a name="line-131"></a><a name="stencilBufferDepth"></a><span class='hs-definition'>stencilBufferDepth</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>BufferDepth</span>
<a name="line-132"></a><span class='hs-definition'>stencilBufferDepth</span> <span class='hs-keyglyph'>=</span>
<a name="line-133"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_STENCIL_SIZE</span>
<a name="line-134"></a>
<a name="line-135"></a><span class='hs-comment'>-- | Number of samples for multisampling</span>
<a name="line-136"></a>
<a name="line-137"></a><a name="SampleCount"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>SampleCount</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Int</span>
<a name="line-138"></a>
<a name="line-139"></a><span class='hs-comment'>-- | Contains the number of samples for multisampling for the /current window./</span>
<a name="line-140"></a>
<a name="line-141"></a><a name="sampleCount"></a><span class='hs-definition'>sampleCount</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>SampleCount</span>
<a name="line-142"></a><span class='hs-definition'>sampleCount</span> <span class='hs-keyglyph'>=</span>
<a name="line-143"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_NUM_SAMPLES</span>
<a name="line-144"></a>
<a name="line-145"></a><span class='hs-comment'>-- | Contains the window system dependent format ID for the current layer of the</span>
<a name="line-146"></a><span class='hs-comment'>-- /current window/. On X11 GLUT implementations, this is the X visual ID. On</span>
<a name="line-147"></a><span class='hs-comment'>-- Win32 GLUT implementations, this is the Win32 Pixel Format Descriptor number.</span>
<a name="line-148"></a><span class='hs-comment'>-- This value is returned for debugging, benchmarking, and testing ease.</span>
<a name="line-149"></a>
<a name="line-150"></a><a name="formatID"></a><span class='hs-definition'>formatID</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Int</span>
<a name="line-151"></a><span class='hs-definition'>formatID</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_FORMAT_ID</span>
<a name="line-152"></a>
<a name="line-153"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-154"></a>
<a name="line-155"></a><span class='hs-comment'>-- | (/freeglut only/) Contains 'True' if the /current window/ is in full screen</span>
<a name="line-156"></a><span class='hs-comment'>-- mode, 'False' otherwise.</span>
<a name="line-157"></a>
<a name="line-158"></a><a name="fullScreenMode"></a><span class='hs-definition'>fullScreenMode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>StateVar</span> <span class='hs-conid'>Bool</span>
<a name="line-159"></a><span class='hs-definition'>fullScreenMode</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeStateVar</span> <span class='hs-varid'>getFullScreenMode</span> <span class='hs-varid'>setFullScreenMode</span>
<a name="line-160"></a>
<a name="line-161"></a><a name="getFullScreenMode"></a><span class='hs-definition'>getFullScreenMode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-162"></a><span class='hs-definition'>getFullScreenMode</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>i2b</span> <span class='hs-varid'>glut_FULL_SCREEN</span>
<a name="line-163"></a>
<a name="line-164"></a><a name="setFullScreenMode"></a><span class='hs-definition'>setFullScreenMode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Bool</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-165"></a><span class='hs-definition'>setFullScreenMode</span> <span class='hs-varid'>newMode</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-166"></a>   <span class='hs-varid'>oldMode</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>getFullScreenMode</span>
<a name="line-167"></a>   <span class='hs-varid'>unless</span> <span class='hs-layout'>(</span><span class='hs-varid'>newMode</span> <span class='hs-varop'>==</span> <span class='hs-varid'>oldMode</span><span class='hs-layout'>)</span> <span class='hs-varid'>fullScreenToggle</span>
<a name="line-168"></a>
<a name="line-169"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-170"></a>
<a name="line-171"></a><span class='hs-comment'>-- | Contains the number of milliseconds since</span>
<a name="line-172"></a><span class='hs-comment'>-- 'Graphics.UI.GLUT.Initialization.initialize' was called.</span>
<a name="line-173"></a>
<a name="line-174"></a><a name="elapsedTime"></a><span class='hs-definition'>elapsedTime</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Int</span>
<a name="line-175"></a><span class='hs-definition'>elapsedTime</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_ELAPSED_TIME</span>
<a name="line-176"></a>
<a name="line-177"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-178"></a>
<a name="line-179"></a><span class='hs-comment'>-- | Contains 'True' if the given plane of the /current window/ has been</span>
<a name="line-180"></a><span class='hs-comment'>-- damaged (by window system activity) since the last display callback was</span>
<a name="line-181"></a><span class='hs-comment'>-- triggered. Calling 'Graphics.UI.GLUT.Window.postRedisplay' or</span>
<a name="line-182"></a><span class='hs-comment'>-- 'Graphics.UI.GLUT.Overlay.postOverlayRedisplay' will not set this 'True'.</span>
<a name="line-183"></a>
<a name="line-184"></a><a name="damaged"></a><span class='hs-definition'>damaged</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Layer</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Bool</span>
<a name="line-185"></a><span class='hs-definition'>damaged</span> <span class='hs-varid'>l</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>layerGet</span> <span class='hs-varid'>isDamaged</span> <span class='hs-layout'>(</span><span class='hs-varid'>marshalDamagedLayer</span> <span class='hs-varid'>l</span><span class='hs-layout'>)</span>
<a name="line-186"></a>   <span class='hs-keyword'>where</span> <span class='hs-varid'>isDamaged</span> <span class='hs-varid'>d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>d</span> <span class='hs-varop'>/=</span> <span class='hs-num'>0</span> <span class='hs-varop'>&amp;&amp;</span> <span class='hs-varid'>d</span> <span class='hs-varop'>/=</span> <span class='hs-comment'>-</span><span class='hs-num'>1</span>
<a name="line-187"></a>         <span class='hs-varid'>marshalDamagedLayer</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>of</span>
<a name="line-188"></a>            <span class='hs-conid'>Normal</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>glut_NORMAL_DAMAGED</span>
<a name="line-189"></a>            <span class='hs-conid'>Overlay</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>glut_OVERLAY_DAMAGED</span>
<a name="line-190"></a>
<a name="line-191"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-192"></a>
<a name="line-193"></a><span class='hs-comment'>-- $DeviceInformation</span>
<a name="line-194"></a><span class='hs-comment'>-- If a device is not available, the following state variables contain</span>
<a name="line-195"></a><span class='hs-comment'>-- 'Nothing', otherwise they return 'Just' the specific device information.</span>
<a name="line-196"></a><span class='hs-comment'>-- Only a screen is always assumed.</span>
<a name="line-197"></a>
<a name="line-198"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-199"></a>
<a name="line-200"></a><span class='hs-comment'>-- | The size of the screen in pixels.</span>
<a name="line-201"></a>
<a name="line-202"></a><a name="screenSize"></a><span class='hs-definition'>screenSize</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Size</span>
<a name="line-203"></a><span class='hs-definition'>screenSize</span> <span class='hs-keyglyph'>=</span>
<a name="line-204"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-205"></a>      <span class='hs-varid'>wpx</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_SCREEN_WIDTH</span>
<a name="line-206"></a>      <span class='hs-varid'>hpx</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_SCREEN_HEIGHT</span>
<a name="line-207"></a>      <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Size</span> <span class='hs-varid'>wpx</span> <span class='hs-varid'>hpx</span>
<a name="line-208"></a>
<a name="line-209"></a><span class='hs-comment'>-- | The size of the screen in millimeters.</span>
<a name="line-210"></a>
<a name="line-211"></a><a name="screenSizeMM"></a><span class='hs-definition'>screenSizeMM</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Size</span>
<a name="line-212"></a><span class='hs-definition'>screenSizeMM</span> <span class='hs-keyglyph'>=</span>
<a name="line-213"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-214"></a>      <span class='hs-varid'>wmm</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_SCREEN_WIDTH_MM</span>
<a name="line-215"></a>      <span class='hs-varid'>hmm</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_SCREEN_HEIGHT_MM</span>
<a name="line-216"></a>      <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Size</span> <span class='hs-varid'>wmm</span> <span class='hs-varid'>hmm</span>
<a name="line-217"></a>
<a name="line-218"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-219"></a>
<a name="line-220"></a><span class='hs-comment'>-- | Contains 'True' if a keyboard is present, 'False' otherwise.</span>
<a name="line-221"></a>
<a name="line-222"></a><a name="hasKeyboard"></a><span class='hs-definition'>hasKeyboard</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Bool</span>
<a name="line-223"></a><span class='hs-definition'>hasKeyboard</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>i2b</span> <span class='hs-varid'>glut_HAS_KEYBOARD</span>
<a name="line-224"></a>
<a name="line-225"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-226"></a>
<a name="line-227"></a><span class='hs-comment'>-- | Number of buttons of an input device</span>
<a name="line-228"></a>
<a name="line-229"></a><a name="ButtonCount"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>ButtonCount</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Int</span>
<a name="line-230"></a>
<a name="line-231"></a><span class='hs-comment'>-- | Contains 'Just' the number of buttons of an attached mouse or 'Nothing' if</span>
<a name="line-232"></a><span class='hs-comment'>-- there is none.</span>
<a name="line-233"></a>
<a name="line-234"></a><a name="numMouseButtons"></a><span class='hs-definition'>numMouseButtons</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>ButtonCount</span><span class='hs-layout'>)</span>
<a name="line-235"></a><span class='hs-definition'>numMouseButtons</span> <span class='hs-keyglyph'>=</span>
<a name="line-236"></a>   <span class='hs-varid'>getDeviceInfo</span> <span class='hs-varid'>glut_HAS_MOUSE</span> <span class='hs-varop'>$</span>
<a name="line-237"></a>      <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_NUM_MOUSE_BUTTONS</span>
<a name="line-238"></a>
<a name="line-239"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-240"></a>
<a name="line-241"></a><span class='hs-comment'>-- | Contains 'Just' the number of buttons of the attached Spaceball or 'Nothing'</span>
<a name="line-242"></a><span class='hs-comment'>-- if there is none.</span>
<a name="line-243"></a>
<a name="line-244"></a><a name="numSpaceballButtons"></a><span class='hs-definition'>numSpaceballButtons</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>ButtonCount</span><span class='hs-layout'>)</span>
<a name="line-245"></a><span class='hs-definition'>numSpaceballButtons</span> <span class='hs-keyglyph'>=</span>
<a name="line-246"></a>   <span class='hs-varid'>getDeviceInfo</span> <span class='hs-varid'>glut_HAS_SPACEBALL</span> <span class='hs-varop'>$</span>
<a name="line-247"></a>      <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_NUM_SPACEBALL_BUTTONS</span>
<a name="line-248"></a>
<a name="line-249"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-250"></a>
<a name="line-251"></a><span class='hs-comment'>-- | Number of dials of a dial and button box</span>
<a name="line-252"></a>
<a name="line-253"></a><a name="DialCount"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>DialCount</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Int</span>
<a name="line-254"></a>
<a name="line-255"></a><span class='hs-comment'>-- | Contains 'Just' the number of dials and buttons of an attached dial &amp;</span>
<a name="line-256"></a><span class='hs-comment'>-- button box or 'Nothing' if there is none.</span>
<a name="line-257"></a>
<a name="line-258"></a><a name="numDialsAndButtons"></a><span class='hs-definition'>numDialsAndButtons</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>DialCount</span><span class='hs-layout'>,</span> <span class='hs-conid'>ButtonCount</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-259"></a><span class='hs-definition'>numDialsAndButtons</span> <span class='hs-keyglyph'>=</span>
<a name="line-260"></a>   <span class='hs-varid'>getDeviceInfo</span> <span class='hs-varid'>glut_HAS_DIAL_AND_BUTTON_BOX</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-261"></a>      <span class='hs-varid'>d</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_NUM_DIALS</span>
<a name="line-262"></a>      <span class='hs-varid'>b</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_NUM_BUTTON_BOX_BUTTONS</span>
<a name="line-263"></a>      <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>d</span><span class='hs-layout'>,</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
<a name="line-264"></a>
<a name="line-265"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-266"></a>
<a name="line-267"></a><span class='hs-comment'>-- | Contains 'Just' the number of buttons of an attached tablet or 'Nothing' if</span>
<a name="line-268"></a><span class='hs-comment'>-- there is none.</span>
<a name="line-269"></a>
<a name="line-270"></a><a name="numTabletButtons"></a><span class='hs-definition'>numTabletButtons</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>ButtonCount</span><span class='hs-layout'>)</span>
<a name="line-271"></a><span class='hs-definition'>numTabletButtons</span> <span class='hs-keyglyph'>=</span>
<a name="line-272"></a>   <span class='hs-varid'>getDeviceInfo</span> <span class='hs-varid'>glut_HAS_TABLET</span> <span class='hs-varop'>$</span>
<a name="line-273"></a>      <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_NUM_TABLET_BUTTONS</span>
<a name="line-274"></a>
<a name="line-275"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-276"></a>
<a name="line-277"></a><span class='hs-comment'>-- | Number of axes of a joystick</span>
<a name="line-278"></a>
<a name="line-279"></a><a name="AxisCount"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>AxisCount</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Int</span>
<a name="line-280"></a>
<a name="line-281"></a><span class='hs-comment'>-- | The a rate at which a joystick is polled (in milliseconds)</span>
<a name="line-282"></a>
<a name="line-283"></a><a name="PollRate"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>PollRate</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Int</span>
<a name="line-284"></a>
<a name="line-285"></a><span class='hs-comment'>-- | Contains 'Just' the number of buttons of an attached joystick, the number</span>
<a name="line-286"></a><span class='hs-comment'>-- of joystick axes, and the rate at which the joystick is polled. Contains</span>
<a name="line-287"></a><span class='hs-comment'>-- 'Nothing' if there is no joystick attached.</span>
<a name="line-288"></a>
<a name="line-289"></a><a name="joystickInfo"></a><span class='hs-definition'>joystickInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>ButtonCount</span><span class='hs-layout'>,</span> <span class='hs-conid'>PollRate</span><span class='hs-layout'>,</span> <span class='hs-conid'>AxisCount</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-290"></a><span class='hs-definition'>joystickInfo</span> <span class='hs-keyglyph'>=</span>
<a name="line-291"></a>   <span class='hs-varid'>getDeviceInfo</span> <span class='hs-varid'>glut_HAS_JOYSTICK</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-292"></a>      <span class='hs-varid'>b</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_JOYSTICK_BUTTONS</span>
<a name="line-293"></a>      <span class='hs-varid'>a</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_JOYSTICK_AXES</span>
<a name="line-294"></a>      <span class='hs-varid'>r</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_JOYSTICK_POLL_RATE</span>
<a name="line-295"></a>      <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span><span class='hs-layout'>,</span> <span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>r</span><span class='hs-layout'>)</span>
<a name="line-296"></a>
<a name="line-297"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-298"></a>
<a name="line-299"></a><span class='hs-comment'>-- | (/freeglut only/) Contains a list of the number of auxiliary buffers</span>
<a name="line-300"></a><span class='hs-comment'>-- supported, in increasing order.</span>
<a name="line-301"></a>
<a name="line-302"></a><a name="supportedNumAuxBuffers"></a><span class='hs-definition'>supportedNumAuxBuffers</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int</span><span class='hs-keyglyph'>]</span>
<a name="line-303"></a><span class='hs-definition'>supportedNumAuxBuffers</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getModeValues</span> <span class='hs-varid'>glut_AUX</span>
<a name="line-304"></a>
<a name="line-305"></a><span class='hs-comment'>-- | (/freeglut only/) Contains a list of the number of samples per pixel</span>
<a name="line-306"></a><span class='hs-comment'>-- supported for multisampling, in increasing order.</span>
<a name="line-307"></a>
<a name="line-308"></a><a name="supportedSamplesPerPixel"></a><span class='hs-definition'>supportedSamplesPerPixel</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>SampleCount</span><span class='hs-keyglyph'>]</span>
<a name="line-309"></a><span class='hs-definition'>supportedSamplesPerPixel</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getModeValues</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_MULTISAMPLE</span><span class='hs-layout'>)</span>
<a name="line-310"></a>
<a name="line-311"></a><a name="getModeValues"></a><span class='hs-definition'>getModeValues</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Integral</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-conid'>GLenum</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-312"></a><span class='hs-definition'>getModeValues</span> <span class='hs-varid'>what</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span>
<a name="line-313"></a>   <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>sizeBuffer</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-314"></a>      <span class='hs-varid'>valuesBuffer</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>glutGetModeValues</span> <span class='hs-varid'>what</span> <span class='hs-varid'>sizeBuffer</span>
<a name="line-315"></a>      <span class='hs-varid'>size</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>sizeBuffer</span>
<a name="line-316"></a>      <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>fromIntegral</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>peekArray</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>size</span><span class='hs-layout'>)</span> <span class='hs-varid'>valuesBuffer</span>
<a name="line-317"></a>
<a name="line-318"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-319"></a><span class='hs-comment'>-- Convenience unmarshalers</span>
<a name="line-320"></a>
<a name="line-321"></a><a name="i2b"></a><span class='hs-definition'>i2b</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-322"></a><span class='hs-definition'>i2b</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varop'>/=</span> <span class='hs-num'>0</span><span class='hs-layout'>)</span>
<a name="line-323"></a>
<a name="line-324"></a><span class='hs-comment'>--------------------------------------------------------------------------------</span>
<a name="line-325"></a>
<a name="line-326"></a><a name="getDeviceInfo"></a><span class='hs-definition'>getDeviceInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GLenum</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
<a name="line-327"></a><span class='hs-definition'>getDeviceInfo</span> <span class='hs-varid'>dev</span> <span class='hs-varid'>act</span> <span class='hs-keyglyph'>=</span>
<a name="line-328"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-329"></a>      <span class='hs-varid'>hasDevice</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>deviceGet</span> <span class='hs-varid'>i2b</span> <span class='hs-varid'>dev</span>
<a name="line-330"></a>      <span class='hs-keyword'>if</span> <span class='hs-varid'>hasDevice</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>fmap</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>act</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>return</span> <span class='hs-conid'>Nothing</span>
<a name="line-331"></a>
<a name="line-332"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-333"></a>
<a name="line-334"></a><span class='hs-comment'>-- | Contains version of GLUT in the form of</span>
<a name="line-335"></a><span class='hs-comment'>-- @/flavour/ /major/./minor/./patchlevel/@, where @/flavour/@ is one of</span>
<a name="line-336"></a><span class='hs-comment'>-- @GLUT@, @freeglut@ or @OpenGLUT@.</span>
<a name="line-337"></a>
<a name="line-338"></a><a name="glutVersion"></a><span class='hs-definition'>glutVersion</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>String</span>
<a name="line-339"></a><span class='hs-definition'>glutVersion</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-340"></a>   <span class='hs-keyword'>let</span> <span class='hs-varid'>isGLUT</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>isUnknown</span> <span class='hs-str'>"glutSetOption"</span>
<a name="line-341"></a>       <span class='hs-varid'>isFreeglut</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>isUnknown</span> <span class='hs-str'>"glutSetWindowStayOnTop"</span>
<a name="line-342"></a>       <span class='hs-varid'>isUnknown</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-varop'>==</span> <span class='hs-varid'>nullFunPtr</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>getAPIEntryInternal</span>
<a name="line-343"></a>       <span class='hs-varid'>showVersionPart</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>shows</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span> <span class='hs-varop'>`mod`</span> <span class='hs-num'>100</span><span class='hs-layout'>)</span>
<a name="line-344"></a>       <span class='hs-varid'>showVersion</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>showVersionPart</span> <span class='hs-layout'>(</span><span class='hs-varid'>v</span> <span class='hs-varop'>`div`</span> <span class='hs-num'>10000</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>showChar</span> <span class='hs-chr'>'.'</span> <span class='hs-varop'>.</span>
<a name="line-345"></a>                       <span class='hs-varid'>showVersionPart</span> <span class='hs-layout'>(</span><span class='hs-varid'>v</span> <span class='hs-varop'>`div`</span>   <span class='hs-num'>100</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>showChar</span> <span class='hs-chr'>'.'</span> <span class='hs-varop'>.</span>
<a name="line-346"></a>                       <span class='hs-varid'>showVersionPart</span>  <span class='hs-varid'>v</span>
<a name="line-347"></a>   <span class='hs-varid'>g</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>isGLUT</span>
<a name="line-348"></a>   <span class='hs-keyword'>if</span> <span class='hs-varid'>g</span>
<a name="line-349"></a>      <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-str'>"GLUT 3.7"</span>   <span class='hs-comment'>-- ToDo: just guessing</span>
<a name="line-350"></a>      <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>isFreeglut</span>
<a name="line-351"></a>              <span class='hs-varid'>v</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>id</span> <span class='hs-varid'>glut_VERSION</span>
<a name="line-352"></a>              <span class='hs-keyword'>let</span> <span class='hs-varid'>prefix</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>then</span> <span class='hs-str'>"freeglut"</span> <span class='hs-keyword'>else</span> <span class='hs-str'>"OpenGLUT"</span>
<a name="line-353"></a>              <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>showString</span> <span class='hs-varid'>prefix</span> <span class='hs-varop'>.</span> <span class='hs-varid'>showChar</span> <span class='hs-chr'>' '</span> <span class='hs-varop'>.</span> <span class='hs-varid'>showVersion</span> <span class='hs-varid'>v</span> <span class='hs-varop'>$</span> <span class='hs-str'>""</span>
<a name="line-354"></a>
<a name="line-355"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-356"></a>
<a name="line-357"></a><span class='hs-comment'>-- | (/freeglut only/) Contains the thickness of the sizing border around the</span>
<a name="line-358"></a><span class='hs-comment'>-- perimeter of a window that can be resized, in pixels.</span>
<a name="line-359"></a>
<a name="line-360"></a><a name="windowBorderWidth"></a><span class='hs-definition'>windowBorderWidth</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Int</span>
<a name="line-361"></a><span class='hs-definition'>windowBorderWidth</span> <span class='hs-keyglyph'>=</span>
<a name="line-362"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_BORDER_WIDTH</span><span class='hs-layout'>)</span>
<a name="line-363"></a>
<a name="line-364"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-365"></a>
<a name="line-366"></a><span class='hs-comment'>-- | (/freeglut only/) Contains the height of the header\/caption area of a</span>
<a name="line-367"></a><span class='hs-comment'>-- window in pixels.</span>
<a name="line-368"></a>
<a name="line-369"></a><a name="windowHeaderHeight"></a><span class='hs-definition'>windowHeaderHeight</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Int</span>
<a name="line-370"></a><span class='hs-definition'>windowHeaderHeight</span> <span class='hs-keyglyph'>=</span>
<a name="line-371"></a>   <span class='hs-varid'>makeGettableStateVar</span> <span class='hs-layout'>(</span><span class='hs-varid'>simpleGet</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>glut_WINDOW_HEADER_HEIGHT</span><span class='hs-layout'>)</span>
<a name="line-372"></a>
<a name="line-373"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-374"></a>
<a name="line-375"></a><span class='hs-comment'>-- | (/freeglut only/) Contains 'True' if GLUT has been initialized </span>
<a name="line-376"></a><span class='hs-comment'>-- with 'Graphics.UI.GLUT.Initialization.initialize' or</span>
<a name="line-377"></a><span class='hs-comment'>-- 'Graphics.UI.GLUT.Initialization.getArgsAndInitialize' has and not yet</span>
<a name="line-378"></a><span class='hs-comment'>-- been de-initialized with 'Graphics.UI.GLUT.Initialization.exit'. Contains</span>
<a name="line-379"></a><span class='hs-comment'>-- 'False' otherwise.</span>
<a name="line-380"></a>
<a name="line-381"></a><a name="initState"></a><span class='hs-definition'>initState</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GettableStateVar</span> <span class='hs-conid'>Bool</span>
<a name="line-382"></a><span class='hs-definition'>initState</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeGettableStateVar</span><span class='hs-varop'>$</span> <span class='hs-varid'>simpleGet</span> <span class='hs-varid'>i2b</span> <span class='hs-varid'>glut_INIT_STATE</span>
</pre></body>
</html>