text: //
  // SPDX-License-Identifier: BSD-3-Clause
  // Copyright (c) Contributors to the OpenEXR Project.
  //
  
  #ifndef INCLUDED_IMF_DEEP_IMAGE_H
  #define INCLUDED_IMF_DEEP_IMAGE_H
  
  //----------------------------------------------------------------------------
  //
  //      class DeepImage
  //
  //      For an explanation of images, levels and channels,
  //      see the comments in header file Image.h.
  //
  //----------------------------------------------------------------------------
  
  #include "ImfDeepImageLevel.h"
  #include "ImfImage.h"
  #include "ImfUtilExport.h"
  
  #include <ImfTileDescription.h>
  
  OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
  
  
  class DeepImage : public Image
  {
    public:
  
      //
      // Constructors and destructor.
      // The default constructor constructs an image with an empty data
      // window level mode ONE_LEVEL and level rounding mode ROUND_DOWN.
      //
  
    	IMFUTIL_EXPORT 
      DeepImage();
  
      IMFUTIL_EXPORT 
    	DeepImage(const IMATH_NAMESPACE::Box2i &dataWindow,
                 LevelMode levelMode = ONE_LEVEL,
                 LevelRoundingMode levelRoundingMode = ROUND_DOWN);
  
      IMFUTIL_EXPORT 
    	virtual ~DeepImage();
  
  
      //
      // Accessing image levels by level number
      //
  
      IMFUTIL_EXPORT 
      virtual DeepImageLevel &        level(int l = 0);
      IMFUTIL_EXPORT 
      virtual const DeepImageLevel &  level(int l = 0) const;
  
      IMFUTIL_EXPORT 
      virtual DeepImageLevel &        level(int lx, int ly);
      IMFUTIL_EXPORT 
      virtual const DeepImageLevel &  level(int lx, int ly) const;
  
    protected:
  
      IMFUTIL_EXPORT 
    	virtual DeepImageLevel *
          newLevel (int lx, int ly, const IMATH_NAMESPACE::Box2i &dataWindow);
  };
  
  
  OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
  
  #endif
  