This file is indexed.

/usr/include/oce/OpenGl_PrimitiveArray.hxx is in liboce-visualization-dev 0.18.2-2build1.

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
// Created on: 2011-07-13
// Created by: Sergey ZERCHANINOV
// Copyright (c) 2011-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.

#ifndef OpenGl_PrimitiveArray_Header
#define OpenGl_PrimitiveArray_Header

#include <OpenGl_IndexBuffer.hxx>

#include <InterfaceGraphic_Graphic3d.hxx>
#include <Aspect_InteriorStyle.hxx>
#include <Aspect_TypeOfMarker.hxx>
#include <Graphic3d_TypeOfPrimitiveArray.hxx>
#include <Graphic3d_IndexBuffer.hxx>
#include <Graphic3d_BoundBuffer.hxx>

#include <OpenGl_Element.hxx>

class OpenGl_GraphicDriver;
class Handle(OpenGl_ShaderProgram);

//! Class for rendering of arbitrary primitive array.
class OpenGl_PrimitiveArray : public OpenGl_Element
{
public:
  // OpenGL does not provide a constant for "none" draw mode.
  // So we define our own one that does not conflict with GL constants
  // and utilizes common GL invalid value
  enum
  {
    DRAW_MODE_NONE = -1
  };

  //! Empty constructor
  Standard_EXPORT OpenGl_PrimitiveArray (const OpenGl_GraphicDriver* theDriver);

  //! Default constructor
  Standard_EXPORT OpenGl_PrimitiveArray (const OpenGl_GraphicDriver*          theDriver,
                                         const Graphic3d_TypeOfPrimitiveArray theType,
                                         const Handle(Graphic3d_IndexBuffer)& theIndices,
                                         const Handle(Graphic3d_Buffer)&      theAttribs,
                                         const Handle(Graphic3d_BoundBuffer)& theBounds);

  //! Destructor
  Standard_EXPORT virtual ~OpenGl_PrimitiveArray();

  //! Render primitives to the window
  Standard_EXPORT virtual void Render  (const Handle(OpenGl_Workspace)& theWorkspace) const;

  //! Release OpenGL resources (VBOs)
  Standard_EXPORT virtual void Release (OpenGl_Context* theContext);

  //! Return true if VBOs initialization has been performed.
  //! VBO initialization is performed during first Render() call.
  //! Notice that this flag does not indicate VBOs validity.
  Standard_Boolean IsInitialized() const { return myIsVboInit; }

  //! Invalidate VBO content without destruction.
  void Invalidate() const { myIsVboInit = Standard_False; }

  //! @return primitive type (GL_LINES, GL_TRIANGLES and others)
  GLint DrawMode() const { return myDrawMode; }

  //! @return indices array
  const Handle(Graphic3d_IndexBuffer)& Indices() const { return myIndices; }

  //! @return attributes array
  const Handle(Graphic3d_Buffer)& Attributes() const { return myAttribs; }

  //! @return bounds array
  const Handle(Graphic3d_BoundBuffer)& Bounds() const { return myBounds; }

  //! Returns unique ID of primitive array. 
  const Standard_Size GetUID() const { return myUID; }

  //! Initialize indices, attributes and bounds with new data.
  Standard_EXPORT void InitBuffers (const Handle(OpenGl_Context)&        theContext,
                                    const Graphic3d_TypeOfPrimitiveArray theType,
                                    const Handle(Graphic3d_IndexBuffer)& theIndices,
                                    const Handle(Graphic3d_Buffer)&      theAttribs,
                                    const Handle(Graphic3d_BoundBuffer)& theBounds);

protected:

  //! VBO initialization procedures
  //! @param theCtx        bound GL context
  //! @param theToKeepData when true, myAttribs will not be nullified after VBO creation
  Standard_EXPORT Standard_Boolean buildVBO (const Handle(OpenGl_Context)& theCtx,
                                             const Standard_Boolean        theToKeepData) const;

  Standard_EXPORT void clearMemoryGL (const Handle(OpenGl_Context)& theGlCtx) const;

private:

  //! Initialize normal (OpenGL-provided) VBO
  Standard_Boolean initNormalVbo (const Handle(OpenGl_Context)& theCtx) const;

  //! Main procedure to draw array
  void drawArray (const Handle(OpenGl_Workspace)& theWorkspace,
                  const Graphic3d_Vec4*           theFaceColors,
                  const Standard_Boolean          theHasVertColor) const;

  //! Auxiliary procedures
  void drawEdges (const TEL_COLOUR*               theEdgeColour,
                  const Handle(OpenGl_Workspace)& theWorkspace) const;

  void drawMarkers (const Handle(OpenGl_Workspace)& theWorkspace) const;

  //! Sets OpenGL draw mode according to the input type of primitive array.
  //! If buffer of attributes is empty, draw mode is set to NONE to avoid invalid array rendering.
  //! @param theType type of primitive array.
  void setDrawMode (const Graphic3d_TypeOfPrimitiveArray theType);

  //! Rebuilds the array of vertex attributes so that it can be drawn without indices.
  Standard_Boolean processIndices (const Handle(OpenGl_Context)& theContext) const;

protected:

  mutable Handle(OpenGl_VertexBuffer)   myVboIndices;
  mutable Handle(OpenGl_VertexBuffer)   myVboAttribs;

  mutable Handle(Graphic3d_IndexBuffer) myIndices;
  mutable Handle(Graphic3d_Buffer)      myAttribs;
  mutable Handle(Graphic3d_BoundBuffer) myBounds;
  GLint                                 myDrawMode;
  mutable Standard_Boolean              myIsVboInit;

  Standard_Size                         myUID; //!< Unique ID of primitive array. 

public:

  DEFINE_STANDARD_ALLOC

};

#endif //OpenGl_PrimitiveArray_Header