1/*
2 * Copyright (c) 2021-2023 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_BASE_RESOURCE_INTERNAL_RESOURCE_H
17#define FOUNDATION_ACE_FRAMEWORKS_BASE_RESOURCE_INTERNAL_RESOURCE_H
18
19#include <cstddef>
20#include <cstdint>
21
22#include "base/utils/singleton.h"
23
24namespace OHOS::Ace {
25
26class InternalResource final : public Singleton<InternalResource> {
27    DECLARE_SINGLETON(InternalResource);
28
29public:
30    enum class ResourceId : uint32_t {
31        NO_ID = 0,
32        SELECT_ARROW_NORMAL_PNG,
33        SELECT_ARROW_DISABLED_PNG,
34        INDEXER_ARROW_PNG,
35        FA_CLOCK_WIDGET_HOUR,
36        FA_CLOCK_WIDGET_MINUTE,
37        FA_CLOCK_WIDGET_SECOND,
38        FA_BLACK_CLOCK_WIDGET_HOUR,
39        FA_BLACK_CLOCK_WIDGET_MINUTE,
40        FA_BLACK_CLOCK_WIDGET_SECOND,
41        CONTAINER_MODAL_WINDOW_SPLIT_LEFT,
42        CONTAINER_MODAL_WINDOW_DEFOCUS_CLOSE,
43        CONTAINER_MODAL_WINDOW_DEFOCUS_MAXIMIZE,
44        CONTAINER_MODAL_WINDOW_DEFOCUS_MINIMIZE,
45        CONTAINER_MODAL_WINDOW_DEFOCUS_RECOVER,
46        CONTAINER_MODAL_WINDOW_DEFOCUS_SPLIT_LEFT,
47
48        // 10000 - 20000 is reserved for SVG resource.
49        SVG_START = 10000,
50        CORRECT_SVG,
51        WRONG_SVG,
52        SEARCH_SVG,
53        CLOSE_SVG,
54        PLAY_SVG,
55        PAUSE_SVG,
56        FULLSCREEN_SVG,
57        QUIT_FULLSCREEN_SVG,
58        UP_ARROW_SVG,
59        WATCH_UP_ARROW_SVG,
60        DOWN_ARROW_SVG,
61        WATCH_DOWN_ARROW_SVG,
62        SHOW_PASSWORD_SVG,
63        HIDE_PASSWORD_SVG,
64        SEMI_MODAL_BAR_MIDDLE_SVG,
65        SEMI_MODAL_BAR_DOWN_SVG,
66        LEFT_ARROW_SVG,
67        RIGHT_ARROW_SVG,
68        STEPPER_BACK_ARROW,
69        STEPPER_NEXT_ARROW,
70        PIECE_DELETE_SVG,
71        RATE_STAR_BIG_OFF_SVG,
72        RATE_STAR_BIG_ON_SVG,
73        RATE_STAR_SMALL_OFF_SVG,
74        RATE_STAR_SMALL_ON_SVG,
75        TV_RATE_STAR_BIG_OFF_SVG,
76        TV_RATE_STAR_BIG_ON_SVG,
77        TV_RATE_STAR_SMALL_OFF_SVG,
78        TV_RATE_STAR_SMALL_ON_SVG,
79        TITLEBAR_BACK,
80        IC_BACK,
81        IC_MORE,
82        IC_MORE_DARK,
83        IC_MORE_TRANSPARENT,
84        IC_WINDOW_MENU_FULLSCREEN,
85        IC_WINDOW_MENU_MAXIMIZE,
86        IC_WINDOW_MENU_OK,
87        IC_WINDOW_MENU_SCREEN_L,
88        IC_WINDOW_MENU_SCREEN_N,
89        TRANSLATE_C2E_SVG,
90        SHARE_SVG,
91        SIDE_BAR,
92        SPINNER,
93        INPUT_SEARCH_SVG,
94        APP_BAR_BACK_SVG,
95        APP_BAR_FA_SVG,
96        APP_BAR_MENU_SVG,
97        APP_BAR_CLOSE_SVG,
98        MENU_OK_SVG,
99        SPINNER_DISABLE,
100        LOCATION_BUTTON_FILLED_SVG,
101        LOCATION_BUTTON_LINE_SVG,
102        PASTE_BUTTON_LINE_SVG,
103        SAVE_BUTTON_FILLED_SVG,
104        SAVE_BUTTON_LINE_SVG,
105        SAVE_BUTTON_PICTURE_SVG,
106        IC_PUBLIC_ARROW_LEFT_SVG,
107        IC_PUBLIC_ARROW_RIGHT_SVG,
108        IC_PUBLIC_ARROW_UP_SVG,
109        IC_PUBLIC_ARROW_DOWN_SVG,
110        IC_PUBLIC_DOUBLE_ARROW_LEFT_SVG,
111        IC_PUBLIC_DOUBLE_ARROW_RIGHT_SVG,
112        IC_CUT_SVG,
113        IC_COPY_SVG,
114        IC_PASTE_SVG,
115        IC_SELECT_ALL_SVG,
116        IC_SHARE_SVG,
117        IC_TRANSLATE_SVG,
118        IC_SEARCH_SVG,
119        IC_AI_WRITE_SVG,
120        IC_BOTTOMSHEET_CLOSE_SVG,
121        IC_CANCEL_SVG,
122        RADIO_TICK_SVG,
123        RADIO_DOT_SVG,
124        IC_TAKEPHOTO_SVG,
125        CONTAINER_MODAL_WINDOW_CLOSE,
126        CONTAINER_MODAL_WINDOW_MAXIMIZE,
127        CONTAINER_MODAL_WINDOW_MINIMIZE,
128        CONTAINER_MODAL_WINDOW_RECOVER,
129        SVG_END = 20000,
130
131        // 20001 - 30000 is reserved for i18n resource.
132        I18N_START = 20001,
133        INDEXLETTER_BAR_JSON,
134        ERRORINFO_JSON,
135        ENTRY_JSON,
136        I18N_END = 30000,
137    };
138
139    const uint8_t* GetResource(const ResourceId id, size_t& size) const;
140};
141
142} // namespace OHOS::Ace
143
144#endif // FOUNDATION_ACE_FRAMEWORKS_BASE_RESOURCE_INTERNAL_RESOURCE_H
145