/*
offset.hh -- part of GNU LilyPond
- (c) 1996--2005 Han-Wen Nienhuys
+ (c) 1996--2008 Han-Wen Nienhuys
*/
#ifndef OFFSET_HH
#define OFFSET_HH
#include "axis.hh"
-#include "string.hh"
+#include "std-string.hh"
+#include "real.hh"
-Offset complex_multiply (Offset, Offset);
-Offset complex_divide (Offset, Offset);
-Offset complex_exp (Offset);
/*
This is a mixture a 2D vector. Sometimes it can
return *this;
}
+ Offset &operator /= (Real a)
+ {
+ (*this) *= 1/a;
+ return *this;
+ }
+
Offset &operator *= (Real a)
{
(*this)[X_AXIS] *= a;
coordinate_a_[X_AXIS] = coordinate_a_[Y_AXIS] = 0.0;
}
- String to_string () const;
+ string to_string () const;
Offset &mirror (Axis a)
{
coordinate_a_[a] = -coordinate_a_[a];
return *this;
}
-
+ Offset direction () const;
+ Offset swapped () const;
+
Real arg () const;
+ Real angle_degrees () const;
Real length () const;
bool is_sane () const;
- Offset operator *= (Offset z2)
- {
- *this = complex_multiply (*this, z2);
- return *this;
- }
+ Offset operator *= (Offset z2);
};
+#include "arithmetic-operator.hh"
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, +);
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, -);
IMPLEMENT_ARITHMETIC_OPERATOR (Offset, *);
+
+
+Offset complex_multiply (Offset, Offset);
+Offset complex_divide (Offset, Offset);
+Offset complex_exp (Offset);
+
+inline Offset
+Offset::operator *= (Offset z2)
+{
+ *this = complex_multiply (*this, z2);
+ return *this;
+}
+
inline Offset
operator * (Real o1, Offset o2)
{
return o2;
}
+inline Offset
+operator / (Offset o1, Real a)
+{
+ o1 /= a;
+ return o1;
+}
+
inline Offset
operator * (Offset o1, Real o2)
{