From 775c1443eb2a4dbe31638043690ba67e82d6f401 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 27 Jun 2013 17:37:03 +0000 Subject: [PATCH] From David Callu, "Added Vec3ub, Vec3us, Vec4us, Vec2ub and Vec2us classes" --- include/osg/Array | 236 +++++++++++++++++++++++++++++++---------- include/osg/Vec2ub | 154 +++++++++++++++++++++++++++ include/osg/Vec2us | 136 ++++++++++++++++++++++++ include/osg/Vec3ub | 170 +++++++++++++++++++++++++++++ include/osg/Vec3us | 164 ++++++++++++++++++++++++++++ include/osg/Vec4us | 186 ++++++++++++++++++++++++++++++++ src/osg/CMakeLists.txt | 13 ++- 7 files changed, 1000 insertions(+), 59 deletions(-) create mode 100644 include/osg/Vec2ub create mode 100644 include/osg/Vec2us create mode 100644 include/osg/Vec3ub create mode 100644 include/osg/Vec3us create mode 100644 include/osg/Vec4us diff --git a/include/osg/Array b/include/osg/Array index 55fab8342..b806c57dc 100644 --- a/include/osg/Array +++ b/include/osg/Array @@ -16,20 +16,32 @@ #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include #include -#include -#include -#include -#include -#include -#include -#include #include +#include #include @@ -52,28 +64,52 @@ class OSG_EXPORT Array : public BufferData enum Type { ArrayType = 0, + ByteArrayType = 1, ShortArrayType = 2, IntArrayType = 3, + UByteArrayType = 4, UShortArrayType = 5, UIntArrayType = 6, - Vec4ubArrayType = 7, - FloatArrayType = 8, - Vec2ArrayType = 9, - Vec3ArrayType = 10, - Vec4ArrayType = 11, + + FloatArrayType = 7, + DoubleArrayType = 8, + + Vec2bArrayType = 9, + Vec3bArrayType = 10, + Vec4bArrayType = 11, + Vec2sArrayType = 12, Vec3sArrayType = 13, Vec4sArrayType = 14, - Vec2bArrayType = 15, - Vec3bArrayType = 16, - Vec4bArrayType = 17, - DoubleArrayType = 18, - Vec2dArrayType = 19, - Vec3dArrayType = 20, - Vec4dArrayType = 21, - MatrixArrayType = 22 + + Vec2iArrayType = 15, + Vec3iArrayType = 16, + Vec4iArrayType = 17, + + Vec2ubArrayType = 18, + Vec3ubArrayType = 19, + Vec4ubArrayType = 20, + + Vec2usArrayType = 21, + Vec3usArrayType = 22, + Vec4usArrayType = 23, + + Vec2uiArrayType = 24, + Vec3uiArrayType = 25, + Vec4uiArrayType = 26, + + Vec2ArrayType = 27, + Vec3ArrayType = 28, + Vec4ArrayType = 29, + + Vec2dArrayType = 30, + Vec3dArrayType = 31, + Vec4dArrayType = 32, + + MatrixArrayType = 33, + MatrixdArrayType = 34 }; enum Binding @@ -362,32 +398,49 @@ class TemplateIndexArray : public IndexArray, public MixinVector typedef TemplateIndexArray ByteArray; typedef TemplateIndexArray ShortArray; typedef TemplateIndexArray IntArray; + typedef TemplateIndexArray UByteArray; typedef TemplateIndexArray UShortArray; typedef TemplateIndexArray UIntArray; typedef TemplateArray FloatArray; +typedef TemplateArray DoubleArray; -typedef TemplateArray Vec2Array; -typedef TemplateArray Vec3Array; -typedef TemplateArray Vec4Array; - -typedef TemplateArray Vec4ubArray; - -typedef TemplateArray Vec2sArray; -typedef TemplateArray Vec3sArray; -typedef TemplateArray Vec4sArray; typedef TemplateArray Vec2bArray; typedef TemplateArray Vec3bArray; typedef TemplateArray Vec4bArray; -typedef TemplateArray DoubleArray; -typedef TemplateArray Vec2dArray; -typedef TemplateArray Vec3dArray; -typedef TemplateArray Vec4dArray; +typedef TemplateArray Vec2sArray; +typedef TemplateArray Vec3sArray; +typedef TemplateArray Vec4sArray; -typedef TemplateArray MatrixfArray; +typedef TemplateArray Vec2iArray; +typedef TemplateArray Vec3iArray; +typedef TemplateArray Vec4iArray; + +typedef TemplateArray Vec2ubArray; +typedef TemplateArray Vec3ubArray; +typedef TemplateArray Vec4ubArray; + +typedef TemplateArray Vec2usArray; +typedef TemplateArray Vec3usArray; +typedef TemplateArray Vec4usArray; + +typedef TemplateArray Vec2uiArray; +typedef TemplateArray Vec3uiArray; +typedef TemplateArray Vec4uiArray; + +typedef TemplateArray Vec2Array; +typedef TemplateArray Vec3Array; +typedef TemplateArray Vec4Array; + +typedef TemplateArray Vec2dArray; +typedef TemplateArray Vec3dArray; +typedef TemplateArray Vec4dArray; + +typedef TemplateArray MatrixfArray; +typedef TemplateArray MatrixdArray; class ArrayVisitor @@ -397,20 +450,18 @@ class ArrayVisitor virtual ~ArrayVisitor() {} virtual void apply(Array&) {} + virtual void apply(ByteArray&) {} virtual void apply(ShortArray&) {} virtual void apply(IntArray&) {} + virtual void apply(UByteArray&) {} virtual void apply(UShortArray&) {} virtual void apply(UIntArray&) {} + virtual void apply(FloatArray&) {} virtual void apply(DoubleArray&) {} - virtual void apply(Vec2Array&) {} - virtual void apply(Vec3Array&) {} - virtual void apply(Vec4Array&) {} - - virtual void apply(Vec4ubArray&) {} virtual void apply(Vec2bArray&) {} virtual void apply(Vec3bArray&) {} @@ -420,11 +471,32 @@ class ArrayVisitor virtual void apply(Vec3sArray&) {} virtual void apply(Vec4sArray&) {} + virtual void apply(Vec2iArray&) {} + virtual void apply(Vec3iArray&) {} + virtual void apply(Vec4iArray&) {} + + virtual void apply(Vec2ubArray&) {} + virtual void apply(Vec3ubArray&) {} + virtual void apply(Vec4ubArray&) {} + + virtual void apply(Vec2usArray&) {} + virtual void apply(Vec3usArray&) {} + virtual void apply(Vec4usArray&) {} + + virtual void apply(Vec2uiArray&) {} + virtual void apply(Vec3uiArray&) {} + virtual void apply(Vec4uiArray&) {} + + virtual void apply(Vec2Array&) {} + virtual void apply(Vec3Array&) {} + virtual void apply(Vec4Array&) {} + virtual void apply(Vec2dArray&) {} virtual void apply(Vec3dArray&) {} virtual void apply(Vec4dArray&) {} virtual void apply(MatrixfArray&) {} + virtual void apply(MatrixdArray&) {} }; class ConstArrayVisitor @@ -434,20 +506,18 @@ class ConstArrayVisitor virtual ~ConstArrayVisitor() {} virtual void apply(const Array&) {} + virtual void apply(const ByteArray&) {} virtual void apply(const ShortArray&) {} virtual void apply(const IntArray&) {} + virtual void apply(const UByteArray&) {} virtual void apply(const UShortArray&) {} virtual void apply(const UIntArray&) {} + virtual void apply(const FloatArray&) {} virtual void apply(const DoubleArray&) {} - virtual void apply(const Vec2Array&) {} - virtual void apply(const Vec3Array&) {} - virtual void apply(const Vec4Array&) {} - - virtual void apply(const Vec4ubArray&) {} virtual void apply(const Vec2bArray&) {} virtual void apply(const Vec3bArray&) {} @@ -457,11 +527,32 @@ class ConstArrayVisitor virtual void apply(const Vec3sArray&) {} virtual void apply(const Vec4sArray&) {} + virtual void apply(const Vec2iArray&) {} + virtual void apply(const Vec3iArray&) {} + virtual void apply(const Vec4iArray&) {} + + virtual void apply(const Vec2ubArray&) {} + virtual void apply(const Vec3ubArray&) {} + virtual void apply(const Vec4ubArray&) {} + + virtual void apply(const Vec2usArray&) {} + virtual void apply(const Vec3usArray&) {} + virtual void apply(const Vec4usArray&) {} + + virtual void apply(const Vec2uiArray&) {} + virtual void apply(const Vec3uiArray&) {} + virtual void apply(const Vec4uiArray&) {} + + virtual void apply(const Vec2Array&) {} + virtual void apply(const Vec3Array&) {} + virtual void apply(const Vec4Array&) {} + virtual void apply(const Vec2dArray&) {} virtual void apply(const Vec3dArray&) {} virtual void apply(const Vec4dArray&) {} virtual void apply(const MatrixfArray&) {} + virtual void apply(const MatrixdArray&) {} }; @@ -474,19 +565,15 @@ class ValueVisitor virtual void apply(GLbyte&) {} virtual void apply(GLshort&) {} virtual void apply(GLint&) {} + virtual void apply(GLushort&) {} virtual void apply(GLubyte&) {} virtual void apply(GLuint&) {} + virtual void apply(GLfloat&) {} virtual void apply(GLdouble&) {} - virtual void apply(Vec2&) {} - virtual void apply(Vec3&) {} - virtual void apply(Vec4&) {} - - virtual void apply(Vec4ub&) {} - virtual void apply(Vec2b&) {} virtual void apply(Vec3b&) {} virtual void apply(Vec4b&) {} @@ -495,11 +582,32 @@ class ValueVisitor virtual void apply(Vec3s&) {} virtual void apply(Vec4s&) {} + virtual void apply(Vec2i&) {} + virtual void apply(Vec3i&) {} + virtual void apply(Vec4i&) {} + + virtual void apply(Vec2ub&) {} + virtual void apply(Vec3ub&) {} + virtual void apply(Vec4ub&) {} + + virtual void apply(Vec2us&) {} + virtual void apply(Vec3us&) {} + virtual void apply(Vec4us&) {} + + virtual void apply(Vec2ui&) {} + virtual void apply(Vec3ui&) {} + virtual void apply(Vec4ui&) {} + + virtual void apply(Vec2&) {} + virtual void apply(Vec3&) {} + virtual void apply(Vec4&) {} + virtual void apply(Vec2d&) {} virtual void apply(Vec3d&) {} virtual void apply(Vec4d&) {} virtual void apply(Matrixf&) {} + virtual void apply(Matrixd&) {} }; class ConstValueVisitor @@ -511,17 +619,14 @@ class ConstValueVisitor virtual void apply(const GLbyte&) {} virtual void apply(const GLshort&) {} virtual void apply(const GLint&) {} + virtual void apply(const GLushort&) {} virtual void apply(const GLubyte&) {} virtual void apply(const GLuint&) {} + virtual void apply(const GLfloat&) {} virtual void apply(const GLdouble&) {} - virtual void apply(const Vec4ub&) {} - - virtual void apply(const Vec2&) {} - virtual void apply(const Vec3&) {} - virtual void apply(const Vec4&) {} virtual void apply(const Vec2b&) {} virtual void apply(const Vec3b&) {} @@ -531,11 +636,32 @@ class ConstValueVisitor virtual void apply(const Vec3s&) {} virtual void apply(const Vec4s&) {} + virtual void apply(const Vec2i&) {} + virtual void apply(const Vec3i&) {} + virtual void apply(const Vec4i&) {} + + virtual void apply(const Vec2ub&) {} + virtual void apply(const Vec3ub&) {} + virtual void apply(const Vec4ub&) {} + + virtual void apply(const Vec2us&) {} + virtual void apply(const Vec3us&) {} + virtual void apply(const Vec4us&) {} + + virtual void apply(const Vec2ui&) {} + virtual void apply(const Vec3ui&) {} + virtual void apply(const Vec4ui&) {} + + virtual void apply(const Vec2&) {} + virtual void apply(const Vec3&) {} + virtual void apply(const Vec4&) {} + virtual void apply(const Vec2d&) {} virtual void apply(const Vec3d&) {} virtual void apply(const Vec4d&) {} virtual void apply(const Matrixf&) {} + virtual void apply(const Matrixd&) {} }; template diff --git a/include/osg/Vec2ub b/include/osg/Vec2ub new file mode 100644 index 000000000..4e5c76e4c --- /dev/null +++ b/include/osg/Vec2ub @@ -0,0 +1,154 @@ +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ + +#ifndef OSG_VEC2UB +#define OSG_VEC2UB 1 + +namespace osg { + +/** General purpose unsigned byte pair. +*/ +class Vec2ub +{ + public: + + /** Data type of vector components.*/ + typedef unsigned char value_type; + + /** Number of vector components. */ + enum { num_components = 2 }; + + /** Vec member variable. */ + value_type _v[2]; + + /** Constructor that sets all components of the vector to zero */ + Vec2ub() { _v[0]=0; _v[1]=0; } + + Vec2ub(value_type r, value_type g) { _v[0]=r; _v[1]=g; } + + inline bool operator == (const Vec2ub& v) const { return _v[0]==v._v[0] && _v[1]==v._v[1]; } + inline bool operator != (const Vec2ub& v) const { return _v[0]!=v._v[0] || _v[1]!=v._v[1]; } + inline bool operator < (const Vec2ub& v) const + { + if (_v[0]v._v[0]) return false; + else return (_v[1]v._v[0]) return false; + else return (_v[1]v._v[0]) return false; + else if (_v[1]v._v[1]) return false; + else return (_v[2]v._v[0]) return false; + else if (_v[1]v._v[1]) return false; + else return (_v[2]v._v[0]) return false; + else if (_v[1]v._v[1]) return false; + else if (_v[2]v._v[2]) return false; + else return (_v[3]