X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fpage-turn-view%2Fpage-turn-book-spine-effect.h;h=e5e95f80a788767c0b8ef0dae159ef7bf7edd01c;hp=efe112cf1a11a8629fbe1d46a6b8e847af091a94;hb=HEAD;hpb=adc2bdd0d2ccbb534b53eee116f43376ad5246d1 diff --git a/dali-toolkit/internal/controls/page-turn-view/page-turn-book-spine-effect.h b/dali-toolkit/internal/controls/page-turn-view/page-turn-book-spine-effect.h index efe112c..e5e95f8 100644 --- a/dali-toolkit/internal/controls/page-turn-view/page-turn-book-spine-effect.h +++ b/dali-toolkit/internal/controls/page-turn-view/page-turn-book-spine-effect.h @@ -1,8 +1,8 @@ -#ifndef __DALI_PAGE_TURN_BOOK_SPINE_EFFECT_H__ -#define __DALI_PAGE_TURN_BOOK_SPINE_EFFECT_H__ +#ifndef DALI_PAGE_TURN_BOOK_SPINE_EFFECT_H +#define DALI_PAGE_TURN_BOOK_SPINE_EFFECT_H /* - * Copyright (c) 2015 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. @@ -18,74 +18,45 @@ * */ -// EXTERNAL INCLUDES -#include +// INTERNAL INCLUDES +#include +#include namespace Dali { - namespace Toolkit { - namespace Internal { - /** * @brief Creates a new PageTurnBookSpineEffect * This is an assisting effect of PageTurnEffect to display a book spine on _static_ pages, and also to flip the image horizontally when needed. * * When the page is turned over in landscape, call * SetIsBackImageVisible(true), this effect can display the back image - * correctly after the imageActor been rotated 180 degrees. To + * correctly after the page been rotated 180 degrees. To * display the pages visually consistent with its turning state, * please set the uniforms with the same values as the PageTurnEffect. * * Animatable/Constrainable uniforms: * "uSpineShadowParameter" - The two parameters are the major&minor radius (in pixels) to form an ellipse shape. The top-left - * quarter of this ellipse is used to calculate spine normal for simulating shadow - * "uIsBackImageVisible" - Set whether the current page is with its backside visible. Need to pass the parameter as true for - * the page which is turned over but still visible in Landscape - * "uPageWidth" - The page width of the PageTurnBookSpineEffect + * quarter of this ellipse is used to calculate spine normal for simulating shadow * + * "uTextureWidth" - 1.0 for single sided page, + * 2.0 for double sided image which has left half part as page front side and right half part as page back side. * - * @return A handle to a newly allocated ShaderEffect + * @return The newly created Property::Map with the page turn book spine effect **/ -inline ShaderEffect CreatePageTurnBookSpineEffect() +inline Property::Map CreatePageTurnBookSpineEffect() { - // the simplified version of the fragment shader of page turn effect - std::string fragmentSource = DALI_COMPOSE_SHADER( - precision mediump float;\n - uniform float uIsBackImageVisible;\n - uniform float uPageWidth;\n - uniform vec2 uSpineShadowParameter;\n - void main()\n - {\n - // flip the image horizontally by changing the x component of the texture coordinate - if( uIsBackImageVisible == 1.0 )\n - gl_FragColor = texture2D( sTexture, vec2( sTextureRect.p+sTextureRect.s-vTexCoord.x, vTexCoord.y ) ) * uColor; \n - else\n - gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor;\n - // display book spine, a stripe of shadowed texture - float pixelPos = (vTexCoord.x-sTextureRect.s)*uPageWidth; \n - if(pixelPos < uSpineShadowParameter.x) \n - {\n - float x = pixelPos - uSpineShadowParameter.x;\n - float y = sqrt( uSpineShadowParameter.x*uSpineShadowParameter.x - x*x );\n - vec2 spineNormal = normalize(vec2(uSpineShadowParameter.y*x/uSpineShadowParameter.x, y));\n - gl_FragColor.rgb *= spineNormal.y; \n - } - } ); - - const Vector2 DEFAULT_SPINE_SHADOW_PARAMETER(50.0f, 20.0f); - - ShaderEffect shaderEffect = ShaderEffect::New( "", fragmentSource ); + Property::Map map; - shaderEffect.SetUniform( "uIsBackImageVisible", -1.f ); - shaderEffect.SetUniform( "uSpineShadowParameter", DEFAULT_SPINE_SHADOW_PARAMETER ); + Property::Map customShader; - float defaultPageWidth = Dali::Stage::GetCurrent().GetSize().x; - shaderEffect.SetUniform( "uPageWidth", defaultPageWidth ); + customShader[Toolkit::Visual::Shader::Property::VERTEX_SHADER] = SHADER_PAGE_TURN_BOOK_SPINE_EFFECT_VERT.data(); + customShader[Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = SHADER_PAGE_TURN_BOOK_SPINE_EFFECT_FRAG.data(); - return shaderEffect; + map[Toolkit::Visual::Property::SHADER] = customShader; + return map; } } //namespace Internal @@ -94,4 +65,4 @@ inline ShaderEffect CreatePageTurnBookSpineEffect() } // namespace Dali -#endif /* __DALI_PAGE_TURN_BOOK_SPINE_EFFECT_H__ */ +#endif // DALI_PAGE_TURN_BOOK_SPINE_EFFECT_H