Minor cleanup.
authorspixx <spixx>
Sun, 26 Nov 2006 14:22:06 +0000 (14:22 +0000)
committerspixx <spixx>
Sun, 26 Nov 2006 14:22:06 +0000 (14:22 +0000)
src/model.cpp
src/model.h
src/renderingsurface.h
src/rule.h
src/ruleset.h
src/turtle.cpp
src/turtle.h
src/vector.cpp
src/vector.h
src/xmlstructure.h

index 20dc567e384ea80449d895e7285af5f4ce85de3b..8e3417b1656dc984e0c7ff8cd709cc98e9355dc7 100644 (file)
@@ -59,6 +59,32 @@ Model::~Model()
 
 
 
+/**
+ * Clear the model
+ */
+void Model::clear()
+{
+    glDeleteLists(_displayList, 1);
+    _displayList = glGenLists(1);
+    
+    setColorIndex(0);
+    
+    _diameter = 0.1;
+    _diameterFactor = 0.8;
+}
+
+
+
+/**
+ * Render to screen
+ */
+void Model::draw()
+{
+    glCallList(_displayList);
+}
+
+
+
 /**
  * Create a segment
  * @param x1 x start point
@@ -125,32 +151,6 @@ void Model::normal(double x, double y, double z)
 
 
 
-/**
- * Render to screen
- */
-void Model::draw()
-{
-    glCallList(_displayList);
-}
-
-
-
-/**
- * Clear the model
- */
-void Model::clear()
-{
-    glDeleteLists(_displayList, 1);
-    _displayList = glGenLists(1);
-    
-    setColorIndex(0);
-    
-    _diameter = 0.1;
-    _diameterFactor = 0.8;
-}
-
-
-
 /**
  * Begin a modelling session
  */
@@ -216,7 +216,7 @@ void Model::prevColor()
 
 
 /**
- * Decrement diameter of segment
+ * Decrement segment diameter
  */
 void Model::decrementDiameter()
 {
@@ -260,7 +260,7 @@ void Model::setColorIndex(int index)
 
 
 /**
- * Set current diameter of segment
+ * Set current segment diameter
  * @param diameter the diameter
  */
 void Model::setDiameter(double diameter)
@@ -271,7 +271,7 @@ void Model::setDiameter(double diameter)
 
 
 /**
- * Set diameter factor
+ * Set segment diameter factor
  * @param diameter the diameter factor
  */
 void Model::setDiameterFactor(double diameterFactor)
@@ -293,10 +293,21 @@ int Model::getColorIndex()
 
 
 /**
- * Get current diameter of segment
- * @return diameter of segment
+ * Get current segment diameter
+ * @return the diameter
  */
 double Model::getDiameter()
 {
     return _diameter;
 }
+
+
+
+/**
+ * Get segment diameter factor
+ * @return the diameter factor
+ */
+double Model::getDiameterFactor()
+{
+    return _diameterFactor;
+}
index 2e05697051530a8952811c64ad8a7a1b61fabc27..138b8018fe3350c99ba846369344902b57417d44 100644 (file)
@@ -38,6 +38,7 @@ using namespace std;
 class Model
 {
 public:
+    
     /**
      * Constructor
      */
@@ -48,6 +49,17 @@ public:
      */
     ~Model();
     
+    
+    /**
+     * Clear the model
+     */
+    void clear();
+    
+    /**
+     * Render to screen
+     */
+    void draw();
+    
     /**
      * Create a segment
      * @param x1 x start point
@@ -75,16 +87,6 @@ public:
      */
     void normal(double x, double y, double z);
     
-    /**
-     * Render to screen
-     */
-    void draw();
-    
-    /**
-     * Clear the model
-     */
-    void clear();
-    
     /**
      * Begin a modelling session
      */
@@ -116,10 +118,11 @@ public:
     void prevColor();
     
     /**
-     * Decrement diameter of segment
+     * Decrement segment diameter
      */
     void decrementDiameter();
     
+    
     /**
      * Set current color index
      * @param index the color index
@@ -127,17 +130,18 @@ public:
     void setColorIndex(int index);
     
     /**
-     * Set current diameter of segment
+     * Set current segment diameter
      * @param diameter the diameter
      */
     void setDiameter(double diameter);
     
     /**
-     * Set diameter factor
+     * Set segment diameter factor
      * @param diameter the diameter factor
      */
     void setDiameterFactor(double diameterFactor);
     
+    
     /**
      * Get current color index
      * @return color index
@@ -145,18 +149,24 @@ public:
     int getColorIndex();
     
     /**
-     * Get current diameter of segment
-     * @return diameter of segment
+     * Get current segment diameter
+     * @return the diameter
      */
     double getDiameter();
     
+    /**
+     * Get segment diameter factor
+     * @return the diameter factor
+     */
+    double getDiameterFactor();
+    
 protected:
     
     GLuint _displayList;    // All drawing operations
     
     vector<Color> _colorTable;  // Color table
     int _colorIndex;            // Current index to color table
-    double _diameter;           // Current diameter of segment
+    double _diameter;           // Current segment diameter
     double _diameterFactor;     // Diameter factor // TODO: "Diameter factor"?
 };
 
index fd9bbc65327cd14ca1e95205f7e788b9cf6d6890..1c7ebff77251ee9bd8d5290b7372b17305c3107b 100644 (file)
@@ -45,18 +45,24 @@ public:
         ID_CANVAS = FXMainWindow::ID_LAST,
         ID_LAST
     };
