X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fprimitive%2Fprimitive-visual.cpp;h=ebb4480e14b546a2385b73d5271d54b6a52b6c0c;hp=bc605600cd3770fed96a9e6de3ca6f98ac0300e3;hb=ddf213d6be29c945105fdeba076ba7ce98acd9ba;hpb=a6e53c231632bf7da20cbd2633a4cf40f648045c diff --git a/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp b/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp index bc60560..ebb4480 100644 --- a/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp +++ b/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp @@ -28,6 +28,7 @@ // INTERNAL INCLUDES #include #include +#include namespace Dali { @@ -122,13 +123,26 @@ const char* VERTEX_SHADER = DALI_COMPOSE_SHADER( uniform mediump vec3 lightPosition;\n uniform mediump vec2 uStageOffset;\n - void main()\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 + + vec4 ComputeVertexPosition()\n {\n - float xRatio = uSize.x / uObjectDimensions.x;\n - float yRatio = uSize.y / uObjectDimensions.y;\n - float scaleFactor = min( xRatio, yRatio );\n + vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw );\n + float scaleFactor = min( visualSize.x / uObjectDimensions.x, visualSize.y / uObjectDimensions.y );\n + vec3 originFlipY = vec3(origin.x, -origin.y, 0.0); + vec3 anchorPointFlipY = vec3( anchorPoint.x, -anchorPoint.y, 0.0); + vec3 offset = vec3( ( offset / uSize.xy ) * offsetSizeMode.xy + offset * (1.0-offsetSizeMode.xy), 0.0) * vec3(1.0,-1.0,1.0);\n + return vec4( (aPosition + anchorPointFlipY)*scaleFactor + (offset + originFlipY)*uSize, 1.0 );\n + }\n - vec4 normalisedVertexPosition = vec4( aPosition * scaleFactor, 1.0 );\n + void main()\n + {\n + vec4 normalisedVertexPosition = ComputeVertexPosition();\n vec4 vertexPosition = uObjectMatrix * normalisedVertexPosition;\n vertexPosition = uMvpMatrix * vertexPosition;\n @@ -373,14 +387,7 @@ void PrimitiveVisual::DoSetProperties( const Property::Map& propertyMap ) } } -void PrimitiveVisual::SetSize( const Vector2& size ) -{ - Visual::Base::SetSize( size ); - - // ToDo: renderer responds to the size change -} - -void PrimitiveVisual::GetNaturalSize( Vector2& naturalSize ) const +void PrimitiveVisual::GetNaturalSize( Vector2& naturalSize ) { naturalSize.x = mObjectDimensions.x; naturalSize.y = mObjectDimensions.y; @@ -411,15 +418,12 @@ void PrimitiveVisual::DoCreatePropertyMap( Property::Map& map ) const map.Insert( Toolkit::PrimitiveVisual::Property::LIGHT_POSITION, mLightPosition ); } -void PrimitiveVisual::DoSetProperty( Dali::Property::Index index, const Dali::Property::Value& propertyValue ) -{ - // TODO -} - -Dali::Property::Value PrimitiveVisual::DoGetProperty( Dali::Property::Index index ) +void PrimitiveVisual::OnSetTransform() { - // TODO - return Dali::Property::Value(); + if( mImpl->mRenderer ) + { + mImpl->mTransform.RegisterUniforms( mImpl->mRenderer, Direction::LEFT_TO_RIGHT ); + } } void PrimitiveVisual::InitializeRenderer() @@ -436,6 +440,9 @@ void PrimitiveVisual::InitializeRenderer() mImpl->mRenderer = Renderer::New( mGeometry, mShader ); mImpl->mRenderer.SetProperty( Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK ); + + //Register transform properties + mImpl->mTransform.RegisterUniforms( mImpl->mRenderer, Direction::LEFT_TO_RIGHT ); } void PrimitiveVisual::UpdateShaderUniforms()