summary refs log tree commit diff stats
path: root/lib/wrappers/x11/xf86dga.nim
blob: 376f1186152d67f1dcd905644d9824d9ea81f457 (plain) (blame)
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
#
#   Copyright (c) 1999  XFree86 Inc
#
# $XFree86: xc/include/extensions/xf86dga.h,v 3.20 1999/10/13 04:20:48 dawes Exp $ 

import 
  x, xlib

const 
  libXxf86dga* = "libXxf86dga.so"

#type 
#  cfloat* = float32

# $XFree86: xc/include/extensions/xf86dga1.h,v 1.2 1999/04/17 07:05:41 dawes Exp $ 
#
#
#Copyright (c) 1995  Jon Tombs
#Copyright (c) 1995  XFree86 Inc
#
#
#************************************************************************
#
#   THIS IS THE OLD DGA API AND IS OBSOLETE.  PLEASE DO NOT USE IT ANYMORE
#
#************************************************************************

type 
  PPcchar* = ptr ptr cstring

const 
  X_XF86DGAQueryVersion* = 0
  X_XF86DGAGetVideoLL* = 1
  X_XF86DGADirectVideo* = 2
  X_XF86DGAGetViewPortSize* = 3
  X_XF86DGASetViewPort* = 4
  X_XF86DGAGetVidPage* = 5
  X_XF86DGASetVidPage* = 6
  X_XF86DGAInstallColormap* = 7
  X_XF86DGAQueryDirectVideo* = 8
  X_XF86DGAViewPortChanged* = 9
  XF86DGADirectPresent* = 0x00000001
  XF86DGADirectGraphics* = 0x00000002
  XF86DGADirectMouse* = 0x00000004
  XF86DGADirectKeyb* = 0x00000008
  XF86DGAHasColormap* = 0x00000100
  XF86DGADirectColormap* = 0x00000200

