X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FImage%2FImage_CompressedPixMap.hxx;h=541d5d867365d91c21a4d4ce78ead68ed506ef6b;hb=faff37677c2293ad207e6ad3e308aa65ffcd6375;hpb=691711cd3e118643fc475c59d6eb83f410de5c65 diff --git a/src/Image/Image_CompressedPixMap.hxx b/src/Image/Image_CompressedPixMap.hxx new file mode 100644 index 0000000000..541d5d8673 --- /dev/null +++ b/src/Image/Image_CompressedPixMap.hxx @@ -0,0 +1,108 @@ +// Copyright (c) 2020 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 _Image_CompressedPixMap_HeaderFile +#define _Image_CompressedPixMap_HeaderFile + +#include +#include +#include +#include +#include + +//! Compressed pixmap data definition. +//! It is defined independently from Image_PixMap, which defines only uncompressed formats. +class Image_CompressedPixMap : public Standard_Transient +{ + DEFINE_STANDARD_RTTIEXT(Image_CompressedPixMap, Standard_Transient) +public: + + //! Return base (uncompressed) pixel format. + Image_Format BaseFormat() const { return myBaseFormat; } + + //! Set base (uncompressed) pixel format. + void SetBaseFormat (Image_Format theFormat) { myBaseFormat = theFormat; } + + //! Return compressed format. + Image_CompressedFormat CompressedFormat() const { return myFormat; } + + //! Set compressed format. + void SetCompressedFormat (Image_CompressedFormat theFormat) { myFormat = theFormat; } + + //! Return raw (compressed) data. + const Handle(NCollection_Buffer)& FaceData() const { return myFaceData; } + + //! Set raw (compressed) data. + void SetFaceData (const Handle(NCollection_Buffer)& theBuffer) { myFaceData = theBuffer; } + + //! Return Array of mipmap sizes, including base level. + const NCollection_Array1& MipMaps() const { return myMipMaps; } + + //! Return Array of mipmap sizes, including base level. + NCollection_Array1& ChangeMipMaps() { return myMipMaps; } + + //! Return TRUE if complete mip map level set (up to 1x1 resolution). + Standard_Boolean IsCompleteMipMapSet() const { return myIsCompleteMips; } + + //! Set if complete mip map level set (up to 1x1 resolution). + void SetCompleteMipMapSet (Standard_Boolean theIsComplete) { myIsCompleteMips = theIsComplete; } + + //! Return surface length in bytes. + Standard_Size FaceBytes() const { return myFaceBytes; } + + //! Set surface length in bytes. + void SetFaceBytes (Standard_Size theSize) { myFaceBytes = theSize; } + + //! Return surface width. + Standard_Integer SizeX() const { return mySizeX; } + + //! Return surface height. + Standard_Integer SizeY() const { return mySizeY; } + + //! Set surface width x height. + void SetSize (Standard_Integer theSizeX, Standard_Integer theSizeY) + { + mySizeX = theSizeX; + mySizeY = theSizeY; + } + + //! Return TRUE if image layout is top-down (always true). + bool IsTopDown() const { return true; } + + //! Return number of faces in the file; should be 6 for cubemap. + Standard_Integer NbFaces() const { return myNbFaces; } + + //! Set number of faces in the file. + void SetNbFaces (Standard_Integer theSize) { myNbFaces = theSize; } + +public: + + //! Empty constructor. + Image_CompressedPixMap() + : myFaceBytes (0), myNbFaces (0), mySizeX (0), mySizeY (0), myBaseFormat (Image_Format_UNKNOWN), myFormat (Image_CompressedFormat_UNKNOWN), myIsCompleteMips (false) {} + +protected: + + NCollection_Array1 myMipMaps; //!< Array of mipmap sizes, including base level + Handle(NCollection_Buffer) myFaceData; //!< raw compressed data + Standard_Size myFaceBytes; //!< surface length in bytes + Standard_Integer myNbFaces; //!< number of faces in the file + Standard_Integer mySizeX; //!< surface width + Standard_Integer mySizeY; //!< surface height + Image_Format myBaseFormat; //!< base (uncompressed) pixel format + Image_CompressedFormat myFormat; //!< compressed format + Standard_Boolean myIsCompleteMips; //!< flag indicating complete mip map level set (up to 1x1 resolution) + +}; + +#endif // _Image_CompressedPixMap_HeaderFile