From 501690edce2cecc356334fc42e7f429907cdfa1e Mon Sep 17 00:00:00 2001
From: Fabien Costantini
Date: Fri, 17 Oct 2008 11:08:15 +0000
Subject: Last test does keep history, lets add all related files and patch
them afterwards...
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6447 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
---
documentation/src_doc/glut.dox | 248 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 248 insertions(+)
create mode 100644 documentation/src_doc/glut.dox
(limited to 'documentation/src_doc/glut.dox')
diff --git a/documentation/src_doc/glut.dox b/documentation/src_doc/glut.dox
new file mode 100644
index 000000000..18d4f25bd
--- /dev/null
+++ b/documentation/src_doc/glut.dox
@@ -0,0 +1,248 @@
+/**
+
+ \page glut D - GLUT Compatibility
+
+This appendix describes the GLUT compatibility header file supplied with
+FLTK. FLTK's GLUT compatibility is based on the original GLUT 3.7 and
+the follow-on FreeGLUT 2.4.0 libraries.
+
+\section glut_using Using the GLUT Compatibility Header File
+
+You should be able to compile existing GLUT source code by including
+ instead of . This can be
+done by editing the source, by changing the -I switches to
+the compiler, or by providing a symbolic link from GL/glut.h
+to FL/glut.H.
+
+All files calling GLUT procedures must be compiled with C++. You
+may have to alter them slightly to get them to compile without warnings,
+and you may have to rename them to get make to use the C++ compiler.
+
+You must link with the FLTK library. Most of FL/glut.H
+is inline functions. You should take a look at it (and maybe at
+test/glpuzzle.cxx in the FLTK source) if you are having trouble
+porting your GLUT program.
+
+This has been tested with most of the demo programs that come with
+the GLUT and FreeGLUT distributions.
+
+\section glut_known_problems Known Problems
+
+The following functions and/or arguments to functions are missing,
+and you will have to replace them or comment them out for your code
+to compile:
+
+\li glutGet(GLUT_ELAPSED_TIME)
+\li glutGet(GLUT_SCREEN_HEIGHT_MM)
+\li glutGet(GLUT_SCREEN_WIDTH_MM)
+\li glutGet(GLUT_WINDOW_NUM_CHILDREN)
+\li glutInitDisplayMode(GLUT_LUMINANCE)
+\li glutLayerGet(GLUT_HAS_OVERLAY)
+\li glutLayerGet(GLUT_LAYER_IN_USE)
+\li glutPushWindow()
+\li glutSetColor(), glutGetColor(), glutCopyColormap()
+\li glutVideoResize() missing.
+\li glutWarpPointer()
+\li glutWindowStatusFunc()
+\li Spaceball, buttonbox, dials, and tablet functions
+
+Most of the symbols/enumerations have different values than GLUT uses.
+This will break code that relies on the actual values. The only
+symbols guaranteed to have the same values are true/false pairs like
+GLUT_DOWN and GLUT_UP, mouse buttons
+GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON, and
+GLUT_KEY_F1 thru F12.
+
+The strings passed as menu labels are not copied.
+
+glutPostRedisplay() does not work if called from inside a
+display function. You must use glutIdleFunc() if you want
+your display to update continuously.
+
+glutSwapBuffers() does not work from inside a display
+function. This is on purpose, because FLTK swaps the buffers for you.
+
+glutUseLayer() does not work well, and should only be used
+to initialize transformations inside a resize callback. You should
+redraw overlays by using glutOverlayDisplayFunc().
+
+Overlays are cleared before the overlay display function is called.
+glutLayerGet(GLUT_OVERLAY_DAMAGED) always returns true for
+compatibility with some GLUT overlay programs. You must rewrite your
+code so that gl_color() is used to choose colors in an
+overlay, or you will get random overlay colors.
+
+glutSetCursor(GLUT_CURSOR_FULL_CROSSHAIR) just results in a
+small crosshair.
+
+The fonts used by glutBitmapCharacter() and glutBitmapWidth()
+may be different.
+
+glutInit(argc,argv) will consume different switches than
+GLUT does. It accepts the switches recognized by
+Fl::args(), and will accept any abbreviation of these
+switches (such as "-di" for "-display").
+
+\section glut_mixing Mixing GLUT and FLTK Code
+
+You can make your GLUT window a child of a Fl_Window with the
+following scheme. The biggest trick is that GLUT insists on
+show()'ing the window at the point it is created, which means the
+Fl_Window parent window must already be shown.
+
+\li Don't call glutInit().
+\li Create your Fl_Window, and any FLTK widgets. Leave a
+ blank area in the window for your GLUT window.
+\li show() the Fl_Window. Perhaps call
+ show(argc,argv).
+\li Call window->begin() so that the GLUT window will be
+ automatically added to it.
+\li Use glutInitWindowSize() and glutInitWindowPosition()
+ to set the location in the parent window to put the GLUT window.
+\li Put your GLUT code next. It probably does not need many changes.
+ Call window->end() immediately after the
+ glutCreateWindow()!
+\li You can call either glutMainLoop(), Fl::run(),
+ or loop calling Fl::wait() to run the program.
+
+
+
+ \section glut_Fl_Glut_Window class Fl_Glut_Window
+\htmlonly
+
+
+\subsection glut_class_hierarchy Class Hierarchy
+
+\code
+Fl_Gl_Window
+ |
+ +----Fl_Glut_Window
+\endcode
+
+\subsection glut_include_files Include Files
+
+\code
+#include
+\endcode
+
+\subsection glut_description Description
+
+Each GLUT window is an instance of this class. You may find it useful
+to manipulate instances directly rather than use GLUT window id's.
+These may be created without opening the display, and thus can fit
+better into FLTK's method of creating windows.
+
+The current GLUT window is available in the global variable
+glut_window.
+
+new Fl_Glut_Window(...) is the same as
+glutCreateWindow() except it does not show() the window
+or make the window current.
+
+window->make_current() is the same as glutSetWindow(number).
+If the window has not had show() called on it yet, some functions
+that assumme an OpenGL context will not work.
+If you do show() the window, call make_current()
+again to set the context.
+
+~Fl_Glut_Window() is the same as glutDestroyWindow().
+
+\subsection glut_members Members
+
+The Fl_Glut_Window class contains several public members that can
+be altered directly:
+
+
+
+ | member |
+ description |
+
+
+ | display |
+ A pointer to the function to call to draw the normal planes. |
+
+
+ | entry |
+ A pointer to the function to call when the mouse moves into
+ or out of the window. |
+
+
+ | keyboard |
+ A pointer to the function to call when a regular key is pressed. |
+
+
+ | menu[3] |
+ The menu to post when one of the mouse buttons is pressed. |
+
+
+ | mouse |
+ A pointer to the function to call when a button is pressed or
+ released. |
+
+
+ | motion |
+ A pointer to the function to call when the mouse is moved with
+ a button down. |
+
+
+ | overlaydisplay |
+ A pointer to the function to call to draw the overlay planes. |
+
+
+ | passivemotion |
+ A pointer to the function to call when the mouse is moved with
+ no buttons down. |
+
+
+ | reshape |
+ A pointer to the function to call when the window is resized. |
+
+
+ | special |
+ A pointer to the function to call when a special key is pressed. |
+
+
+ | visibility |
+ A pointer to the function to call when the window is iconified
+ or restored (made visible.) |
+
+
+
+\subsection glut_methods Methods
+
+\li Fl_Glut_Window
+\li ~Fl_Glut_Window
+\li make_current
+
+
+Fl_Glut_Window::Fl_Glut_Window(int x, int y, int w, int h, const char
+*title = 0)
+Fl_Glut_Window::Fl_Glut_Window(int w, int h, const char *title = 0)
+
+\par
+The first constructor takes 4 int arguments to create the window with
+a preset position and size. The second constructor with 2 arguments
+will create the window with a preset size, but the window manager will
+choose the position according to it's own whims.
+
+
+virtual Fl_Glut_Window::~Fl_Glut_Window()
+
+\par
+Destroys the GLUT window.
+
+
+void Fl_Glut_Window::make_current()
+
+\par
+Switches all drawing functions to the GLUT window.
+
+
+[Index]
+[Previous]
+ \ref enumerations
+[Next]
+ \ref forms
+
+\endhtmlonly
+*/
--
cgit v1.2.3