]> git.tdb.fi Git - libs/gl.git/blobdiff - source/primitivebuilder.cpp
Add an element offset to PrimitiveBuilder
[libs/gl.git] / source / primitivebuilder.cpp
index 42e9d39cbb71c5bf1f56eaf53975bdd140fd607d..61bde9b96f8862881deb00e0719564dae1b08549 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspgl
-Copyright © 2008, 2010  Mikko Rasa, Mikkosoft Productions
+Copyright © 2008, 2010-2011  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -13,7 +13,8 @@ namespace GL {
 PrimitiveBuilder::PrimitiveBuilder(VertexArray &a):
        array(a),
        vab(array),
-       in_batch(false)
+       in_batch(false),
+       offs(0)
 { }
 
 void PrimitiveBuilder::begin(PrimitiveType t)
@@ -37,13 +38,20 @@ void PrimitiveBuilder::end()
        end_();
 }
 
+void PrimitiveBuilder::offset(unsigned o)
+{
+       if(o>array.size())
+               throw InvalidParameterValue("Element offset out of range");
+       offs = o;
+}
+
 void PrimitiveBuilder::element(unsigned i)
 {
        if(!in_batch)
                throw InvalidState("Element specification not between begin() and end()");
-       if(i>=array.size())
+       if(offs+i>=array.size())
                throw InvalidParameterValue("Element index out of range");
-       element_(i);
+       element_(offs+i);
 }
 
 PrimitiveType PrimitiveBuilder::get_type() const