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

98 lines
2.5 KiB
C
Raw 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 INCLUDED_IMF_IMAGE_LEVEL_H
#define INCLUDED_IMF_IMAGE_LEVEL_H
//----------------------------------------------------------------------------
//
// class ImageLevel
//
// For an explanation of images, levels and channels,
// see the comments in header file Image.h.
//
//----------------------------------------------------------------------------
#include "ImfImageChannel.h"
#include "ImfImageChannelRenaming.h"
#include "ImfUtilExport.h"
#include <ImathBox.h>
#include <string>
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
class Image;
class IMFUTIL_EXPORT_TYPE ImageLevel
{
public:
//
// Access to the image to which the level belongs.
//
Image& image () { return _image; }
const Image& image () const { return _image; }
//
// Access to the level number and the data window of this level.
//
int xLevelNumber () const { return _xLevelNumber; }
int yLevelNumber () const { return _yLevelNumber; }
const IMATH_NAMESPACE::Box2i& dataWindow () const { return _dataWindow; }
protected:
friend class Image;
IMFUTIL_EXPORT
ImageLevel (Image& image, int xLevelNumber, int yLevelNumber);
IMFUTIL_EXPORT
virtual ~ImageLevel ();
IMFUTIL_EXPORT
virtual void resize (const IMATH_NAMESPACE::Box2i& dataWindow);
IMFUTIL_EXPORT
virtual void shiftPixels (int dx, int dy);
virtual void insertChannel (
const std::string& name,
PixelType type,
int xSampling,
int ySampling,
bool pLinear) = 0;
virtual void eraseChannel (const std::string& name) = 0;
virtual void clearChannels () = 0;
virtual void
renameChannel (const std::string& oldName, const std::string& newName) = 0;
virtual void renameChannels (const RenamingMap& oldToNewNames) = 0;
IMFUTIL_EXPORT
void throwChannelExists (const std::string& name) const;
IMFUTIL_EXPORT
void throwBadChannelName (const std::string& name) const;
IMFUTIL_EXPORT
void throwBadChannelNameOrType (const std::string& name) const;
private:
ImageLevel (const ImageLevel&); // not implemented
ImageLevel& operator= (const ImageLevel&); // not implemented
Image& _image;
int _xLevelNumber;
int _yLevelNumber;
IMATH_NAMESPACE::Box2i _dataWindow;
};
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
#endif