Commit 83a366146fa0c020854366581cafe6f48d494ddf

sammy 2008-04-17T13:37:32

* Implement - and -= operators in the FTPoint class. * Allow to omit the Z coordinate in the FTPoint constructor, in which case it is set to zero.

diff --git a/include/FTPoint.h b/include/FTPoint.h
index 117f31c..60fb125 100644
--- a/include/FTPoint.h
+++ b/include/FTPoint.h
@@ -10,10 +10,10 @@
  * distribute, sublicense, and/or sell copies of the Software, and to
  * permit persons to whom the Software is furnished to do so, subject to
  * the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be
  * included in all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -56,40 +56,41 @@ class FTGL_EXPORT FTPoint
             values[1] = 0;
             values[2] = 0;
         }
-        
+
         /**
-         * Constructor.
+         * Constructor. Z coordinate is set to zero if unspecified.
          *
          * @param x First component
          * @param y Second component
          * @param z Third component
          */
-        FTPoint( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z)
+        FTPoint(const FTGL_DOUBLE x, const FTGL_DOUBLE y,
+                const FTGL_DOUBLE z = 0)
         {
             values[0] = x;
             values[1] = y;
             values[2] = z;
         }
-        
+
         /**
          * Constructor. This converts an FT_Vector to an FT_Point
          *
          * @param ft_vector A freetype vector
          */
-        FTPoint( const FT_Vector& ft_vector)
+        FTPoint(const FT_Vector& ft_vector)
         {
             values[0] = ft_vector.x;
             values[1] = ft_vector.y;
             values[2] = 0;
         }
-        
+
         /**
          * Operator += In Place Addition.
          *
          * @param point
          * @return this plus point.
          */
-        FTPoint& operator += ( const FTPoint& point)
+        FTPoint& operator += (const FTPoint& point)
         {
             values[0] += point.values[0];
             values[1] += point.values[1];
@@ -104,7 +105,7 @@ class FTGL_EXPORT FTPoint
          * @param point
          * @return this plus point.
          */
-        FTPoint operator + ( const FTPoint& point)
+        FTPoint operator + (const FTPoint& point)
         {
             FTPoint temp;
             temp.values[0] = values[0] + point.values[0];
@@ -113,15 +114,45 @@ class FTGL_EXPORT FTPoint
 
             return temp;
         }
-        
-        
+
+         /**
+         * Operator -= In Place Substraction.
+         *
+         * @param point
+         * @return this minus point.
+         */
+        FTPoint& operator -= (const FTPoint& point)
+        {
+            values[0] -= point.values[0];
+            values[1] -= point.values[1];
+            values[2] -= point.values[2];
+
+            return *this;
+        }
+
+        /**
+         * Operator -
+         *
+         * @param point
+         * @return this minus point.
+         */
+        FTPoint operator - (const FTPoint& point)
+        {
+            FTPoint temp;
+            temp.values[0] = values[0] - point.values[0];
+            temp.values[1] = values[1] - point.values[1];
+            temp.values[2] = values[2] - point.values[2];
+
+            return temp;
+        }
+
         /**
          * Operator *
          *
          * @param multiplier
          * @return <code>this</code> multiplied by <code>multiplier</code>.
          */
-        FTPoint operator * ( double multiplier)
+        FTPoint operator * (double multiplier)
         {
             FTPoint temp;
             temp.values[0] = values[0] * multiplier;
@@ -130,8 +161,8 @@ class FTGL_EXPORT FTPoint
 
             return temp;
         }
-        
-        
+
+
         /**
          * Operator *
          *
@@ -139,7 +170,7 @@ class FTGL_EXPORT FTPoint
          * @param multiplier
          * @return <code>multiplier</code> multiplied by <code>point</code>.
          */
-        friend FTPoint operator*( double multiplier, FTPoint& point);
+        friend FTPoint operator * (double multiplier, FTPoint& point);
 
 
         /**
@@ -149,7 +180,7 @@ class FTGL_EXPORT FTPoint
          * @param b
          * @return true if a & b are equal
          */
-        friend bool operator == ( const FTPoint &a, const FTPoint &b);
+        friend bool operator == (const FTPoint &a, const FTPoint &b);
 
         /**
          * Operator != Tests for non equality
@@ -158,9 +189,9 @@ class FTGL_EXPORT FTPoint
          * @param b
          * @return true if a & b are not equal
          */
-        friend bool operator != ( const FTPoint &a, const FTPoint &b);
-        
-        
+        friend bool operator != (const FTPoint &a, const FTPoint &b);
+
+
         /**
          * Cast to FTGL_DOUBLE*
          */
@@ -168,23 +199,23 @@ class FTGL_EXPORT FTPoint
         {
             return values;
         }
-        
+
 
         /**
          * Setters
          */
-        void X( FTGL_DOUBLE x) { values[0] = x;};
-        void Y( FTGL_DOUBLE y) { values[1] = y;};
-        void Z( FTGL_DOUBLE z) { values[2] = z;};
+        void X(FTGL_DOUBLE x) { values[0] = x; };
+        void Y(FTGL_DOUBLE y) { values[1] = y; };
+        void Z(FTGL_DOUBLE z) { values[2] = z; };
 
 
         /**
          * Getters
          */
-        FTGL_DOUBLE X() const { return values[0];};
-        FTGL_DOUBLE Y() const { return values[1];};
-        FTGL_DOUBLE Z() const { return values[2];};
-        
+        FTGL_DOUBLE X() const { return values[0]; };
+        FTGL_DOUBLE Y() const { return values[1]; };
+        FTGL_DOUBLE Z() const { return values[2]; };
+
     private:
         /**
          * The point data