/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1996--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Box::translate (Offset o)
{
for (Axis i = X_AXIS; i < NO_AXES; incr (i))
- interval_a_[i] += o[i];
+ if (!is_empty (i))
+ interval_a_[i] += o[i];
}
void
interval_a_[Y_AXIS].set_empty ();
}
+bool
+Box::is_empty () const
+{
+ return is_empty (X_AXIS) && is_empty (Y_AXIS);
+}
+
+bool
+Box::is_empty (Axis a) const
+{
+ Interval empty;
+ empty.set_empty ();
+ return interval_a_[a][LEFT] == empty[LEFT]
+ && interval_a_[a][RIGHT] == empty[RIGHT];
+}
+
Box::Box (Interval ix, Interval iy)
{
x () = ix;
interval_a_[Y_AXIS].widen (y);
}
+void
+Box::intersect (Box b)
+{
+ interval_a_[X_AXIS].intersect (b[X_AXIS]);
+ interval_a_[Y_AXIS].intersect (b[Y_AXIS]);
+}
+
// for debugging
void