center on path
[mussa.git] / alg / glsequence.cpp
index aaedf183fdf9823d0914297521a0f0838fa7065c..4a3b9899d208a31e8da5ec7488873662bb24e92c 100644 (file)
@@ -60,6 +60,11 @@ GLfloat GlSequence::x() const
   return seq_x;
 }
 
+GLfloat GlSequence::right() const
+{
+  return length()-seq_x;
+}
+
 void GlSequence::setY(GLfloat value)
 {
   seq_y = value;
@@ -82,9 +87,8 @@ GLfloat GlSequence::length() const
 
 Sequence::size_type GlSequence::leftbase(GLfloat left) const
 {
-  assert (seq_x == 0);
-  left = ceil(left);
-  if (left < seq_x)
+  left = ceil(left) - seq_x;
+  if (left < 0)
     return 0;
   else if (left > seq.size() )
     return seq.size();
@@ -94,11 +98,12 @@ Sequence::size_type GlSequence::leftbase(GLfloat left) const
 
 Sequence::size_type GlSequence::rightbase(GLfloat right) const
 {
-  assert (seq_x == 0);
-  right = floor(right);
+  right = floor(right) - seq_x;
   if (right > seq.size())
     return seq.size();
-  else
+  else if ( right < 0) 
+    return 0;
+  else 
     return (Sequence::size_type)right;
 }
 
@@ -115,10 +120,6 @@ Sequence::const_iterator GlSequence::sequence_end() const
 Sequence::const_iterator 
 GlSequence::sequence_begin(GLfloat left, GLfloat right) const
 {
-  // the following code will be wrong when sequences can be slid around
-  // so make sure we break.
-  assert (seq_x == 0);
-
   if ( leftbase(left) > seq.size() or left > right )
     return seq.end();
   else
@@ -128,10 +129,6 @@ GlSequence::sequence_begin(GLfloat left, GLfloat right) const
 Sequence::const_iterator 
 GlSequence::sequence_end(GLfloat left, GLfloat right) const
 {
-  // the following code will be wrong when sequences can be slid around
-  // so make sure we break.
-  assert (seq_x == 0);
-
   if ( rightbase(right) > seq.size() or left > right )
     return seq.end();
   else