]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/box.hh
Imported Upstream version 2.19.45
[lilypond.git] / lily / include / box.hh
index bd3a7e7703d145db295035062ef5c7105ea992e1..d4a8655a429b0cf965364132871cf2b7f9c3b054 100644 (file)
@@ -1,32 +1,44 @@
 /*
-    some 2D geometrical concepts
+  some 2D geometrical concepts
 */
 
 #ifndef BOXES_HH
 #define BOXES_HH
 
-#include "flower-proto.hh"
-#include "real.hh"
 #include "interval.hh"
 #include "offset.hh"
-#include "axes.hh"
+#include "smobs.hh"
 
-
-struct Box {
+class Box : public Simple_smob<Box>
+{
+public:
+  static const char * const type_p_name_;
+private:
   Interval interval_a_[NO_AXES];
-    
-  Interval &x() {return interval_a_[X_AXIS]; }
-  Interval &y(){ return interval_a_[Y_AXIS]; }
-  Interval x() const{ return interval_a_[X_AXIS]; }
-  Interval y() const{return interval_a_[Y_AXIS]; }
-  Interval operator[](Axis a) const;
-  Interval &operator[] (Axis a);
-    
+public:
+  Interval &x () {return interval_a_[X_AXIS]; }
+  Interval &y () { return interval_a_[Y_AXIS]; }
+  Interval x () const { return interval_a_[X_AXIS]; }
+  Interval y () const {return interval_a_[Y_AXIS]; }
+  Interval operator [] (Axis a) const;
+  Interval &operator [] (Axis a);
+  Real area () const;
+  bool is_empty () const;
+  bool is_empty (Axis a) const;
+
+  Offset center () const;
+
   void translate (Offset o);
+
   /// smallest box enclosing #b#
   void set_empty ();
+  void add_point (Offset);
+  void widen (Real x, Real y);
+  void scale (Real r);
   void unite (Box b);
-  Box();
+  void intersect (Box b);
+  void print ();
+  Box ();
   Box (Interval ix, Interval iy);
 };