-
+    
+    
     /**
      * Constructor
-     * @param application the FOX application object
-     * @param lsystem the Lindenmayer-system
+     * @param application the application object
      */
-    RenderingSurface(FXApp *application, LindenmayerSystem *lsystem);
-
+    RenderingSurface(FXApp *application);
+    
+    /**
+     * Destructor
+     */
+    virtual ~RenderingSurface();
+    
+    
     /**
      * Create and initialize the window
      */
-    void create();
+    virtual void create();
     
     /**
      * Initialize OpenGL
@@ -68,6 +74,7 @@ public:
      */
     void draw();
     
+    
     /**
      * Called by the system when the left mouse button is pressed
      * @param sender the sender object
@@ -139,6 +146,22 @@ public:
      * @return 
      */
     long onRepaint(FXObject *sender, FXSelector selector, void *data);
+    
+    /**
+     * Called by the system when the close button is pressed
+     * @param sender the sender object
+     * @param selector message type and id
+     * @param data event related data
+     * @return 
+     */
+    long onQuit(FXObject *sender, FXSelector selector, void *data);
+    
+    
+    /**
+     * Set current L-system generator
+     * @param lsystem the L-system generator
+     */
+    void setLSystem(LindenmayerSystem *lsystem);
 
 protected:
     
@@ -147,12 +170,12 @@ protected:
      */
     RenderingSurface() {}
     
-private:
     
     FXGLVisual *_visual;    // Pixel format info
     FXGLCanvas *_canvas;    // OpenGL-capable drawing area
 
-    LindenmayerSystem *_lsystem;    // The Lindenmayer System
+    LindenmayerSystem *_lsystem;    // The Lindenmayer system generator
+    
     
     // Model position
     double _modelX,
index fcef31f500de59c1e74a90d39a5540fbef175b95..68d57beb4f5769b47c48f8b7fac9f1cb98695d53 100644 (file)
@@ -59,6 +59,7 @@ public:
      */
     ~Rule();
     
+    
     /**
      * Clear rule
      */
@@ -76,6 +77,7 @@ public:
      */
     string toString();
     
+    
     /**
      * Set rule name
      * @param name the name
@@ -94,6 +96,7 @@ public:
      */
     void setProbability(double probability);
     
+    
     /**
      * Get rule name
      * @return the rule name
index 63575a5b1ea3c9f338e878b0e6782945528c3242..7945712b6efa34fae4425c1ba5bfbe80980d2ea4 100644 (file)
@@ -50,6 +50,7 @@ public:
      */
     ~RuleSet();
     
+    
     /**
      * Clear rule set
      */
@@ -68,6 +69,7 @@ public:
      */
     Rule findRule(string ruleName);
     
+    
     /**
      * Get all rules
      * @return the rules
index ae3e5f0fa31f960434a042714e63ef54ca30be72..5ef84a5afb0e91efc8591401406399ab579a19d8 100644 (file)
@@ -58,6 +58,31 @@ Turtle::~Turtle()
 
 
 
+/**
+ * Reset to default state
+ */
+void Turtle::reset()
+{   
+    // put turtle at (0,0,0), head upwards, back towards camera
+    
+    _position.setXYZ(0.0, 0.0, 0.0);
+    
+    _heading.setXYZ(0.0, 1.0, 0.0);
+    _left.setXYZ(1.0, 0.0, 0.0);
+    _up.setXYZ(0.0, 0.0, 1.0);
+    
+    
+    // empty the stacks
+    _positionStack = stack<Coordinate>();
+    _headingStack = stack<Vector>();
+    _leftStack = stack<Vector>();
+    _upStack = stack<Vector>();
+    _diameterStack = stack<double>();
+    _colorIndexStack = stack<int>();
+}
+
+
+
 /**
  * Turn left
  */
