mCallStack.PushCall("GetCustomFragmentPrefix", "");
return "#extension GL_OES_EGL_image_external:require\n";
};
+ inline virtual bool ApplyNativeFragmentShader(std::string& shader)
+ {
+ mCallStack.PushCall("ApplyNativeFragmentShader", "");
+ shader = "#extension GL_OES_EGL_image_external:require\n" + shader;
+
+ //Get custom sampler type name
+ const char* customSamplerTypename = GetCustomSamplerTypename();
+ if(customSamplerTypename)
+ {
+ size_t samplerPosition = shader.find("sampler2D");
+ if(samplerPosition != std::string::npos)
+ {
+ shader.replace(samplerPosition, strlen("sampler2D"), customSamplerTypename);
+ }
+ }
+ return true;
+ };
inline const char* GetCustomSamplerTypename() const override
{
mCallStack.PushCall("GetCustomSamplerTypename", "");
return "";
}
+bool NativeImageSource::ApplyNativeFragmentShader(std::string& shader)
+{
+ return true;
+}
+
const char* NativeImageSource::GetCustomSamplerTypename() const
{
return "";
mNativeTexture = Dali::Texture::New(*nativeImageSourcePtr);
Dali::Geometry geometry = VisualFactoryCache::CreateQuadGeometry();
- Dali::Shader shader = CreateShader(nativeImageSourcePtr->GetCustomFragmentPrefix());
+ Dali::Shader shader = CreateShader(nativeImageSourcePtr);
Dali::TextureSet textureSet = Dali::TextureSet::New();
textureSet.SetTexture(0u, mNativeTexture);
mCameraPlayer.SetDisplayArea(mDisplayArea);
}
-Dali::Shader CameraView::CreateShader(const char* fragmentPrefix)
+Dali::Shader CameraView::CreateShader(Dali::NativeImageSourcePtr nativeImageSourcePtr)
{
- std::string fragmentShader = fragmentPrefix;
- std::string vertexShader;
+ std::string vertexShader = SHADER_VIDEO_VIEW_TEXTURE_VERT.data();
+ std::string fragmentShader = SHADER_VIDEO_VIEW_TEXTURE_FRAG.data();
- vertexShader = SHADER_VIDEO_VIEW_TEXTURE_VERT.data();
- fragmentShader += SHADER_VIDEO_VIEW_TEXTURE_FRAG.data();
+ nativeImageSourcePtr->ApplyNativeFragmentShader(fragmentShader);
return Dali::Shader::New(vertexShader, fragmentShader);
}
/**
* @brief CreateShader for native image target
- * @param[in] fragmentPrefix prefix of fragment
+ * @param[in] nativeImageSourcePtr to apply custom fragment prefix
* @return Returns the shader for NativeImage.
*/
- Dali::Shader CreateShader(const char* fragmentPrefix);
+ Dali::Shader CreateShader(Dali::NativeImageSourcePtr nativeImageSourcePtr);
private:
Dali::CameraPlayer mCameraPlayer;
linesBuffer[lineIndex].ellipsis = false;
}
numberOfLines--;
- ellipsisLineIndex = middleLineIndex > 0u ? middleLineIndex - 1u : 0u;
+ ellipsisLineIndex = middleLineIndex - 1u;
middleLineIndex = (numberOfLines) / 2u;
}
void Initialize(LineRun& line)
{
- line.glyphRun.glyphIndex = 0u;
- line.glyphRun.numberOfGlyphs = 0u;
- line.characterRun.characterIndex = 0u;
- line.characterRun.numberOfCharacters = 0u;
- line.width = 0.f;
- line.ascender = 0.f;
- line.descender = 0.f;
- line.extraLength = 0.f;
- line.alignmentOffset = 0.f;
- line.direction = LTR;
- line.ellipsis = false;
- line.lineSpacing = mDefaultLineSpacing;
+ line.glyphRun.glyphIndex = 0u;
+ line.glyphRun.numberOfGlyphs = 0u;
+ line.characterRun.characterIndex = 0u;
+ line.characterRun.numberOfCharacters = 0u;
+ line.width = 0.f;
+ line.ascender = 0.f;
+ line.descender = 0.f;
+ line.extraLength = 0.f;
+ line.alignmentOffset = 0.f;
+ line.direction = LTR;
+ line.ellipsis = false;
+ line.lineSpacing = mDefaultLineSpacing;
+ line.isSplitToTwoHalves = false;
+ line.glyphRunSecondHalf.glyphIndex = 0u;
+ line.glyphRunSecondHalf.numberOfGlyphs = 0u;
+ line.characterRunForSecondHalfLine.characterIndex = 0u;
+ line.characterRunForSecondHalfLine.numberOfCharacters = 0u;
}
Type mLayout;
{
mCopiedActor = Dali::Actor::New();
mTarget.GetParent().Add(mCopiedActor);
+
mCopiedActor[Dali::DevelActor::Property::SIBLING_ORDER] = static_cast<int32_t>(mTarget[Dali::DevelActor::Property::SIBLING_ORDER]) + 1;
- for(uint32_t i = 0; i < mTarget.GetChildCount(); ++i)
+ while(mTarget.GetChildCount() > 0)
{
- Dali::Actor child = mTarget.GetChildAt(i);
+ Dali::Actor child = mTarget.GetChildAt(0);
Dali::DevelActor::SwitchParent(child, mCopiedActor);
}
mTarget.SetProperties(mOriginalPropertyMap);
if(mMoveTargetChildren)
{
- for(uint32_t i = 0; i < mCopiedActor.GetChildCount(); ++i)
+ while(mCopiedActor.GetChildCount() > 0)
{
- Dali::Actor child = mCopiedActor.GetChildAt(i);
+ Dali::Actor child = mCopiedActor.GetChildAt(0);
Dali::DevelActor::SwitchParent(child, mTarget);
}
mCopiedActor.Unparent();