diff --git a/src/2geom/linear.h b/src/2geom/linear.h
index 271e87be4642a4a29d84483b95c4c07146e75220..a7f4c8f21950364b3bd00a8c7f73ab69f056da7d 100644 (file)
--- a/src/2geom/linear.h
+++ b/src/2geom/linear.h
-/*
- * linear.h - Linear fragment function class
+/**
+ * \file
+ * \brief Linear fragment function class
*
* Authors:
* Nathan Hurst <njh@mail.csse.monash.edu.au>
#ifndef SEEN_LINEAR_H
#define SEEN_LINEAR_H
-#include "interval.h"
-#include "isnan.h"
+#include <2geom/interval.h>
+#include <2geom/isnan.h>
+
+
+//#define USE_SBASIS_OF
+
+#ifdef USE_SBASIS_OF
+
+#include "linear-of.h"
+
+#else
namespace Geom{
class SBasis;
-class Hat{
-public:
- Hat () {}
- Hat(double d) :d(d) {}
- operator double() const { return d; }
- double d;
-};
-
-class Tri{
-public:
- Tri () {}
- Tri(double d) :d(d) {}
- operator double() const { return d; }
- double d;
-};
-
class Linear{
public:
double a[2];
Linear() {}
Linear(double aa, double b) {a[0] = aa; a[1] = b;}
- Linear(Hat h, Tri t) {
- a[0] = double(h) - double(t)/2;
- a[1] = double(h) + double(t)/2;
- }
-
- Linear(Hat h) {
- a[0] = double(h);
- a[1] = double(h);
- }
+ Linear(double aa) {a[0] = aa; a[1] = aa;}
double operator[](const int i) const {
assert(i >= 0);
//defined in sbasis.h
inline SBasis toSBasis() const;
- inline Interval bounds_exact() const { return Interval(a[0], a[1]); }
- inline Interval bounds_fast() const { return bounds_exact(); }
- inline Interval bounds_local(double u, double v) const { return Interval(valueAt(u), valueAt(v)); }
+ inline OptInterval bounds_exact() const { return Interval(a[0], a[1]); }
+ inline OptInterval bounds_fast() const { return bounds_exact(); }
+ inline OptInterval bounds_local(double u, double v) const { return Interval(valueAt(u), valueAt(v)); }
- operator Tri() const {
+ double tri() const {
return a[1] - a[0];
}
- operator Hat() const {
+ double hat() const {
return (a[1] + a[0])/2;
}
};
a[0] /= b; a[1] /= b;
return a;
}
-};
+
+}
+#endif
#endif //SEEN_LINEAR_H