This file is indexed.

/usr/include/osgUtil/SceneGraphBuilder is in libopenscenegraph-dev 3.0.1-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
/* -*-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 OSGUTIL_SCENEGRAPHBUILDER
#define OSGUTIL_SCENEGRAPHBUILDER 1

#include <osg/Geode>
#include <osg/Geometry>
#include <osg/MatrixTransform>
#include <osg/GLU>

#include <osgUtil/Export>

namespace osgUtil {

/** A class for assisting the building ascene graphs that is equivilant to OpenGL 1.0 style calls.
  */
class OSGUTIL_EXPORT SceneGraphBuilder
{
    public:

        SceneGraphBuilder();

        // 
        //  OpenGL 1.0 style building methods
        //
        void PushMatrix();
        void PopMatrix();
        void LoadIdentity();
        void LoadMatrixd(const GLdouble* m);
        void MultMatrixd(const GLdouble* m);
        void Translated(GLdouble x, GLdouble y, GLdouble z);
        void Scaled(GLdouble x, GLdouble y, GLdouble z);
        void Rotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
        
        void BlendFunc(GLenum srcFactor, GLenum dstFactor);
        void CullFace(GLenum mode);
        void DepthFunc(GLenum mode);
        void FrontFace(GLenum mode);
        void LineStipple(GLint factor, GLushort pattern);
        void LineWidth(GLfloat lineWidth);
        void PointSize(GLfloat pointSize);
        void PolygonMode(GLenum face, GLenum mode);
        void PolygonOffset(GLfloat factor, GLfloat units);
        void PolygonStipple(const GLubyte* mask);
        void ShadeModel(GLenum mode);
        
        void Enable(GLenum mode);
        void Disable(GLenum mode);
        
        void Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
        void Color4fv(GLfloat* c) { Color4f(c[0], c[1], c[2], c[3]); }

        void Vertex3f(GLfloat x, GLfloat y, GLfloat z);
        void Vertex3fv(GLfloat* v) { Vertex3f(v[0], v[1], v[2]); }

        void Normal3f(GLfloat x, GLfloat y, GLfloat z);
        void Normal3fv(GLfloat* n) { Normal3f(n[0], n[1], n[2]); }

        void TexCoord1f(GLfloat x);
        void TexCoord1fv(GLfloat* tc) { TexCoord1f(tc[0]); }

        void TexCoord2f(GLfloat x, GLfloat y);
        void TexCoord2fv(GLfloat* tc) { TexCoord2f(tc[0],tc[1]); }

        void TexCoord3f(GLfloat x, GLfloat y, GLfloat z);
        void TexCoord3fv(GLfloat* tc) { TexCoord3f(tc[0], tc[1], tc[2]); }

        void TexCoord4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
        void TexCoord4fv(GLfloat* tc) { TexCoord4f(tc[0], tc[1], tc[2], tc[3]); }

        void Begin(GLenum mode);
        void End();

        //
        // glu style building methods
        //
        void QuadricDrawStyle(GLenum aDrawStyle);
        void QuadricNormals(GLenum aNormals);
        void QuadricOrientation(GLenum aOrientation);
        void QuadricTexture(GLboolean aTexture);

        void Cylinder(GLfloat base,
                      GLfloat top,
                      GLfloat height,
                      GLint slices,
                      GLint stacks);

       void Disk(GLfloat inner,
                 GLfloat outer,
                 GLint slices,
                 GLint loops);

       void PartialDisk(GLfloat inner,
                        GLfloat outer,
                        GLint slices,
                        GLint loops,
                        GLfloat start,
                        GLfloat sweep);

       void Sphere(GLfloat radius,
                   GLint slices,
                   GLint stacks);


        //
        // methods for obtaining the built scene graph
        //
        osg::Node* getScene();
        osg::Node* takeScene();

    protected:
    
        typedef std::vector<osg::Matrixd> Matrices;

        void matrixChanged();
        void addAttribute(osg::StateAttribute* attribute);
        void addMode(GLenum mode, bool enabled);                
        void addTextureAttribute(unsigned int unit, osg::StateAttribute* attribute);
        void addTextureMode(unsigned int unit, GLenum mode, bool enabled);                
        void addShape(osg::Shape* shape);
        void addDrawable(osg::Drawable* drawable);
        void newGeometry();
        
        void allocateGeometry();
        void completeGeometry();
        
        void allocateStateSet();
        
        Matrices                            _matrixStack;
        osg::ref_ptr<osg::StateSet>         _stateset;
        bool                                _statesetAssigned;
        
        bool                                _normalSet;
        osg::Vec3f                          _normal;

        bool                                _colorSet;
        osg::Vec4f                          _color;

        unsigned int                        _maxNumTexCoordComponents;
        osg::Vec4f                          _texCoord;

        GLenum                              _primitiveMode;
        osg::ref_ptr<osg::Vec3Array>        _vertices;
        osg::ref_ptr<osg::Vec3Array>        _normals;
        osg::ref_ptr<osg::Vec4Array>        _colors;
        osg::ref_ptr<osg::Vec4Array>        _texCoords;
    
        struct QuadricState
        {
            QuadricState():
                _drawStyle(GLU_FILL),
                _normals(GLU_SMOOTH),
                _orientation(GLU_OUTSIDE),
                _texture(GLU_FALSE) {}

            GLenum      _drawStyle;
            GLenum      _normals;
            GLenum      _orientation;
            GLboolean   _texture;
        };

        QuadricState _quadricState;


        osg::ref_ptr<osg::Geometry>         _geometry;
        osg::ref_ptr<osg::Geode>            _geode;
        osg::ref_ptr<osg::MatrixTransform>  _transform;
        osg::ref_ptr<osg::Group>            _group;
    
};


}

#endif