Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
915 lines (803 sloc) 34.3 KB
2009-07-17T21:59 Sam Hocevar <>
* gtkglarea/gtkglarea-sharp.metadata: mark GLArea.Begingl() and
GLArea.Endgl() as hidden so that they do not appear in the API. These
functions have been deprecated for 10 years now.
2009-07-17T21:37 Sam Hocevar <>
* gtkglarea/gtkglarea-sharp.metadata: mark GLArea.Size() as new in
order to override GtkDrawingArea.Size().
2009-07-17T02:14 Sam Hocevar <>
Overview: more complete and consistent Gapi detection.
- Check for gapi-parser / gapi2-parser.
* sources/ gtkglarea/
- Reflect changes made to
- Call $(GAPI_FIXUP) and $(GAPI_PARSER) instead of gapi2-fixup and
2009-07-17T01:53 Sam Hocevar <>
Remove everything gtkglext until we really decide to support it; as
of now, there are only empty files.
2009-07-17T01:48 Sam Hocevar <>
Regenerate gtkglarea/generated/*.cs using a newer gapi.
2008-04-15T1507 Mike Kestner <>
* Patch from Sam Hocevar submitted to gtk#
bug #371845. Supports automake 1.10+.
2007-12-20T1709 C.J. Adams-Collier <>
Overview (from Sam Hocevar): patch for gtkglarea-sharp adds
gtk_gl_area_share_new() to the list of bindings to allow sharing
the GL context. This way one can share textures and display lists
between GL contexts.
* gtkglarea/GLArea.custom
- created c'tor which accepts a share list
* gtkglarea/generated/GLArea.cs
- code generated from above
2007-12-20T1709 C.J. Adams-Collier <>
Overview (from Sam Hocevar): The gtkglarea-sharp package fails to
properly detect the gapi tools, causing "make dist" to always
- changing positive check for xyes to negative check for xno
2007-12-20T1705 C.J. Adams-Collier <>
Overview (from Sam Hocevar): Minor issue in gtkglarea-sharp's
PickWidget.cs: the right mouse button is ignored upon press, but
not upon release, leading to weird behaviour.
* examples/pick-object/PickWidget.cs
- ignoring right mouse button on release
2007-12-20T1649 C.J. Adams-Collier <>
Overview (from Sam Hocevar): The gtkglarea-sharp build process
expects a Tao.OpenGl.pc file, but such a file doesn't exist
anywhere AFAIK. The Tao Debian packages use tao-opengl.pc for
consistency so I suggest using the same naming scheme
(see also for a discussion
with the Tao maintainers about this).
*, examples/, examples/lwo/
- s/Tao.OpenGl/tao-opengl/g
2007-12-20T1642 C.J. Adams-Collier <>
Overview: Applied some patches supplied by Sam Hocevar
- added Sam Hocevar
- put a $ in front of a variable :)
* examples/shapes/Teapot.cs, examples/rotate-buttons/OldTeapot.cs
- changed data structures to conform to new API
2007-04-23T06:35 C.J. Adams-Collier <>
* gtkglarea/
- removed generated-stamp and generated/* from CLEANFILES
- added generated/* and generated-stamp to EXTRA_DIST so that the
build no longer requires that the builder have gapi
- did a bunch of clean-up
* gtkglarea/generated
- Added gtkglarea/generated/*.cs to svn so they don't need to be
- added some things I'd like to do/see done
2007-04-09T20:54 C.J. Adams-Collier <>
- cleaned up example makefiles using automake's include
* examples/.../
- re-factored to take advantage of new files
* examples/
$(ASSEMBLY): target, run: target, and all: target here
* examples/glade/,
* examples/shapes/,
* examples/util/
- placed MCS_ARGS, MONO_PATH, and RESOURCE_FILES specific to these
libs here
- updated
- added AC_SUBST for variables that need to be set for the files to function correctly
- added a HAS_TAO_OPENGL conditional to help decide whether to
build examples
- using HAS_TAO_OPENGL to decide whether to build examples/*
* gtkglarea/
- replaced duplicated strings with variables
- cleaned up a bit
2007-04-08T20:32 C.J. Adams-Collier <>
* examples/pick-object/Engine.cs
- made comments more specific
- cube now throbs, too
2007-04-08T08:56 C.J. Adams-Collier <>
* */
- ensured that 'make distcheck' completes successfully
- building .dll files for classes used outside of each particular
directory and using -lib: and -r: instead of mentioning the .cs
explicitly (Teapot.cs, GladeExample.cs, Trackball.cs)
- using $(addprefix $(srcdir)/, $(SOURCE_FILES)) instead of
$(SOURCE_FILES) so that builddir can differ from srcdir
- added *.mdb to CLEANFILES
- using -lib:@top_builddir@ instead of -lib:$(top_srcdir) so that
source can be built from somewhere other than the source dir
- using more modern version of AC_INIT
- explicitly using tar-ustar and requiring automake 1.9
- bumped version to 0.0.16
- using AC_CONFIG_FILES to specify files
- using non-deprecated AC_OUTPUT macro
2007-04-07T13:39 C.J. Adams-Collier <>
- modified svn:ignore properties
* examples/util/GLObjectBase.cs
- set defaults for translation matrix values
- set defaults for scale matrix values
- added some docs describing what trans and scale matrix values
are being set to
- setting scale matrix correctly
* examples/util/GLWidget.cs
- replaced iterator with foreach
* examples/pick-object/ObjectPickExample.mdp
- removed dependency on trackball assembly
- replaced Tao.OpenGl and Tao.OpenGl.Glu with Tao.OpenGl
* examples/pick-object/Engine.cs
- fixed the Throb() method
* examples/pick-object/PickWidget.cs
- removed Trackball-related code
* gtkglarea/
- created the generated/ directory at make time
- created teh docs/ directory at make time
- re-formatted the gtkglarea-sharp.dll mcs line
- added a -doc: argument to the mcs line
- added a -package: line to the gacutil line
* examples/GtkGlAreaSharpExamples.mds
- removed LWObjectExample, since it's broken and breaking the
2007-04-06T15:40 C.J. Adams-Collier <>
- added svn:ignore to all directories
- cleaned up MCS definition
- fixed the Tao dependency check
* examples/NeHe/NeHe.mds
- Meh. Attribute order changed by md
* */*.mdp
- clr-version="Net_2_0"
- ensured that the project runs correctly
* */
- changed mcs to $(MCS)
* examples/NeHe/Lessons/*/
- changed -pkg:tao-opengl to -pkg:Tao.OpenGl
- fixed MONO_PATH to include examples/shapes/
* examples/shapes/Teapot.cs, examples/rotate-buttons/OldTeapot.cs
- removed ref attribute from call to gl.glMap2f
2007-03-07 C.J. Adams-Collier <>
Cleaning up build
- Tao.Opengl -> Tao.OpenGl
* examples/NeHe/Lessons/0*/Lesson0*.cs
- renamed window to glwidget
2006-11-10 C.J. Adams-Collier <>
Submission made on behalf of "Nick" <>
* examples/glade/Engine.cs
- Added lots of comments
- replaced multiple calls to Show() with a single ShowAll()
* examples/glade/GladeExample.cs
- added [Widget] attributes to Gtk widgets
- renamed "window" to "glwidget" to match the .glade file
- added lots of comments
- added modal dialog thinger
* examples/resources/glwidget.glad
- added dialog for modal test
2006-10-21 C.J. Adams-Collier <>
- noted a need to remove hard dependency on Tao.*
- also noted that we should build examples if we find Tao.*,
otherwise not
2006-06-19T13:57 C.J. Adams-Collier <>
re-factored code under the examples/MdlLoader directory
2006-06-19 C.J. Adams-Collier <>
Overview: This concludes the translation of the C version of
Jenkara's mdl loader to C#. To load a given .mdl file,
instantiate the MdlLoader and call the Load() method on the
object, passing the filename of the data file to load. It won't
do anything but print debugging info to STDOUT, but it looks like
it correctly reads all the bytes :)
* examples/MdlLoader/MdlLoader.cs
- made struct members public
- created readFrameData(), which reads frame data from the fstream
passed as an argument. Number of frames is retrieved from the
mdl_t which is also passed as an argument
- created readDAliasFrame(), which reads a frame from the fstream
passed as an argument
- created readDAliasGroup(), which reads a frame group from the
fstream passed as an argument
- created readTriVertX(), which reads a triangle and light normal
index from the fstream passed as an argument
2006-06-18T19:56 C.J. Adams-Collier <>
* examples/MdlLoader/MdlLoader.cs
- implemented methods to read the mdl_t struct and
texgroup_struct[] array
- publicized struct members
- created a Mdl class and stub constructor
* examples/MdlLoader/
- added nowarn for warning #0169
* examples/MdlLoader/Engine.cs
- instantiating a Mdl.Mdl class
2006-06-18 C.J. Adams-Collier <>
* examples/MdlLoader
- Created a set of build files to get the project off the ground
2006-04-12 C.J. Adams-Collier <>
* examples/util/EulerRotation.cs
- Made EulerRotation.GimbalLock.GimbalLock() public
- bumped version to 0.0.16
2006-01-25T13:27 C.J. Adams-Collier <>
Overview: Added examples/pick-object and got the pyramid to throb
- bumped version
- added examples/pick-object/Makefile
- removed some items, added others
- added pgp key signing
- generalized the file a bit
* examples/NeHe/Lessons/04/Lesson04.mdp
- removed shapes from this project. Getting them from shapes.dll
* examples/NeHe/Lessons/04/
- corrected a typo
* examples/NeHe/Lessons/04/Lesson04.cs
- qualified shape names
* examples/NeHe/Lessons/05/Lesson05.mdp
- removed shapes from this project. Getting them from shapes.dll
- added a reference to ShapesExample
* examples/NeHe/Lessons/05/
- removed shapes
* examples/trackball/
- added --debug to mcs args
- added Teapot.cs from shapes/
- added shapes/ dir to -libs list
* examples/trackball/TrackballExample.mdp
- added Trackball.cs
* examples/GtkGlAreaSharpExamples.mds
- added ObjectPickExample and ShapesExample, LWObjectExample
* examples/lwo/lw.c
- yoinked from gtkglarea
* examples/lwo/lw.h
- see above
* examples/lwo/penguin.lwo
- also the same
* examples/shapes/ColoredTriangle.cs
- changed namespace
* examples/shapes/Cube.cs
- changed namespace
- changed color3f to color4f
* examples/shapes/Square.cs
- changed namespace
* examples/shapes/Triangle.cs
- changed namespace
* examples/shapes/ColoredSquare.cs
- changed namespace
* examples/
- added the pick-object/ directory to the list of SUBDIRS
* examples/rotate-buttons/OldGLObjectBase.cs
- tweaked the API so it follows the same API, but doesn't
implement much of the functionality. Really, folks... don't use
this one. Go with the other one. I should throw NotImplemented
* examples/pick-object/ObjectPickExample.mdp
- created a new MDP
* examples/pick-object/Engine.cs
- This is where the Throb() method is implemented. It is also
where the GL window is instantiated.
* examples/pick-object/
2006-01-25 C.J. Adams-Collier <>
Overview: Added beginnings of support for gtkglext in this package
* sources/gtkglext-sharp.sources.xml
- Added a sources file that describes the code hierarchy
* sources/
- added the commands and variables for GTKGLEXT
* gtkglext/
- created a directory for the generated code to live in
2006-01-12T17:39 C.J. Adams-Collier <>
Overview: Changed internal representation of Translation, Scale
and Rotation from Euler Rotation + Quaternion + Rotation Matrix to
Quaternion + scale vector + translation vector. I moved the old
code into rotate-buttons, which is the only example that relies on
internal representation as Euler angles. This change makes NeHe
example 4 work correctly
* 04/Lesson04.mdp
- added Colored*.cs
* 04/
- added Colored*.cs
- added reference to GladeExample.cs
- added run: target
- using $(SOURCE_FILES)
* 04/Lesson04.cs
- changed namespace name to NeHe
- threw out old code and replaced with the new hotnes from
...-util. Read the diff :)
* util/GLObjectBase
- re-factored euler rotations out and quaternion + scale,
translation vectors in
- TransMatrix get{} now constructs a translation matrix from the
quat and vectors
- all of the set{}s now manipulate quat, translation, and scale
- Translate() now manipulates translation
- Rotate() methods now convert the passed arg and call the quat version
- ResetRotation() sets Quat instead of ERot
- GetTransformationMatrix() now returns TransMatrix
- Draw now calls glMultMatrixd(this.TransMatrix.Matrix)
2006-01-12 C.J. Adams-Collier <>
Overview: removed lighting from default GtkGL.GLWidget
configuration. The examples that use lighting now explicitly turn
it on. The GL Window is hidden by default. The examples that use
it must explicitly .Show() it. ColoredTriangle and ColoredSquare
classes are now fully implemented, and NeHe lesson 03 now uses
them. Added the NeHe.mds solution.
* 01/Lesson01.cs
- re-factored to use GtkGL.GladeExample class for basic class
* 01/
- Added dependancy on GladeExample.cs
- added a run target
- added $(SOURCE_FILES) to mcs commandline instead of explicitly
listing the .cs file
* 02/Square.cs
- now in the NeHe namespace
- Renamed DrawSquare to DrawObject (changed this in GLObjectBase, too)
- re-factored common code into GLObjectBase
* 02/Lesson02.cs
- re-factored common code into GladeExample and GLObjectBase
* 02/
- added dependency on GladeExample.cs
- created run: target
* 02/Triangle.cs
- see Square.cs
* 03/ColoredTriangle
- created. Based on 02/Triangle, but colored :)
* 03/Lesson03.mdp
- added Colored*
* 03/
- added GladeExample and Colored* to the dependency list
- added run: target
- now using $(SOURCE_FILES)
* 03/Lesson03.cs
- see 02/Lesson02.cs
* 03/ColoredSquare
- see 03/ColoredTriangle
* trackball/TrackballExample.cs
- now explicitly showing the window and glw
* trackball/TrackballWidget.cs
- explicitly enabled lighting
* trackball/
- added the .pidb file to CLEAN targets
* rotate-button/RotateButtonExample.cs
- explicitly enabled lighting
- now explicitly showing the window and glw
* glade/GladeExample.mdp
- added Engine.cs
* glade/
- added Engine.cs
* glade/GladeExample.cs
- re-factored common stuff into GladeExample and specific stuff
into Engine
* util/Teapot.cs
- re-named DrawTeapot to DrawObject in order to make the method
more generic
- moved common methods into GtkGL.GLObjectBase
* util/GLObjectBase.cs
- Now firing the Updated handler from here
- placed generic Init() method here
- Quat is protected
- TransMatrix is protected
* GLWidget.cs
- corrected incorrect comment
- moved the Clear command to before the LoadIdentity call
- added an EnableLighting method
- added an eventHandler to make extending the GL setup easier
- moved GL setup into InitGL()
2006-01-11T19:10 C.J. Adams-Collier <>
Overview: Moved Lessons/Lesson0N.* to Lessons/0N/Lesson0N.*,
removed excess debug print statements, moved Triangle.cs and
Square.cs into NeHe/Lessons/02/
2006-01-11 C.J. Adams-Collier <>
Overview:Renamed RotationMatrix to TransformationMatrix (I'm
thinking of getting rid of the matrix and replacing it with a
quaternion for rotation + a vector for scale and a vector for
translation). Triangle and Square objects now draw themselves
correctly. I've also had a chance to straighten out the IGLObject
Translate() methods.
- Bumped version
- removed GimbalLock issue from TODO list
- added item for re-factoring Euler angles
- added item for .mdl / .md3 files
* examples/NeHe/Lessons/Lesson01.cs
- changed namespace from NeHe.Lesson01 to NeHe
- basically replaced with GladeExample code
* examples/NeHe/Lessons/Lesson02.cs
- changed namespace from NeHe.Lesson02 to NeHe
- added Triangle, Square objects. Translated them
- removed methods that are implemented in GLObjectBase
- added onquit and onwindowdeleteevent methods
* examples/NeHe/Lessons/
- re-organized sources into SOURCE_FILES
- created a MCS_ARGS variable to reduce duplicate code
* examples/trackball/TrackballExample.mdp
- added resources directory to project
* examples/GtkGlAreaSharpExamples.mds
- renamed *test to *example
- added NeHe project
- added GtkGLAreaUtil
- added GladeExample
* examples/util/TransformationMatrix.cs
- renamed from RotationMatrix.cs
- added operator *()
* examples/util/Teapot.cs
- added Translate() methods
* examples/util/EulerRotation.cs
- renamed rotationmatrix to transformationmatrix
* examples/util/IGLObject.cs
- added Translate() methods
- renamed rotationmatrix to transformationmatrix
* examples/util/GLObjectBase.cs
- renamed rotationmatrix to transformationmatrix
* examples/util/RotationMatrix.cs
- renamed to TransformationMatrix.cs
* examples/util/
- renamed rotationmatrix to transformationmatrix
- added Triangle, Square
* examples/util/Quaternion.cs
- renamed rotationmatrix to transformationmatrix
* examples/util/GLWidget.cs
- moved the projection translation into the resize handler
2006-01-10 C.J. Adams-Collier <>
Overview: Moved common code into examples/util/ and compiled them
down to a gtkglarea-sharp-util.dll file. I added a make run entry
for each of the examples, since they require a modification to the
MONO_PATH environment variable.
2006-01-09 C.J. Adams-Collier <>
* examples/trackball/Vector.cs
- New link to ../rotate-buttons/Vector.cs
* examples/trackball/TrackballWidget.cs
- removed debug print statements
* examples/trackball/
- Added Vector.cs
* examples/trackball/trackballTest.mdp
- re-structured for new code
* examples/GtkGlAreaSharpExamples.mds
- removed old project
- added new projects
! moved common to util:
* examples/rotate-buttons/GLObjectBase.cs
- changed += to *=
* examples/rotate-buttons/Quaternion.cs
- shortened line
- changed operator+ to operator*
- re-wrote operator* based on Vector code
- removed Vector-specific code and placed in Vector.cs
* examples/rotate-buttons/Vector.cs
- Moved vector-specific code from Quaternion.cs to Vector.cs
* examples/resources
- created a directory to contain images and glade-ish things
* examples/util
- renamed common to util
2006-01-06T15:17 C.J. Adams-Collier <>
Overview: Applying new classes from rotate-buttons to this
example. Linked to the new class files from ../rotate-buttons and
got a compiling version working. Runtime errors, though.
* EulerRotation.cs
- created link
* trackballTest.cs
- There is now a class variable called glw
- Set glw to a new instance of TrackballWidget
- created a new Teapot
- added teapot to glw
- replaced glw.glArea with glw
* IGLObject.cs
- created link
* TrackballWidget.cs
- replaced the float[] quat with a Quaternion
- replaced glArea. with this.
- placed into the GtkGL. namespace
- when OnMotionNotify is called, all glObjects associated with
this glArea get Rotate()d
- removed onExposed. parent class will handle exposed event.
* GLObjectBase.cs
- created link
* RotationMatrix.cs
- created link
- re-structured to be like from ../rotation-buttons/
* Quaternion.cs
- created link
* GLWidget.cs
- created link
2006-01-06T12:06 C.J. Adams-Collier <>
Overview: Fixed EulerRotation.ToRotationMatrix()
* examples/rotate-buttons/GLObjectRotationController.cs
- remove TODO from GLObjectRotationController.cs (complete)
- Created Get*Rotation, for Euler, Quaternion and Matrix
- fixed docs
* examples/rotate-buttons/ObjectRotationButton.cs
- added bools to make sure the handlers aren't connected >1 times
* examples/rotate-buttons/RotationMatrix.cs
- Added an operator + for RotationMatrix objects
* examples/rotate-buttons/GLObjectBase.cs
- made setting of euler, matrix, quat an atomic action
- cleaned up the Rotate() methods
- ResetRotation sets eRot to EulerRotation.Identity()
- added Get*Rotation() methods
* examples/rotate-buttons/Quaternion.cs
- added an Identity property
* examples/rotate-buttons/EulerRotation.cs
- added Get
- cleaned up the null test in operator +
- fixed the ToRotationMatrix() method
* examples/rotate-buttons/IGLObject.cs
- added Get*Rotation to the interface
2006-01-06 C.J. Adams-Collier <>
Overview: GtkGL.Rotation has been deprecated. Now replaced with
one of EulerRotation, Quaternion or RotationMatrix. Replacing
float variables with double. Let's see how this works... Also,
turned on debugging symbols
- bumped version to 0.0.8
- added command to push new version to
* examples/rotate-buttons/GLObjectRotationController.cs
- rather than storing a local copy, we get the rotation from the object
- using EulerRotation rather than Rotation
* examples/rotate-buttons/ObjectRotationButton.cs
- removed GtkGL.Rotation and replaced with GtkGL.EulerRotation
* examples/rotate-buttons/GLObjectBase.cs
- now using a GtkGL.RotationMatrix instead of a float[16]
- adding a GtkGL.EulerRotation and GtkGL.Quaternion for flavor
- added implementations of Rotate() that accept Quaternion,
EulerRotation and RotationMatrix
- removed the one that accepts GtkGL.Rotation
- ResetRotation sets the rotation to the identity rather than null
- GetRotation catches gimbal lock exception
- Instead of converting from RotationMatrix, it should return the local EulerRotation object.
* examples/rotate-buttons/RotationMatrix.cs
- Added file. Represents a Rotation Matrix
* examples/rotate-buttons/Quaternion.cs
- Added file. Represents a Quaternion
* examples/rotate-buttons/EulerRotation.cs
Added file. Represents a Euler Rotation
* examples/rotate-buttons/Teapot.cs
- replaced Rotate() methods with new versions
- changed f to d in glMultMatrixf
* examples/rotate-buttons/RotationUtil.cs
- removed EulerRotation, since there is now a EulerRotation.cs
- using Accessors rather than hitting the member variables directly
* examples/rotate-buttons/IGLObject.cs
- replaced GtkGL.Rotation version of Rotate with Euler, Quat and Matrix
* examples/rotate-buttons/
- added Euler Quat and Matrix cs files
- added -debug to the mcs command line
* examples/rotate-buttons/rotateButtonTest.mdp
- added Euler Quat and Matrix cs files
2006-01-02 C.J. Adams-Collier <>
Overview: The entry fields may now be used to rotate the object as
well as the buttons. They are updated when the buttons are
pressed, and if a number is entered into them, the object is
rotated to that angle
* examples/rotate-buttons/Teapot.cs
- added methods to rotate and reset rotation that take a third
argument which indicates whether or not the handler should be
* examples/rotate-buttons/GLObjectRotationController.cs
- added lots of documentation
- added a method to update the rotation of the object based on the
values entered into the entry fields
- aligned numbers left
- added the UpdateObjectRotation method to the event object's
Activated and FocusOutEvent events
* examples/rotate-buttons/RotationUtil.cs
- documented the EulerRotation struct
* examples/rotate-buttons/IGLObject.cs
- added the method signatures for optional Updated event firing
* examples/rotate-buttons/GLObjectBase.cs
- whitespace
2006-01-01 C.J. Adams-Collier <>
Overview: Completed writing code to update the entry fields when
the +/- buttons are pressed
* examples/NeHe/Lessons/Makefile
- Added our build testing script
* examples/rotate-buttons/GLObjectRotationController.cs
- Added an EulerRotation object to the class to keep track of the
rotations represented to the user
- re-bound to ObjectRotationButton's Rotated event instead of
IGLObject's Updated event
- now resetting the Euler rotation values and re-displaying when
the reset button is triggered.
* examples/rotate-buttons/ObjectRotationButton.cs
- made the rotation member public
- added a Rotated event
! RotateObjects()
- fire the Rotated event after the object has been rotated
2005-12-31T22:46 C.J. Adams-Collier <>
Overview: Entry fields are now filled in when the buttons are
pressed. Sort of. There's a gimbal lock error causing strange
things to happen. Try it out. Please tell me if you know how to
fix it.
* rotate-buttons/GLObjectRotationController.cs
- Created a Hashtable called entryMap. It maps between the keys,
'x', 'y', and 'z'.and the entry widgets (values) for X, Y and Z
rotation, respectively. I think of this as a %hash variable in
perl (pseudocode shown here):
%entryMap = (
chr('x') => gtkglWidget("X rotation entry widget"),
chr('y') => gtkglWidget("Y rotation entry widget"),
chr('z') => gtkglWidget("Z rotation entry widget"),
! UpdateRotationValues()
- This handler is connected to the IGLObject's Updated event
- Every time the object fires an Updated event, the Euler
rotation angles are calculated from the internal representation of
the object's rotation (currently a rotation matrix, possibly in
the future a quaternion) and displayed in the appropriate entry
! GLObjectRotationController()
- connect afore-mentioned handler to the Updated signal
- create afore-mentioned entryMap
* rotate-buttons/IGLObject.cs
- corrected a comment
- add a method to the interface requirements called GetRotation()
that returns an euler rotation. Perhaps it should be called
getEulerRotation() instead... Please don't consider this part of
the API hard and fast. Thanks.
* rotate-buttons/GLObjectBase.cs
- implemented above-mentioned GetRotation() method in this "base" class
* rotate-buttons/
- Added RotationUtil.cs and GLObjectRotationController.cs to the
prereqs list for rotateButtonTest.exe. I should have caught the
latter sooner than I did. But I haven't pushed a build in a
while, so it's okay :)
- added RotationUtil.cs to the mcs command line
* rotate-buttons/rotateButtonTest.mdp
- Added RotationUtil.cs to the mdp file
2005-12-31 C.J. Adams-Collier <>
Overview: Created an GLObjectRotationController, which encompases
the object rotation UI and the handlers associated with it. This
controller contains ObjectRotationButton widgets; a Clockwise and
CounterClockwise button for each each axis, X, Y and Z. The
GLObjectRotationController class was refactored out of
rotateButtonTest.cs and lives in GLObjectRotationController.cs.
Also, the object manipulation widgegt was refactored from the file into its own file
* examples/rotate-buttons/Teapot.cs
- explicitly specified "new" in method signature. Yes, we know
we're overriding.
* examples/rotate-buttons/GLObjectRotationController.cs
- created this file by refactoring code out of rotateButtonTest.cs
* IGLObject.cs: Newline changes
* GLObjectBase.cs
- swapped rotation directions. Had CC-wise going C-wise and vice versa
- Mentioned new .cs and .glade files
* rotateButtonTest.mdp
- Mentioned new .cs and .glade files
* GLWidget.cs
- now using Gtk
- AddGLObject(): Added object to list *after* connecting handler
- Init(): added some comments
- Init(): moved handlers into Init() from connectHandlers()
- deleted connectHandlers()
- OnSizeAllocated(): added comment, removed newline
- OnExposed(): modified comment, removed debugging message
- OnRealized(): Added comment, removed debugging message
- added OnQuit(), OnWindowDeleteEvent() handlers to the class
* Created
* rotateButtonTest.cs
- created a member variable for the glw widget
- same for GLObjectRotationController object
- refactored GLObjectRotationController code into new class
- moved GLWidget-specific handlers into GLWidget
2005-12-30 C.J. Adams-Collier <>
Overview: Rotation on button click has (finally) been implemented.
IGLObject objects are required to have an Update EventHandler now.
Update is triggered when rotations are applied. The same method
that the GLArea's OnExpose event handler fires off is now being
fired off by Teapot's Update EventHandler. Thus: a) button is
pressed which b) rotates object which c) triggers the Update
handler, which d) draws the glarea, including the object
* examples/rotate-buttons/Teapot.cs
- Created an EventHandler called Update which fires when object is rotated
- moved Draw() method. It now applies the rotation matrix, if one exists
- Rotate() method now hands work off to base.Rotate() (GLObjectBase.cs)
- Rotate() method now fires off the Updated event
- added ResetRotation() method
- ResetRotation() method calls base.ResetRotation() and then fires the Updated handler
* examples/rotate-buttons/Rotation.cs
- uhm... added a newline
* examples/rotate-buttons/ObjectRotationButton.cs
- ObjectRotationButton now contains an object that implemts IGLObject instead of a GLArea
- the member variable is now called glObject instead of glArea
- removed rotMult member variable definition. Should remove the variable, now that it's not used anymore.
- handing rotation code off to glObject.Rotate(rotAngle, rotation)
* examples/rotate-buttons/IGLObject.cs
- The interface now enforces the use of a Update event handler
- The interface now enforces the use of a ResetRotation() method
* examples/rotate-buttons/GLObjectBase.cs
- now using gl=Tao.OpenGl.Gl
- removed abstract Draw() method
- added a rotMatrix member variable
- the Rotate() method calculates a rotation matrix and stores it
in rotMatrix
- The rotMatrix can then be used when Draw() is called to rotate
the object as desired at draw time
- ResetRotation() merely sets the rotation matrix to null
* examples/rotate-buttons/
- added a bunch of .cs files to our EXTRA_DIST variable
* examples/rotate-buttons/GLWidget.cs
- created an AddGLObject(IGLObject ob) method
- This method adds the passed object to the widget's "associated"
object list
- removed teapot addition code from Init() (moved to
* examples/rotate-buttons/rotateButtonTest.cs
- in buildControlWindow(), the teapot is created and associated with the GLWidget
- ObjectRotationButton now takes an object that implements
IGLObject rather than a GLArea. teapot is being passed now
instead of glw
2005-12-29 C.J. Adams-Collier <>
* examples/rotate-buttons/Teapot.cs
- Copied from ../shared
- Will be merged back in after changes are complete to new code
- Teapot is now implements IGLObject and inherits from GLObjectBase
- The teapot is drawn and cached by calling Init()
- We now know how to Draw() ourselves.
* examples/rotate-buttons/Rotation.cs
- copied from ../shared
- Will be merged back in after changes are complete to new code
- This is a convenient way to refer to a clockwise or c-clockwise rotation in any direction
* IGLObject.cs
- This is an interface intended to make GL Object creation easier: Today, Teapots. Tomorrow the world. Or quake modles, or whatever.
* examples/rotate-buttons/ObjectRotationButton.cs
- This is a widget that inherits from Gtk.Button. It rotates a GLObject in a GtkGL.Rotation direction when the button is clicked.
- It is also the next file to get some love from yours truly
* examples/rotate-buttons/GtkGLObjectBase.cs
- This is where methods common to all GLObjects will be implemented
- Also, common member variables are defined here
* examples/rotate-buttons/
- added rotateButtonTest.exe target
* examples/rotate-buttons/[ps]
- created MonoDevelop solution. I don't think it works right now, but I will be maing it work in the futrue
* GLWidget.cs
- Copied from ../shared
- Will be merged back in after changes are complete to new code
- now inherits from GLArea
- we are now calling Teapot.Init() in order to build the teapot
- we are now calling Teapot.Draw() in order to draw the teapot
- GLWidget is now a GLArea, so we now use glw instead of glw.glArea
- there is a control widget. Did I mention I updated ../common/ ?
2005-12-25 C.J. Adams-Collier <>
* examples/trackball/shapes.cs:
- depricated this file. Soon it will be svn rm'd
- Broke up the content into examples/common/GlWidget.cs, TrackballWidget.cs and trackballTest.cs
* examples/trackball/
- Corrected the all: target
- made the trackballTest.exe target work
* examples/common/
- changed from glwidgets to glwidget
- removed silly frame
- removed statusbar
* examples/common/GLWidget.cs:
- created a connectHandlers() method that the handler connection code lives in now
- added a link to the gluPerspective() man page
- made OnExposed() a protected method so GLWidget's derived classes can remove it from the event queue
- shapeList is now protected so derived classes can fiddle with it
* examples/glade/
- moved the file to common/
* examples/glade/
- changed to ../shared/
* examples/trackball/trackballTest.cs:
- simple wrapper around TrackballWidget.cs
2005-12-23 C.J. Adams-Collier <>
* examples/: reorganized the examples that were there, added new ones
2005-12-13 C.J. Adams-Collier <>
* added Makefiles for NeHe examples
* examples/NeHe: Created directory structure for NeHe examples
* examples/NeHe/Lesson01: Created a minimal OpenGL display
* examples/NeHe/Lesson02: Created a triangle, square display
Something went wrong with that request. Please try again.