X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-image%2Ffixed-image-cache.cpp;h=7cb6ce334a2f08a7ad2dcdb75a8ca1483c323370;hb=ca51ee97baf5f41ecf741e22d865ff6c9e0bf769;hp=192a3c4005a87e4eafaf1e94afd79fa771373a66;hpb=500882d098cbd85609e6fb60f99721ee08ec8e8a;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp index 192a3c4..7cb6ce3 100644 --- a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp +++ b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -31,13 +31,17 @@ namespace Internal { namespace { -constexpr bool ENABLE_ORIENTATION_CORRECTION(true); +constexpr bool ENABLE_ORIENTATION_CORRECTION(true); constexpr uint32_t FIRST_FRAME_INDEX = 0u; } // namespace -FixedImageCache::FixedImageCache( - TextureManager& textureManager, UrlList& urlList, ImageCache::FrameReadyObserver& observer, uint32_t batchSize, uint32_t interval) -: ImageCache(textureManager, observer, batchSize, interval), +FixedImageCache::FixedImageCache(TextureManager& textureManager, + UrlList& urlList, + TextureManager::MaskingDataPointer& maskingData, + ImageCache::FrameReadyObserver& observer, + uint32_t batchSize, + uint32_t interval) +: ImageCache(textureManager, maskingData, observer, batchSize, interval), mImageUrls(urlList), mFront(FIRST_FRAME_INDEX) { @@ -108,8 +112,8 @@ void FixedImageCache::LoadBatch() // Once the cache is filled, no more images are loaded. for(unsigned int i = 0; i < mBatchSize && mReadyFlags.size() < mImageUrls.size(); ++i) { - uint32_t frameIndex = mReadyFlags.size(); - std::string& url = mImageUrls[frameIndex].mUrl; + uint32_t frameIndex = mReadyFlags.size(); + VisualUrl& url = mImageUrls[frameIndex].mUrl; mReadyFlags.push_back(false); @@ -117,28 +121,32 @@ void FixedImageCache::LoadBatch() // from within this method. This means it won't yet have a texture id, so we // need to account for this inside the LoadComplete method using mRequestingLoad. mRequestingLoad = true; - mLoadState = TextureManager::LoadState::LOADING; - - bool synchronousLoading = false; - bool atlasingStatus = false; - bool loadingStatus = false; - TextureManager::MaskingDataPointer maskInfo = nullptr; - AtlasUploadObserver* atlasObserver = nullptr; - ImageAtlasManagerPtr imageAtlasManager = nullptr; - Vector4 textureRect; - Dali::ImageDimensions textureRectSize; - auto preMultiply = TextureManager::MultiplyOnLoad::LOAD_WITHOUT_MULTIPLY; - - mTextureManager.LoadTexture( - url, ImageDimensions(), FittingMode::SCALE_TO_FILL, SamplingMode::BOX_THEN_LINEAR, maskInfo, synchronousLoading, mImageUrls[frameIndex].mTextureId, textureRect, textureRectSize, atlasingStatus, loadingStatus, Dali::WrapMode::Type::DEFAULT, Dali::WrapMode::Type::DEFAULT, this, atlasObserver, imageAtlasManager, ENABLE_ORIENTATION_CORRECTION, TextureManager::ReloadPolicy::CACHED, preMultiply); - + mLoadState = TextureManager::LoadState::LOADING; + + bool synchronousLoading = false; + bool atlasingStatus = false; + bool loadingStatus = false; + AtlasUploadObserver* atlasObserver = nullptr; + ImageAtlasManagerPtr imageAtlasManager = nullptr; + Vector4 textureRect; + Dali::ImageDimensions textureRectSize; + auto preMultiply = TextureManager::MultiplyOnLoad::LOAD_WITHOUT_MULTIPLY; + + mTextureManager.LoadTexture(url, ImageDimensions(), FittingMode::SCALE_TO_FILL, SamplingMode::BOX_THEN_LINEAR, mMaskingData, synchronousLoading, mImageUrls[frameIndex].mTextureId, textureRect, textureRectSize, atlasingStatus, loadingStatus, this, atlasObserver, imageAtlasManager, ENABLE_ORIENTATION_CORRECTION, TextureManager::ReloadPolicy::CACHED, preMultiply); mRequestingLoad = false; } } TextureSet FixedImageCache::GetFrontTextureSet() const { - return mTextureManager.GetTextureSet(mImageUrls[mFront].mTextureId); + TextureSet textureSet = mTextureManager.GetTextureSet(mImageUrls[mFront].mTextureId); + if(textureSet) + { + Sampler sampler = Sampler::New(); + sampler.SetWrapMode(Dali::WrapMode::Type::DEFAULT, Dali::WrapMode::Type::DEFAULT); + textureSet.SetSampler(0u, sampler); + } + return textureSet; } void FixedImageCache::CheckFrontFrame(bool wasReady) @@ -161,13 +169,17 @@ void FixedImageCache::ClearCache() } mReadyFlags.clear(); mLoadState = TextureManager::LoadState::NOT_STARTED; + if(mMaskingData) + { + mMaskingData->mAlphaMaskId = TextureManager::INVALID_TEXTURE_ID; + } } void FixedImageCache::LoadComplete(bool loadSuccess, TextureInformation textureInformation) { if(loadSuccess) { - mLoadState = TextureManager::LoadState::LOAD_FINISHED; + mLoadState = TextureManager::LoadState::LOAD_FINISHED; bool frontFrameReady = IsFrontReady(); if(!mRequestingLoad) {