X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Factors%2Fimage-actor-impl.cpp;h=92016de44e3f766b9c65f3981057cad1ae16cd68;hb=refs%2Fchanges%2F06%2F82306%2F1;hp=19d0b3e792debe55d2f593c76d5f0b797f153c27;hpb=e2a104913c11861fbdf6632b2a7a98b28d282047;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/actors/image-actor-impl.cpp b/dali/internal/event/actors/image-actor-impl.cpp index 19d0b3e..92016de 100644 --- a/dali/internal/event/actors/image-actor-impl.cpp +++ b/dali/internal/event/actors/image-actor-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -24,6 +24,7 @@ // INTERNAL INCLUDES #include // for EqualToConstraint #include +#include #include #include #include @@ -86,7 +87,7 @@ GeometryPtr CreateGeometry( unsigned int gridWidth, unsigned int gridHeight, con } // Create indices - Vector< unsigned int > indices; + Vector< unsigned short > indices; indices.Reserve( ( gridWidth + 2 ) * gridHeight * 2 - 2); for( unsigned int row = 0u; row < gridHeight; ++row ) @@ -120,19 +121,14 @@ GeometryPtr CreateGeometry( unsigned int gridWidth, unsigned int gridHeight, con vertexPropertyBuffer->SetData( &vertices[ 0 ], vertices.size() ); } - Property::Map indexFormat; - indexFormat[ "indices" ] = Property::INTEGER; - PropertyBufferPtr indexPropertyBuffer = PropertyBuffer::New( indexFormat ); - if( indices.Size() > 0 ) - { - indexPropertyBuffer->SetData( &indices[ 0 ], indices.Size() ); - } - // Create the geometry object GeometryPtr geometry = Geometry::New(); geometry->AddVertexBuffer( *vertexPropertyBuffer ); - geometry->SetIndexBuffer( *indexPropertyBuffer ); - geometry->SetGeometryType( Dali::Geometry::TRIANGLE_STRIP ); + if( indices.Size() > 0 ) + { + geometry->SetIndexBuffer( &indices[0], indices.Size() ); + } + geometry->SetType( Dali::Geometry::TRIANGLE_STRIP ); return geometry; } @@ -165,7 +161,6 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( const char * const TEXTURE_RECT_UNIFORM_NAME( "sTextureRect" ); -const size_t INVALID_TEXTURE_ID = (size_t)-1; const int INVALID_RENDERER_ID = -1; const uint16_t MAXIMUM_GRID_SIZE = 2048; } @@ -183,10 +178,10 @@ ImageActorPtr ImageActor::New() GeometryPtr quad = CreateGeometry( 1u, 1u, Vector2::ONE ); actor->mRenderer->SetGeometry( *quad ); - ShaderPtr shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER, Dali::Shader::HINT_NONE ); - MaterialPtr material = Material::New(); - material->SetShader( *shader ); - actor->mRenderer->SetMaterial( *material ); + ShaderPtr shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER, Dali::Shader::Hint::NONE ); + actor->mRenderer->SetShader( *shader ); + TextureSetPtr textureSet = TextureSet::New(); + actor->mRenderer->SetTextures( *textureSet ); return actor; } @@ -212,14 +207,9 @@ void ImageActor::SetImage( ImagePtr& image ) SamplerPtr sampler = Sampler::New(); sampler->SetFilterMode( mMinFilter, mMagFilter ); - if( mTextureIndex != INVALID_TEXTURE_ID ) - { - mRenderer->GetMaterial()->SetTextureImage( mTextureIndex, image.Get() ); - } - else - { - mTextureIndex = mRenderer->GetMaterial()->AddTexture( image, "sTexture", sampler ); - } + TextureSet* textureSet( mRenderer->GetTextures() ); + textureSet->SetImage( 0u, image.Get() ); + textureSet->SetSampler( 0u, sampler ); if( mRendererIndex == INVALID_RENDERER_ID ) { @@ -238,7 +228,7 @@ void ImageActor::SetImage( ImagePtr& image ) ImagePtr ImageActor::GetImage() const { - return mRenderer->GetMaterial()->GetTexture( mTextureIndex ); + return mRenderer->GetTextures()->GetImage( 0u ); } void ImageActor::SetPixelArea( const PixelArea& pixelArea ) @@ -281,25 +271,25 @@ void ImageActor::ClearPixelArea() void ImageActor::SetStyle( Dali::ImageActor::Style style ) { - DALI_LOG_WARNING( "SetStyle Deprecated. Only STYLE_QUAD supported." ); + DALI_LOG_WARNING( "SetStyle Deprecated. Only STYLE_QUAD supported.\n" ); mStyle = style; } Dali::ImageActor::Style ImageActor::GetStyle() const { - DALI_LOG_WARNING( "GetStyle Deprecated. Only STYLE_QUAD supported." ); + DALI_LOG_WARNING( "GetStyle Deprecated. Only STYLE_QUAD supported.\n" ); return mStyle; } void ImageActor::SetNinePatchBorder( const Vector4& border ) { - DALI_LOG_WARNING( "SetNinePatchBorder Deprecated. Only STYLE_QUAD supported." ); + DALI_LOG_WARNING( "SetNinePatchBorder Deprecated. Only STYLE_QUAD supported.\n" ); mNinePatchBorder = border; } Vector4 ImageActor::GetNinePatchBorder() const { - DALI_LOG_WARNING( "GetNinePatchBorder Deprecated. Only STYLE_QUAD supported." ); + DALI_LOG_WARNING( "GetNinePatchBorder Deprecated. Only STYLE_QUAD supported.\n" ); return mNinePatchBorder; } @@ -308,8 +298,6 @@ ImageActor::ImageActor() mActorSize( Vector2::ZERO ), mGridSize( 1u, 1u ), mRendererIndex( INVALID_RENDERER_ID ), - mTextureIndex( INVALID_TEXTURE_ID ), - mEffectTextureIndex( INVALID_TEXTURE_ID ), mMinFilter( FilterMode::DEFAULT ), mMagFilter( FilterMode::DEFAULT ), mStyle( Dali::ImageActor::STYLE_QUAD ), @@ -387,8 +375,7 @@ void ImageActor::UpdateTexureRect() textureRect.w = vScale * float(mPixelArea.y + mPixelArea.height); } - Material* material = mRenderer->GetMaterial(); - material->RegisterProperty( TEXTURE_RECT_UNIFORM_NAME, textureRect ); + mRenderer->RegisterProperty( TEXTURE_RECT_UNIFORM_NAME, textureRect ); } unsigned int ImageActor::GetDefaultPropertyCount() const @@ -620,44 +607,44 @@ float ImageActor::GetSortModifier() const void ImageActor::SetBlendMode( BlendingMode::Type mode ) { - mRenderer->SetBlendMode( mode ); + mRenderer->SetBlendMode( static_cast( mode ) ); } BlendingMode::Type ImageActor::GetBlendMode() const { - return mRenderer->GetBlendMode(); + return static_cast( mRenderer->GetBlendMode() ); } void ImageActor::SetBlendFunc( BlendingFactor::Type srcFactorRgba, BlendingFactor::Type destFactorRgba ) { - mRenderer->SetBlendFunc( srcFactorRgba, destFactorRgba, srcFactorRgba, destFactorRgba ); + mRenderer->SetBlendFunc( static_cast(srcFactorRgba), static_cast(destFactorRgba), static_cast(srcFactorRgba), static_cast(destFactorRgba) ); } void ImageActor::SetBlendFunc( BlendingFactor::Type srcFactorRgb, BlendingFactor::Type destFactorRgb, BlendingFactor::Type srcFactorAlpha, BlendingFactor::Type destFactorAlpha ) { - mRenderer->SetBlendFunc( srcFactorRgb, destFactorRgb, srcFactorAlpha, destFactorAlpha ); + mRenderer->SetBlendFunc( static_cast(srcFactorRgb), static_cast(destFactorRgb), static_cast(srcFactorAlpha), static_cast(destFactorAlpha) ); } void ImageActor::GetBlendFunc( BlendingFactor::Type& srcFactorRgb, BlendingFactor::Type& destFactorRgb, BlendingFactor::Type& srcFactorAlpha, BlendingFactor::Type& destFactorAlpha ) const { - mRenderer->GetBlendFunc( srcFactorRgb, destFactorRgb, srcFactorAlpha, destFactorAlpha ); + mRenderer->GetBlendFunc( reinterpret_cast(srcFactorRgb), reinterpret_cast(destFactorRgb), reinterpret_cast(srcFactorAlpha), reinterpret_cast(destFactorAlpha) ); } void ImageActor::SetBlendEquation( BlendingEquation::Type equationRgba ) { - mRenderer->SetBlendEquation( equationRgba, equationRgba ); + mRenderer->SetBlendEquation( static_cast(equationRgba), static_cast(equationRgba) ); } void ImageActor::SetBlendEquation( BlendingEquation::Type equationRgb, BlendingEquation::Type equationAlpha ) { - mRenderer->SetBlendEquation( equationRgb, equationAlpha ); + mRenderer->SetBlendEquation( static_cast(equationRgb), static_cast(equationAlpha) ); } void ImageActor::GetBlendEquation( BlendingEquation::Type& equationRgb, BlendingEquation::Type& equationAlpha ) const { - mRenderer->GetBlendEquation( equationRgb, equationAlpha ); + mRenderer->GetBlendEquation( reinterpret_cast(equationRgb), reinterpret_cast(equationAlpha) ); } void ImageActor::SetBlendColor( const Vector4& color ) @@ -676,13 +663,9 @@ void ImageActor::SetFilterMode( FilterMode::Type minFilter, FilterMode::Type mag mMinFilter = minFilter; mMagFilter = magFilter; - if( mTextureIndex != INVALID_TEXTURE_ID ) - { - SamplerPtr sampler = Sampler::New(); - sampler->SetFilterMode( minFilter, magFilter ); - - mRenderer->GetMaterial()->SetTextureSampler( mTextureIndex, sampler.Get() ); - } + SamplerPtr sampler = Sampler::New(); + sampler->SetFilterMode( minFilter, magFilter ); + mRenderer->GetTextures()->SetSampler( 0u, sampler.Get() ); } void ImageActor::GetFilterMode( FilterMode::Type& minFilter, FilterMode::Type& magFilter ) const @@ -702,7 +685,7 @@ void ImageActor::SetShaderEffect( ShaderEffect& effect ) effect.Connect( this ); ShaderPtr shader = mShaderEffect->GetShader(); - mRenderer->GetMaterial()->SetShader( *shader ); + mRenderer->SetShader( *shader ); EffectImageUpdated(); @@ -720,8 +703,8 @@ void ImageActor::RemoveShaderEffect() { mShaderEffect->Disconnect( this ); // change to the standard shader and quad geometry - ShaderPtr shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER, Dali::Shader::HINT_NONE ); - mRenderer->GetMaterial()->SetShader( *shader ); + ShaderPtr shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER, Dali::Shader::Hint::NONE ); + mRenderer->SetShader( *shader ); mShaderEffect.Reset(); UpdateGeometry(); @@ -736,25 +719,12 @@ void ImageActor::EffectImageUpdated() if( effectImage ) { Image& effectImageImpl = GetImplementation( effectImage ); - - if( mEffectTextureIndex == INVALID_TEXTURE_ID ) - { - mEffectTextureIndex = mRenderer->GetMaterial()->AddTexture( &effectImageImpl, "sEffect", NULL ); - } - else - { - mRenderer->GetMaterial()->SetTextureImage( mEffectTextureIndex, &effectImageImpl ); - } + mRenderer->GetTextures()->SetImage( 1u, &effectImageImpl ); } else { - if( mEffectTextureIndex != INVALID_TEXTURE_ID ) - { - mRenderer->GetMaterial()->RemoveTexture( mEffectTextureIndex ); - } - mEffectTextureIndex = INVALID_TEXTURE_ID; + mRenderer->GetTextures()->SetImage( 1u, 0 ); } - } }