DYT/Tool/OpenSceneGraph-3.6.5/include/OpenEXR/ImfMultiPartOutputFile.h

92 lines
2.6 KiB
C
Raw Permalink Normal View History

2024-12-24 23:49:36 +00:00
//
// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) Contributors to the OpenEXR Project.
//
#ifndef MULTIPARTOUTPUTFILE_H_
#define MULTIPARTOUTPUTFILE_H_
#include "ImfForward.h"
#include "ImfGenericOutputFile.h"
#include "ImfThreading.h"
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
//
// Class responsible for handling the writing of multipart images.
//
// Note: Certain attributes are 'common' to all parts. Notably:
// * Display Window
// * Pixel Aspect Ratio
// * Time Code
// * Chromaticities
// The first header forms the basis for the set of attributes that are shared
// across the constituent parts.
//
// Parameters
// headers - pointer to array of headers; one for each part of the image file
// parts - count of number of parts
// overrideSharedAttributes - toggle for the handling of shared attributes.
// set false to check for inconsistencies, true
// to copy the values over from the first header.
// numThreads - number of threads that should be used in encoding the data.
//
class IMF_EXPORT_TYPE MultiPartOutputFile : public GenericOutputFile
{
public:
IMF_EXPORT
MultiPartOutputFile (
const char fileName[],
const Header* headers,
int parts,
bool overrideSharedAttributes = false,
int numThreads = globalThreadCount ());
IMF_EXPORT
MultiPartOutputFile (
OStream& os,
const Header* headers,
int parts,
bool overrideSharedAttributes = false,
int numThreads = globalThreadCount ());
//
// return number of parts in file
//
IMF_EXPORT
int parts () const;
//
// return header for part n
// (note: may have additional attributes compared to that passed to constructor)
//
IMF_EXPORT
const Header& header (int n) const;
IMF_EXPORT
~MultiPartOutputFile ();
MultiPartOutputFile (const MultiPartOutputFile& other) = delete;
MultiPartOutputFile& operator= (const MultiPartOutputFile& other) = delete;
MultiPartOutputFile (MultiPartOutputFile&& other) = delete;
MultiPartOutputFile& operator= (MultiPartOutputFile&& other) = delete;
struct IMF_HIDDEN Data;
private:
Data* _data;
template <class T> IMF_HIDDEN T* getOutputPart (int partNumber);
friend class OutputPart;
friend class TiledOutputPart;
friend class DeepScanLineOutputPart;
friend class DeepTiledOutputPart;
};
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
#endif /* MULTIPARTOUTPUTFILE_H_ */