1 #ifndef TEST_NATIVE_IMAGE_H
2 #define TEST_NATIVE_IMAGE_H
5 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/public-api/images/native-image-interface.h>
24 #include <dali/integration-api/gl-defines.h>
28 class TestNativeImage;
29 typedef IntrusivePtr<TestNativeImage> TestNativeImagePointer;
31 class DALI_CORE_API TestNativeImage : public Dali::NativeImageInterface
34 static TestNativeImagePointer New(uint32_t width, uint32_t height);
36 inline void SetGlExtensionCreateResult(bool result)
38 createResult = result;
40 inline virtual bool CreateResource()
42 ++mExtensionCreateCalls;
43 mCallStack.PushCall("CreateResource", "");
46 inline virtual void DestroyResource()
48 ++mExtensionDestroyCalls;
49 mCallStack.PushCall("DestroyResource", "");
51 inline virtual GLenum TargetTexture()
53 ++mTargetTextureCalls;
54 mCallStack.PushCall("TargetTexture", "");
55 return mTargetTextureError--;
57 inline virtual void PrepareTexture()
59 mCallStack.PushCall("PrepareTexture", "");
61 inline virtual uint32_t GetWidth() const
63 mCallStack.PushCall("GetWidth", "");
66 inline virtual uint32_t GetHeight() const
68 mCallStack.PushCall("GetHeight", "");
71 inline virtual bool RequiresBlending() const
73 mCallStack.PushCall("RequiresBlending", "");
76 inline virtual int GetTextureTarget() const
78 mCallStack.PushCall("GetTextureTarget", "");
79 return GL_TEXTURE_EXTERNAL_OES;
81 inline virtual const char* GetCustomFragmentPrefix() const
83 mCallStack.PushCall("GetCustomFragmentPrefix", "");
84 return "#extension GL_OES_EGL_image_external:require\n";
86 inline virtual bool ApplyNativeFragmentShader(std::string& shader)
88 mCallStack.PushCall("ApplyNativeFragmentShader", "");
89 shader = "#extension GL_OES_EGL_image_external:require\n" + shader;
91 //Get custom sampler type name
92 const char* customSamplerTypename = GetCustomSamplerTypename();
93 if(customSamplerTypename)
95 size_t samplerPosition = shader.find("sampler2D");
96 if(samplerPosition != std::string::npos)
98 shader.replace(samplerPosition, strlen("sampler2D"), customSamplerTypename);
103 inline const char* GetCustomSamplerTypename() const override
105 mCallStack.PushCall("GetCustomSamplerTypename", "");
106 return "samplerExternalOES";
109 inline Any GetNativeImageHandle() const override
113 inline bool SourceChanged() const override
118 inline virtual Dali::NativeImageInterface::Extension* GetExtension()
124 TestNativeImage(uint32_t width, uint32_t height);
125 virtual ~TestNativeImage();
131 int32_t mExtensionCreateCalls;
132 int32_t mExtensionDestroyCalls;
133 int32_t mTargetTextureCalls;
134 uint32_t mTargetTextureError{0u};
136 mutable TraceCallStack mCallStack;
141 #endif // TEST_NATIVE_IMAGE_H