From 39fc52fe0a5c24afa371c4f527f1633eaccd423c Mon Sep 17 00:00:00 2001 From: frohlich Date: Tue, 31 Oct 2006 06:14:38 +0000 Subject: [PATCH] Modified Files: Makefile.am SGStateAttributeVisitor.hxx SGTextureStateAttributeVisitor.hxx Added Files: SGStateAttributeVisitor.cxx SGTextureStateAttributeVisitor.cxx: Move implementation into cxx files --- simgear/scene/util/Makefile.am | 4 +- .../scene/util/SGStateAttributeVisitor.cxx | 69 +++++++++++++++++ .../scene/util/SGStateAttributeVisitor.hxx | 47 +++--------- .../util/SGTextureStateAttributeVisitor.cxx | 76 +++++++++++++++++++ .../util/SGTextureStateAttributeVisitor.hxx | 52 +++---------- 5 files changed, 171 insertions(+), 77 deletions(-) create mode 100644 simgear/scene/util/SGStateAttributeVisitor.cxx create mode 100644 simgear/scene/util/SGTextureStateAttributeVisitor.cxx diff --git a/simgear/scene/util/Makefile.am b/simgear/scene/util/Makefile.am index 0241c3e0..0d863524 100644 --- a/simgear/scene/util/Makefile.am +++ b/simgear/scene/util/Makefile.am @@ -11,6 +11,8 @@ include_HEADERS = \ SGStateAttributeVisitor.hxx \ SGTextureStateAttributeVisitor.hxx -libsgutil_a_SOURCES = +libsgutil_a_SOURCES = \ + SGStateAttributeVisitor.cxx \ + SGTextureStateAttributeVisitor.cxx INCLUDES = -I$(top_srcdir) diff --git a/simgear/scene/util/SGStateAttributeVisitor.cxx b/simgear/scene/util/SGStateAttributeVisitor.cxx new file mode 100644 index 00000000..a5e9d373 --- /dev/null +++ b/simgear/scene/util/SGStateAttributeVisitor.cxx @@ -0,0 +1,69 @@ +/* -*-c++-*- + * + * Copyright (C) 2006 Mathias Froehlich + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program 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 GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#include "SGStateAttributeVisitor.hxx" + +SGStateAttributeVisitor::SGStateAttributeVisitor() : + osg::NodeVisitor(osg::NodeVisitor::NODE_VISITOR, + osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) +{ +} + +void +SGStateAttributeVisitor::apply(osg::StateSet::RefAttributePair&) +{ +} + +void +SGStateAttributeVisitor::apply(osg::StateSet::AttributeList& attrList) +{ + osg::StateSet::AttributeList::iterator i; + i = attrList.begin(); + while (i != attrList.end()) { + apply(i->second); + ++i; + } +} + +void +SGStateAttributeVisitor::apply(osg::StateSet* stateSet) +{ + if (!stateSet) + return; + apply(stateSet->getAttributeList()); +} + +void +SGStateAttributeVisitor::apply(osg::Node& node) +{ + apply(node.getStateSet()); + traverse(node); +} + +void +SGStateAttributeVisitor::apply(osg::Geode& node) +{ + unsigned nDrawables = node.getNumDrawables(); + for (unsigned i = 0; i < nDrawables; ++i) + apply(node.getDrawable(i)->getStateSet()); + apply(node.getStateSet()); + traverse(node); +} diff --git a/simgear/scene/util/SGStateAttributeVisitor.hxx b/simgear/scene/util/SGStateAttributeVisitor.hxx index cd381413..b35747fc 100644 --- a/simgear/scene/util/SGStateAttributeVisitor.hxx +++ b/simgear/scene/util/SGStateAttributeVisitor.hxx @@ -22,44 +22,19 @@ #ifndef SG_SCENE_STATEATTRIBUTEVISITOR_HXX #define SG_SCENE_STATEATTRIBUTEVISITOR_HXX +#include +#include +#include +#include + class SGStateAttributeVisitor : public osg::NodeVisitor { public: - SGStateAttributeVisitor() : - osg::NodeVisitor(osg::NodeVisitor::NODE_VISITOR, - osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) - { } - - virtual void apply(osg::StateSet::RefAttributePair&) - { } - virtual void apply(osg::StateSet::AttributeList& attrList) - { - osg::StateSet::AttributeList::iterator i; - i = attrList.begin(); - while (i != attrList.end()) { - apply(i->second); - ++i; - } - } - virtual void apply(osg::StateSet* stateSet) - { - if (!stateSet) - return; - apply(stateSet->getAttributeList()); - } - - virtual void apply(osg::Node& node) - { - apply(node.getStateSet()); - traverse(node); - } - virtual void apply(osg::Geode& node) - { - unsigned nDrawables = node.getNumDrawables(); - for (unsigned i = 0; i < nDrawables; ++i) - apply(node.getDrawable(i)->getStateSet()); - apply(node.getStateSet()); - traverse(node); - } + SGStateAttributeVisitor(); + virtual void apply(osg::StateSet::RefAttributePair&); + virtual void apply(osg::StateSet::AttributeList& attrList); + virtual void apply(osg::StateSet* stateSet); + virtual void apply(osg::Node& node); + virtual void apply(osg::Geode& node); }; #endif diff --git a/simgear/scene/util/SGTextureStateAttributeVisitor.cxx b/simgear/scene/util/SGTextureStateAttributeVisitor.cxx new file mode 100644 index 00000000..816cbc83 --- /dev/null +++ b/simgear/scene/util/SGTextureStateAttributeVisitor.cxx @@ -0,0 +1,76 @@ +/* -*-c++-*- + * + * Copyright (C) 2006 Mathias Froehlich + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program 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 GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#include "SGTextureStateAttributeVisitor.hxx" + +SGTextureStateAttributeVisitor::SGTextureStateAttributeVisitor() : + osg::NodeVisitor(osg::NodeVisitor::NODE_VISITOR, + osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) +{ +} + +void +SGTextureStateAttributeVisitor::apply(int textureUnit, osg::StateSet::RefAttributePair& refAttr) +{ +} + +void +SGTextureStateAttributeVisitor::apply(int textureUnit, osg::StateSet::AttributeList& attrList) +{ + osg::StateSet::AttributeList::iterator i; + i = attrList.begin(); + while (i != attrList.end()) { + apply(textureUnit, i->second); + ++i; + } +} + +void +SGTextureStateAttributeVisitor::apply(osg::StateSet::TextureAttributeList& attrList) +{ + for (unsigned i = 0; i < attrList.size(); ++i) + apply(i, attrList[i]); +} + +void +SGTextureStateAttributeVisitor::apply(osg::StateSet* stateSet) +{ + if (!stateSet) + return; + apply(stateSet->getTextureAttributeList()); +} + +void +SGTextureStateAttributeVisitor::apply(osg::Node& node) +{ + apply(node.getStateSet()); + traverse(node); +} + +void +SGTextureStateAttributeVisitor::apply(osg::Geode& node) +{ + unsigned nDrawables = node.getNumDrawables(); + for (unsigned i = 0; i < nDrawables; ++i) + apply(node.getDrawable(i)->getStateSet()); + apply(node.getStateSet()); + traverse(node); +} diff --git a/simgear/scene/util/SGTextureStateAttributeVisitor.hxx b/simgear/scene/util/SGTextureStateAttributeVisitor.hxx index 7458f85a..3a000d6d 100644 --- a/simgear/scene/util/SGTextureStateAttributeVisitor.hxx +++ b/simgear/scene/util/SGTextureStateAttributeVisitor.hxx @@ -22,49 +22,21 @@ #ifndef SG_SCENE_TEXTURESTATEATTRIBUTEVISITOR_HXX #define SG_SCENE_TEXTURESTATEATTRIBUTEVISITOR_HXX +#include +#include +#include +#include + class SGTextureStateAttributeVisitor : public osg::NodeVisitor { public: - SGTextureStateAttributeVisitor() : - osg::NodeVisitor(osg::NodeVisitor::NODE_VISITOR, - osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) - { } - - virtual void apply(int textureUnit, osg::StateSet::RefAttributePair& refAttr) - { } - virtual void apply(int textureUnit, osg::StateSet::AttributeList& attrList) - { - osg::StateSet::AttributeList::iterator i; - i = attrList.begin(); - while (i != attrList.end()) { - apply(textureUnit, i->second); - ++i; - } - } - virtual void apply(osg::StateSet::TextureAttributeList& attrList) - { - for (unsigned i = 0; i < attrList.size(); ++i) - apply(i, attrList[i]); - } - virtual void apply(osg::StateSet* stateSet) - { - if (!stateSet) - return; - apply(stateSet->getTextureAttributeList()); - } + SGTextureStateAttributeVisitor(); - virtual void apply(osg::Node& node) - { - apply(node.getStateSet()); - traverse(node); - } - virtual void apply(osg::Geode& node) - { - unsigned nDrawables = node.getNumDrawables(); - for (unsigned i = 0; i < nDrawables; ++i) - apply(node.getDrawable(i)->getStateSet()); - apply(node.getStateSet()); - traverse(node); - } + virtual void apply(int textureUnit, osg::StateSet::RefAttributePair& refAttr); + virtual void apply(int textureUnit, osg::StateSet::AttributeList& attrList); + virtual void apply(osg::StateSet::TextureAttributeList& attrList); + virtual void apply(osg::StateSet* stateSet); + virtual void apply(osg::Node& node); + virtual void apply(osg::Geode& node); }; #endif -- 2.39.5