SoNormalBundle.h
#ifndef COIN_SONORMALBUNDLE_H
#define COIN_SONORMALBUNDLE_H
/**************************************************************************\
* Copyright (c) Kongsberg Oil & Gas Technologies AS
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\**************************************************************************/
#include <Inventor/bundles/SoBundle.h>
#include <Inventor/misc/SoNormalGenerator.h>
#include <Inventor/elements/SoGLNormalElement.h>
class SoNormalBundleP;
class COIN_DLL_API SoNormalBundle : public SoBundle {
public:
SoNormalBundle(SoAction * action, SbBool forrendering);
~SoNormalBundle();
SbBool shouldGenerate(int numneeded);
void initGenerator(int initnum = 100);
void beginPolygon(void);
void polygonVertex(const SbVec3f & v);
void endPolygon(void);
void triangle(const SbVec3f & p1,
const SbVec3f & p2,
const SbVec3f & p3);
void generate(int startindex = 0,
SbBool addtostate = TRUE);
const SbVec3f * getGeneratedNormals(void) const;
int getNumGeneratedNormals(void) const;
void set(int32_t num, const SbVec3f * normals);
const SbVec3f & get(int index) const;
void send(int index) const;
SoNormalGenerator * generator; // SoINTERNAL public
private:
const SoNormalElement * elem;
const SoGLNormalElement * glelem;
SoNode * node;
SoNormalBundleP * pimpl; // for future use
};
#endif // !COIN_SONORMALBUNDLE_H
SbVec3f
The SbVec3f class is a 3 dimensional vector with floating point coordinates.
Definition SbVec3f.h:51
SoAction
The SoAction class is the base class for all traversal actions.
Definition SoAction.h:77
SoBundle::SoBundle
SoBundle(SoAction *action)
Definition SoBundle.cpp:57
SoGLNormalElement
The SoGLNormalElement class is yet to be documented.
Definition SoGLNormalElement.h:38
SoNode
The SoNode class is the base class for nodes used in scene graphs.
Definition SoNode.h:56
SoNormalBundle::set
void set(int32_t num, const SbVec3f *normals)
Definition SoNormalBundle.cpp:199
SoNormalBundle::SoNormalBundle
SoNormalBundle(SoAction *action, SbBool forrendering)
Definition SoNormalBundle.cpp:54
SoNormalBundle::polygonVertex
void polygonVertex(const SbVec3f &v)
Definition SoNormalBundle.cpp:120
SoNormalBundle::get
const SbVec3f & get(int index) const
Definition SoNormalBundle.cpp:213
SoNormalBundle::getNumGeneratedNormals
int getNumGeneratedNormals(void) const
Definition SoNormalBundle.cpp:185
SoNormalBundle::send
void send(int index) const
Definition SoNormalBundle.cpp:222
SoNormalBundle::triangle
void triangle(const SbVec3f &p1, const SbVec3f &p2, const SbVec3f &p3)
Definition SoNormalBundle.cpp:141
SoNormalBundle::endPolygon
void endPolygon(void)
Definition SoNormalBundle.cpp:131
SoNormalBundle::beginPolygon
void beginPolygon(void)
Definition SoNormalBundle.cpp:110
SoNormalBundle::getGeneratedNormals
const SbVec3f * getGeneratedNormals(void) const
Definition SoNormalBundle.cpp:173
SoNormalBundle::initGenerator
void initGenerator(int initnum=100)
Definition SoNormalBundle.cpp:94
SoNormalBundle::generate
void generate(int startindex=0, SbBool addtostate=TRUE)
Definition SoNormalBundle.cpp:155
SoNormalBundle::shouldGenerate
SbBool shouldGenerate(int numneeded)
Definition SoNormalBundle.cpp:82
SoNormalElement
The SoNormalElement class is yet to be documented.
Definition SoNormalElement.h:40
SoNormalGenerator
The SoNormalGenerator class is used to generate normals.
Definition SoNormalGenerator.h:41