text: #pragma once
  
  #include "Interface/RenderImageInterface.h"
  
  #include "Kernel/Factorable.h"
  
  namespace Mengine
  {
      //////////////////////////////////////////////////////////////////////////
      class MockupRenderImage
          : public RenderImageInterface
          , public Factorable
      {
          DECLARE_FACTORABLE( MockupRenderImage );
  
      public:
          MockupRenderImage();
          ~MockupRenderImage() override;
  
      public:
          void initialize( uint32_t _mipmaps, uint32_t _width, uint32_t _height, EPixelFormat _pixelFormat );
          void finalize();
  
      protected:
          void setRenderImageProvider( const RenderImageProviderInterfacePtr & _renderImageProvider ) override;
          const RenderImageProviderInterfacePtr & getRenderImageProvider() const override;
  
      public:
          uint32_t getHWWidth() const override;
          uint32_t getHWHeight() const override;
          uint32_t getHWMipmaps() const override;
  
          EPixelFormat getHWPixelFormat() const override;
  
      public:
          float getHWWidthInv() const override;
          float getHWHeightInv() const override;
  
      public:
          bool getUpscalePow2() const override;
  
      public:
          RenderImageLockedInterfacePtr lock( uint32_t _level, const Rect & _rect, bool _readOnly ) override;
          bool unlock( const RenderImageLockedInterfacePtr & _locked, uint32_t _level, bool _successful ) override;
  
      protected:
          RenderImageProviderInterfacePtr m_renderImageProvider;
  
          uint32_t m_hwMipmaps;
          uint32_t m_hwWidth;
          uint32_t m_hwHeight;
  
          EPixelFormat m_hwPixelFormat;
  
          float m_hwWidthInv;
          float m_hwHeightInv;
  
          bool m_upscalePow2;
      };
      //////////////////////////////////////////////////////////////////////////
      typedef IntrusivePtr<MockupRenderImage> MockupRenderImagePtr;
      //////////////////////////////////////////////////////////////////////////
  }
  