// Copyright (c) 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 _Graphic3d_BoundBuffer_HeaderFile #define _Graphic3d_BoundBuffer_HeaderFile #include //! Bounds buffer. class Graphic3d_BoundBuffer : public NCollection_Buffer { DEFINE_STANDARD_RTTIEXT(Graphic3d_BoundBuffer, NCollection_Buffer) public: //! Empty constructor. Graphic3d_BoundBuffer (const Handle(NCollection_BaseAllocator)& theAlloc) : NCollection_Buffer (theAlloc), Colors (NULL), Bounds (NULL), NbBounds (0), NbMaxBounds (0) {} //! Allocates new empty array bool Init (const Standard_Integer theNbBounds, const Standard_Boolean theHasColors) { Colors = NULL; Bounds = NULL; NbBounds = 0; NbMaxBounds = 0; Free(); if (theNbBounds < 1) { return false; } const size_t aBoundsSize = sizeof(Standard_Integer) * theNbBounds; const size_t aColorsSize = theHasColors ? sizeof(Graphic3d_Vec4) * theNbBounds : 0; if (!Allocate (aColorsSize + aBoundsSize)) { Free(); return false; } NbBounds = theNbBounds; NbMaxBounds = theNbBounds; Colors = theHasColors ? reinterpret_cast(myData) : NULL; Bounds = reinterpret_cast(theHasColors ? (myData + aColorsSize) : myData); return true; } public: Graphic3d_Vec4* Colors; //!< pointer to facet color values Standard_Integer* Bounds; //!< pointer to bounds array Standard_Integer NbBounds; //!< number of bounds Standard_Integer NbMaxBounds; //!< number of allocated bounds }; DEFINE_STANDARD_HANDLE(Graphic3d_BoundBuffer, NCollection_Buffer) #endif // _Graphic3d_BoundBuffer_HeaderFile