| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- //
- // SPDX-License-Identifier: BSD-3-Clause
- // Copyright (c) Contributors to the OpenEXR Project.
- //
- #ifndef INCLUDED_IMF_IMAGE_CHANNEL_H
- #define INCLUDED_IMF_IMAGE_CHANNEL_H
- //----------------------------------------------------------------------------
- //
- // class ImageChannel
- //
- // For an explanation of images, levels and channels,
- // see the comments in header file Image.h.
- //
- //----------------------------------------------------------------------------
- #include "ImfUtilExport.h"
- #include "ImfPixelType.h"
- #include "ImfFrameBuffer.h"
- #include "ImfChannelList.h"
- #include "IexBaseExc.h"
- #include <ImathBox.h>
- #include <half.h>
- #include <typeinfo>
- #include <cstring>
- OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
- class ImageLevel;
- //
- // Image channels:
- //
- // An image channel holds the pixel data for a single channel of one level
- // of an image. Separate classes for flat and deep channels are derived
- // from the ImageChannel base class.
- //
- class ImageLevel;
- class IMFUTIL_EXPORT_TYPE ImageChannel
- {
- public:
- //
- // The OpenEXR pixel type of this channel (HALF, FLOAT or UINT).
- //
- virtual PixelType pixelType () const = 0;
- //
- // Generate an OpenEXR channel for this image channel.
- //
-
- IMFUTIL_EXPORT
- Channel channel () const;
- //
- // Access to x and y sampling rates, "perceptually linear" flag,
- // and the number of pixels that are stored in this channel.
- //
- int xSampling () const {return _xSampling;}
- int ySampling () const {return _ySampling;}
- bool pLinear () const {return _pLinear;}
- int pixelsPerRow () const {return _pixelsPerRow;}
- int pixelsPerColumn () const {return _pixelsPerColumn;}
- size_t numPixels () const {return _numPixels;}
- //
- // Access to the image level to which this channel belongs.
- //
- ImageLevel & level () {return _level;}
- const ImageLevel & level () const {return _level;}
- protected:
- IMFUTIL_EXPORT
- ImageChannel (ImageLevel &level,
- int xSampling,
- int ySampling,
- bool pLinear);
- IMFUTIL_EXPORT
- virtual ~ImageChannel();
- IMFUTIL_EXPORT
- virtual void resize ();
- IMFUTIL_EXPORT
- void boundsCheck(int x, int y) const;
- private:
- ImageChannel (const ImageChannel &) = delete;
- ImageChannel & operator = (const ImageChannel &) = delete;
- ImageChannel (ImageChannel &&) = delete;
- ImageChannel & operator = (ImageChannel &&) = delete;
- ImageLevel & _level;
- int _xSampling;
- int _ySampling;
- bool _pLinear;
- int _pixelsPerRow;
- int _pixelsPerColumn;
- size_t _numPixels;
- };
- OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
- #endif
|