• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023-2025 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 INTERFACES_INNER_API_DRAWABLE_DESCRIPTOR_NEW_JS_DRAWABLE_DESCRIPTOR_H
17 #define INTERFACES_INNER_API_DRAWABLE_DESCRIPTOR_NEW_JS_DRAWABLE_DESCRIPTOR_H
18 
19 #include "drawable_descriptor.h"
20 #include "napi/native_api.h"
21 #include "napi/native_node_api.h"
22 
23 #include "base/marcos.h"
24 
25 namespace OHOS {
26 namespace Ace {
27 namespace Napi {
28 class JsDrawableDescriptor {
29 public:
30     static DRAWABLE_FORCE_EXPORT napi_value Export(napi_env env, napi_value exports);
31 
32     static DRAWABLE_FORCE_EXPORT napi_value ToNapi(napi_env, DrawableDescriptor*,
33         DrawableDescriptor::DrawableType type = DrawableDescriptor::DrawableType::LAYERED);
34 
35     static DRAWABLE_FORCE_EXPORT constexpr char MODULE_NAME[] = "arkui.drawableDescriptor";
36 
37 private:
38     static napi_value InitDrawable(napi_env env);
39     static napi_value InitLayeredDrawable(napi_env env);
40     static napi_value InitAnimatedDrawable(napi_env env);
41     static napi_value InitPixelMapDrawable(napi_env env);
42 
43     static napi_value DrawableConstructor(napi_env env, napi_callback_info info);
44     static napi_value AnimatedConstructor(napi_env env, napi_callback_info info);
45     static napi_value PixelMapConstructor(napi_env env, napi_callback_info info);
46     static napi_value LayeredConstructor(napi_env env, napi_callback_info info);
47     static void Destructor(napi_env env, void* nativeObject, void* finalize);
48     static void OldDestructor(napi_env env, void* nativeObject, void* finalize);
49 
50     // drawable descriptor and pixel map drawable descriptor methods
51     static napi_value GetPixelMap(napi_env env, napi_callback_info info);
52     static napi_value GetOriginalWidth(napi_env env, napi_callback_info info);
53     static napi_value GetOriginalHeight(napi_env env, napi_callback_info info);
54     static napi_value Fetch(napi_env env, napi_callback_info info);
55     static napi_value FetchSync(napi_env env, napi_callback_info info);
56 
57     // animated drawable descriptor methos
58     static napi_value IsRunning(napi_env env, napi_callback_info info);
59     static napi_value Start(napi_env env, napi_callback_info info);
60     static napi_value Stop(napi_env env, napi_callback_info info);
61 
62     // layered drawable descriptor methods
63     static napi_value GetLayeredPixelMap(napi_env env, napi_callback_info info);
64     static napi_value GetForeground(napi_env env, napi_callback_info info);
65     static napi_value GetBackground(napi_env env, napi_callback_info info);
66     static napi_value GetMask(napi_env env, napi_callback_info info);
67     static napi_value GetMaskClipPath(napi_env env, napi_callback_info info);
68 
69     static thread_local napi_ref baseConstructor_;
70     static thread_local napi_ref layeredConstructor_;
71     static thread_local napi_ref animatedConstructor_;
72     static thread_local napi_ref pixelMapConstructor_;
73 };
74 } // namespace Napi
75 } // namespace Ace
76 } // namespace OHOS
77 #endif // INTERFACES_INNER_API_DRAWABLE_DESCRIPTOR_NEW_JS_DRAWABLE_DESCRIPTOR_H
78