Modified Files:

Makefile.am SGStateAttributeVisitor.hxx
 	SGTextureStateAttributeVisitor.hxx
Added Files:
	SGStateAttributeVisitor.cxx SGTextureStateAttributeVisitor.cxx:
	Move implementation into cxx files
This commit is contained in:
frohlich 2006-10-31 06:14:38 +00:00
parent 81188705b1
commit 39fc52fe0a
5 changed files with 171 additions and 77 deletions

View File

@ -11,6 +11,8 @@ include_HEADERS = \
SGStateAttributeVisitor.hxx \
SGTextureStateAttributeVisitor.hxx
libsgutil_a_SOURCES =
libsgutil_a_SOURCES = \
SGStateAttributeVisitor.cxx \
SGTextureStateAttributeVisitor.cxx
INCLUDES = -I$(top_srcdir)

View File

@ -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);
}

View File

@ -22,44 +22,19 @@
#ifndef SG_SCENE_STATEATTRIBUTEVISITOR_HXX
#define SG_SCENE_STATEATTRIBUTEVISITOR_HXX
#include <osg/Geode>
#include <osg/Node>
#include <osg/NodeVisitor>
#include <osg/StateSet>
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

View File

@ -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);
}

View File

@ -22,49 +22,21 @@
#ifndef SG_SCENE_TEXTURESTATEATTRIBUTEVISITOR_HXX
#define SG_SCENE_TEXTURESTATEATTRIBUTEVISITOR_HXX
#include <osg/Geode>
#include <osg/Node>
#include <osg/NodeVisitor>
#include <osg/StateSet>
class SGTextureStateAttributeVisitor : public osg::NodeVisitor {
public:
SGTextureStateAttributeVisitor() :
osg::NodeVisitor(osg::NodeVisitor::NODE_VISITOR,
osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
{ }
SGTextureStateAttributeVisitor();
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());
}
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