From 9d2e224658ff8df34e9fd917ef262fa704257d8d Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Fri, 26 Oct 2018 16:17:35 +0900 Subject: [PATCH] [4.0] Add NativeImageSourceQueueX It has only empty functions because it is not supported on Ubuntu. Change-Id: Ibb4840aca7eb23a97b48a8feeaf4d25041707ee6 --- adaptors/x11/file.list | 1 + adaptors/x11/native-image-source-factory-x.cpp | 4 +- adaptors/x11/native-image-source-queue-impl-x.cpp | 113 +++++++++++++++ adaptors/x11/native-image-source-queue-impl-x.h | 167 ++++++++++++++++++++++ 4 files changed, 283 insertions(+), 2 deletions(-) create mode 100644 adaptors/x11/native-image-source-queue-impl-x.cpp create mode 100755 adaptors/x11/native-image-source-queue-impl-x.h diff --git a/adaptors/x11/file.list b/adaptors/x11/file.list index 7e62d6d..ec490d3 100644 --- a/adaptors/x11/file.list +++ b/adaptors/x11/file.list @@ -6,6 +6,7 @@ _adaptor_x11_internal_src_files = \ $(adaptor_x11_dir)/imf-manager-impl-x.cpp \ $(adaptor_x11_dir)/native-image-source-factory-x.cpp \ $(adaptor_x11_dir)/native-image-source-impl-x.cpp \ + $(adaptor_x11_dir)/native-image-source-queue-impl-x.cpp \ $(adaptor_x11_dir)/virtual-keyboard-impl-x.cpp \ $(adaptor_x11_dir)/window-impl-x.cpp \ $(adaptor_x11_dir)/pixmap-render-surface-x.cpp \ diff --git a/adaptors/x11/native-image-source-factory-x.cpp b/adaptors/x11/native-image-source-factory-x.cpp index cbea31f..9f6881b 100644 --- a/adaptors/x11/native-image-source-factory-x.cpp +++ b/adaptors/x11/native-image-source-factory-x.cpp @@ -20,7 +20,7 @@ // INTERNAL HEADERS #include -#include +#include namespace Dali { @@ -38,7 +38,7 @@ std::unique_ptr< NativeImageSource > NativeImageSourceFactoryX::CreateNativeImag std::unique_ptr< NativeImageSourceQueue > NativeImageSourceFactoryX::CreateNativeImageSourceQueue( unsigned int width, unsigned int height, Dali::NativeImageSourceQueue::ColorDepth depth, Any nativeImageSourceQueue ) { - return std::unique_ptr< NativeImageSourceQueue >( nullptr ); + return std::unique_ptr< NativeImageSourceQueue >( NativeImageSourceQueueX::New( width, height, depth, nativeImageSourceQueue ) ); } // this should be created from somewhere diff --git a/adaptors/x11/native-image-source-queue-impl-x.cpp b/adaptors/x11/native-image-source-queue-impl-x.cpp new file mode 100644 index 0000000..db3bb72 --- /dev/null +++ b/adaptors/x11/native-image-source-queue-impl-x.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2018 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// CLASS HEADER +#include + +// EXTERNAL INCLUDES +#include +#include + +// INTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace Internal +{ + +namespace Adaptor +{ + +namespace +{ +#define TBM_SURFACE_QUEUE_SIZE 3 + +const char* FRAGMENT_PREFIX = "\n"; +const char* SAMPLER_TYPE = "sampler2D"; + +} + +NativeImageSourceQueueX* NativeImageSourceQueueX::New( unsigned int width, unsigned int height, Dali::NativeImageSourceQueue::ColorDepth depth, Any nativeImageSourceQueue ) +{ + NativeImageSourceQueueX* image = new NativeImageSourceQueueX( width, height, depth, nativeImageSourceQueue ); + return image; +} + +NativeImageSourceQueueX::NativeImageSourceQueueX( unsigned int width, unsigned int height, Dali::NativeImageSourceQueue::ColorDepth depth, Any nativeImageSourceQueue ) +: mWidth( width ), + mHeight( height ) +{ + DALI_LOG_ERROR( "NativeImageSourceQueueX::NativeImageSourceQueueX: Not supported\n" ); +} + +NativeImageSourceQueueX::~NativeImageSourceQueueX() +{ +} + +Any NativeImageSourceQueueX::GetNativeImageSourceQueue() const +{ + return Any(); +} + +void NativeImageSourceQueueX::SetSource( Any source ) +{ +} + +bool NativeImageSourceQueueX::GlExtensionCreate() +{ + return true; +} + +void NativeImageSourceQueueX::GlExtensionDestroy() +{ +} + +unsigned int NativeImageSourceQueueX::TargetTexture() +{ + return 0; +} + +void NativeImageSourceQueueX::PrepareTexture() +{ +} + +const char* NativeImageSourceQueueX::GetCustomFragmentPreFix() +{ + return FRAGMENT_PREFIX; +} + +const char* NativeImageSourceQueueX::GetCustomSamplerTypename() +{ + return SAMPLER_TYPE; +} + +int NativeImageSourceQueueX::GetEglImageTextureTarget() +{ + return 0; +} + +void NativeImageSourceQueueX::SetDestructorNotification( void* notification ) +{ +} + +} // namespace Adaptor + +} // namespace internal + +} // namespace Dali diff --git a/adaptors/x11/native-image-source-queue-impl-x.h b/adaptors/x11/native-image-source-queue-impl-x.h new file mode 100755 index 0000000..f41702c --- /dev/null +++ b/adaptors/x11/native-image-source-queue-impl-x.h @@ -0,0 +1,167 @@ +#ifndef DALI_INTERNAL_NATIVE_IMAGE_SOURCE_QUEUE_IMPL_X_H +#define DALI_INTERNAL_NATIVE_IMAGE_SOURCE_QUEUE_IMPL_X_H + +/* + * Copyright (c) 2018 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// EXTERNAL INCLUDES +#include + +// INTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace Internal +{ + +namespace Adaptor +{ + +class EglImageExtensions; + +/** + * Dali internal NativeImageSourceQueue. + */ +class NativeImageSourceQueueX: public Internal::Adaptor::NativeImageSourceQueue, public NativeImageInterface::Extension +{ +public: + + /** + * Create a new NativeImageSourceQueueX 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] nativeImageSourceQueue contains tbm_surface_queue_h or is empty + * @return A smart-pointer to a newly allocated image. + */ + static NativeImageSourceQueueX* New(unsigned int width, unsigned int height, Dali::NativeImageSourceQueue::ColorDepth depth, Any nativeImageSourceQueue ); + + /** + * @copydoc Dali::NativeImageSourceQueue::GetNativeImageSourceQueue() + */ + Any GetNativeImageSourceQueue() const override; + + /** + * @copydoc Dali::NativeImageSourceQueue::SetSource( Any source ) + */ + void SetSource( Any source ) override; + + /** + * destructor + */ + ~NativeImageSourceQueueX() override; + + /** + * @copydoc Dali::NativeImageInterface::GlExtensionCreate() + */ + bool GlExtensionCreate() override; + + /** + * @copydoc Dali::NativeImageInterface::GlExtensionDestroy() + */ + void GlExtensionDestroy() override; + + /** + * @copydoc Dali::NativeImageInterface::TargetTexture() + */ + unsigned int TargetTexture() override; + + /** + * @copydoc Dali::NativeImageInterface::PrepareTexture() + */ + void PrepareTexture() override; + + /** + * @copydoc Dali::NativeImageInterface::GetWidth() + */ + unsigned int GetWidth() const override + { + return mWidth; + } + + /** + * @copydoc Dali::NativeImageInterface::GetHeight() + */ + unsigned int GetHeight() const override + { + return mHeight; + } + + /** + * @copydoc Dali::NativeImageInterface::RequiresBlending() + */ + bool RequiresBlending() const override + { + return true; + } + + /** + * @copydoc Dali::NativeImageInterface::GetExtension() + */ + NativeImageInterface::Extension* GetNativeImageInterfaceExtension() override + { + return this; + } + + /** + * @copydoc Dali::NativeImageInterface::Extension::GetCustomFragmentPreFix() + */ + const char* GetCustomFragmentPreFix() override; + + /** + * @copydoc Dali::NativeImageInterface::Extension::GetCustomSamplerTypename() + */ + const char* GetCustomSamplerTypename() override; + + /** + * @copydoc Dali::NativeImageInterface::Extension::GetEglImageTextureTarget() + */ + int GetEglImageTextureTarget() override; + + /** + * @copydoc Dali::NativeImageInterface::Extension::SetDestructorNotification(void *notification) + */ + void SetDestructorNotification( void* notification ) override; + +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] nativeImageSourceQueue contains tbm_surface_queue_h or is empty + */ + NativeImageSourceQueueX( unsigned int width, unsigned int height, Dali::NativeImageSourceQueue::ColorDepth depth, Any nativeImageSourceQueue ); + +private: + + unsigned int mWidth; ///< image width + unsigned int mHeight; ///< image height + +}; + +} // namespace Adaptor + +} // namespace Internal + +} // namespace Dali + +#endif // DALI_INTERNAL_NATIVE_IMAGE_SOURCE_QUEUE_IMPL_X_H -- 2.7.4