[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / animated-image / image-cache.cpp
1 /*
2  * Copyright (c) 2023 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 // CLASS HEADER
18 #include <dali-toolkit/internal/visuals/animated-image/image-cache.h>
19
20 namespace Dali
21 {
22 namespace Toolkit
23 {
24 namespace Internal
25 {
26 ImageCache::ImageCache(TextureManager&                     textureManager,
27                        ImageDimensions                     size,
28                        Dali::FittingMode::Type             fittingMode,
29                        Dali::SamplingMode::Type            samplingMode,
30                        TextureManager::MaskingDataPointer& maskingData,
31                        ImageCache::FrameReadyObserver&     observer,
32                        uint32_t                            batchSize,
33                        uint32_t                            interval,
34                        bool                                preMultiplyOnLoad)
35 : mTextureManager(textureManager),
36   mObserver(observer),
37   mMaskingData(maskingData),
38   mDesiredSize(size),
39   mFittingMode(fittingMode),
40   mSamplingMode(samplingMode),
41   mBatchSize(batchSize),
42   mInterval(interval),
43   mLoadState(TextureManager::LoadState::NOT_STARTED),
44   mRequestingLoad(false),
45   mPreMultiplyOnLoad(preMultiplyOnLoad),
46   mTextureManagerAlive(true)
47 {
48   mTextureManager.AddObserver(*this);
49 }
50
51 ImageCache::~ImageCache()
52 {
53   if(mTextureManagerAlive)
54   {
55     mTextureManager.RemoveObserver(*this);
56   }
57 }
58
59 void ImageCache::TextureManagerDestroyed()
60 {
61   mTextureManagerAlive = false;
62 }
63
64 void ImageCache::SetInterval(uint32_t interval)
65 {
66   mInterval = interval;
67 }
68
69 } //namespace Internal
70 } //namespace Toolkit
71 } //namespace Dali