DYT/Tool/OpenSceneGraph-3.6.5/include/OpenEXR/ImfOpaqueAttribute.h
2024-12-25 07:49:36 +08:00

79 lines
2.2 KiB
C++

//
// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) Contributors to the OpenEXR Project.
//
#ifndef INCLUDED_IMF_OPAQUE_ATTRIBUTE_H
#define INCLUDED_IMF_OPAQUE_ATTRIBUTE_H
//-----------------------------------------------------------------------------
//
// class OpaqueAttribute
//
// When an image file is read, OpqaqueAttribute objects are used
// to hold the values of attributes whose types are not recognized
// by the reading program. OpaqueAttribute objects can be read
// from an image file, copied, and written back to to another image
// file, but their values are inaccessible.
//
//-----------------------------------------------------------------------------
#include "ImfExport.h"
#include "ImfNamespace.h"
#include "ImfArray.h"
#include "ImfAttribute.h"
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
class IMF_EXPORT_TYPE OpaqueAttribute : public Attribute
{
public:
//----------------------------
// Constructors and destructor
//----------------------------
IMF_EXPORT OpaqueAttribute (const char typeName[]);
IMF_EXPORT OpaqueAttribute (const char typeName[],
long dataSize,
const void* data);
IMF_EXPORT OpaqueAttribute (const OpaqueAttribute& other);
IMF_EXPORT virtual ~OpaqueAttribute ();
//-------------------------------
// Get this attribute's type name
//-------------------------------
IMF_EXPORT virtual const char* typeName () const;
//------------------------------
// Make a copy of this attribute
//------------------------------
IMF_EXPORT virtual Attribute* copy () const;
//----------------
// I/O and copying
//----------------
IMF_EXPORT virtual void writeValueTo (
OPENEXR_IMF_INTERNAL_NAMESPACE::OStream& os, int version) const;
IMF_EXPORT virtual void readValueFrom (
OPENEXR_IMF_INTERNAL_NAMESPACE::IStream& is, int size, int version);
IMF_EXPORT virtual void copyValueFrom (const Attribute& other);
int dataSize () const { return _dataSize; }
const Array<char>& data () const { return _data; }
private:
std::string _typeName;
long _dataSize;
Array<char> _data;
};
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
#endif