blob: 4fb31ccae8103e5e84c260633c8eceb5337438a5 (
plain)
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
|
unit p_gx;
{$MODE objfpc}
{ convention is cdecl for WinCE API}
{$calling cdecl}
interface
uses
Windows;
const
GXDLL = 'gx';
type
GXDisplayProperties = record
cxWidth: DWord;
cyHeight: DWord; // notice lack of 'th' in the word height.
cbxPitch: LONG; // number of bytes to move right one x pixel - can be negative.
cbyPitch: LONG; // number of bytes to move down one y pixel - can be negative.
cBPP: LONG; // # of bits in each pixel
ffFormat: DWord; // format flags.
end;
GXKeyList = record
vkUp: SHORT; // key for up
ptUp: POINT; // x,y position of key/button. not on screen but in screen coordinates.
vkDown: SHORT;
ptDown: POINT;
vkLeft: SHORT;
ptLeft: POINT;
vkRight: SHORT;
ptRight: POINT;
vkA: SHORT;
ptA: POINT;
vkB: SHORT;
ptB: POINT;
vkC: SHORT;
ptC: POINT;
vkStart: SHORT;
ptStart: POINT;
end;
function GXOpenDisplay(AhWnd: HWND; dwFlags: DWORD): Integer; external GXDLL Name '?GXOpenDisplay@@YAHPAUHWND__@@K@Z';
function GXCloseDisplay: Integer; external GXDLL Name '?GXCloseDisplay@@YAHXZ';
function GXBeginDraw: Pointer; external GXDLL Name '?GXBeginDraw@@YAPAXXZ';
function GXEndDraw: Integer; external GXDLL Name '?GXEndDraw@@YAHXZ';
function GXOpenInput: Integer; external GXDLL Name '?GXOpenInput@@YAHXZ';
function GXCloseInput: Integer; external GXDLL Name '?GXCloseInput@@YAHXZ';
function GXGetDisplayProperties: GXDisplayProperties; external GXDLL Name '?GXGetDisplayProperties@@YA?AUGXDisplayProperties@@XZ';
function GXGetDefaultKeys(iOptions: Integer): GXKeyList; external GXDLL Name '?GXGetDefaultKeys@@YA?AUGXKeyList@@H@Z';
function GXSuspend: Integer; external GXDLL Name '?GXSuspend@@YAHXZ';
function GXResume: Integer; external GXDLL Name '?GXResume@@YAHXZ';
function GXSetViewport(dwTop, dwHeight, dwReserved1, dwReserved2: DWORD): Integer; external GXDLL Name '?GXSetViewport@@YAHKKKK@Z';
function GXIsDisplayDRAMBuffer: BOOL; external GXDLL Name '?GXIsDisplayDRAMBuffer@@YAHXZ';
// Although these flags can be unrelated they still
// have unique values.
const
GX_FULLSCREEN = $01; // for OpenDisplay()
GX_NORMALKEYS = $02;
GX_LANDSCAPEKEYS = $03;
kfLandscape = $8; // Screen is rotated 270 degrees
kfPalette = $10; // Pixel values are indexes into a palette
kfDirect = $20; // Pixel values contain actual level information
kfDirect555 = $40; // 5 bits each for red, green and blue values in a pixel.
kfDirect565 = $80; // 5 red bits, 6 green bits and 5 blue bits per pixel
kfDirect888 = $100; // 8 bits each for red, green and blue values in a pixel.
kfDirect444 = $200; // 4 red, 4 green, 4 blue
kfDirectInverted = $400;
GETRAWFRAMEBUFFER = $00020001;
type
RawFrameBufferInfo = record
wFormat: WORD;
wBPP: WORD;
pFramePointer: Pointer;
cxStride: Integer;
cyStride: Integer;
cxPixels: Integer;
cyPixels: Integer;
end;
const
FORMAT_565 = 1;
FORMAT_555 = 2;
FORMAT_OTHER = 3;
implementation
end.
|