23.4 Wgl Interface

ORIGIN 'opengl';

--lib:attributes--

(*------ GLW ---------- *)
(* note this is not complete,
 * only intendet for internal use,
 * as programs is not platform independent.
 *
 *)

(* Different constants *)

(* pixel types *)
PFD_TYPE_RGBA:(# exit 0 #);
PFD_TYPE_COLORINDEX:(# exit 1 #);

(* layer types *)
PFD_MAIN_PLANE:(# exit 0 #);
PFD_OVERLAY_PLANE:(# exit 1 #);
PFD_UNDERLAY_PLANE:(# exit (-1) #);

(* PIXELFORMATDESCRIPTOR flags *)
PFD_DOUBLEBUFFER:(# exit 0x00000001 #);
PFD_STEREO:(# exit 0x00000002 #);
PFD_DRAW_TO_WINDOW:(# exit 0x00000004 #);
PFD_DRAW_TO_BITMAP:(# exit 0x00000008 #);
PFD_SUPPORT_GDI:(# exit 0x00000010 #);
PFD_SUPPORT_OPENGL:(# exit 0x00000020 #);
PFD_GENERIC_FORMAT:(# exit 0x00000040 #);
PFD_NEED_PALETTE:(# exit 0x00000080 #);
PFD_NEED_SYSTEM_PALETTE:(# exit 0x00000100 #);
PFD_SWAP_EXCHANGE:(# exit 0x00000200 #);
PFD_SWAP_COPY:(# exit 0x00000400 #);
PFD_SWAP_LAYER_BUFFERS:(# exit 0x00000800 #);
PFD_GENERIC_ACCELERATED:(# exit 0x00001000 #);

(* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only *)
PFD_DEPTH_DONTCARE:(# exit 0x20000000 #);
PFD_DOUBLEBUFFER_DONTCARE:(# exit 0x40000000 #);
PFD_STEREO_DONTCARE:(# exit 0x80000000 #);

SwapBuffers:external
  (# hdc:@integer; (* HDC* *)
     result:@integer;
  enter hdc
  do CallStd
  exit result
  #);

(* LAYERPLANEDESCRIPTOR flags *)
LPD_DOUBLEBUFFER: (# exit 0x00000001 #);
LPD_STEREO: (# exit 0x00000002 #);
LPD_SUPPORT_GDI: (# exit 0x00000010 #);
LPD_SUPPORT_OPENGL: (# exit 0x00000020 #);
LPD_SHARE_DEPTH: (# exit 0x00000040 #);
LPD_SHARE_STENCIL: (# exit 0x00000080 #);
LPD_SHARE_ACCUM: (# exit 0x00000100 #);
LPD_SWAP_EXCHANGE: (# exit 0x00000200 #);
LPD_SWAP_COPY: (# exit 0x00000400 #);
LPD_TRANSPARENT: (# exit 0x00001000 #);

LPD_TYPE_RGBA: (# exit 0 #);
LPD_TYPE_COLORINDEX: (# exit 1 #);

(* wglSwapLayerBuffers flags *)
WGL_SWAP_MAIN_PLANE: (# exit 0x00000001 #);
WGL_SWAP_OVERLAY1: (# exit 0x00000002 #);
WGL_SWAP_OVERLAY2: (# exit 0x00000004 #);
WGL_SWAP_OVERLAY3: (# exit 0x00000008 #);
WGL_SWAP_OVERLAY4: (# exit 0x00000010 #);
WGL_SWAP_OVERLAY5: (# exit 0x00000020 #);
WGL_SWAP_OVERLAY6: (# exit 0x00000040 #);
WGL_SWAP_OVERLAY7: (# exit 0x00000080 #);
WGL_SWAP_OVERLAY8: (# exit 0x00000100 #);
WGL_SWAP_OVERLAY9: (# exit 0x00000200 #);
WGL_SWAP_OVERLAY10: (# exit 0x00000400 #);
WGL_SWAP_OVERLAY11: (# exit 0x00000800 #);
WGL_SWAP_OVERLAY12: (# exit 0x00001000 #);
WGL_SWAP_OVERLAY13: (# exit 0x00002000 #);
WGL_SWAP_OVERLAY14: (# exit 0x00004000 #);
WGL_SWAP_OVERLAY15: (# exit 0x00008000 #);
WGL_SWAP_UNDERLAY1: (# exit 0x00010000 #);
WGL_SWAP_UNDERLAY2: (# exit 0x00020000 #);
WGL_SWAP_UNDERLAY3: (# exit 0x00040000 #);
WGL_SWAP_UNDERLAY4: (# exit 0x00080000 #);
WGL_SWAP_UNDERLAY5: (# exit 0x00100000 #);
WGL_SWAP_UNDERLAY6: (# exit 0x00200000 #);
WGL_SWAP_UNDERLAY7: (# exit 0x00400000 #);
WGL_SWAP_UNDERLAY8: (# exit 0x00800000 #);
WGL_SWAP_UNDERLAY9: (# exit 0x01000000 #);
WGL_SWAP_UNDERLAY10: (# exit 0x02000000 #);
WGL_SWAP_UNDERLAY11: (# exit 0x04000000 #);
WGL_SWAP_UNDERLAY12: (# exit 0x08000000 #);
WGL_SWAP_UNDERLAY13: (# exit 0x10000000 #);
WGL_SWAP_UNDERLAY14: (# exit 0x20000000 #);
WGL_SWAP_UNDERLAY15: (# exit 0x40000000 #);

wglDescribeLayerPlane: external
  (# hdc, iPixelFormat, iLayerFormat, nbytes, plpd :@integer (* HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR *);
     result:@integer;
  enter (hdc, iPixelFormat, iLayerFormat, nbytes, plpd)
  do CallStd
  exit result
  #);
wglSetLayerPaletteEntries: external
  (# hdc,iLayerPlane,iStart,cEntries,pcr :@integer; (* HDC, int, int, int, CONST COLORREF *)
     result:@integer;
  enter (hdc,iLayerPlane,iStart,cEntries,pcr)
  do CallStd
  exit result
  #);
wglGetLayerPaletteEntries: external
  (# hdc,iLayerPlane,iStart,cEntries,pcr :@integer; (* HDC, int, int, int, COLORREF* *)
     result:@integer;
  enter (hdc,iLayerPlane,iStart,cEntries,pcr)
  do CallStd
  exit result
  #);
wglRealizeLayerPalette: external
  (# hdc,iLayerPlane,bRealize :@integer; (* HDC, int, BOOL *);
     result:@integer;
  enter (hdc,iLayerPlane,bRealize)
  do CallStd
  exit result
  #);

wglSwapLayerBuffers: external
  (# hdc,fuPlanes :@integer; (* HDC*, uint *)
     result:@integer;
  enter (hdc,fuPlanes)
  do CallStd
  exit result
  #);

(* utility functions in external/betaopengl.c *)
setPixelFormat:external
  (# hdc:@integer; (* HDC* *)
     result:@integer;
  enter hdc
  exit result
  #);
setPixelFormatOverlay:external
  (# hdc, type, flags, NumPaletteEntries, Palette:@integer; (* HDC*, BYTE, DWORD *)
     result:@integer;
  enter (hdc, type, flags, NumPaletteEntries, Palette)
  exit result
  #);

wglCopyContext:external
  (# source,dest,mask:@integer; (* HGLRC, HGLRC, UINT *)
  enter (source,dest,mask)
  #);


wglCreateContext:external
  (# hdc:@integer; (* HDC *)
     glrc:@integer; (* HGLRC *)
  enter hdc
  do CallStd
  exit glrc
  #);

wglCreateLayerContext:external
  (# hdc,iLayerPlane:@integer; (* HDC, int *)
     glrc:@integer; (* HGLRC *)
  enter (hdc,iLayerPlane)
  do CallStd
  exit glrc
  #);

wglDeleteContext:external
  (# hglrc:@integer; (*HGLRC *)
     result:@integer;
  enter hglrc
  do CallStd;
  exit result
  #);

wglGetCurrentContext:external
  (# hglrc:@integer;
  do CallStd;
  exit hglrc
  #);

wglGetCurrentDC:external
  (# hdc:@integer;
  do CallStd;
  exit hdc
  #);

(*
 * Do we need this ?
 *
 * wglGetProcAddress:external
 (# (LPCSTR);#);
 *)


wglMakeCurrent:external
  (# hdc,hglrc:@integer;(*HDC, HGLRC*)
     result:@integer;
  enter (hdc,hglrc)
  do CallStd;
  exit result
  #);

wglShareLists:external
  (# hglrc1,hglrc2:@integer; (*HGLRC, HGLRC*)
     result:@integer;
  enter (hglrc1,hglrc2)
  do CallStd;
  exit result
  #)


23.4 Wgl Interface
© 1994-2004 Mjølner Informatics
[Modified: Wednesday September 20th 2000 at 13:07]