@@ -238,31 +263,6 @@ void Turtle::pop()
 
 
 
-/**
- * Reset to default state
- */
-void Turtle::reset()
-{   
-    // put turtle at (0,0,0), head upwards, back towards camera
-    
-    _position.setXYZ(0.0, 0.0, 0.0);
-    
-    _heading.setXYZ(0.0, 1.0, 0.0);
-    _left.setXYZ(1.0, 0.0, 0.0);
-    _up.setXYZ(0.0, 0.0, 1.0);
-    
-    
-    // empty the stacks
-    _positionStack = stack<Coordinate>();
-    _headingStack = stack<Vector>();
-    _leftStack = stack<Vector>();
-    _upStack = stack<Vector>();
-    _diameterStack = stack<double>();
-    _colorIndexStack = stack<int>();
-}
-
-
-
 /**
  * Set turn/pitch/roll angle
  * @param angle the angle, in radians
index 3d1ec3c2457b67f19703b6edafa6c1b1b0be488c..d28f75fe35024214c1663788ddd05533207159ec 100644 (file)
@@ -38,6 +38,7 @@ using namespace std;
 class Turtle
 {
 public:
+    
     /**
      * Constructor
      * @param model create this model
@@ -49,6 +50,12 @@ public:
      */
     ~Turtle();
     
+    
+    /**
+     * Reset to default state
+     */
+    void reset();
+    
     /**
      * Turn left
      */
@@ -104,10 +111,6 @@ public:
      */
     void pop();
     
-    /**
-     * Reset to default state
-     */
-    void reset();
     
     /**
      * Set turn/pitch/roll angle
@@ -115,6 +118,7 @@ public:
      */
     void setAngle(double radians);
     
+    
     /**
      * Get turn/pitch/roll angle
      * @return the angle, in radians
index 639d0b2083aace27c535a1e9903f10113a4bf6d0..06ce40c6c5d4e741f749ea8490975f0022f40d49 100644 (file)
@@ -47,6 +47,23 @@ Vector::~Vector()
 
 
 
+/**
+ * Normalize vector
+ */
+void Vector::normalize()
+{
+    double length = sqrt(_x * _x + _y * _y + _z * _z);
+    
+    if (length != 0)
+    {
+        _x /= length;
+        _y /= length;
+        _z /= length;
+    }
+}
+
+
+
 /**
  * Rotate around another vector
  * @param angle rotation angle
@@ -82,23 +99,6 @@ void Vector::rotate(double angle, Vector vector)
 
 
 
-/**
- * Normalize vector
- */
-void Vector::normalize()
-{
-    double length = sqrt(_x * _x + _y * _y + _z * _z);
-    
-    if (length != 0)
-    {
-        _x /= length;
-        _y /= length;
-        _z /= length;
-    }
-}
-
-
-
 /**
  * Get scalar product of two vectors
  * @param vector arbitrary vector
index 056e22d5e3f4c17fa00bc0879f24c35fb7f55f9f..7d0bf775267c392d3c9d81acc086ddb522baf80a 100644 (file)
@@ -32,6 +32,7 @@
 class Vector : public Coordinate
 {
 public:
+    
     /**
      * Constructor
      * @param x the x-coordinate
@@ -45,6 +46,12 @@ public:
      */
     ~Vector();
     
+    
+    /**
+     * Normalize vector
+     */
+    void normalize();
+    
     /**
      * Rotate around another vector
      * @param angle rotation angle
@@ -52,10 +59,6 @@ public:
      */
     void rotate(double angle, Vector vector);
     
-    /**
-     * Normalize vector
-     */
-    void normalize();
     
     /**
      * Get scalar product of two vectors
index 0e5cd2a1b5cab20ac1a18b14ae231f8054985de8..c07dd2f4fde56b96ef04849098a0c471b3034b43 100644 (file)
@@ -39,6 +39,7 @@ using namespace std;
 class XMLStructure
 {
 public:
+    
     /**
      * Constructor
      */
@@ -52,7 +53,6 @@ public:
 protected:
     
     // Saver
-    // -----
     
     /**
      * Create new document with root node
@@ -93,7 +93,6 @@ protected:
     
     
     // Loader
-    // ------
     
     /**
      * Load document from file
@@ -133,6 +132,14 @@ protected:
      */
     string getAttribute(string name);    
     
+    
+    /**
+     * Convert double to string
+     * @param doubleValue the double value
+     * @return the corresponding string
+     */
+    string doubleToString(double doubleValue);
+    
 private:
     
     // Saver