X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Frendering%2Ftexture-set-impl.cpp;h=349eaa65ee12f07f8dbddeb5083e0c6d650b0d50;hb=14502a507909174b52e486a0ee7516cb26e6ad45;hp=428ab9e0b9b202cedee695569ca6e83283b6e5ce;hpb=1c95ac2aab36475e87d2405e8430a9354ac95af0;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/rendering/texture-set-impl.cpp b/dali/internal/event/rendering/texture-set-impl.cpp index 428ab9e..349eaa6 100644 --- a/dali/internal/event/rendering/texture-set-impl.cpp +++ b/dali/internal/event/rendering/texture-set-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -20,7 +20,7 @@ // INTERNAL INCLUDES #include -#include // Dali::Internal::ObjectHelper +#include #include #include @@ -36,72 +36,34 @@ TextureSetPtr TextureSet::New() return textureSet; } -void TextureSet::SetImage( size_t index, ImagePtr image ) +void TextureSet::SetTexture( uint32_t index, TexturePtr texture ) { - if( !mNewTextures.empty() ) + uint32_t textureCount = static_cast( mTextures.size() ); + if( index >= textureCount ) { - DALI_LOG_ERROR( "Error: Cannot mix images and textures in the same TextureSet\n"); - return; - } + mTextures.resize(index + 1); - size_t textureCount( mImages.size() ); - if( index < textureCount ) - { - if( mImages[index] && mOnStage ) + bool samplerExist = true; + if( mSamplers.size() < index + 1 ) { - mImages[index]->Disconnect(); + mSamplers.resize( index + 1 ); + samplerExist = false; } - } - else - { - mImages.resize(index + 1); - mSamplers.resize(index + 1); - for( size_t i(textureCount); i<=index; ++i ) - { - mImages[i] = NULL; - mSamplers[i] = NULL; - } - } - mImages[index] = image; - - if( image ) - { - if( mOnStage ) + for( uint32_t i(textureCount); i<=index; ++i ) { - image->Connect(); - } - SceneGraph::SetImageMessage( mEventThreadServices, *mSceneObject, index, image->GetResourceId() ); - } - else - { - SceneGraph::SetImageMessage( mEventThreadServices, *mSceneObject, index, Integration::InvalidResourceId ); - } -} - -void TextureSet::SetTexture( size_t index, NewTexturePtr texture ) -{ - if( !mImages.empty() ) - { - DALI_LOG_ERROR( "Error: Cannot mix images and textures in the same texture set\n"); - return; - } + mTextures[i] = NULL; - size_t textureCount( mNewTextures.size() ); - if( index >= textureCount ) - { - mNewTextures.resize(index + 1); - mSamplers.resize(index + 1); - for( size_t i(textureCount); i<=index; ++i ) - { - mNewTextures[i] = NULL; - mSamplers[i] = NULL; + if( !samplerExist ) + { + mSamplers[i] = NULL; + } } } - mNewTextures[index]= texture; + mTextures[index]= texture; - Render::NewTexture* renderTexture(0); + Render::Texture* renderTexture(0); if( texture ) { renderTexture = texture->GetRenderObject(); @@ -110,27 +72,12 @@ void TextureSet::SetTexture( size_t index, NewTexturePtr texture ) SceneGraph::SetTextureMessage( mEventThreadServices, *mSceneObject, index, renderTexture ); } -Image* TextureSet::GetImage( size_t index ) const +Texture* TextureSet::GetTexture( uint32_t index ) const { - Image* result(0); - if( index < mImages.size() ) + Texture* result(0); + if( index < mTextures.size() ) { - result = mImages[index].Get(); - } - else - { - DALI_LOG_ERROR( "Error: Invalid index to TextureSet::GetImage\n"); - } - - return result; -} - -NewTexture* TextureSet::GetTexture( size_t index ) const -{ - NewTexture* result(0); - if( index < mNewTextures.size() ) - { - result = mNewTextures[index].Get(); + result = mTextures[index].Get(); } else { @@ -140,19 +87,15 @@ NewTexture* TextureSet::GetTexture( size_t index ) const return result; } -void TextureSet::SetSampler( size_t index, SamplerPtr sampler ) +void TextureSet::SetSampler( uint32_t index, SamplerPtr sampler ) { - size_t samplerCount( mSamplers.size() ); + uint32_t samplerCount = static_cast( mSamplers.size() ); if( samplerCount < index + 1 ) { mSamplers.resize( index + 1 ); - mNewTextures.resize( index + 1 ); - mImages.resize( index + 1 ); - for( size_t i(samplerCount); i<=index; ++i ) + for( uint32_t i = samplerCount; i<=index; ++i ) { - mImages[i] = NULL; mSamplers[i] = NULL; - mNewTextures[i] = NULL; } } @@ -167,7 +110,7 @@ void TextureSet::SetSampler( size_t index, SamplerPtr sampler ) SceneGraph::SetSamplerMessage( mEventThreadServices, *mSceneObject, index, renderSampler ); } -Sampler* TextureSet::GetSampler( size_t index ) const +Sampler* TextureSet::GetSampler( uint32_t index ) const { Sampler* result(0); if( index < mSamplers.size() ) @@ -182,9 +125,9 @@ Sampler* TextureSet::GetSampler( size_t index ) const return result; } -size_t TextureSet::GetTextureCount() const +uint32_t TextureSet::GetTextureCount() const { - return mSamplers.size(); + return static_cast( mTextures.size() ); } const SceneGraph::TextureSet* TextureSet::GetTextureSetSceneObject() const @@ -192,46 +135,9 @@ const SceneGraph::TextureSet* TextureSet::GetTextureSetSceneObject() const return mSceneObject; } -bool TextureSet::OnStage() const -{ - return mOnStage; -} - -void TextureSet::Connect() -{ - mOnStage = true; - - for( size_t i(0); iConnect(); - SceneGraph::SetImageMessage( mEventThreadServices, *mSceneObject, i, mImages[i]->GetResourceId() ); - } - else - { - SceneGraph::SetImageMessage( mEventThreadServices, *mSceneObject, i, Integration::InvalidResourceId ); - } - } -} - -void TextureSet::Disconnect() -{ - for( size_t i(0); iDisconnect(); - } - } - - mOnStage = false; -} - TextureSet::TextureSet() :mEventThreadServices( *Stage::GetCurrent() ), - mSceneObject( NULL ), - mOnStage( false ) + mSceneObject( NULL ) { } @@ -240,7 +146,8 @@ void TextureSet::Initialize() SceneGraph::UpdateManager& updateManager = mEventThreadServices.GetUpdateManager(); mSceneObject = SceneGraph::TextureSet::New(); - AddTextureSetMessage( updateManager, *mSceneObject ); + OwnerPointer< SceneGraph::TextureSet > transferOwnership( mSceneObject ); + AddTextureSetMessage( updateManager, transferOwnership ); } TextureSet::~TextureSet()