1 /*
2  * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_THEME_RESOURCE_ADAPTER_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_THEME_RESOURCE_ADAPTER_H
18 
19 #include "base/image/pixel_map.h"
20 #include "base/utils/resource_configuration.h"
21 #include "core/common/resource/resource_configuration.h"
22 #include "core/components/theme/theme_style.h"
23 namespace OHOS::Ace {
24 
25 struct RawfileDescription {
26     // the rawfile fd
27     int fd = 0;
28     // the offset from where the rawfile starts in the hap
29     long offset = 0;
30     // the length of the rawfile in the hap
31     long length = 0;
32 };
33 
34 class ResourceAdapter : public virtual AceType {
35     DECLARE_ACE_TYPE(ResourceAdapter, AceType);
36 
37 public:
38     ResourceAdapter() = default;
39     ~ResourceAdapter() override = default;
40 
41     static RefPtr<ResourceAdapter> Create();
42     static RefPtr<ResourceAdapter> CreateV2();
43 
Init(const ResourceInfo & resourceInfo)44     virtual void Init(const ResourceInfo& resourceInfo) {}
45 
46     virtual void UpdateConfig(const ResourceConfiguration& config, bool themeFlag = false) {}
47 
GetTheme(int32_t themeId)48     virtual RefPtr<ThemeStyle> GetTheme(int32_t themeId)
49     {
50         return nullptr;
51     }
52 
53     virtual Color GetColor(uint32_t resId) = 0;
54 
GetColorByName(const std::string & resName)55     virtual Color GetColorByName(const std::string& resName)
56     {
57         return {};
58     }
59 
60     virtual Dimension GetDimension(uint32_t resId) = 0;
61 
GetDimensionByName(const std::string & resName)62     virtual Dimension GetDimensionByName(const std::string& resName)
63     {
64         return {};
65     }
66 
67     virtual std::string GetString(uint32_t resId) = 0;
68 
GetStringByName(const std::string & resName)69     virtual std::string GetStringByName(const std::string& resName)
70     {
71         return {};
72     }
73 
74     virtual std::vector<std::string> GetStringArray(uint32_t resId) const = 0;
75 
GetStringArrayByName(const std::string & resName)76     virtual std::vector<std::string> GetStringArrayByName(const std::string& resName) const
77     {
78         return {};
79     }
80 
81     virtual double GetDouble(uint32_t resId) = 0;
82 
GetDoubleByName(const std::string & resName)83     virtual double GetDoubleByName(const std::string& resName)
84     {
85         return 0.0;
86     }
87 
88     virtual int32_t GetInt(uint32_t resId) = 0;
89 
GetIntByName(const std::string & resName)90     virtual int32_t GetIntByName(const std::string& resName)
91     {
92         return 0;
93     }
94 
GetPluralString(uint32_t resId,int quantity)95     virtual std::string GetPluralString(uint32_t resId, int quantity)
96     {
97         return {};
98     }
99 
GetPluralStringByName(const std::string & resName,int quantity)100     virtual std::string GetPluralStringByName(const std::string& resName, int quantity)
101     {
102         return {};
103     }
104 
GetPixelMap(uint32_t resId)105     virtual std::shared_ptr<Media::PixelMap> GetPixelMap(uint32_t resId)
106     {
107         return nullptr;
108     }
109 
GetMediaPath(uint32_t resId)110     virtual std::string GetMediaPath(uint32_t resId)
111     {
112         return {};
113     }
114 
GetMediaPathByName(const std::string & resName)115     virtual std::string GetMediaPathByName(const std::string& resName)
116     {
117         return {};
118     }
119 
GetRawfile(const std::string & fileName)120     virtual std::string GetRawfile(const std::string& fileName)
121     {
122         return {};
123     }
124 
GetRawFileData(const std::string & rawFile,size_t & len,std::unique_ptr<uint8_t[]> & dest)125     virtual bool GetRawFileData(const std::string& rawFile, size_t& len, std::unique_ptr<uint8_t[]>& dest)
126     {
127         return false;
128     }
129 
GetRawFileData(const std::string & rawFile,size_t & len,std::unique_ptr<uint8_t[]> & dest,const std::string & bundleName,const std::string & moduleName)130     virtual bool GetRawFileData(const std::string& rawFile, size_t& len, std::unique_ptr<uint8_t[]>& dest,
131         const std::string& bundleName, const std::string& moduleName)
132     {
133         return false;
134     }
135 
GetMediaData(uint32_t resId,size_t & len,std::unique_ptr<uint8_t[]> & dest)136     virtual bool GetMediaData(uint32_t resId, size_t& len, std::unique_ptr<uint8_t[]>& dest)
137     {
138         return false;
139     }
140 
GetMediaData(uint32_t resId,size_t & len,std::unique_ptr<uint8_t[]> & dest,const std::string & bundleName,const std::string & moduleName)141     virtual bool GetMediaData(uint32_t resId, size_t& len, std::unique_ptr<uint8_t[]>& dest,
142         const std::string& bundleName, const std::string& moduleName)
143     {
144         return false;
145     }
146 
GetMediaData(const std::string & resName,size_t & len,std::unique_ptr<uint8_t[]> & dest)147     virtual bool GetMediaData(const std::string& resName, size_t& len, std::unique_ptr<uint8_t[]>& dest)
148     {
149         return false;
150     }
151 
GetMediaData(const std::string & resName,size_t & len,std::unique_ptr<uint8_t[]> & dest,const std::string & bundleName,const std::string & moduleName)152     virtual bool GetMediaData(const std::string& resName, size_t& len, std::unique_ptr<uint8_t[]>& dest,
153         const std::string& bundleName, const std::string& moduleName)
154     {
155         return false;
156     }
157 
GetBoolean(uint32_t resId)158     virtual bool GetBoolean(uint32_t resId) const
159     {
160         return false;
161     }
162 
GetBooleanByName(const std::string & resName)163     virtual bool GetBooleanByName(const std::string& resName) const
164     {
165         return false;
166     }
167 
GetIntArray(uint32_t resId)168     virtual std::vector<uint32_t> GetIntArray(uint32_t resId) const
169     {
170         return {};
171     }
172 
GetIntArrayByName(const std::string & resName)173     virtual std::vector<uint32_t> GetIntArrayByName(const std::string& resName) const
174     {
175         return {};
176     }
177 
GetResource(uint32_t resId,std::ostream & dest)178     virtual bool GetResource(uint32_t resId, std::ostream& dest) const
179     {
180         return false;
181     }
182 
GetResource(const std::string & resId,std::ostream & dest)183     virtual bool GetResource(const std::string& resId, std::ostream& dest) const
184     {
185         return false;
186     }
187 
GetIdByName(const std::string & resName,const std::string & resType,uint32_t & resId)188     virtual bool GetIdByName(const std::string& resName, const std::string& resType, uint32_t& resId) const
189     {
190         return false;
191     }
192 
UpdateResourceManager(const std::string & bundleName,const std::string & moduleName)193     virtual void UpdateResourceManager(const std::string& bundleName, const std::string& moduleName) {}
194 
CloseRawFileDescription(const std::string & rawfileName)195     virtual bool CloseRawFileDescription(const std::string& rawfileName) const
196     {
197         return false;
198     }
199 
GetRawFileDescription(const std::string & rawfileName,RawfileDescription & rawfileDescription)200     virtual bool GetRawFileDescription(const std::string& rawfileName, RawfileDescription& rawfileDescription) const
201     {
202         return false;
203     }
204 
GetMediaById(const int32_t & resId,std::string & mediaPath)205     virtual bool GetMediaById(const int32_t& resId, std::string& mediaPath) const
206     {
207         return false;
208     }
209 
GetResourceLimitKeys()210     virtual uint32_t GetResourceLimitKeys() const
211     {
212         return 0;
213     }
214 
GetSymbolByName(const char * name)215     virtual uint32_t GetSymbolByName(const char *name) const
216     {
217         return -1;
218     }
219 
GetSymbolById(uint32_t resId)220     virtual uint32_t GetSymbolById(uint32_t resId) const
221     {
222         return -1;
223     }
224 
GetPatternByName(const std::string & patternName)225     virtual RefPtr<ThemeStyle> GetPatternByName(const std::string& patternName)
226     {
227         return nullptr;
228     }
229 
230     static RefPtr<ResourceAdapter> CreateNewResourceAdapter(
231         const std::string& bundleName, const std::string& moduleName);
232 
UpdateColorMode(ColorMode colorMode)233     virtual void UpdateColorMode(ColorMode colorMode) {}
234 
GetResourceColorMode()235     virtual ColorMode GetResourceColorMode() const
236     {
237         return ColorMode::LIGHT;
238     }
239 
GetOverrideResourceAdapter(const ResourceConfiguration & config,const ConfigurationChange & configurationChange)240     virtual RefPtr<ResourceAdapter> GetOverrideResourceAdapter(
241         const ResourceConfiguration& config, const ConfigurationChange& configurationChange)
242     {
243         return nullptr;
244     }
245 };
246 
247 } // namespace OHOS::Ace
248 
249 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_THEME_RESOURCE_ADAPTER_H
250