DALi Version 2.2.11
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / animated-image / image-cache.cpp
1 /*
2  * Copyright (c) 2022 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 #include "image-cache.h"
18
19 namespace Dali
20 {
21 namespace Toolkit
22 {
23 namespace Internal
24 {
25 ImageCache::ImageCache(TextureManager&                     textureManager,
26                        ImageDimensions                     size,
27                        Dali::FittingMode::Type             fittingMode,
28                        Dali::SamplingMode::Type            samplingMode,
29                        TextureManager::MaskingDataPointer& maskingData,
30                        ImageCache::FrameReadyObserver&     observer,
31                        uint32_t                            batchSize,
32                        uint32_t                            interval,
33                        bool                                preMultiplyOnLoad)
34 : mTextureManager(textureManager),
35   mObserver(observer),
36   mMaskingData(maskingData),
37   mDesiredSize(size),
38   mFittingMode(fittingMode),
39   mSamplingMode(samplingMode),
40   mBatchSize(batchSize),
41   mInterval(interval),
42   mLoadState(TextureManager::LoadState::NOT_STARTED),
43   mRequestingLoad(false),
44   mPreMultiplyOnLoad(preMultiplyOnLoad),
45   mTextureManagerAlive(true)
46 {
47   mTextureManager.AddObserver(*this);
48 }
49
50 ImageCache::~ImageCache()
51 {
52   if(mTextureManagerAlive)
53   {
54     mTextureManager.RemoveObserver(*this);
55   }
56 }
57
58 void ImageCache::TextureManagerDestroyed()
59 {
60   mTextureManagerAlive = false;
61 }
62
63 void ImageCache::SetInterval(uint32_t interval)
64 {
65   mInterval = interval;
66 }
67
68 } //namespace Internal
69 } //namespace Toolkit
70 } //namespace Dali