proc XF86DGAQueryVersion*(dpy: PDisplay, majorVersion: Pcint, 
                          minorVersion: Pcint): TBool{.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XF86DGAQueryExtension*(dpy: PDisplay, event_base: Pcint, error_base: Pcint): TBool{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGAGetVideoLL*(dpy: PDisplay, screen: cint, base_addr: Pcint, 
                        width: Pcint, bank_size: Pcint, ram_size: Pcint): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGAGetVideo*(dpy: PDisplay, screen: cint, base_addr: PPcchar, 
                      width: Pcint, bank_size: Pcint, ram_size: Pcint): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGADirectVideo*(dpy: PDisplay, screen: cint, enable: cint): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGADirectVideoLL*(dpy: PDisplay, screen: cint, enable: cint): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGAGetViewPortSize*(dpy: PDisplay, screen: cint, width: Pcint, 
                             height: Pcint): TStatus{.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XF86DGASetViewPort*(dpy: PDisplay, screen: cint, x: cint, y: cint): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGAGetVidPage*(dpy: PDisplay, screen: cint, vid_page: Pcint): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGASetVidPage*(dpy: PDisplay, screen: cint, vid_page: cint): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGAInstallColormap*(dpy: PDisplay, screen: cint, Colormap: TColormap): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGAForkApp*(screen: cint): cint{.CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGAQueryDirectVideo*(dpy: PDisplay, screen: cint, flags: Pcint): TStatus{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XF86DGAViewPortChanged*(dpy: PDisplay, screen: cint, n: cint): TBool{.
    CDecl, dynlib: libXxf86dga, importc.}
const 
  X_XDGAQueryVersion* = 0     # 1 through 9 are in xf86dga1.pp 
                              # 10 and 11 are reserved to avoid conflicts with rogue DGA extensions 
  X_XDGAQueryModes* = 12
  X_XDGASetMode* = 13
  X_XDGASetViewport* = 14
  X_XDGAInstallColormap* = 15
  X_XDGASelectInput* = 16
  X_XDGAFillRectangle* = 17
  X_XDGACopyArea* = 18
  X_XDGACopyTransparentArea* = 19
  X_XDGAGetViewportStatus* = 20
  X_XDGASync* = 21
  X_XDGAOpenFramebuffer* = 22
  X_XDGACloseFramebuffer* = 23
  X_XDGASetClientVersion* = 24
  X_XDGAChangePixmapMode* = 25
  X_XDGACreateColormap* = 26
  XDGAConcurrentAccess* = 0x00000001
  XDGASolidFillRect* = 0x00000002
  XDGABlitRect* = 0x00000004
  XDGABlitTransRect* = 0x00000008
  XDGAPixmap* = 0x00000010
  XDGAInterlaced* = 0x00010000
  XDGADoublescan* = 0x00020000
  XDGAFlipImmediate* = 0x00000001
  XDGAFlipRetrace* = 0x00000002
  XDGANeedRoot* = 0x00000001
  XF86DGANumberEvents* = 7
  XDGAPixmapModeLarge* = 0
  XDGAPixmapModeSmall* = 1
  XF86DGAClientNotLocal* = 0
  XF86DGANoDirectVideoMode* = 1
  XF86DGAScreenNotActive* = 2
  XF86DGADirectNotActivated* = 3
  XF86DGAOperationNotSupported* = 4
  XF86DGANumberErrors* = (XF86DGAOperationNotSupported + 1)

type 
  PXDGAMode* = ptr TXDGAMode
  TXDGAMode*{.final.} = object 
    num*: cint                # A unique identifier for the mode (num > 0) 
    name*: cstring            # name of mode given in the XF86Config 
    verticalRefresh*: cfloat
    flags*: cint              # DGA_CONCURRENT_ACCESS, etc... 
    imageWidth*: cint         # linear accessible portion (pixels) 
    imageHeight*: cint
    pixmapWidth*: cint        # Xlib accessible portion (pixels) 
    pixmapHeight*: cint       # both fields ignored if no concurrent access 
    bytesPerScanline*: cint
    byteOrder*: cint          # MSBFirst, LSBFirst 
    depth*: cint
    bitsPerPixel*: cint
    redMask*: culong
    greenMask*: culong
    blueMask*: culong
    visualClass*: cshort
    viewportWidth*: cint
    viewportHeight*: cint
    xViewportStep*: cint      # viewport position granularity 
    yViewportStep*: cint
    maxViewportX*: cint       # max viewport origin 
    maxViewportY*: cint
    viewportFlags*: cint      # types of page flipping possible 
    reserved1*: cint
    reserved2*: cint

  PXDGADevice* = ptr TXDGADevice
  TXDGADevice*{.final.} = object 
    mode*: TXDGAMode
    data*: Pcuchar
    pixmap*: TPixmap

  PXDGAButtonEvent* = ptr TXDGAButtonEvent
  TXDGAButtonEvent*{.final.} = object 
    theType*: cint
    serial*: culong
    display*: PDisplay
    screen*: cint
    time*: TTime
    state*: cuint
    button*: cuint

  PXDGAKeyEvent* = ptr TXDGAKeyEvent
  TXDGAKeyEvent*{.final.} = object 
    theType*: cint
    serial*: culong
    display*: PDisplay
    screen*: cint
    time*: TTime
    state*: cuint
    keycode*: cuint

  PXDGAMotionEvent* = ptr TXDGAMotionEvent
  TXDGAMotionEvent*{.final.} = object 
    theType*: cint
    serial*: culong
    display*: PDisplay
    screen*: cint
    time*: TTime
    state*: cuint
    dx*: cint
    dy*: cint

  PXDGAEvent* = ptr TXDGAEvent
  TXDGAEvent*{.final.} = object 
    pad*: array[0..23, clong] # sorry you have to cast if you want access
                              #Case LongInt Of
                              #      0 : (_type : cint);
                              #      1 : (xbutton : TXDGAButtonEvent);
                              #      2 : (xkey : TXDGAKeyEvent);
                              #      3 : (xmotion : TXDGAMotionEvent);
                              #      4 : (pad : Array[0..23] Of clong);
  

proc XDGAQueryExtension*(dpy: PDisplay, eventBase: Pcint, erroBase: Pcint): TBool{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XDGAQueryVersion*(dpy: PDisplay, majorVersion: Pcint, minorVersion: Pcint): TBool{.
    CDecl, dynlib: libXxf86dga, importc.}
proc XDGAQueryModes*(dpy: PDisplay, screen: cint, num: Pcint): PXDGAMode{.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGASetMode*(dpy: PDisplay, screen: cint, mode: cint): PXDGADevice{.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGAOpenFramebuffer*(dpy: PDisplay, screen: cint): TBool{.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGACloseFramebuffer*(dpy: PDisplay, screen: cint){.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGASetViewport*(dpy: PDisplay, screen: cint, x: cint, y: cint, flags: cint){.
    CDecl, dynlib: libXxf86dga, importc.}
proc XDGAInstallColormap*(dpy: PDisplay, screen: cint, cmap: TColormap){.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGACreateColormap*(dpy: PDisplay, screen: cint, device: PXDGADevice, 
                         alloc: cint): TColormap{.CDecl, dynlib: libXxf86dga, 
    importc.}
proc XDGASelectInput*(dpy: PDisplay, screen: cint, event_mask: clong){.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGAFillRectangle*(dpy: PDisplay, screen: cint, x: cint, y: cint, 
                        width: cuint, height: cuint, color: culong){.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGACopyArea*(dpy: PDisplay, screen: cint, srcx: cint, srcy: cint, 
                   width: cuint, height: cuint, dstx: cint, dsty: cint){.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGACopyTransparentArea*(dpy: PDisplay, screen: cint, srcx: cint, 
                              srcy: cint, width: cuint, height: cuint, 
                              dstx: cint, dsty: cint, key: culong){.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGAGetViewportStatus*(dpy: PDisplay, screen: cint): cint{.CDecl, 
    dynlib: libXxf86dga, importc.}
proc XDGASync*(dpy: PDisplay, screen: cint){.CDecl, dynlib: libXxf86dga, importc.}
proc XDGASetClientVersion*(dpy: PDisplay): TBool{.CDecl, dynlib: libXxf86dga, 
    importc.}
proc XDGAChangePixmapMode*(dpy: PDisplay, screen: cint, x: Pcint, y: Pcint, 
                           mode: cint){.CDecl, dynlib: libXxf86dga, importc.}
proc XDGAKeyEventToXKeyEvent*(dk: PXDGAKeyEvent, xk: PXKeyEvent){.CDecl, 
    dynlib: libXxf86dga, importc.}
# implementation