From: Richard Huang Date: Tue, 22 Aug 2017 15:21:01 +0000 (+0100) Subject: Fix the padding issue while text is scrolling in TextLabel X-Git-Tag: dali_1.2.54~3 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=da0d96a0aaec41815ab86c2d6f7aae7cc260cbf2;ds=sidebyside Fix the padding issue while text is scrolling in TextLabel Change-Id: I519f1c8b17aaa5b698a711dd3745b0e282b9aaea --- diff --git a/dali-toolkit/internal/text/text-scroller.cpp b/dali-toolkit/internal/text/text-scroller.cpp index 49173e9..b109661 100644 --- a/dali-toolkit/internal/text/text-scroller.cpp +++ b/dali-toolkit/internal/text/text-scroller.cpp @@ -44,7 +44,6 @@ const char* VERTEX_SHADER_SCROLL = DALI_COMPOSE_SHADER( attribute mediump vec2 aPosition;\n varying highp vec2 vTexCoord;\n varying highp float vRatio;\n - uniform mediump mat4 uMvpMatrix;\n uniform mediump vec3 uSize;\n uniform mediump float uDelta;\n uniform mediump vec2 uTextureSize;\n @@ -52,17 +51,34 @@ const char* VERTEX_SHADER_SCROLL = DALI_COMPOSE_SHADER( uniform mediump float uHorizontalAlign;\n uniform mediump float uVerticalAlign;\n \n + uniform mediump mat4 uModelMatrix;\n + uniform mediump mat4 uViewMatrix;\n + uniform mediump mat4 uProjection;\n + \n + //Visual size and offset + uniform mediump vec2 offset;\n + uniform mediump vec2 size;\n + uniform mediump vec4 offsetSizeMode;\n + uniform mediump vec2 origin;\n + uniform mediump vec2 anchorPoint;\n + void main()\n {\n - {\n - float smallTextPadding = max( uSize.x - uTextureSize.x, 0. );\n - float gap = max( uGap, smallTextPadding );\n - float delta = floor ( uDelta ) + 0.5;\n - vTexCoord.x = ( delta + uHorizontalAlign * ( uTextureSize.x - uSize.x ) + floor( aPosition.x * uSize.x ) + 0.5 - gap * 0.5 ) / (uTextureSize.x + gap) + 0.5;\n - vTexCoord.y = ( uVerticalAlign * ( uTextureSize.y - uSize.y ) + floor( aPosition.y * uSize.y ) + 0.5 ) / ( uTextureSize.y ) + 0.5;\n - vRatio = uTextureSize.x / ( uTextureSize.x + gap );\n - gl_Position = uMvpMatrix * vec4( floor( aPosition * uSize.xy ), 0.0, 1.0 );\n - }\n + mediump vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy );\n + mediump vec2 visualSize = mix( uSize.xy * size, size, offsetSizeMode.zw );\n + \n + mediump float smallTextPadding = max( visualSize.x - uTextureSize.x, 0. );\n + mediump float gap = max( uGap, smallTextPadding );\n + mediump float delta = floor ( uDelta ) + 0.5;\n + vTexCoord.x = ( delta + uHorizontalAlign * ( uTextureSize.x - visualSize.x ) + floor( aPosition.x * visualSize.x ) + 0.5 - gap * 0.5 ) / ( uTextureSize.x + gap ) + 0.5;\n + vTexCoord.y = ( uVerticalAlign * ( uTextureSize.y - visualSize.y ) + floor( aPosition.y * visualSize.y ) + 0.5 ) / ( uTextureSize.y ) + 0.5;\n + vRatio = uTextureSize.x / ( uTextureSize.x + gap );\n + \n + mediump vec4 vertexPosition = vec4( floor( ( aPosition + anchorPoint ) * visualSize + ( visualOffset + origin ) * uSize.xy ), 0.0, 1.0 );\n + mediump vec4 nonAlignedVertex = uViewMatrix * uModelMatrix * vertexPosition;\n + mediump vec4 pixelAlignedVertex = vec4 ( floor( nonAlignedVertex.xyz ), 1.0 );\n + \n + gl_Position = uProjection * pixelAlignedVertex;\n }\n );