From 592c580721cadd7cc25cbc736207eb666086dd76 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 27 Jun 2013 09:59:33 +0000 Subject: [PATCH] Replaced deprecated osg::Geometry::set*Binding() usage. --- .../osganimationeasemotion.cpp | 29 ++-- .../osganimationskinning.cpp | 33 ++-- .../osganimationsolid/osganimationsolid.cpp | 22 ++- examples/osganimationviewer/AnimtkViewer.cpp | 25 ++- examples/osgphotoalbum/ImageReaderWriter.cpp | 13 +- examples/osgphotoalbum/osgphotoalbum.cpp | 156 +++++++++--------- 6 files changed, 132 insertions(+), 146 deletions(-) diff --git a/examples/osganimationeasemotion/osganimationeasemotion.cpp b/examples/osganimationeasemotion/osganimationeasemotion.cpp index 35aca1eb9..a58367915 100644 --- a/examples/osganimationeasemotion/osganimationeasemotion.cpp +++ b/examples/osganimationeasemotion/osganimationeasemotion.cpp @@ -1,14 +1,14 @@ -/* -*-c++-*- +/* -*-c++-*- * Copyright (C) 2010 Jeremy Moles * - * 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 + * 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ @@ -50,8 +50,7 @@ osg::Geometry* createEaseMotionGeometry(osgAnimation::Motion* motion) { geom->setUseDisplayList(false); geom->setVertexArray(v); - geom->setColorArray(cols); - geom->setColorBinding(osg::Geometry::BIND_OVERALL); + geom->setColorArray(cols, osg::Array::BIND_OVERALL); geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_STRIP, 0, v->size())); return geom; @@ -105,11 +104,11 @@ struct ColorLabel: public osgWidget::Label { setFont("fonts/VeraMono.ttf"); setFontSize(14); setFontColor(1.0f, 1.0f, 1.0f, 1.0f); - + setColor(0.3f, 0.3f, 0.3f, 1.0f); setPadding(2.0f); setCanFill(true); - + addSize(150.0f, 25.0f); setLabel(label); @@ -118,9 +117,9 @@ struct ColorLabel: public osgWidget::Label { bool mousePush(double, double, const osgWidget::WindowManager*) { osgWidget::Table* p = dynamic_cast(_parent); - + if(!p) return false; - + p->hide(); const std::string& name = getName(); @@ -232,7 +231,7 @@ struct ColorLabel: public osgWidget::Label { else if(!name.compare("InOutExpoMotion")) EASE_MOTION_SAMPLER->setMotion() ; - + else EASE_MOTION_SAMPLER->setMotion(); return true; @@ -240,13 +239,13 @@ struct ColorLabel: public osgWidget::Label { bool mouseEnter(double, double, const osgWidget::WindowManager*) { setColor(0.9f, 0.6f, 0.1f, 1.0f); - + return true; } bool mouseLeave(double, double, const osgWidget::WindowManager*) { setColor(0.3f, 0.3f, 0.3f, 1.0f); - + return true; } }; @@ -286,7 +285,7 @@ public: _window->addWidget(new ColorLabel("OutCircMotion"), 3, 3); _window->addWidget(new ColorLabel("InCircMotion"), 4, 3); _window->addWidget(new ColorLabel("InOutCircMotion"), 5, 3); - + _window->addWidget(new ColorLabel("OutExpoMotion"), 0, 4); _window->addWidget(new ColorLabel("InExpoMotion"), 1, 4); _window->addWidget(new ColorLabel("InOutExpoMotion"), 2, 4); diff --git a/examples/osganimationskinning/osganimationskinning.cpp b/examples/osganimationskinning/osganimationskinning.cpp index c288c513f..7bfa9b017 100644 --- a/examples/osganimationskinning/osganimationskinning.cpp +++ b/examples/osganimationskinning/osganimationskinning.cpp @@ -1,14 +1,14 @@ -/* -*-c++-*- +/* -*-c++-*- * Copyright (C) 2008 Cedric Pinson * - * 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 + * 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ @@ -34,7 +34,7 @@ osg::Geode* createAxis() { - osg::Geode* geode (new osg::Geode()); + osg::Geode* geode (new osg::Geode()); osg::Geometry* geometry (new osg::Geometry()); osg::Vec3Array* vertices (new osg::Vec3Array()); @@ -53,9 +53,7 @@ osg::Geode* createAxis() colors->push_back (osg::Vec4 (0.0f, 1.0f, 0.0f, 1.0f)); colors->push_back (osg::Vec4 (0.0f, 0.0f, 1.0f, 1.0f)); colors->push_back (osg::Vec4 (0.0f, 0.0f, 1.0f, 1.0f)); - geometry->setColorArray (colors); - - geometry->setColorBinding (osg::Geometry::BIND_PER_VERTEX); + geometry->setColorArray (colors, osg::Array::BIND_PER_VERTEX); geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES,0,6)); geode->addDrawable( geometry ); @@ -70,12 +68,11 @@ osgAnimation::RigGeometry* createTesselatedBox(int nsplit, float size) osg::ref_ptr vertices (new osg::Vec3Array()); osg::ref_ptr colors (new osg::Vec3Array()); geometry->setVertexArray (vertices.get()); - geometry->setColorArray (colors.get()); - geometry->setColorBinding (osg::Geometry::BIND_PER_VERTEX); - + geometry->setColorArray (colors.get(), osg::Array::BIND_PER_VERTEX); + float step = size / static_cast(nsplit); float s = 0.5f/4.0f; - for (int i = 0; i < nsplit; i++) + for (int i = 0; i < nsplit; i++) { float x = -1.0f + static_cast(i) * step; std::cout << x << std::endl; @@ -92,7 +89,7 @@ osgAnimation::RigGeometry* createTesselatedBox(int nsplit, float size) } osg::ref_ptr array = new osg::UIntArray; - for (int i = 0; i < nsplit - 1; i++) + for (int i = 0; i < nsplit - 1; i++) { int base = i * 4; array->push_back(base); @@ -123,7 +120,7 @@ osgAnimation::RigGeometry* createTesselatedBox(int nsplit, float size) array->push_back(base+2); array->push_back(base+7); } - + geometry->addPrimitiveSet(new osg::DrawElementsUInt(osg::PrimitiveSet::TRIANGLES, array->size(), &array->front())); geometry->setUseDisplayList( false ); riggeometry->setSourceGeometry(geometry); @@ -144,7 +141,7 @@ void initVertexMap(osgAnimation::Bone* b0, (*vim)[b1->getName()].setName(b1->getName()); (*vim)[b2->getName()].setName(b2->getName()); - for (int i = 0; i < (int)array->size(); i++) + for (int i = 0; i < (int)array->size(); i++) { float val = (*array)[i][0]; std::cout << val << std::endl; @@ -229,7 +226,7 @@ int main (int argc, char* argv[]) } manager->registerAnimation(anim); manager->buildTargetReference(); - + // let's start ! manager->playAnimation(anim); @@ -247,7 +244,7 @@ int main (int argc, char* argv[]) trueroot->setDataVariance(osg::Object::DYNAMIC); rootTransform->addChild(trueroot); scene->addChild(rootTransform); - + osgAnimation::RigGeometry* geom = createTesselatedBox(4, 4.0f); osg::Geode* geode = new osg::Geode; geode->addDrawable(geom); diff --git a/examples/osganimationsolid/osganimationsolid.cpp b/examples/osganimationsolid/osganimationsolid.cpp index 13d29ad60..045bd0f74 100644 --- a/examples/osganimationsolid/osganimationsolid.cpp +++ b/examples/osganimationsolid/osganimationsolid.cpp @@ -1,14 +1,14 @@ -/* -*-c++-*- +/* -*-c++-*- * Copyright (C) 2008 Cedric Pinson * - * 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 + * 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ @@ -30,7 +30,7 @@ using namespace osgAnimation; osg::ref_ptr createAxis() { - osg::ref_ptr geode (new osg::Geode()); + osg::ref_ptr geode (new osg::Geode()); osg::ref_ptr geometry (new osg::Geometry()); osg::ref_ptr vertices (new osg::Vec3Array()); @@ -49,9 +49,7 @@ osg::ref_ptr createAxis() colors->push_back (osg::Vec4 (0.0f, 1.0f, 0.0f, 1.0f)); colors->push_back (osg::Vec4 (0.0f, 0.0f, 1.0f, 1.0f)); colors->push_back (osg::Vec4 (0.0f, 0.0f, 1.0f, 1.0f)); - geometry->setColorArray (colors.get()); - - geometry->setColorBinding (osg::Geometry::BIND_PER_VERTEX); + geometry->setColorArray (colors.get(), osg::Array::BIND_PER_VERTEX); geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES,0,6)); geode->addDrawable( geometry.get() ); @@ -114,7 +112,7 @@ int main (int argc, char* argv[]) channelAnimation1->getOrCreateSampler()->getOrCreateKeyframeContainer()->push_back(osgAnimation::Vec3Keyframe(0, osg::Vec3(0,0,0))); channelAnimation1->getOrCreateSampler()->getOrCreateKeyframeContainer()->push_back(osgAnimation::Vec3Keyframe(2, osg::Vec3(1,1,0))); osgAnimation::Animation* anim1 = new osgAnimation::Animation; - anim1->addChannel(channelAnimation1); + anim1->addChannel(channelAnimation1); anim1->setPlayMode(osgAnimation::Animation::PPONG); @@ -130,12 +128,12 @@ int main (int argc, char* argv[]) osgAnimation::Animation* anim2 = new osgAnimation::Animation; anim2->addChannel(channelAnimation2); anim2->setPlayMode(osgAnimation::Animation::LOOP); - + // We register all animation inside the scheduler mng->registerAnimation(anim1); mng->registerAnimation(anim2); - + //start the animation mng->playAnimation(anim1); mng->playAnimation(anim2); diff --git a/examples/osganimationviewer/AnimtkViewer.cpp b/examples/osganimationviewer/AnimtkViewer.cpp index 8b3a88278..969eac693 100644 --- a/examples/osganimationviewer/AnimtkViewer.cpp +++ b/examples/osganimationviewer/AnimtkViewer.cpp @@ -1,14 +1,14 @@ -/* -*-c++-*- +/* -*-c++-*- * Copyright (C) 2008 Cedric Pinson * - * 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 + * 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. * * Authors: @@ -37,13 +37,13 @@ const int WIDTH = 1440; const int HEIGHT = 900; -osg::Geode* createAxis() +osg::Geode* createAxis() { - osg::Geode* geode = new osg::Geode(); + osg::Geode* geode = new osg::Geode(); osg::Geometry* geometry = new osg::Geometry(); osg::Vec3Array* vertices = new osg::Vec3Array(); osg::Vec4Array* colors = new osg::Vec4Array(); - + vertices->push_back(osg::Vec3(0.0f, 0.0f, 0.0f)); vertices->push_back(osg::Vec3(1.0f, 0.0f, 0.0f)); vertices->push_back(osg::Vec3(0.0f, 0.0f, 0.0f)); @@ -57,10 +57,9 @@ osg::Geode* createAxis() colors->push_back(osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f)); colors->push_back(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f)); colors->push_back(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f)); - + geometry->setVertexArray(vertices); - geometry->setColorArray(colors); - geometry->setColorBinding(osg::Geometry::BIND_PER_VERTEX); + geometry->setColorArray(colors, osg::Array::BIND_PER_VERTEX); geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES, 0, 6)); geometry->getOrCreateStateSet()->setMode(GL_LIGHTING, false); @@ -100,7 +99,7 @@ struct AddHelperBone : public osg::NodeVisitor } }; -int main(int argc, char** argv) +int main(int argc, char** argv) { osg::ArgumentParser arguments(&argc, argv); arguments.getApplicationUsage()->setApplicationName(arguments.getApplicationName()); @@ -153,7 +152,7 @@ int main(int argc, char** argv) AnimtkViewerGUI* gui = new AnimtkViewerGUI(&viewer, WIDTH, HEIGHT, 0x1234); osg::Camera* camera = gui->createParentOrthoCamera(); - + node->setNodeMask(0x0001); group->addChild(node); diff --git a/examples/osgphotoalbum/ImageReaderWriter.cpp b/examples/osgphotoalbum/ImageReaderWriter.cpp index 6eb9e88bc..ddfa8f63f 100644 --- a/examples/osgphotoalbum/ImageReaderWriter.cpp +++ b/examples/osgphotoalbum/ImageReaderWriter.cpp @@ -33,7 +33,7 @@ ImageReaderWriter::DataReference::DataReference(): _center(0.625f,0.0f,0.0f), _maximumWidth(1.25f,0.0f,0.0f), _maximumHeight(0.0f,0.0f,1.0f), - _numPointsAcross(10), + _numPointsAcross(10), _numPointsUp(10), _backPage(false) {} @@ -44,7 +44,7 @@ ImageReaderWriter::DataReference::DataReference(const std::string& fileName, uns _center(width*0.5f,0.0f,height*0.5f), _maximumWidth(width,0.0f,0.0f), _maximumHeight(0.0f,0.0f,height), - _numPointsAcross(10), + _numPointsAcross(10), _numPointsUp(10), _backPage(backPage) {} @@ -55,7 +55,7 @@ ImageReaderWriter::DataReference::DataReference(const DataReference& rhs): _center(rhs._center), _maximumWidth(rhs._maximumWidth), _maximumHeight(rhs._maximumHeight), - _numPointsAcross(rhs._numPointsAcross), + _numPointsAcross(rhs._numPointsAcross), _numPointsUp(rhs._numPointsUp), _backPage(rhs._backPage) {} @@ -121,11 +121,11 @@ osgDB::ReaderWriter::ReadResult ImageReaderWriter::local_readNode(const std::str osg::Image* image = 0; float s=1.0f,t=1.0f; - + // try to load photo from any loaded PhotoArchives if (!_photoArchiveList.empty()) image = readImage_Archive(dr,s,t); - + // not loaded yet, so try to load it directly. if (!image) image = readImage_DynamicSampling(dr,s,t); @@ -210,8 +210,7 @@ osgDB::ReaderWriter::ReadResult ImageReaderWriter::local_readNode(const std::str osg::Vec4Array* colours = new osg::Vec4Array(1); (*colours)[0].set(1.0f,1.0f,1.0,1.0f); - geom->setColorArray(colours); - geom->setColorBinding(osg::Geometry::BIND_OVERALL); + geom->setColorArray(colours, osg::Array::BIND_OVERALL); geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4)); diff --git a/examples/osgphotoalbum/osgphotoalbum.cpp b/examples/osgphotoalbum/osgphotoalbum.cpp index 35acbe469..ac6e491e2 100644 --- a/examples/osgphotoalbum/osgphotoalbum.cpp +++ b/examples/osgphotoalbum/osgphotoalbum.cpp @@ -38,7 +38,7 @@ using namespace osg; // now register with Registry to instantiate the above reader/writer, // declaring in main so that the code to set up PagedLOD can get a handle -// to the ImageReaderWriter's +// to the ImageReaderWriter's osgDB::RegisterReaderWriterProxy g_ImageReaderWriter; class Album; @@ -54,13 +54,13 @@ public: if (page.valid()) return page.release(); else return 0; } - + virtual void traverse(osg::NodeVisitor& nv); void setRotation(float angle) { - _rotation = angle; - _targetRotation = angle; + _rotation = angle; + _targetRotation = angle; dirtyBound(); } @@ -68,10 +68,10 @@ public: void rotateTo(float angle, float timeToRotateBy) { - _targetRotation = angle; + _targetRotation = angle; _targetTime = timeToRotateBy; } - + bool rotating() const { return _targetRotation!=_rotation; } void setPageVisible(bool frontVisible,bool backVisible) @@ -86,7 +86,7 @@ public: public: - virtual bool computeLocalToWorldMatrix(osg::Matrix& matrix,osg::NodeVisitor*) const + virtual bool computeLocalToWorldMatrix(osg::Matrix& matrix,osg::NodeVisitor*) const { if (_referenceFrame==RELATIVE_RF) { @@ -119,7 +119,7 @@ public: osg::Matrix getInverseMatrix() const { return osg::Matrix::inverse(getMatrix()); } protected: - + Page(Album* album, unsigned int pageNo, const std::string& frontFileName, const std::string& backFileName, float width, float height); float _rotation; @@ -141,19 +141,19 @@ public: Album(osg::ArgumentParser& ap, float width, float height); osg::Group* getScene() { return _group.get(); } - + const osg::Group* getScene() const { return _group.get(); } osg::Matrix getPageOffset(unsigned int pageNo) const; - + bool nextPage(float timeToRotateBy) { return gotoPage(_currentPageNo+1,timeToRotateBy); } bool previousPage(float timeToRotateBy) { return _currentPageNo>=1?gotoPage(_currentPageNo-1,timeToRotateBy):false; } - + bool gotoPage(unsigned int pageNo, float timeToRotateBy); - + osg::StateSet* getBackgroundStateSet() { return _backgroundStateSet.get(); } - + void setVisibility(); protected: @@ -162,13 +162,13 @@ protected: osg::ref_ptr _group; PageList _pages; - + osg::ref_ptr _backgroundStateSet; - + unsigned int _currentPageNo; float _radiusOfRings; float _startAngleOfPages; - float _deltaAngleBetweenPages; + float _deltaAngleBetweenPages; }; @@ -183,12 +183,12 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, _targetRotation = 0; _targetTime = 0; _lastTimeTraverse = 0; - + _pageOffset = album->getPageOffset(pageNo); - + setNumChildrenRequiringUpdateTraversal(1); - - + + // set up subgraph osgDB::ReaderWriter* readerWriter = osgDB::Registry::instance()->getReaderWriterForExtension("gdal"); if (!readerWriter) @@ -200,7 +200,7 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, ImageReaderWriter* rw = g_ImageReaderWriter.get(); - + // set up non visible page. osg::Group* non_visible_page = new osg::Group; _switch->addChild(non_visible_page); @@ -218,7 +218,7 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, (*coords)[6].set(width,0.0f,0.0f); (*coords)[7].set(0.0f,0.0f,0.0f); geom->setVertexArray(coords); - + osg::Vec3Array* normals = new osg::Vec3Array(8); (*normals)[0].set(-1.0f,0.0f,0.0f); @@ -229,8 +229,7 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, (*normals)[5].set(1.0f,0.0f,0.0f); (*normals)[6].set(0.0f,0.0f,1.0f); (*normals)[7].set(0.0f,0.0f,1.0f); - geom->setNormalArray(normals); - geom->setNormalBinding(osg::Geometry::BIND_PER_VERTEX); + geom->setNormalArray(normals, osg::Array::BIND_PER_VERTEX); osg::Vec2Array* tcoords = new osg::Vec2Array(8); (*tcoords)[0].set(0.0f,0.0f); @@ -245,16 +244,15 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, osg::Vec4Array* colours = new osg::Vec4Array(1); (*colours)[0].set(1.0f,1.0f,1.0,1.0f); - geom->setColorArray(colours); - geom->setColorBinding(osg::Geometry::BIND_OVERALL); + geom->setColorArray(colours, osg::Array::BIND_OVERALL); geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES,0,8)); // set up the geode. osg::Geode* geode = new osg::Geode; geode->addDrawable(geom); - - + + non_visible_page->addChild(geode); } @@ -277,8 +275,7 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, osg::Vec3Array* normals = new osg::Vec3Array(1); (*normals)[0].set(0.0f,-1.0f,0.0f); - geom->setNormalArray(normals); - geom->setNormalBinding(osg::Geometry::BIND_OVERALL); + geom->setNormalArray(normals, osg::Array::BIND_OVERALL); osg::Vec2Array* tcoords = new osg::Vec2Array(4); (*tcoords)[0].set(0.0f,1.0f); @@ -289,16 +286,15 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, osg::Vec4Array* colours = new osg::Vec4Array(1); (*colours)[0].set(1.0f,1.0f,1.0,1.0f); - geom->setColorArray(colours); - geom->setColorBinding(osg::Geometry::BIND_OVERALL); + geom->setColorArray(colours, osg::Array::BIND_OVERALL); geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4)); // set up the geode. osg::Geode* geode = new osg::Geode; geode->addDrawable(geom); - - + + front_page->addChild(geode); } @@ -306,7 +302,7 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, { float cut_off_distance = 8.0f; float max_visible_distance = 300.0f; - + osg::Vec3 center(width*0.5f,0.0f,height*0.5f); osgText::Text* text = new osgText::Text; @@ -320,15 +316,15 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, osg::Geode* geode = new osg::Geode; geode->addDrawable(text); - + osg::PagedLOD* pagedlod = new osg::PagedLOD; pagedlod->setCenter(center); pagedlod->setRadius(1.6f); pagedlod->setNumChildrenThatCannotBeExpired(2); - + pagedlod->setRange(0,max_visible_distance,1e7); pagedlod->addChild(geode); - + pagedlod->setRange(1,cut_off_distance,max_visible_distance); pagedlod->setFileName(1,rw->insertReference(frontFileName,256,width,height,false)); @@ -337,8 +333,8 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, front_page->addChild(pagedlod); } - - + + // set up back of page. osg::Group* back_page = new osg::Group; _switch->addChild(back_page); @@ -357,8 +353,7 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, osg::Vec3Array* normals = new osg::Vec3Array(1); (*normals)[0].set(0.0f,1.0f,0.0f); - geom->setNormalArray(normals); - geom->setNormalBinding(osg::Geometry::BIND_OVERALL); + geom->setNormalArray(normals, osg::Array::BIND_OVERALL); osg::Vec2Array* tcoords = new osg::Vec2Array(4); (*tcoords)[0].set(1.0f,1.0f); @@ -369,16 +364,15 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, osg::Vec4Array* colours = new osg::Vec4Array(1); (*colours)[0].set(1.0f,1.0f,1.0,1.0f); - geom->setColorArray(colours); - geom->setColorBinding(osg::Geometry::BIND_OVERALL); + geom->setColorArray(colours, osg::Array::BIND_OVERALL); geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4)); // set up the geode. osg::Geode* geode = new osg::Geode; geode->addDrawable(geom); - - + + back_page->addChild(geode); } @@ -386,7 +380,7 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, { float cut_off_distance = 8.0f; float max_visible_distance = 300.0f; - + osg::Vec3 center(width*0.5f,0.0f,height*0.5f); osgText::Text* text = new osgText::Text; @@ -400,15 +394,15 @@ Page::Page(Album* album, unsigned int pageNo, const std::string& frontFileName, osg::Geode* geode = new osg::Geode; geode->addDrawable(text); - + osg::PagedLOD* pagedlod = new osg::PagedLOD; pagedlod->setCenter(center); pagedlod->setRadius(1.6f); pagedlod->setNumChildrenThatCannotBeExpired(2); - + pagedlod->setRange(0,max_visible_distance,1e7); pagedlod->addChild(geode); - + pagedlod->setRange(1,cut_off_distance,max_visible_distance); pagedlod->setFileName(1,rw->insertReference(backFileName,256,width,height,true)); @@ -430,15 +424,15 @@ void Page::traverse(osg::NodeVisitor& nv) if (framestamp) { double t = framestamp->getSimulationTime(); - + if (_rotation!=_targetRotation) { if (t>=_targetTime) _rotation = _targetRotation; else _rotation += (_targetRotation-_rotation)*(t-_lastTimeTraverse)/(_targetTime-_lastTimeTraverse); - + dirtyBound(); } - + _lastTimeTraverse = t; } @@ -458,7 +452,7 @@ Album::Album(osg::ArgumentParser& arguments, float width, float height) for(int pos=1;posaddPhotoArchive(photoArchive); photoArchive->getImageFileNameList(fileList); } - + } else { @@ -477,17 +471,17 @@ Album::Album(osg::ArgumentParser& arguments, float width, float height) } } } - + _radiusOfRings = 0.02; _startAngleOfPages = 0.0f; _deltaAngleBetweenPages = osg::PI/(float)fileList.size(); - + _group = new osg::Group; _group->getOrCreateStateSet()->setAttributeAndModes(new osg::CullFace,osg::StateAttribute::ON); - + _backgroundStateSet = new osg::StateSet; _backgroundStateSet->setAttributeAndModes(new osg::PolygonOffset(1.0f,1.0f),osg::StateAttribute::ON); - + // load the images. unsigned int i; for(i=0;iaddChild(page); } } - + setVisibility(); } @@ -524,7 +518,7 @@ bool Album::gotoPage(unsigned int pageNo, float timeToRotateBy) _pages[i]->rotateTo(osg::PI,timeToRotateBy); } _currentPageNo = pageNo; - + return true; } else if (pageNo<_currentPageNo) @@ -534,10 +528,10 @@ bool Album::gotoPage(unsigned int pageNo, float timeToRotateBy) _pages[i]->rotateTo(0,timeToRotateBy); } _currentPageNo = pageNo; - + return true; } - + return false; } @@ -554,10 +548,10 @@ void Album::setVisibility() ((i+1)<_pages.size()?_pages[i+1]->rotating():false) || i==_currentPageNo-1 || i==_pages.size()-1; - + _pages[i]->setPageVisible(front_visible,back_visible); } - + } @@ -569,13 +563,13 @@ class SlideEventHandler : public osgGA::GUIEventHandler public: SlideEventHandler(); - + META_Object(osgStereImageApp,SlideEventHandler); void set(Album* album, float timePerSlide, bool autoSteppingActive); virtual bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&); - + virtual void getUsage(osg::ApplicationUsage& usage) const; protected: @@ -604,8 +598,8 @@ void SlideEventHandler::set(Album* album, float timePerSlide, bool autoSteppingA _album = album; _timePerSlide = timePerSlide; - _autoSteppingActive = autoSteppingActive; - + _autoSteppingActive = autoSteppingActive; + } bool SlideEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&) @@ -648,7 +642,7 @@ bool SlideEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIAction _album->nextPage(ea.getTime()+1.0f); } } - + _album->setVisibility(); } @@ -671,7 +665,7 @@ int main( int argc, char **argv ) // use an ArgumentParser object to manage the program arguments. osg::ArgumentParser arguments(&argc,argv); - + // set up the usage document, in case we need to print out how to use this program. arguments.getApplicationUsage()->setDescription(arguments.getApplicationName()+" is the example which demonstrates use node masks to create stereo images."); arguments.getApplicationUsage()->setCommandLineUsage(arguments.getApplicationName()+" [options] image_file [image_file]"); @@ -679,11 +673,11 @@ int main( int argc, char **argv ) arguments.getApplicationUsage()->addCommandLineOption("-a","Enter auto advance of image pairs on start up."); arguments.getApplicationUsage()->addCommandLineOption("-h or --help","Display this information"); arguments.getApplicationUsage()->addCommandLineOption("--create ","Create an photo archive of specified files"); - + // construct the viewer. osgViewer::Viewer viewer(arguments); - + viewer.setThreadingModel(osgViewer::Viewer::SingleThreaded); // register the handler to add keyboard and mouse handling. @@ -706,7 +700,7 @@ int main( int argc, char **argv ) std::string archiveName; while (arguments.read("--create",archiveName)) {} - + // any option left unread are converted into errors to write out later. arguments.reportRemainingOptionsAsUnrecognized(); @@ -716,7 +710,7 @@ int main( int argc, char **argv ) arguments.writeErrorMessages(std::cout); return 1; } - + if (arguments.argc()<=1) { arguments.getApplicationUsage()->write(std::cout,osg::ApplicationUsage::COMMAND_LINE_OPTION); @@ -732,9 +726,9 @@ int main( int argc, char **argv ) { if (arguments.isString(i)) fileNameList.push_back(std::string(arguments[i])); } - + PhotoArchive::buildArchive(archiveName,fileNameList); - + return 0; } @@ -746,7 +740,7 @@ int main( int argc, char **argv ) fovy = osg::DegreesToRadians(fovy); double fovx = atan(tan(fovy*0.5)*aspectRatio)*2.0; - + float radius = 1.0f; float width = 2*radius*tan(fovx*0.5f); float height = 2*radius*tan(fovy*0.5f); @@ -755,7 +749,7 @@ int main( int argc, char **argv ) // creat the scene from the file list. osg::ref_ptr rootNode = album->getScene(); - + if (!rootNode) return 0; @@ -766,9 +760,9 @@ int main( int argc, char **argv ) // set up the SlideEventHandler. seh->set(album.get(),timeDelayBetweenSlides,autoSteppingActive); - + viewer.realize(); - + // switch off the cursor osgViewer::Viewer::Windows windows; viewer.getWindows(windows);