diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-19 03:20:25 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-19 03:20:25 +0000 |
commit | 373b4b2caccd9b25a4ea48957ffe39633742e343 (patch) | |
tree | e0a50146a2e3ae6511a14b81c2b2bdf7a1553e70 /TAO/tests/FL_Cube/test_i.cpp | |
parent | 7cf699520dc88b1c7ccd891ff18d22214c29e10f (diff) | |
download | ATCD-373b4b2caccd9b25a4ea48957ffe39633742e343.tar.gz |
ChangeLogTag:Tue May 18 22:19:36 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/tests/FL_Cube/test_i.cpp')
-rw-r--r-- | TAO/tests/FL_Cube/test_i.cpp | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/TAO/tests/FL_Cube/test_i.cpp b/TAO/tests/FL_Cube/test_i.cpp new file mode 100644 index 00000000000..b6208c01cf9 --- /dev/null +++ b/TAO/tests/FL_Cube/test_i.cpp @@ -0,0 +1,181 @@ +// $Id$ + +#include "test_i.h" + +#if defined(ACE_HAS_FL) +#include <GL/gl.h> + +#if !defined(__ACE_INLINE__) +#include "test_i.i" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(FL_Cube, test_i, "$Id$") + +Simple_Server_i::Simple_Server_i (CORBA::ORB_ptr orb, + Simple_Window *window) + : orb_ (CORBA::ORB::_duplicate (orb)), + window_ (window) +{ + +} + +void +Simple_Server_i::set_x_angle (CORBA::Long x, CORBA::Environment&) +{ + this->window_->set_x_angle (x); +} + +void +Simple_Server_i::set_y_angle (CORBA::Long y, CORBA::Environment&) +{ + this->window_->set_y_angle (y); +} + +void +Simple_Server_i::shutdown (CORBA::Environment&) +{ + this->orb_->shutdown (0); +} + +// **************************************************************** + +Simple_Window::Simple_Window (int x, int y, + int w, int h, + const char* l) + : Fl_Gl_Window (x, y, w, h, l), + x_angle_ (0), + y_angle_ (0) +{ + 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 +Simple_Window::set_x_angle (CORBA::Long x) +{ + this->x_angle_ = x; + this->redraw (); +} + +void +Simple_Window::set_y_angle (CORBA::Long y) +{ + this->y_angle_ = y; + this->redraw (); +} + +void +Simple_Window::draw (void) +{ + // Based on the CubeView example in the FL toolkit. + + if (!this->valid()) + { + glLoadIdentity(); + glViewport(0, 0, this->w(), this->h()); + glOrtho(-2,2,-2,2,-20000,10000); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + glRotatef(this->x_angle_, 0, 1, 0); + glRotatef(this->y_angle_, 1, 0, 0); + + this->draw_cube (); + + glPopMatrix (); +} + +void +Simple_Window::draw_cube (void) +{ + const float ALPHA = 0.5; + + 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(); +} + +#endif /* ACE_HAS_FL */ |