glut.H 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. //
  2. // "$Id: glut.H 12151 2016-12-20 23:27:29Z greg.ercolano $"
  3. //
  4. // GLUT emulation header file for the Fast Light Tool Kit (FLTK).
  5. //
  6. // Copyright 1998-2015 by Bill Spitzak and others.
  7. //
  8. // This library is free software. Distribution and use rights are outlined in
  9. // the file "COPYING" which should have been included with this file. If this
  10. // file is missing or damaged, see the license at:
  11. //
  12. // http://www.fltk.org/COPYING.php
  13. //
  14. // Please report all bugs and problems on the following page:
  15. //
  16. // http://www.fltk.org/str.php
  17. //
  18. // Emulation of GLUT using fltk.
  19. // GLUT is Copyright (c) Mark J. Kilgard, 1994, 1995, 1996:
  20. // "This program is freely distributable without licensing fees and is
  21. // provided without guarantee or warrantee expressed or implied. This
  22. // program is -not- in the public domain."
  23. // Although I have copied the GLUT API, none of my code is based on
  24. // any GLUT implementation details and is therefore covered by the LGPL.
  25. // Commented out lines indicate parts of GLUT that are not emulated.
  26. #ifndef Fl_glut_H
  27. # define Fl_glut_H
  28. # include "gl.h"
  29. # include "Fl.H"
  30. # include "Fl_Gl_Window.H"
  31. /**
  32. GLUT is emulated using this window class and these static variables
  33. (plus several more static variables hidden in glut_compatibility.cxx):
  34. */
  35. class FL_EXPORT Fl_Glut_Window : public Fl_Gl_Window {
  36. void _init();
  37. int mouse_down;
  38. protected:
  39. void draw();
  40. void draw_overlay();
  41. int handle(int);
  42. public: // so the inline functions work
  43. int number;
  44. int menu[3];
  45. void make_current();
  46. void (*display)();
  47. void (*overlaydisplay)();
  48. void (*reshape)(int w, int h);
  49. void (*keyboard)(uchar, int x, int y);
  50. void (*mouse)(int b, int state, int x, int y);
  51. void (*motion)(int x, int y);
  52. void (*passivemotion)(int x, int y);
  53. void (*entry)(int);
  54. void (*visibility)(int);
  55. void (*special)(int, int x, int y);
  56. Fl_Glut_Window(int w, int h, const char *t=0);
  57. Fl_Glut_Window(int x, int y, int w, int h, const char *t=0);
  58. ~Fl_Glut_Window();
  59. };
  60. extern FL_EXPORT Fl_Glut_Window *glut_window; // the current window
  61. extern FL_EXPORT int glut_menu; // the current menu
  62. // function pointers that are not per-window:
  63. extern FL_EXPORT void (*glut_idle_function)();
  64. extern FL_EXPORT void (*glut_menustate_function)(int);
  65. extern FL_EXPORT void (*glut_menustatus_function)(int,int,int);
  66. ////////////////////////////////////////////////////////////////
  67. //# define GLUT_API_VERSION This does not match any version of GLUT exactly...
  68. FL_EXPORT void glutInit(int *argcp, char **argv); // creates first window
  69. FL_EXPORT void glutInitDisplayMode(unsigned int mode);
  70. // the FL_ symbols have the same value as the GLUT ones:
  71. # define GLUT_RGB FL_RGB
  72. # define GLUT_RGBA FL_RGB
  73. # define GLUT_INDEX FL_INDEX
  74. # define GLUT_SINGLE FL_SINGLE
  75. # define GLUT_DOUBLE FL_DOUBLE
  76. # define GLUT_ACCUM FL_ACCUM
  77. # define GLUT_ALPHA FL_ALPHA
  78. # define GLUT_DEPTH FL_DEPTH
  79. # define GLUT_STENCIL FL_STENCIL
  80. # define GLUT_MULTISAMPLE FL_MULTISAMPLE
  81. # define GLUT_STEREO FL_STEREO
  82. // # define GLUT_LUMINANCE 512
  83. FL_EXPORT void glutInitWindowPosition(int x, int y);
  84. FL_EXPORT void glutInitWindowSize(int w, int h);
  85. FL_EXPORT void glutMainLoop();
  86. FL_EXPORT int glutCreateWindow(char *title);
  87. FL_EXPORT int glutCreateWindow(const char *title);
  88. FL_EXPORT int glutCreateSubWindow(int win, int x, int y, int width, int height);
  89. FL_EXPORT void glutDestroyWindow(int win);
  90. inline void glutPostRedisplay() {glut_window->redraw();}
  91. FL_EXPORT void glutPostWindowRedisplay(int win);
  92. FL_EXPORT void glutSwapBuffers();
  93. inline int glutGetWindow() {return glut_window->number;}
  94. FL_EXPORT void glutSetWindow(int win);
  95. inline void glutSetWindowTitle(char *t) {glut_window->label(t);}
  96. inline void glutSetIconTitle(char *t) {glut_window->iconlabel(t);}
  97. inline void glutPositionWindow(int x, int y) {glut_window->position(x,y);}
  98. inline void glutReshapeWindow(int w, int h) {glut_window->size(w,h);}
  99. inline void glutPopWindow() {glut_window->show();}
  100. inline void glutPushWindow() { /* do nothing */ }
  101. inline void glutIconifyWindow() {glut_window->iconize();}
  102. inline void glutShowWindow() {glut_window->show();}
  103. inline void glutHideWindow() {glut_window->hide();}
  104. inline void glutFullScreen() {glut_window->fullscreen();}
  105. inline void glutSetCursor(Fl_Cursor cursor) {glut_window->cursor(cursor);}
  106. // notice that the numeric values are different than glut:
  107. # define GLUT_CURSOR_RIGHT_ARROW ((Fl_Cursor)2)
  108. # define GLUT_CURSOR_LEFT_ARROW ((Fl_Cursor)67)
  109. # define GLUT_CURSOR_INFO FL_CURSOR_HAND
  110. # define GLUT_CURSOR_DESTROY ((Fl_Cursor)45)
  111. # define GLUT_CURSOR_HELP FL_CURSOR_HELP
  112. # define GLUT_CURSOR_CYCLE ((Fl_Cursor)26)
  113. # define GLUT_CURSOR_SPRAY ((Fl_Cursor)63)
  114. # define GLUT_CURSOR_WAIT FL_CURSOR_WAIT
  115. # define GLUT_CURSOR_TEXT FL_CURSOR_INSERT
  116. # define GLUT_CURSOR_CROSSHAIR FL_CURSOR_CROSS
  117. # define GLUT_CURSOR_UP_DOWN FL_CURSOR_NS
  118. # define GLUT_CURSOR_LEFT_RIGHT FL_CURSOR_WE
  119. # define GLUT_CURSOR_TOP_SIDE FL_CURSOR_N
  120. # define GLUT_CURSOR_BOTTOM_SIDE FL_CURSOR_S
  121. # define GLUT_CURSOR_LEFT_SIDE FL_CURSOR_W
  122. # define GLUT_CURSOR_RIGHT_SIDE FL_CURSOR_E
  123. # define GLUT_CURSOR_TOP_LEFT_CORNER FL_CURSOR_NW
  124. # define GLUT_CURSOR_TOP_RIGHT_CORNER FL_CURSOR_NE
  125. # define GLUT_CURSOR_BOTTOM_RIGHT_CORNER FL_CURSOR_SE
  126. # define GLUT_CURSOR_BOTTOM_LEFT_CORNER FL_CURSOR_SW
  127. # define GLUT_CURSOR_INHERIT FL_CURSOR_DEFAULT
  128. # define GLUT_CURSOR_NONE FL_CURSOR_NONE
  129. # define GLUT_CURSOR_FULL_CROSSHAIR FL_CURSOR_CROSS
  130. inline void glutWarpPointer(int, int) { /* do nothing */ }
  131. inline void glutEstablishOverlay() {glut_window->make_overlay_current();}
  132. inline void glutRemoveOverlay() {glut_window->hide_overlay();}
  133. inline void glutUseLayer(GLenum layer) {
  134. layer ? glut_window->make_overlay_current() : glut_window->make_current();}
  135. enum {GLUT_NORMAL, GLUT_OVERLAY};
  136. inline void glutPostOverlayRedisplay() {glut_window->redraw_overlay();}
  137. inline void glutShowOverlay() {glut_window->redraw_overlay();}
  138. inline void glutHideOverlay() {glut_window->hide_overlay();}
  139. FL_EXPORT int glutCreateMenu(void (*)(int));
  140. FL_EXPORT void glutDestroyMenu(int menu);
  141. inline int glutGetMenu() {return glut_menu;}
  142. inline void glutSetMenu(int m) {glut_menu = m;}
  143. FL_EXPORT void glutAddMenuEntry(char *label, int value);
  144. FL_EXPORT void glutAddSubMenu(char *label, int submenu);
  145. FL_EXPORT void glutChangeToMenuEntry(int item, char *labela, int value);
  146. FL_EXPORT void glutChangeToSubMenu(int item, char *label, int submenu);
  147. FL_EXPORT void glutRemoveMenuItem(int item);
  148. inline void glutAttachMenu(int b) {glut_window->menu[b] = glut_menu;}
  149. inline void glutDetachMenu(int b) {glut_window->menu[b] = 0;}
  150. inline void glutDisplayFunc(void (*f)()) {glut_window->display = f;}
  151. inline void glutReshapeFunc(void (*f)(int w, int h)) {glut_window->reshape=f;}
  152. inline void glutKeyboardFunc(void (*f)(uchar key, int x, int y)) {
  153. glut_window->keyboard = f;}
  154. inline void glutMouseFunc(void (*f)(int b, int state, int x, int y)) {
  155. glut_window->mouse = f;}
  156. # define GLUT_LEFT_BUTTON 0
  157. # define GLUT_MIDDLE_BUTTON 1
  158. # define GLUT_RIGHT_BUTTON 2
  159. # define GLUT_DOWN 0
  160. # define GLUT_UP 1
  161. inline void glutMotionFunc(void (*f)(int x, int y)) {glut_window->motion= f;}
  162. inline void glutPassiveMotionFunc(void (*f)(int x, int y)) {
  163. glut_window->passivemotion= f;}
  164. inline void glutEntryFunc(void (*f)(int s)) {glut_window->entry = f;}
  165. enum {GLUT_LEFT, GLUT_ENTERED};
  166. inline void glutVisibilityFunc(void (*f)(int s)) {glut_window->visibility=f;}
  167. enum {GLUT_NOT_VISIBLE, GLUT_VISIBLE};
  168. FL_EXPORT void glutIdleFunc(void (*f)());
  169. inline void glutTimerFunc(unsigned int msec, void (*f)(int), int value) {
  170. Fl::add_timeout(msec*.001, (void (*)(void *))f, (void *)(fl_intptr_t)value);
  171. }
  172. inline void glutMenuStateFunc(void (*f)(int state)) {
  173. glut_menustate_function = f;}
  174. inline void glutMenuStatusFunc(void (*f)(int status, int x, int y)) {
  175. glut_menustatus_function = f;}
  176. enum {GLUT_MENU_NOT_IN_USE, GLUT_MENU_IN_USE};
  177. inline void glutSpecialFunc(void (*f)(int key, int x, int y)) {
  178. glut_window->special = f;}
  179. # define GLUT_KEY_F1 1
  180. # define GLUT_KEY_F2 2
  181. # define GLUT_KEY_F3 3
  182. # define GLUT_KEY_F4 4
  183. # define GLUT_KEY_F5 5
  184. # define GLUT_KEY_F6 6
  185. # define GLUT_KEY_F7 7
  186. # define GLUT_KEY_F8 8
  187. # define GLUT_KEY_F9 9
  188. # define GLUT_KEY_F10 10
  189. # define GLUT_KEY_F11 11
  190. # define GLUT_KEY_F12 12
  191. // WARNING: Different values than GLUT uses:
  192. # define GLUT_KEY_LEFT FL_Left
  193. # define GLUT_KEY_UP FL_Up
  194. # define GLUT_KEY_RIGHT FL_Right
  195. # define GLUT_KEY_DOWN FL_Down
  196. # define GLUT_KEY_PAGE_UP FL_Page_Up
  197. # define GLUT_KEY_PAGE_DOWN FL_Page_Down
  198. # define GLUT_KEY_HOME FL_Home
  199. # define GLUT_KEY_END FL_End
  200. # define GLUT_KEY_INSERT FL_Insert
  201. //inline void glutSpaceballMotionFunc(void (*)(int x, int y, int z));
  202. //inline void glutSpaceballRotateFunc(void (*)(int x, int y, int z));
  203. //inline void glutSpaceballButtonFunc(void (*)(int button, int state));
  204. //inline void glutButtonBoxFunc(void (*)(int button, int state));
  205. //inline void glutDialsFunc(void (*)(int dial, int value));
  206. //inline void glutTabletMotionFunc(void (*)(int x, int y));
  207. //inline void glutTabletButtonFunc(void (*)(int button, int state, int x, int y));
  208. inline void glutOverlayDisplayFunc(void (*f)()) {
  209. glut_window->overlaydisplay = f;}
  210. //inline void glutWindowStatusFunc(void (*)(int state));
  211. //enum {GLUT_HIDDEN, GLUT_FULLY_RETAINED, GLUT_PARTIALLY_RETAINED,
  212. // GLUT_FULLY_COVERED};
  213. //inline void glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
  214. //inline GLfloat glutGetColor(int ndx, int component);
  215. //#define GLUT_RED 0
  216. //#define GLUT_GREEN 1
  217. //#define GLUT_BLUE 2
  218. //inline void glutCopyColormap(int win);
  219. // Warning: values are changed from GLUT!
  220. // Also relies on the GL_ symbols having values greater than 100
  221. FL_EXPORT int glutGet(GLenum type);
  222. enum {
  223. GLUT_RETURN_ZERO = 0,
  224. GLUT_WINDOW_X,
  225. GLUT_WINDOW_Y,
  226. GLUT_WINDOW_WIDTH,
  227. GLUT_WINDOW_HEIGHT,
  228. GLUT_WINDOW_PARENT,
  229. GLUT_SCREEN_WIDTH,
  230. GLUT_SCREEN_HEIGHT,
  231. GLUT_MENU_NUM_ITEMS,
  232. GLUT_DISPLAY_MODE_POSSIBLE,
  233. GLUT_INIT_WINDOW_X,
  234. GLUT_INIT_WINDOW_Y,
  235. GLUT_INIT_WINDOW_WIDTH,
  236. GLUT_INIT_WINDOW_HEIGHT,
  237. GLUT_INIT_DISPLAY_MODE,
  238. GLUT_WINDOW_BUFFER_SIZE,
  239. GLUT_VERSION
  240. //GLUT_WINDOW_NUM_CHILDREN,
  241. //GLUT_WINDOW_CURSOR,
  242. //GLUT_SCREEN_WIDTH_MM,
  243. //GLUT_SCREEN_HEIGHT_MM,
  244. //GLUT_ELAPSED_TIME,
  245. };
  246. # define GLUT_WINDOW_STENCIL_SIZE GL_STENCIL_BITS
  247. # define GLUT_WINDOW_DEPTH_SIZE GL_DEPTH_BITS
  248. # define GLUT_WINDOW_RED_SIZE GL_RED_BITS
  249. # define GLUT_WINDOW_GREEN_SIZE GL_GREEN_BITS
  250. # define GLUT_WINDOW_BLUE_SIZE GL_BLUE_BITS
  251. # define GLUT_WINDOW_ALPHA_SIZE GL_ALPHA_BITS
  252. # define GLUT_WINDOW_ACCUM_RED_SIZE GL_ACCUM_RED_BITS
  253. # define GLUT_WINDOW_ACCUM_GREEN_SIZE GL_ACCUM_GREEN_BITS
  254. # define GLUT_WINDOW_ACCUM_BLUE_SIZE GL_ACCUM_BLUE_BITS
  255. # define GLUT_WINDOW_ACCUM_ALPHA_SIZE GL_ACCUM_ALPHA_BITS
  256. # define GLUT_WINDOW_DOUBLEBUFFER GL_DOUBLEBUFFER
  257. # define GLUT_WINDOW_RGBA GL_RGBA
  258. # define GLUT_WINDOW_COLORMAP_SIZE GL_INDEX_BITS
  259. # ifdef GL_SAMPLES_SGIS
  260. # define GLUT_WINDOW_NUM_SAMPLES GL_SAMPLES_SGIS
  261. # else
  262. # define GLUT_WINDOW_NUM_SAMPLES GLUT_RETURN_ZERO
  263. # endif
  264. # define GLUT_WINDOW_STEREO GL_STEREO
  265. # define GLUT_HAS_KEYBOARD 600
  266. # define GLUT_HAS_MOUSE 601
  267. # define GLUT_HAS_SPACEBALL 602
  268. # define GLUT_HAS_DIAL_AND_BUTTON_BOX 603
  269. # define GLUT_HAS_TABLET 604
  270. # define GLUT_NUM_MOUSE_BUTTONS 605
  271. # define GLUT_NUM_SPACEBALL_BUTTONS 606
  272. # define GLUT_NUM_BUTTON_BOX_BUTTONS 607
  273. # define GLUT_NUM_DIALS 608
  274. # define GLUT_NUM_TABLET_BUTTONS 609
  275. FL_EXPORT int glutDeviceGet(GLenum type);
  276. // WARNING: these values are different than GLUT uses:
  277. # define GLUT_ACTIVE_SHIFT FL_SHIFT
  278. # define GLUT_ACTIVE_CTRL FL_CTRL
  279. # define GLUT_ACTIVE_ALT FL_ALT
  280. inline int glutGetModifiers() {return Fl::event_state() & (GLUT_ACTIVE_SHIFT | GLUT_ACTIVE_CTRL | GLUT_ACTIVE_ALT);}
  281. FL_EXPORT int glutLayerGet(GLenum);
  282. # define GLUT_OVERLAY_POSSIBLE 800
  283. //#define GLUT_LAYER_IN_USE 801
  284. //#define GLUT_HAS_OVERLAY 802
  285. # define GLUT_TRANSPARENT_INDEX 803
  286. # define GLUT_NORMAL_DAMAGED 804
  287. # define GLUT_OVERLAY_DAMAGED 805
  288. extern "C" {
  289. typedef void (*GLUTproc)();
  290. }
  291. FL_EXPORT GLUTproc glutGetProcAddress(const char *procName);
  292. //inline int glutVideoResizeGet(GLenum param);
  293. //#define GLUT_VIDEO_RESIZE_POSSIBLE 900
  294. //#define GLUT_VIDEO_RESIZE_IN_USE 901
  295. //#define GLUT_VIDEO_RESIZE_X_DELTA 902
  296. //#define GLUT_VIDEO_RESIZE_Y_DELTA 903
  297. //#define GLUT_VIDEO_RESIZE_WIDTH_DELTA 904
  298. //#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 905
  299. //#define GLUT_VIDEO_RESIZE_X 906
  300. //#define GLUT_VIDEO_RESIZE_Y 907
  301. //#define GLUT_VIDEO_RESIZE_WIDTH 908
  302. //#define GLUT_VIDEO_RESIZE_HEIGHT 909
  303. //inline void glutSetupVideoResizing();
  304. //inline void glutStopVideoResizing();
  305. //inline void glutVideoResize(int x, int y, int width, int height);
  306. //inline void glutVideoPan(int x, int y, int width, int height);
  307. // Font argument must be a void* for compatibility, so...
  308. /** fltk glut font/size attributes used in the glutXXX functions */
  309. struct Fl_Glut_Bitmap_Font {Fl_Font font; Fl_Fontsize size;};
  310. extern FL_EXPORT struct Fl_Glut_Bitmap_Font
  311. glutBitmap9By15, glutBitmap8By13, glutBitmapTimesRoman10,
  312. glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12,
  313. glutBitmapHelvetica18;
  314. # define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15)
  315. # define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13)
  316. # define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10)
  317. # define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24)
  318. # define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10)
  319. # define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12)
  320. # define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18)
  321. FL_EXPORT void glutBitmapCharacter(void *font, int character);
  322. FL_EXPORT int glutBitmapHeight(void *font);
  323. FL_EXPORT int glutBitmapLength(void *font, const unsigned char *string);
  324. FL_EXPORT void glutBitmapString(void *font, const unsigned char *string);
  325. FL_EXPORT int glutBitmapWidth(void *font, int character);
  326. FL_EXPORT int glutExtensionSupported(char *name);
  327. /* GLUT stroked font sub-API */
  328. struct Fl_Glut_StrokeVertex {
  329. GLfloat X, Y;
  330. };
  331. struct Fl_Glut_StrokeStrip {
  332. int Number;
  333. const Fl_Glut_StrokeVertex* Vertices;
  334. };
  335. struct Fl_Glut_StrokeChar {
  336. GLfloat Right;
  337. int Number;
  338. const Fl_Glut_StrokeStrip* Strips;
  339. };
  340. struct Fl_Glut_StrokeFont {
  341. char* Name; // The source font name
  342. int Quantity; // Number of chars in font
  343. GLfloat Height; // Height of the characters
  344. const Fl_Glut_StrokeChar** Characters;// The characters mapping
  345. };
  346. extern FL_EXPORT Fl_Glut_StrokeFont glutStrokeRoman;
  347. extern FL_EXPORT Fl_Glut_StrokeFont glutStrokeMonoRoman;
  348. # define GLUT_STROKE_ROMAN (&glutStrokeRoman)
  349. # define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman)
  350. FL_EXPORT void glutStrokeCharacter(void *font, int character);
  351. FL_EXPORT GLfloat glutStrokeHeight(void *font);
  352. FL_EXPORT int glutStrokeLength(void *font, const unsigned char *string);
  353. FL_EXPORT void glutStrokeString(void *font, const unsigned char *string);
  354. FL_EXPORT int glutStrokeWidth(void *font, int character);
  355. /* GLUT pre-built models sub-API */
  356. FL_EXPORT void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
  357. FL_EXPORT void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
  358. FL_EXPORT void glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
  359. FL_EXPORT void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
  360. FL_EXPORT void glutWireCube(GLdouble size);
  361. FL_EXPORT void glutSolidCube(GLdouble size);
  362. FL_EXPORT void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
  363. FL_EXPORT void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
  364. FL_EXPORT void glutWireDodecahedron();
  365. FL_EXPORT void glutSolidDodecahedron();
  366. FL_EXPORT void glutWireTeapot(GLdouble size);
  367. FL_EXPORT void glutSolidTeapot(GLdouble size);
  368. FL_EXPORT void glutWireOctahedron();
  369. FL_EXPORT void glutSolidOctahedron();
  370. FL_EXPORT void glutWireTetrahedron();
  371. FL_EXPORT void glutSolidTetrahedron();
  372. FL_EXPORT void glutWireIcosahedron();
  373. FL_EXPORT void glutSolidIcosahedron();
  374. #endif // !Fl_glut_H
  375. //
  376. // End of "$Id: glut.H 12151 2016-12-20 23:27:29Z greg.ercolano $".
  377. //