diff options
Diffstat (limited to 'documentation')
| -rw-r--r-- | documentation/src/fluid.dox | 355 |
1 files changed, 195 insertions, 160 deletions
diff --git a/documentation/src/fluid.dox b/documentation/src/fluid.dox index 166685fc1..bad962d70 100644 --- a/documentation/src/fluid.dox +++ b/documentation/src/fluid.dox @@ -211,187 +211,222 @@ CubeViewUI, generated by FLUID. Here is the CubeView class definition, as given by its header file "test/CubeView.h": +<br> +<!-- Code copied from test/CubeView.h --> \code +#include <FL/Fl.H> +#include <FL/Fl_Gl_Window.H> +#include <FL/gl.h> + class CubeView : public Fl_Gl_Window { - public: - CubeView(int x,int y,int w,int h,const char *l=0); - // this value determines the scaling factor used to draw the cube. - double size; - /* Set the rotation about the vertical (y) axis. - * - * This function is called by the horizontal roller in CubeViewUI - * and the initialize button in CubeViewUI. - */ - void v_angle(float angle){vAng=angle;}; - // Return the rotation about the vertical (y) axis. - float v_angle(){return vAng;}; - /* Set the rotation about the horizontal (x) axis. - * - * This function is called by the vertical roller in CubeViewUI - * and the initialize button in CubeViewUI. - */ - void h_angle(float angle){hAng=angle;}; - // the rotation about the horizontal (x) axis. - float h_angle(){return hAng;}; - /* Sets the x shift of the cube view camera. - * - * This function is called by the slider in CubeViewUI and the - * initialize button in CubeViewUI. - */ - void panx(float x){xshift=x;}; - /* Sets the y shift of the cube view camera. - * - * This function is called by the slider in CubeViewUI and the - * initialize button in CubeViewUI. - */ - void pany(float y){yshift=y;}; - /* The widget class draw() override. - * The draw() function initialize Gl for another round of - * drawing then calls specialized functions for drawing each - * of the entities displayed in the cube view. - */ - void draw(); - - private: - /* Draw the cube boundaries - * Draw the faces of the cube using the boxv[] vertices, using - * GL_LINE_LOOP for the faces. The color is #defined by - * CUBECOLOR. - */ - void drawCube(); - - float vAng,hAng; float xshift,yshift; - - float boxv0[3];float boxv1[3]; float boxv2[3];float boxv3[3]; - float boxv4[3];float boxv5[3]; float boxv6[3];float boxv7[3]; + +public: + CubeView(int x, int y, int w, int h, const char *l = 0); + + // This value determines the scaling factor used to draw the cube. + double size; + + /* Set the rotation about the vertical (y) axis. + * + * This function is called by the horizontal roller in + * CubeViewUI and the initialize button in CubeViewUI. + */ + void v_angle(double angle) { vAng = angle; } + + // Return the rotation about the vertical (y) axis. + double v_angle() const { return vAng; } + + /* Set the rotation about the horizontal (x) axis. + * + * This function is called by the vertical roller in + * CubeViewUI and the initialize button in CubeViewUI. + */ + + void h_angle(double angle) { hAng = angle; } + + // The rotation about the horizontal (x) axis. + double h_angle() const { return hAng; } + + /* Sets the x shift of the cube view camera. + * + * This function is called by the slider in CubeViewUI + * and the initialize button in CubeViewUI. + */ + void panx(double x) { xshift = x; } + + /* Sets the y shift of the cube view camera. + * + * This function is called by the slider in CubeViewUI + * and the initialize button in CubeViewUI. + */ + void pany(double y) { yshift = y; } + + /* The widget class draw() override. + * + * The draw() function initializes Gl for another round of + * drawing, then calls specialized functions for drawing each + * of the entities displayed in the cube view. + */ + void draw(); + +private: + /* Draw the cube boundaries. + * + * Draw the faces of the cube using the boxv[] vertices, + * using GL_LINE_LOOP for the faces. + */ + void drawCube(); + + double vAng, hAng; + double xshift, yshift; + + float boxv0[3]; float boxv1[3]; + float boxv2[3]; float boxv3[3]; + float boxv4[3]; float boxv5[3]; + float boxv6[3]; float boxv7[3]; }; \endcode \par The CubeView Class Implementation Here is the CubeView implementation. It is very similar to the -"cube" demo included with FLTK. +"CubeView" demo included with FLTK. +<br> +<!-- Code copied from test/CubeView.cxx --> \code #include "CubeView.h" #include <math.h> -CubeView::CubeView(int x,int y,int w,int h,const char *l) - : Fl_Gl_Window(x,y,w,h,l) +CubeView::CubeView(int x, int y, int w, int h, const char *l) + : Fl_Gl_Window(x, y, w, h, l) { - vAng = 0.0; hAng=0.0; size=10.0; - /* The cube definition. These are the vertices of a unit cube - * centered on the origin.*/ - boxv0[0] = -0.5; boxv0[1] = -0.5; boxv0[2] = -0.5; - boxv1[0] = 0.5; boxv1[1] = -0.5; boxv1[2] = -0.5; - boxv2[0] = 0.5; boxv2[1] = 0.5; boxv2[2] = -0.5; - boxv3[0] = -0.5; boxv3[1] = 0.5; boxv3[2] = -0.5; - boxv4[0] = -0.5; boxv4[1] = -0.5; boxv4[2] = 0.5; - boxv5[0] = 0.5; boxv5[1] = -0.5; boxv5[2] = 0.5; - boxv6[0] = 0.5; boxv6[1] = 0.5; boxv6[2] = 0.5; - boxv7[0] = -0.5; boxv7[1] = 0.5; boxv7[2] = 0.5; -}; - -// The color used for the edges of the bounding cube. -#define CUBECOLOR 255,255,255,255 + Fl::use_high_res_GL(1); + vAng = 0.0; + hAng = 0.0; + size = 10.0; + xshift = 0.0; + yshift = 0.0; + + /* The cube definition. These are the vertices of a unit cube + * centered on the origin.*/ + + boxv0[0] = -0.5; boxv0[1] = -0.5; boxv0[2] = -0.5; + boxv1[0] = 0.5; boxv1[1] = -0.5; boxv1[2] = -0.5; + boxv2[0] = 0.5; boxv2[1] = 0.5; boxv2[2] = -0.5; + boxv3[0] = -0.5; boxv3[1] = 0.5; boxv3[2] = -0.5; + boxv4[0] = -0.5; boxv4[1] = -0.5; boxv4[2] = 0.5; + boxv5[0] = 0.5; boxv5[1] = -0.5; boxv5[2] = 0.5; + boxv6[0] = 0.5; boxv6[1] = 0.5; boxv6[2] = 0.5; + boxv7[0] = -0.5; boxv7[1] = 0.5; boxv7[2] = 0.5; +} void CubeView::drawCube() { /* Draw a colored cube */ #define ALPHA 0.5 - glShadeModel(GL_FLAT); - - glBegin(GL_QUADS); - glColor4f(0.0, 0.0, 1.0, ALPHA); - glVertex3fv(boxv0); - glVertex3fv(boxv1); - glVertex3fv(boxv2); - glVertex3fv(boxv3); - - glColor4f(1.0, 1.0, 0.0, ALPHA); - glVertex3fv(boxv0); - glVertex3fv(boxv4); - glVertex3fv(boxv5); - glVertex3fv(boxv1); - - glColor4f(0.0, 1.0, 1.0, ALPHA); - glVertex3fv(boxv2); - glVertex3fv(boxv6); - glVertex3fv(boxv7); - glVertex3fv(boxv3); - - glColor4f(1.0, 0.0, 0.0, ALPHA); - glVertex3fv(boxv4); - glVertex3fv(boxv5); - glVertex3fv(boxv6); - glVertex3fv(boxv7); - - glColor4f(1.0, 0.0, 1.0, ALPHA); - glVertex3fv(boxv0); - glVertex3fv(boxv3); - glVertex3fv(boxv7); - glVertex3fv(boxv4); - - glColor4f(0.0, 1.0, 0.0, ALPHA); - glVertex3fv(boxv1); - glVertex3fv(boxv5); - glVertex3fv(boxv6); - glVertex3fv(boxv2); - glEnd(); - - glColor3f(1.0, 1.0, 1.0); - glBegin(GL_LINES); - glVertex3fv(boxv0); - glVertex3fv(boxv1); - - glVertex3fv(boxv1); - glVertex3fv(boxv2); - - glVertex3fv(boxv2); - glVertex3fv(boxv3); - - glVertex3fv(boxv3); - glVertex3fv(boxv0); - - glVertex3fv(boxv4); - glVertex3fv(boxv5); - - glVertex3fv(boxv5); - glVertex3fv(boxv6); - - glVertex3fv(boxv6); - glVertex3fv(boxv7); - - glVertex3fv(boxv7); - glVertex3fv(boxv4); - - glVertex3fv(boxv0); - glVertex3fv(boxv4); - - glVertex3fv(boxv1); - glVertex3fv(boxv5); - - glVertex3fv(boxv2); - glVertex3fv(boxv6); - - glVertex3fv(boxv3); - glVertex3fv(boxv7); - glEnd(); -};//drawCube + glShadeModel(GL_FLAT); + + glBegin(GL_QUADS); + glColor4f(0.0, 0.0, 1.0, ALPHA); + glVertex3fv(boxv0); + glVertex3fv(boxv1); + glVertex3fv(boxv2); + glVertex3fv(boxv3); + + glColor4f(1.0, 1.0, 0.0, ALPHA); + glVertex3fv(boxv0); + glVertex3fv(boxv4); + glVertex3fv(boxv5); + glVertex3fv(boxv1); + + glColor4f(0.0, 1.0, 1.0, ALPHA); + glVertex3fv(boxv2); + glVertex3fv(boxv6); + glVertex3fv(boxv7); + glVertex3fv(boxv3); + + glColor4f(1.0, 0.0, 0.0, ALPHA); + glVertex3fv(boxv4); + glVertex3fv(boxv5); + glVertex3fv(boxv6); + glVertex3fv(boxv7); + + glColor4f(1.0, 0.0, 1.0, ALPHA); + glVertex3fv(boxv0); + glVertex3fv(boxv3); + glVertex3fv(boxv7); + glVertex3fv(boxv4); + + glColor4f(0.0, 1.0, 0.0, ALPHA); + glVertex3fv(boxv1); + glVertex3fv(boxv5); + glVertex3fv(boxv6); + glVertex3fv(boxv2); + glEnd(); + + glColor3f(1.0, 1.0, 1.0); + glBegin(GL_LINES); + glVertex3fv(boxv0); + glVertex3fv(boxv1); + + glVertex3fv(boxv1); + glVertex3fv(boxv2); + + glVertex3fv(boxv2); + glVertex3fv(boxv3); + + glVertex3fv(boxv3); + glVertex3fv(boxv0); + + glVertex3fv(boxv4); + glVertex3fv(boxv5); + + glVertex3fv(boxv5); + glVertex3fv(boxv6); + + glVertex3fv(boxv6); + glVertex3fv(boxv7); + + glVertex3fv(boxv7); + glVertex3fv(boxv4); + + glVertex3fv(boxv0); + glVertex3fv(boxv4); + + glVertex3fv(boxv1); + glVertex3fv(boxv5); + + glVertex3fv(boxv2); + glVertex3fv(boxv6); + + glVertex3fv(boxv3); + glVertex3fv(boxv7); + glEnd(); +} // drawCube void CubeView::draw() { - if (!valid()) { - glLoadIdentity(); glViewport(0,0,w(),h()); - glOrtho(-10,10,-10,10,-20000,10000); glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix(); glTranslatef(xshift, yshift, 0); - glRotatef(hAng,0,1,0); glRotatef(vAng,1,0,0); - glScalef(float(size),float(size),float(size)); drawCube(); - glPopMatrix(); -}; + if (!valid()) { + glLoadIdentity(); + glViewport(0, 0, pixel_w(), pixel_h()); + glOrtho(-10, 10, -10, 10, -20050, 10000); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + glTranslatef((GLfloat)xshift, (GLfloat)yshift, 0); + glRotatef((GLfloat)hAng, 0, 1, 0); + glRotatef((GLfloat)vAng, 1, 0, 0); + glScalef(float(size), float(size), float(size)); + + drawCube(); + + glPopMatrix(); +} \endcode \subsection fluid_cubeview_ui The CubeViewUI Class |
