1 /*
2  * Copyright (c) 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 /**
17  * @addtogroup resourcemanager
18  * @{
19  *
20  * @brief Provides the c interface to obtain resources, and relies on librawfile.z.so when used.
21  *
22  * @since 12
23  */
24 
25 /**
26  * @file ohresmgr.h
27  *
28  * @brief Provides the implementation of the interface.
29  * @syscap SystemCapability.Global.ResourceManager
30  * @library libohresmgr.so
31  * @kit LocalizationKit
32  * @since 12
33  */
34 #ifndef GLOBAL_OH_RESMGR_H
35 #define GLOBAL_OH_RESMGR_H
36 
37 #include "resmgr_common.h"
38 #include "../rawfile/raw_file_manager.h"
39 #include "../arkui/drawable_descriptor.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 /**
46  * @brief Obtains the Base64 code of the image resource.
47  *
48  * Obtains the Base64 code of the image resource corresponding to the specified resource ID.
49  *
50  * @param mgr Indicates the pointer to {@link NativeResourceManager}
51  * {@link OH_ResourceManager_InitNativeResourceManager}.
52  * @param resId Indicates the resource ID.
53  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
54  * to use the density of current system dpi.
55  * @param resultValue the result write to resultValue.
56  * @param resultLen the media length write to resultLen.
57  * @return {@link SUCCESS} 0 - Success.
58  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
59  *         1.Incorrect parameter types; 2.Parameter verification failed.
60            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
61            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
62            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
63  * @since 12
64  */
65 ResourceManager_ErrorCode OH_ResourceManager_GetMediaBase64(const NativeResourceManager *mgr, uint32_t resId,
66     char **resultValue, uint64_t *resultLen, uint32_t density = 0);
67 
68 /**
69  * @brief Obtains the Base64 code of the image resource.
70  *
71  * Obtains the Base64 code of the image resource corresponding to the specified resource ID.
72  *
73  * @param mgr Indicates the pointer to {@link NativeResourceManager}
74  * {@link OH_ResourceManager_InitNativeResourceManager}.
75  * @param resId Indicates the resource ID.
76  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
77  * to use the density of current system dpi. If this attribute is not required, set this parameter to 0.
78  * @param resultValue the result write to resultValue.
79  * @param resultLen the media length write to resultLen.
80  * @return {@link SUCCESS} 0 - Success.
81  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
82  *         1.Incorrect parameter types; 2.Parameter verification failed.
83            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
84            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
85            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
86  * @since 12
87  */
88 ResourceManager_ErrorCode OH_ResourceManager_GetMediaBase64Data(const NativeResourceManager *mgr, uint32_t resId,
89     char **resultValue, uint64_t *resultLen, uint32_t density);
90 
91 /**
92  * @brief Obtains the Base64 code of the image resource.
93  *
94  * Obtains the Base64 code of the image resource corresponding to the specified resource name.
95  *
96  * @param mgr Indicates the pointer to {@link NativeResourceManager}
97  * {@link OH_ResourceManager_InitNativeResourceManager}.
98  * @param resName Indicates the resource name.
99  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
100  * to use the density of current system dpi.
101  * @param resultValue the result write to resultValue.
102  * @param resultLen the media length write to resultLen.
103  * @return {@link SUCCESS} 0 - Success.
104  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
105  *         1.Incorrect parameter types; 2.Parameter verification failed.
106            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
107            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
108            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
109  * @since 12
110  */
111 ResourceManager_ErrorCode OH_ResourceManager_GetMediaBase64ByName(const NativeResourceManager *mgr,
112     const char *resName, char **resultValue, uint64_t *resultLen, uint32_t density = 0);
113 
114 /**
115  * @brief Obtains the Base64 code of the image resource.
116  *
117  * Obtains the Base64 code of the image resource corresponding to the specified resource name.
118  *
119  * @param mgr Indicates the pointer to {@link NativeResourceManager}
120  * {@link OH_ResourceManager_InitNativeResourceManager}.
121  * @param resName Indicates the resource name.
122  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
123  * to use the density of current system dpi. If this attribute is not required, set this parameter to 0.
124  * @param resultValue the result write to resultValue.
125  * @param resultLen the media length write to resultLen.
126  * @return {@link SUCCESS} 0 - Success.
127  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
128  *         1.Incorrect parameter types; 2.Parameter verification failed.
129            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
130            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
131            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
132  * @since 12
133  */
134 ResourceManager_ErrorCode OH_ResourceManager_GetMediaBase64DataByName(const NativeResourceManager *mgr,
135     const char *resName, char **resultValue, uint64_t *resultLen, uint32_t density);
136 
137 /**
138  * @brief Obtains the content of the image resource.
139  *
140  * Obtains the content of the specified screen density media file corresponding to a specified resource ID.
141  *
142  * @param mgr Indicates the pointer to {@link NativeResourceManager}
143  * {@link OH_ResourceManager_InitNativeResourceManager}.
144  * @param resId Indicates the resource ID.
145  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
146  * to use the density of current system dpi.
147  * @param resultValue the result write to resultValue.
148  * @param resultLen the media length write to resultLen.
149  * @return {@link SUCCESS} 0 - Success.
150  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
151  *         1.Incorrect parameter types; 2.Parameter verification failed.
152            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
153            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
154            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
155  * @since 12
156  */
157 ResourceManager_ErrorCode OH_ResourceManager_GetMedia(const NativeResourceManager *mgr, uint32_t resId,
158     uint8_t **resultValue, uint64_t *resultLen, uint32_t density = 0);
159 
160 /**
161  * @brief Obtains the content of the image resource.
162  *
163  * Obtains the content of the specified screen density media file corresponding to a specified resource ID.
164  *
165  * @param mgr Indicates the pointer to {@link NativeResourceManager}
166  * {@link OH_ResourceManager_InitNativeResourceManager}.
167  * @param resId Indicates the resource ID.
168  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
169  * to use the density of current system dpi. If this attribute is not required, set this parameter to 0.
170  * @param resultValue the result write to resultValue.
171  * @param resultLen the media length write to resultLen.
172  * @return {@link SUCCESS} 0 - Success.
173  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
174  *         1.Incorrect parameter types; 2.Parameter verification failed.
175            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
176            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
177            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
178  * @since 12
179  */
180 ResourceManager_ErrorCode OH_ResourceManager_GetMediaData(const NativeResourceManager *mgr, uint32_t resId,
181     uint8_t **resultValue, uint64_t *resultLen, uint32_t density);
182 
183 /**
184  * @brief Obtains the content of the image resource.
185  *
186  * Obtains the content of the specified screen density media file corresponding to a specified resource name.
187  *
188  * @param mgr Indicates the pointer to {@link NativeResourceManager}
189  * {@link OH_ResourceManager_InitNativeResourceManager}.
190  * @param resName Indicates the resource name.
191  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
192  * to use the density of current system dpi.
193  * @param resultValue the result write to resultValue.
194  * @param resultLen the media length write to resultLen.
195  * @return {@link SUCCESS} 0 - Success.
196  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
197  *         1.Incorrect parameter types; 2.Parameter verification failed.
198            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
199            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
200            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
201  * @since 12
202  */
203 ResourceManager_ErrorCode OH_ResourceManager_GetMediaByName(const NativeResourceManager *mgr, const char *resName,
204     uint8_t **resultValue, uint64_t *resultLen, uint32_t density = 0);
205 
206 /**
207  * @brief Obtains the content of the image resource.
208  *
209  * Obtains the content of the specified screen density media file corresponding to a specified resource name.
210  *
211  * @param mgr Indicates the pointer to {@link NativeResourceManager}
212  * {@link OH_ResourceManager_InitNativeResourceManager}.
213  * @param resName Indicates the resource name.
214  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
215  * to use the density of current system dpi. If this attribute is not required, set this parameter to 0.
216  * @param resultValue the result write to resultValue.
217  * @param resultLen the media length write to resultLen.
218  * @return {@link SUCCESS} 0 - Success.
219  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
220  *         1.Incorrect parameter types; 2.Parameter verification failed.
221            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
222            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
223            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
224  * @since 12
225  */
226 ResourceManager_ErrorCode OH_ResourceManager_GetMediaDataByName(const NativeResourceManager *mgr, const char *resName,
227     uint8_t **resultValue, uint64_t *resultLen, uint32_t density);
228 
229 /**
230  * @brief Obtains the DrawableDescriptor of the media file.
231  *
232  * Obtains the DrawableDescriptor of the media file corresponding to a specified resource ID.
233  *
234  * @param mgr Indicates the pointer to {@link NativeResourceManager}
235  * {@link OH_ResourceManager_InitNativeResourceManager}.
236  * @param resId Indicates the resource ID.
237  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
238  * to use the density of current system dpi.
239  * @param type The optional parameter means the media type, 0 means the normal media, 1 means the the theme style media.
240  * @param drawableDescriptor the result write to drawableDescriptor.
241  * @return {@link SUCCESS} 0 - Success.
242  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
243  *         1.Incorrect parameter types; 2.Parameter verification failed.
244            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
245            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
246  * @since 12
247  */
248 ResourceManager_ErrorCode OH_ResourceManager_GetDrawableDescriptor(const NativeResourceManager *mgr,
249     uint32_t resId, ArkUI_DrawableDescriptor **drawableDescriptor, uint32_t density = 0, uint32_t type = 0);
250 
251 /**
252  * @brief Obtains the DrawableDescriptor of the media file.
253  *
254  * Obtains the DrawableDescriptor of the media file corresponding to a specified resource ID.
255  *
256  * @param mgr Indicates the pointer to {@link NativeResourceManager}
257  * {@link OH_ResourceManager_InitNativeResourceManager}.
258  * @param resId Indicates the resource ID.
259  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
260  * to use the density of current system dpi. If this attribute is not required, set this parameter to 0.
261  * @param type The optional parameter means the media type, 0 means the normal media, 1 means the the theme style media.
262  * If this attribute is not required, set this parameter to 0.
263  * @param drawableDescriptor the result write to drawableDescriptor.
264  * @return {@link SUCCESS} 0 - Success.
265  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
266  *         1.Incorrect parameter types; 2.Parameter verification failed.
267            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
268            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
269  * @since 12
270  */
271 ResourceManager_ErrorCode OH_ResourceManager_GetDrawableDescriptorData(const NativeResourceManager *mgr,
272     uint32_t resId, ArkUI_DrawableDescriptor **drawableDescriptor, uint32_t density, uint32_t type);
273 
274 /**
275  * @brief Obtains the DrawableDescriptor of the media file.
276  *
277  * Obtains the DrawableDescriptor of the media file corresponding to a specified resource name.
278  * @param mgr Indicates the pointer to {@link NativeResourceManager}
279  * {@link OH_ResourceManager_InitNativeResourceManager}.
280  * @param resName Indicates the resource name.
281  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
282  * to use the density of current system dpi.
283  * @param type The optional parameter means the media type, 0 means the normal media, 1 means the the theme style media,
284  * 2 means the theme dynamic media.
285  * @param drawableDescriptor the result write to drawableDescriptor.
286  * @return {@link SUCCESS} 0 - Success.
287  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
288  *         1.Incorrect parameter types; 2.Parameter verification failed.
289            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
290            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
291  * @since 12
292  */
293 ResourceManager_ErrorCode OH_ResourceManager_GetDrawableDescriptorByName(const NativeResourceManager *mgr,
294     const char *resName, ArkUI_DrawableDescriptor **drawableDescriptor, uint32_t density = 0, uint32_t type = 0);
295 
296 /**
297  * @brief Obtains the DrawableDescriptor of the media file.
298  *
299  * Obtains the DrawableDescriptor of the media file corresponding to a specified resource name.
300  * @param mgr Indicates the pointer to {@link NativeResourceManager}
301  * {@link OH_ResourceManager_InitNativeResourceManager}.
302  * @param resName Indicates the resource name.
303  * @param density The optional parameter ScreenDensity{@link ScreenDensity}, A value of 0 means
304  * to use the density of current system dpi. If this attribute is not required, set this parameter to 0.
305  * @param type The optional parameter means the media type, 0 means the normal media, 1 means the the theme style media,
306  * 2 means the theme dynamic media. If this attribute is not required, set this parameter to 0.
307  * @param drawableDescriptor the result write to drawableDescriptor.
308  * @return {@link SUCCESS} 0 - Success.
309  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid. Possible causes:
310  *         1.Incorrect parameter types; 2.Parameter verification failed.
311            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
312            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
313  * @since 12
314  */
315 ResourceManager_ErrorCode OH_ResourceManager_GetDrawableDescriptorDataByName(const NativeResourceManager *mgr,
316     const char *resName, ArkUI_DrawableDescriptor **drawableDescriptor, uint32_t density, uint32_t type);
317 
318 /**
319  * @brief Obtains the symbol resource.
320  *
321  * Obtains the symbol resource corresponding to the specified resource ID.
322  *
323  * @param mgr Indicates the pointer to {@link NativeResourceManager}
324  *        {@link OH_ResourceManager_InitNativeResourceManager}.
325  * @param resId Indicates the resource ID.
326  * @param resultValue the result write to resultValue.
327  * @return {@link SUCCESS} 0 - Success.
328  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
329            Possible causes: Incorrect parameter types.
330            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
331            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
332            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
333  * @since 12
334  */
335 ResourceManager_ErrorCode OH_ResourceManager_GetSymbol(const NativeResourceManager *mgr, uint32_t resId,
336     uint32_t *resultValue);
337 
338 /**
339  * @brief Obtains the symbol resource.
340  *
341  * Obtains the symbol resource corresponding to the specified resource name.
342  *
343  * @param mgr Indicates the pointer to {@link NativeResourceManager}
344  *        {@link OH_ResourceManager_InitNativeResourceManager}.
345  * @param resName Indicates the resource name.
346  * @param resultValue the result write to resultValue.
347  * @return {@link SUCCESS} 0 - Success.
348  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
349            Possible causes: Incorrect parameter types.
350            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
351            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
352            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
353  * @since 12
354  */
355 ResourceManager_ErrorCode OH_ResourceManager_GetSymbolByName(const NativeResourceManager *mgr, const char *resName,
356     uint32_t *resultValue);
357 
358 /**
359  * @brief Obtains locales list.
360  *
361  * You need to call the OH_ResourceManager_ReleaseStringArray() method to release the memory of localinfo.
362  *
363  * @param mgr Indicates the pointer to {@link NativeResourceManager}
364  *        {@link OH_ResourceManager_InitNativeResourceManager}.
365  * @param resultValue the result write to resultValue.
366  * @param resultLen the locales length write to resultLen.
367  * @param includeSystem the parameter controls whether to include system resources,
368  * the default value is false, it has no effect when only system resources query the locales list.
369  * @return {@link SUCCESS} 0 - Success.
370  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
371            Possible causes: Incorrect parameter types.
372  *         {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
373  * @since 12
374  */
375 ResourceManager_ErrorCode OH_ResourceManager_GetLocales(const NativeResourceManager *mgr, char ***resultValue,
376     uint32_t *resultLen, bool includeSystem = false);
377 
378 /**
379  * @brief Obtains locales list.
380  *
381  * You need to call the OH_ResourceManager_ReleaseStringArray() method to release the memory of localinfo.
382  *
383  * @param mgr Indicates the pointer to {@link NativeResourceManager}
384  *        {@link OH_ResourceManager_InitNativeResourceManager}.
385  * @param resultValue the result write to resultValue.
386  * @param resultLen the locales length write to resultLen.
387  * @param includeSystem the parameter controls whether to include system resources.
388  * If this attribute is not required, set this parameter to false.
389  * @return {@link SUCCESS} 0 - Success.
390  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
391            Possible causes: Incorrect parameter types.
392  *         {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
393  * @since 12
394  */
395 ResourceManager_ErrorCode OH_ResourceManager_GetLocalesData(const NativeResourceManager *mgr, char ***resultValue,
396     uint32_t *resultLen, bool includeSystem);
397 
398 /**
399  * @brief Obtains the device configuration.
400  *
401  * You need to call the OH_ResourceManager_ReleaseConfiguration() method to release the memory.
402  * If you use malloc to create a ResourceManager_Configuration object, you also need to call free to release it.
403  *
404  * @param mgr Indicates the pointer to {@link NativeResourceManager}
405  *        {@link OH_ResourceManager_InitNativeResourceManager}.
406  * @param configuration the result write to ResourceManager_Configuration.
407  * @return {@link SUCCESS} 0 - Success.
408  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
409            Possible causes: Incorrect parameter types.
410            {@link ERROR_CODE_SYSTEM_RES_MANAGER_GET_FAILED} 9001009 - If failed to access the system resource.
411            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
412  * @since 12
413  */
414 ResourceManager_ErrorCode OH_ResourceManager_GetConfiguration(const NativeResourceManager *mgr,
415     ResourceManager_Configuration *configuration);
416 
417 /**
418  * @brief Release the device configuration.
419  * @param configuration the object need to release.
420  * @return {@link SUCCESS} 0 - Success.
421            {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
422            Possible causes: Incorrect parameter types.
423  * @since 12
424  */
425 ResourceManager_ErrorCode OH_ResourceManager_ReleaseConfiguration(ResourceManager_Configuration *configuration);
426 
427 /**
428  * @brief Obtains the character string.
429  *
430  * Obtains the character string corresponding to a specified resource ID.
431  * Obtain normal resource by calling OH_ResourceManager_GetString(mgr, resId, resultValue),
432    obtain a formatted resource with replacements for %d, %s, %f,
433    call OH_ResourceManager_GetString(mgr, resId, resultValue, 10, "format", 10.10).
434  * You need to call free() to release the memory for the string.
435  *
436  * @param mgr Indicates the pointer to {@link NativeResourceManager}
437  *        {@link OH_ResourceManager_InitNativeResourceManager}.
438  * @param resId Indicates the resource ID.
439  * @param resultValue the result write to resultValue.
440  * @param { const char* | int | float } args - Indicates the formatting string resource parameters.
441  * @return {@link SUCCESS} 0 - Success.
442  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
443            Possible causes: Incorrect parameter types.
444            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
445            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
446            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
447            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
448  * @since 12
449  */
450 ResourceManager_ErrorCode OH_ResourceManager_GetString(const NativeResourceManager *mgr, uint32_t resId,
451     char **resultValue, ...);
452 
453 /**
454  * @brief Obtains the character string.
455  *
456  * Obtains the character string corresponding to a specified resource name.
457  * Obtain normal resource by calling OH_ResourceManager_GetString(mgr, resName, resultValue),
458    obtain a formatted resource with replacements for %d, %s, %f,
459    call OH_ResourceManager_GetString(mgr, resName, resultValue, 10, "format", 10.10).
460  * You need to call free() to release the memory for the string.
461  *
462  * @param mgr Indicates the pointer to {@link NativeResourceManager}
463  *        {@link OH_ResourceManager_InitNativeResourceManager}.
464  * @param resName Indicates the resource name.
465  * @param resultValue the result write to resultValue.
466  * @param { const char* | int | float } args - Indicates the formatting string resource parameters.
467  * @return {@link SUCCESS} 0 - Success.
468  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
469            Possible causes: Incorrect parameter types.
470            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
471            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
472            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
473            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
474  * @since 12
475  */
476 ResourceManager_ErrorCode OH_ResourceManager_GetStringByName(const NativeResourceManager *mgr, const char *resName,
477     char **resultValue, ...);
478 
479 /**
480  * @brief Obtains the array of character strings.
481  *
482  * Obtains the array of character strings corresponding to a specified resource ID.
483  * You need to call the OH_ResourceManager_ReleaseStringArray() method to release the memory of string array.
484  *
485  * @param mgr Indicates the pointer to {@link NativeResourceManager}
486  *        {@link OH_ResourceManager_InitNativeResourceManager}.
487  * @param resId Indicates the resource ID.
488  * @param resultValue the result write to resultValue.
489  * @param resultLen the StringArray length write to resultLen.
490  * @return {@link SUCCESS} 0 - Success.
491  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
492            Possible causes: Incorrect parameter types.
493            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
494            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
495            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
496            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
497  * @since 12
498  */
499 ResourceManager_ErrorCode OH_ResourceManager_GetStringArray(const NativeResourceManager *mgr, uint32_t resId,
500     char ***resultValue, uint32_t *resultLen);
501 
502 /**
503  * @brief Obtains the array of character strings.
504  *
505  * Obtains the array of character strings corresponding to a specified resource name.
506  * You need to call the OH_ResourceManager_ReleaseStringArray() method to release the memory of string array.
507  *
508  * @param mgr Indicates the pointer to {@link NativeResourceManager}
509  *        {@link OH_ResourceManager_InitNativeResourceManager}.
510  * @param resName Indicates the resource name.
511  * @param resultValue the result write to resultValue.
512  * @param resultLen the StringArray length write to resultLen.
513  * @return {@link SUCCESS} 0 - Success.
514  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
515            Possible causes: Incorrect parameter types.
516            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
517            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
518            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
519            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
520  * @since 12
521  */
522 ResourceManager_ErrorCode OH_ResourceManager_GetStringArrayByName(const NativeResourceManager *mgr,
523     const char *resName, char ***resultValue, uint32_t *resultLen);
524 
525 /**
526  * @brief Release the array of character strings.
527  * @param resValue the array of character strings corresponding to the specified resource name.
528  * @param len the length of array.
529  * @return {@link SUCCESS} 0 - Success.
530            {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
531            Possible causes: Incorrect parameter types.
532  * @since 12
533  */
534 ResourceManager_ErrorCode OH_ResourceManager_ReleaseStringArray(char ***resValue, uint32_t len);
535 
536 /**
537  * @brief Obtains the singular-plural character string represented.
538  *
539  * Obtains the singular-plural character string represented by the ID string corresponding to the specified number.
540  * You need to call free() to release the memory for the string.
541  *
542  * @param mgr Indicates the pointer to {@link NativeResourceManager}
543  *        {@link OH_ResourceManager_InitNativeResourceManager}.
544  * @param resId Indicates the resource ID.
545  * @param num - Indicates the number.
546  * @param resultValue the result write to resultValue.
547  * @return {@link SUCCESS} 0 - Success.
548  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
549            Possible causes: Incorrect parameter types.
550            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
551            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
552            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
553            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
554  * @since 12
555  */
556 ResourceManager_ErrorCode OH_ResourceManager_GetPluralString(const NativeResourceManager *mgr, uint32_t resId,
557     uint32_t num, char **resultValue);
558 
559 /**
560  * @brief Obtains the singular-plural character string represented.
561  *
562  * Obtains the singular-plural character string represented by the Name string corresponding to the specified number.
563  * You need to call free() to release the memory for the string.
564  *
565  * @param mgr Indicates the pointer to {@link NativeResourceManager}
566  *        {@link OH_ResourceManager_InitNativeResourceManager}.
567  * @param resName Indicates the resource name.
568  * @param num - Indicates the number.
569  * @param resultValue the result write to resultValue.
570  * @return {@link SUCCESS} 0 - Success.
571  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
572            Possible causes: Incorrect parameter types.
573            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
574            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
575            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
576            {@link ERROR_CODE_OUT_OF_MEMORY} 9001100 - Out of memory.
577  * @since 12
578  */
579 ResourceManager_ErrorCode OH_ResourceManager_GetPluralStringByName(const NativeResourceManager *mgr,
580     const char *resName, uint32_t num, char **resultValue);
581 
582 /**
583  * @brief Obtains the color resource.
584  *
585  * Obtains the color resource corresponding to the specified resource ID.
586  *
587  * @param mgr Indicates the pointer to {@link NativeResourceManager}
588  *        {@link OH_ResourceManager_InitNativeResourceManager}.
589  * @param resId Indicates the resource ID.
590  * @param resultValue the result write to resultValue.
591  * @return {@link SUCCESS} 0 - Success.
592  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
593            Possible causes: Incorrect parameter types.
594            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
595            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
596            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
597  * @since 12
598  */
599 ResourceManager_ErrorCode OH_ResourceManager_GetColor(const NativeResourceManager *mgr, uint32_t resId,
600     uint32_t *resultValue);
601 
602 /**
603  * @brief Obtains the color resource.
604  *
605  * Obtains the color resource corresponding to the specified resource name.
606  *
607  * @param mgr Indicates the pointer to {@link NativeResourceManager}
608  *        {@link OH_ResourceManager_InitNativeResourceManager}.
609  * @param resName Indicates the resource name.
610  * @param resultValue the result write to resultValue.
611  * @return {@link SUCCESS} 0 - Success.
612  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
613            Possible causes: Incorrect parameter types.
614            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
615            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
616            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
617  * @since 12
618  */
619 ResourceManager_ErrorCode OH_ResourceManager_GetColorByName(const NativeResourceManager *mgr, const char *resName,
620     uint32_t *resultValue);
621 
622 /**
623  * @brief Obtains the Int resource.
624  *
625  * Obtains the Int resource corresponding to the specified resource ID.
626  *
627  * @param mgr Indicates the pointer to {@link NativeResourceManager}
628  *        {@link OH_ResourceManager_InitNativeResourceManager}.
629  * @param resId Indicates the resource ID.
630  * @param resultValue the result write to resultValue.
631  * @return {@link SUCCESS} 0 - Success.
632  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
633            Possible causes: Incorrect parameter types.
634            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
635            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
636            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
637  * @since 12
638  */
639 ResourceManager_ErrorCode OH_ResourceManager_GetInt(const NativeResourceManager *mgr, uint32_t resId,
640     int *resultValue);
641 
642 /**
643  * @brief Obtains the Int resource.
644  *
645  * Obtains the Int resource corresponding to the specified resource name.
646  *
647  * @param mgr Indicates the pointer to {@link NativeResourceManager}
648  *        {@link OH_ResourceManager_InitNativeResourceManager}.
649  * @param resName Indicates the resource name.
650  * @param resultValue the result write to resultValue.
651  * @return {@link SUCCESS} 0 - Success.
652  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
653            Possible causes: Incorrect parameter types.
654            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
655            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
656            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
657  * @since 12
658  */
659 ResourceManager_ErrorCode OH_ResourceManager_GetIntByName(const NativeResourceManager *mgr, const char *resName,
660     int *resultValue);
661 
662 /**
663  * @brief Obtains the Float resource.
664  *
665  * Obtains the Int resource corresponding to the specified resource ID.
666  *
667  * @param mgr Indicates the pointer to {@link NativeResourceManager}
668  *        {@link OH_ResourceManager_InitNativeResourceManager}.
669  * @param resId Indicates the resource ID.
670  * @param resultValue the result write to resultValue.
671  * @return {@link SUCCESS} 0 - Success.
672  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
673            Possible causes: Incorrect parameter types.
674            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
675            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
676            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
677  * @since 12
678  */
679 ResourceManager_ErrorCode OH_ResourceManager_GetFloat(const NativeResourceManager *mgr, uint32_t resId,
680     float *resultValue);
681 
682 /**
683  * @brief Obtains the Float resource.
684  *
685  * Obtains the Float resource corresponding to the specified resource name.
686  *
687  * @param mgr Indicates the pointer to {@link NativeResourceManager}
688  *        {@link OH_ResourceManager_InitNativeResourceManager}.
689  * @param resName Indicates the resource name.
690  * @param resultValue the result write to resultValue.
691  * @return {@link SUCCESS} 0 - Success.
692  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
693            Possible causes: Incorrect parameter types.
694            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
695            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
696            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
697  * @since 12
698  */
699 ResourceManager_ErrorCode OH_ResourceManager_GetFloatByName(const NativeResourceManager *mgr, const char *resName,
700     float *resultValue);
701 
702 /**
703  * @brief Obtains the boolean result.
704  *
705  * Obtains the boolean result with a specified resource ID.
706  *
707  * @param mgr Indicates the pointer to {@link NativeResourceManager}
708  *        {@link OH_ResourceManager_InitNativeResourceManager}.
709  * @param resId Indicates the resource ID.
710  * @param resultValue the result write to resultValue.
711  * @return {@link SUCCESS} 0 - Success.
712  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
713            Possible causes: Incorrect parameter types.
714            {@link ERROR_CODE_RES_ID_NOT_FOUND} 9001001 - Invalid resource ID.
715            {@link ERROR_CODE_RES_NOT_FOUND_BY_ID} 9001002 - No matching resource is found based on the resource ID.
716            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
717  * @since 12
718  */
719 ResourceManager_ErrorCode OH_ResourceManager_GetBool(const NativeResourceManager *mgr, uint32_t resId,
720     bool *resultValue);
721 
722 /**
723  * @brief Obtains the boolean result.
724  *
725  * Obtains the boolean result with a specified resource name.
726  *
727  * @param mgr Indicates the pointer to {@link NativeResourceManager}
728  *        {@link OH_ResourceManager_InitNativeResourceManager}.
729  * @param resName Indicates the resource name.
730  * @param resultValue the result write to resultValue.
731  * @return {@link SUCCESS} 0 - Success.
732  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
733            Possible causes: Incorrect parameter types.
734            {@link ERROR_CODE_RES_NAME_NOT_FOUND} 9001003 - Invalid resource name.
735            {@link ERROR_CODE_RES_NOT_FOUND_BY_NAME} 9001004 - No matching resource is found based on the resource name.
736            {@link ERROR_CODE_RES_REF_TOO_MUCH} 9001006 - The resource is referenced cyclically.
737  * @since 12
738  */
739 ResourceManager_ErrorCode OH_ResourceManager_GetBoolByName(const NativeResourceManager *mgr, const char *resName,
740     bool *resultValue);
741 
742 /**
743  * @brief Add overlay resources during application runtime.
744  * @param mgr Indicates the pointer to {@link NativeResourceManager}
745  *        {@link OH_ResourceManager_InitNativeResourceManager}.
746  * @param path Indicates the application overlay path.
747  * @return {@link SUCCESS} 0 - Success.
748  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
749            Possible causes: Incorrect parameter types.
750            {@link ERROR_CODE_OVERLAY_RES_PATH_INVALID} 9001010 - Invalid overlay path.
751  * @since 12
752  */
753 ResourceManager_ErrorCode OH_ResourceManager_AddResource(const NativeResourceManager *mgr, const char *path);
754 
755 /**
756  * @brief Remove overlay resources during application runtime.
757  * @param mgr Indicates the pointer to {@link NativeResourceManager}
758  *        {@link OH_ResourceManager_InitNativeResourceManager}.
759  * @param path Indicates the application overlay path.
760  * @return {@link SUCCESS} 0 - Success.
761  *         {@link ERROR_CODE_INVALID_INPUT_PARAMETER} 401 - The input parameter invalid.
762            Possible causes: Incorrect parameter types.
763            {@link ERROR_CODE_OVERLAY_RES_PATH_INVALID} 9001010 - Invalid overlay path.
764  * @since 12
765  */
766 ResourceManager_ErrorCode OH_ResourceManager_RemoveResource(const NativeResourceManager *mgr, const char *path);
767 #ifdef __cplusplus
768 };
769 #endif
770 
771 /** @} */
772 #endif // GLOBAL_OH_RESMGR_H