#define DALI_INTERNAL_NATIVE_IMAGE_SOURCE_QUEUE_IMPL_TIZEN_H
/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
namespace Dali
{
-
namespace Internal
{
-
namespace Adaptor
{
-
class EglGraphics;
class EglImageExtensions;
/**
* Dali internal NativeImageSource.
*/
-class NativeImageSourceQueueTizen: public Internal::Adaptor::NativeImageSourceQueue
+class NativeImageSourceQueueTizen : public Internal::Adaptor::NativeImageSourceQueue
{
public:
-
/**
* Create a new NativeImageSourceQueueTizen internally.
* Depending on hardware the width and height may have to be a power of two.
* @param[in] width The width of the image.
* @param[in] height The height of the image.
- * @param[in] depth color depth of the image.
+ * @param[in] colorFormat The color format of the image.
* @param[in] nativeImageSourceQueue contains tbm_surface_queue_h or is empty
* @return A smart-pointer to a newly allocated image.
*/
- static NativeImageSourceQueueTizen* New( uint32_t width, uint32_t height, Dali::NativeImageSourceQueue::ColorDepth depth, Any nativeImageSourceQueue );
+ static NativeImageSourceQueueTizen* New(uint32_t width, uint32_t height, Dali::NativeImageSourceQueue::ColorFormat colorFormat, Any nativeImageSourceQueue);
/**
* @copydoc Dali::NativeImageSourceQueue::GetNativeImageSourceQueue()
/**
* @copydoc Dali::NativeImageSourceQueue::SetSize
*/
- void SetSize( uint32_t width, uint32_t height ) override;
+ void SetSize(uint32_t width, uint32_t height) override;
/**
* @copydoc Dali::NativeImageSourceQueue::IgnoreSourceImage
void IgnoreSourceImage() override;
/**
+ * @copydoc Dali::NativeImageSourceQueue::CanDequeueBuffer
+ */
+ bool CanDequeueBuffer() override;
+
+ /**
+ * @copydoc Dali::NativeImageSourceQueue::DequeueBuffer
+ */
+ uint8_t* DequeueBuffer(uint32_t& width, uint32_t& height, uint32_t& stride) override;
+
+ /**
+ * @copydoc Dali::NativeImageSourceQueue::EnqueueBuffer
+ */
+ bool EnqueueBuffer(uint8_t* buffer) override;
+
+ /**
* destructor
*/
~NativeImageSourceQueueTizen() override;
}
/**
- * @copydoc Dali::NativeImageInterface::GetCustomFragmentPrefix()
+ * @copydoc Dali::NativeImageInterface::ApplyNativeFragmentShader()
*/
- const char* GetCustomFragmentPrefix() const override;
+ bool ApplyNativeFragmentShader(std::string& shader) override;
/**
* @copydoc Dali::NativeImageInterface::GetCustomSamplerTypename()
}
private:
-
/**
* Private constructor; @see NativeImageSourceQueue::New()
* @param[in] width The width of the image.
* @param[in] height The height of the image.
- * @param[in] colour depth of the image.
+ * @param[in] colorFormat The format of the image.
* @param[in] nativeImageSourceQueue contains tbm_surface_queue_h or is empty
*/
- NativeImageSourceQueueTizen( uint32_t width, uint32_t height, Dali::NativeImageSourceQueue::ColorDepth depth, Any nativeImageSourceQueue );
+ NativeImageSourceQueueTizen(uint32_t width, uint32_t height, Dali::NativeImageSourceQueue::ColorFormat colorFormat, Any nativeImageSourceQueue);
- void Initialize( Dali::NativeImageSourceQueue::ColorDepth depth );
+ void Initialize(Dali::NativeImageSourceQueue::ColorFormat colorFormat);
void ResetEglImageList();
- tbm_surface_queue_h GetSurfaceFromAny( Any source ) const;
+ tbm_surface_queue_h GetSurfaceFromAny(Any source) const;
- bool CheckBlending( int format );
+ bool CheckBlending(int format);
private:
-
- typedef std::pair< tbm_surface_h, void* > EglImagePair;
-
- Dali::Mutex mMutex; ///< Mutex
- uint32_t mWidth; ///< image width
- uint32_t mHeight; ///< image height
- tbm_surface_queue_h mTbmQueue; ///< Tbm surface queue handle
- tbm_surface_h mConsumeSurface; ///< The current tbm surface
- std::vector< EglImagePair > mEglImages; ///< EGL Image vector
- EglGraphics* mEglGraphics; ///< EGL Graphics
- EglImageExtensions* mEglImageExtensions; ///< The EGL Image Extensions
- bool mOwnTbmQueue; ///< Whether we created tbm queue
- bool mBlendingRequired; ///< Whether blending is required
+ typedef std::pair<tbm_surface_h, void*> EglImagePair;
+ typedef std::pair<tbm_surface_h, void*> BufferPair;
+
+ Dali::Mutex mMutex; ///< Mutex
+ uint32_t mWidth; ///< image width
+ uint32_t mHeight; ///< image height
+ tbm_surface_queue_h mTbmQueue; ///< Tbm surface queue handle
+ tbm_surface_h mConsumeSurface; ///< The current tbm surface
+ std::vector<EglImagePair> mEglImages; ///< EGL Image vector
+ std::vector<BufferPair> mBuffers; ///< Buffer vector
+ EglGraphics* mEglGraphics; ///< EGL Graphics
+ EglImageExtensions* mEglImageExtensions; ///< The EGL Image Extensions
+ bool mOwnTbmQueue; ///< Whether we created tbm queue
+ bool mBlendingRequired; ///< Whether blending is required
};
} // namespace Adaptor