gtkglarea.pp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. {
  2. $Id$
  3. Translation of the gtkglarea 4 headers for Free Pascal
  4. Copyright (C) 2000 Sebastian Guenther
  5. Copyright notice of gtkglarea:
  6. * Copyright (C) 1997-1998 Janne Löf <[email protected]>
  7. *
  8. * This library is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU Library General Public
  10. * License as published by the Free Software Foundation; either
  11. * version 2 of the License, or (at your option) any later version.
  12. *
  13. * This library is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. * Library General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Library General Public
  19. * License along with this library; if not, write to the Free
  20. * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21. }
  22. unit gtkglarea;
  23. {$MODE objfpc}
  24. {$PACKRECORDS C}
  25. {$LINKLIB GL}
  26. interface
  27. uses GDK, GTK;
  28. const
  29. libgtkgl = 'gtkgl';
  30. // ===================================================================
  31. // gdkgl
  32. // ===================================================================
  33. {
  34. These definitions are duplicated from GL/glx.h that comes with Mesa.
  35. I don't want every program to include GL/glx.h, that might become
  36. problem if GtkGLArea is ever ported to non X environments like
  37. (horror!) Windows.
  38. }
  39. // enum _GDK_GL_CONFIGS
  40. GDK_GL_NONE = 0;
  41. GDK_GL_USE_GL = 1;
  42. GDK_GL_BUFFER_SIZE = 2;
  43. GDK_GL_LEVEL = 3;
  44. GDK_GL_RGBA = 4;
  45. GDK_GL_DOUBLEBUFFER = 5;
  46. GDK_GL_STEREO = 6;
  47. GDK_GL_AUX_BUFFERS = 7;
  48. GDK_GL_RED_SIZE = 8;
  49. GDK_GL_GREEN_SIZE = 9;
  50. GDK_GL_BLUE_SIZE = 10;
  51. GDK_GL_ALPHA_SIZE = 11;
  52. GDK_GL_DEPTH_SIZE = 12;
  53. GDK_GL_STENCIL_SIZE = 13;
  54. GDK_GL_ACCUM_RED_SIZE = 14;
  55. GDK_GL_ACCUM_GREEN_SIZE = 15;
  56. GDK_GL_ACCUM_BLUE_SIZE = 16;
  57. GDK_GL_ACCUM_ALPHA_SIZE = 17;
  58. // GLX_EXT_visual_info extension
  59. GDK_GL_X_VISUAL_TYPE_EXT = $22;
  60. GDK_GL_TRANSPARENT_TYPE_EXT = $23;
  61. GDK_GL_TRANSPARENT_INDEX_VALUE_EXT = $24;
  62. GDK_GL_TRANSPARENT_RED_VALUE_EXT = $25;
  63. GDK_GL_TRANSPARENT_GREEN_VALUE_EXT = $26;
  64. GDK_GL_TRANSPARENT_BLUE_VALUE_EXT = $27;
  65. GDK_GL_TRANSPARENT_ALPHA_VALUE_EXT = $28;
  66. type
  67. TGdkGLContext = record end;
  68. PGdkGLContext = ^TGdkGLContext;
  69. function gdk_gl_query: Integer; cdecl; external libgtkgl;
  70. function gdk_gl_choose_visual(attrList: PInteger): PGdkVisual; cdecl; external libgtkgl;
  71. function gdk_gl_get_config(visual: PGdkVisual; attrib: Integer): Integer; cdecl; external libgtkgl;
  72. function gdk_gl_context_new(visual: PGdkVisual): PGdkGLContext; cdecl; external libgtkgl;
  73. function gdk_gl_context_share_new(visual: PGdkVisual; sharelist: PGdkGLContext; direct: Integer): PGdkGLContext; cdecl; external libgtkgl;
  74. function gdk_gl_context_ref(context: PGdkGLContext): PGdkGLContext; cdecl; external libgtkgl;
  75. procedure gdk_gl_context_unref(context: PGdkGLContext); cdecl; external libgtkgl;
  76. function gdk_gl_make_current(drawable: PGdkDrawable; context: PGdkGLContext): Integer; cdecl; external libgtkgl;
  77. procedure gdk_gl_swap_buffers(drawable: PGdkDrawable); cdecl; external libgtkgl;
  78. procedure gdk_gl_wait_gdk; cdecl; external libgtkgl;
  79. procedure gdk_gl_wait_gl; cdecl; external libgtkgl;
  80. // glpixmap stuff
  81. type
  82. TGdkGLPixmap = record end;
  83. PGdkGLPixmap = ^TGdkGLPixmap;
  84. function gdk_gl_pixmap_new(visual: PGdkVisual; pixmap: PGdkPixmap): PGdkGLPixmap; cdecl; external libgtkgl;
  85. function gdk_gl_pixmap_ref(glpixmap: PGdkGLPixmap): PGdkGLPixmap; cdecl; external libgtkgl;
  86. procedure gdk_gl_pixmap_unref(glpixmap: PGdkGLPixmap); cdecl; external libgtkgl;
  87. function gdk_gl_pixmap_make_current(glpixmap: PGdkGLPixmap; context: PGdkGLContext): Integer; cdecl; external libgtkgl;
  88. // fonts
  89. procedure gdk_gl_use_gdk_font(font: PGdkFont; first, count, list_base: Integer); cdecl; external libgtkgl;
  90. // ===================================================================
  91. // gtkglarea
  92. // ===================================================================
  93. type
  94. PGtkGLArea = ^TGtkGLArea;
  95. TGtkGLArea = record
  96. darea: TGtkDrawingArea;
  97. glcontext: PGdkGLContext;
  98. end;
  99. PGtkGLAreaClass = ^TGtkGLAreaClass;
  100. TGtkGLAreaClass = record
  101. parent_class: TGtkDrawingAreaClass;
  102. end;
  103. function GTK_TYPE_GL_AREA: TGtkType; cdecl; external libgtkgl name 'gtk_gl_area_get_type';
  104. function GTK_IS_GL_AREA(obj: Pointer): Boolean;
  105. function GTK_IS_GL_AREA_CLASS(klass: Pointer): Boolean;
  106. function gtk_gl_area_get_type: TGtkType; cdecl; external libgtkgl;
  107. function gtk_gl_area_new(attrList: PInteger): PGtkWidget; cdecl; external libgtkgl;
  108. function gtk_gl_area_share_new(attrList: PInteger; share: PGtkGLArea): PGtkWidget; cdecl; external libgtkgl;
  109. function gtk_gl_area_new_vargs(share: PGtkGLArea; args: array of const): PGtkWidget; cdecl; external libgtkgl;
  110. function gtk_gl_area_make_current(glarea: PGtkGLArea): Integer; cdecl; external libgtkgl;
  111. // deprecated, use gtk_gl_area_make_current:
  112. function gtk_gl_area_begingl(glarea: PGtkGLArea): Integer; cdecl; external libgtkgl;
  113. // deprecated:
  114. procedure gtk_gl_area_endgl(glarea: PGtkGLArea); cdecl; external libgtkgl;
  115. procedure gtk_gl_area_swapbuffers(glarea: PGtkGLArea); cdecl; external libgtkgl;
  116. // deprecated, use gtk_drawing_area_size():
  117. procedure gtk_gl_area_size(glarea: PGtkGLArea; width, height: Integer); cdecl; external libgtkgl;
  118. implementation
  119. function GTK_IS_GL_AREA(obj: Pointer): Boolean;
  120. begin
  121. Result := Assigned(obj) and GTK_IS_GL_AREA_CLASS(PGtkTypeObject(obj)^.klass);
  122. end;
  123. function GTK_IS_GL_AREA_CLASS(klass: Pointer): Boolean;
  124. begin
  125. Result := Assigned(klass) and (PGtkTypeClass(klass)^.thetype = GTK_TYPE_GL_AREA);
  126. end;
  127. end.
  128. {
  129. $Log$
  130. Revision 1.2 2000-07-13 11:33:30 michael
  131. + removed logs
  132. }