• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 #include "BufferTextTest.h"
16 
17 #include <native_buffer/native_buffer.h>
18 #include <native_drawing/drawing_text_blob.h>
19 #include <native_drawing/drawing_rect.h>
20 #include <native_drawing/drawing_sampling_options.h>
21 #include <native_drawing/drawing_font.h>
22 #include <native_drawing/drawing_brush.h>
23 #include <native_drawing/drawing_pen.h>
24 #include <native_drawing/drawing_text_blob.h>
25 #include <native_drawing/drawing_text_global.h>
26 #include <native_window/graphic_error_code.h>
27 #include <native_drawing/drawing_text_font_descriptor.h>
28 #include <native_window/buffer_handle.h>
29 #include <multimedia/player_framework/native_avbuffer.h>
30 #include <EGL/egl.h>
31 #include <EGL/eglext.h>
32 #include <GLES3/gl3.h>
33 #include <GLES2/gl2ext.h>
34 #include <native_image/native_image.h>
35 #include <native_drawing/drawing_text_declaration.h>
36 #include <native_drawing/drawing_font_collection.h>
37 
addBufferTextTest(std::vector<napi_property_descriptor> & descData)38 void addBufferTextTest(std::vector<napi_property_descriptor>& descData)
39 {
40     descData.push_back({"getColorSpaceSuccess", nullptr, OH_NativeBuffer_GetColorSpaceSuccess,
41             nullptr, nullptr, nullptr, napi_default, nullptr});
42     descData.push_back({"getColorSpaceFail", nullptr, OH_NativeBuffer_GetColorSpaceFail,
43             nullptr, nullptr, nullptr, napi_default, nullptr});
44     descData.push_back({"setMetadataValueSuccess", nullptr, OH_NativeBuffer_SetMetadataValueSuccess,
45             nullptr, nullptr, nullptr, napi_default, nullptr});
46     descData.push_back({"setMetadataValueFail", nullptr, OH_NativeBuffer_SetMetadataValueFail,
47             nullptr, nullptr, nullptr, napi_default, nullptr});
48     descData.push_back({"getMetadataValueSuccess", nullptr, OH_NativeBuffer_GetMetadataValueSuccess,
49             nullptr, nullptr, nullptr, napi_default, nullptr});
50     descData.push_back({"getMetadataValueFail", nullptr, OH_NativeBuffer_GetMetadataValueFail,
51             nullptr, nullptr, nullptr, napi_default, nullptr});
52     descData.push_back({"runBufferGlyphsSuccess", nullptr, OH_Drawing_RunBufferGlyphsSuccess,
53             nullptr, nullptr, nullptr, napi_default, nullptr});
54     descData.push_back({"runBufferPosSuccess", nullptr, OH_Drawing_RunBufferPosSuccess,
55             nullptr, nullptr, nullptr, napi_default, nullptr});
56     descData.push_back({"runBufferUtf8textSuccess", nullptr, OH_Drawing_RunBufferUtf8textSuccess,
57             nullptr, nullptr, nullptr, napi_default, nullptr});
58     descData.push_back({"runBufferClustersSuccess", nullptr, OH_Drawing_RunBufferClustersSuccess,
59             nullptr, nullptr, nullptr, napi_default, nullptr});
60     descData.push_back({"systemFontTypeSuccess", nullptr, OH_Drawing_SystemFontTypeSuccess,
61             nullptr, nullptr, nullptr, napi_default, nullptr});
62     descData.push_back({"textUndefinedGlyphDisplayDEFAULT", nullptr, OH_Drawing_TextUndefinedGlyphDisplayDEFAULT,
63             nullptr, nullptr, nullptr, napi_default, nullptr});
64     descData.push_back({"textUndefinedGlyphDisplayTOFU", nullptr, OH_Drawing_TextUndefinedGlyphDisplayTOFU,
65             nullptr, nullptr, nullptr, napi_default, nullptr});
66 }
67 
OH_NativeBuffer_GetColorSpaceSuccess(napi_env env,napi_callback_info info)68  napi_value OH_NativeBuffer_GetColorSpaceSuccess(napi_env env, napi_callback_info info)
69 {
70     napi_value result;
71     OH_NativeBuffer_Config config = {
72         .width = 0x100,
73         .height = 0x100,
74         .format = 12,
75         .usage = (1ULL << 0) | (1ULL << 1) |  (1ULL << 3),
76     };
77     OH_NativeBuffer* buffer = OH_NativeBuffer_Alloc(&config);
78     int32_t res = OH_NativeBuffer_SetColorSpace(buffer, OH_COLORSPACE_BT709_LIMIT);
79     OH_NativeBuffer_ColorSpace colorSpace;
80     res = OH_NativeBuffer_GetColorSpace(buffer, &colorSpace);
81     napi_create_int32(env, res != NATIVE_ERROR_INVALID_ARGUMENTS, &result);
82     return result;
83 }
84 
OH_NativeBuffer_GetColorSpaceFail(napi_env env,napi_callback_info info)85  napi_value OH_NativeBuffer_GetColorSpaceFail(napi_env env, napi_callback_info info)
86 {
87     napi_value result;
88 
89     OH_NativeBuffer_ColorSpace colorSpace;
90     int32_t res = OH_NativeBuffer_GetColorSpace(nullptr, &colorSpace);
91     napi_create_int32(env, res == NATIVE_ERROR_INVALID_ARGUMENTS, &result);
92     return result;
93 }
OH_NativeBuffer_SetMetadataValueSuccess(napi_env env,napi_callback_info info)94  napi_value OH_NativeBuffer_SetMetadataValueSuccess(napi_env env, napi_callback_info info)
95 {
96     napi_value result;
97 
98         OH_NativeBuffer_Config config = {
99         .width = 0x100,
100         .height = 0x100,
101         .format = 12,
102         .usage = (1ULL << 0) | (1ULL << 1) | (1ULL << 3) | (1ULL << 4) | (1ULL << 5) | (1ULL << 6)|(1ULL << 7),
103     };
104     OH_NativeBuffer* buffer = OH_NativeBuffer_Alloc(&config);
105     int32_t size = 10;
106     uint8_t *metadata = new uint8_t(size);
107     int32_t res = OH_NativeBuffer_SetMetadataValue(buffer, OH_HDR_STATIC_METADATA, size, metadata);
108     napi_create_int32(env, res != NATIVE_ERROR_INVALID_ARGUMENTS, &result);
109     return result;
110 }
111 
OH_NativeBuffer_SetMetadataValueFail(napi_env env,napi_callback_info info)112  napi_value OH_NativeBuffer_SetMetadataValueFail(napi_env env, napi_callback_info info)
113 {
114     napi_value result;
115     int32_t size = 10;
116     uint8_t *metadata = new uint8_t(size);
117     int32_t res = OH_NativeBuffer_SetMetadataValue(nullptr, OH_HDR_STATIC_METADATA, size, metadata);
118     napi_create_int32(env, res == NATIVE_ERROR_INVALID_ARGUMENTS, &result);
119     return result;
120 }
121 
OH_NativeBuffer_GetMetadataValueSuccess(napi_env env,napi_callback_info info)122  napi_value OH_NativeBuffer_GetMetadataValueSuccess(napi_env env, napi_callback_info info)
123 {
124     napi_value result;
125         OH_NativeBuffer_Config config = {
126         .width = 0x100,
127         .height = 0x100,
128         .format = 12,
129         .usage = (1ULL << 0) | (1ULL << 1) |  (1ULL << 3),
130     };
131     OH_NativeBuffer* buffer = OH_NativeBuffer_Alloc(&config);
132     int32_t size = 10;
133     uint8_t *metadata = new uint8_t(size);
134     OH_NativeBuffer_SetMetadataValue(buffer, OH_HDR_STATIC_METADATA, size, metadata);
135     int32_t res = OH_NativeBuffer_GetMetadataValue(buffer, OH_HDR_STATIC_METADATA, &size, &metadata);
136     napi_create_int32(env, res != NATIVE_ERROR_INVALID_ARGUMENTS, &result);
137     return result;
138 }
139 
OH_NativeBuffer_GetMetadataValueFail(napi_env env,napi_callback_info info)140  napi_value OH_NativeBuffer_GetMetadataValueFail(napi_env env, napi_callback_info info)
141 {
142     napi_value result;
143     int32_t size = 10;
144     uint8_t *metadata = new uint8_t(size);
145     int32_t res = OH_NativeBuffer_GetMetadataValue(nullptr, OH_HDR_STATIC_METADATA, &size, &metadata);
146     napi_create_int32(env, res == NATIVE_ERROR_INVALID_ARGUMENTS, &result);
147     return result;
148 }
149 
OH_Drawing_RunBufferGlyphsSuccess(napi_env env,napi_callback_info info)150 napi_value OH_Drawing_RunBufferGlyphsSuccess(napi_env env, napi_callback_info info)
151 {
152     napi_value result;
153     OH_Drawing_TextBlobBuilder* textBlobBuilder = OH_Drawing_TextBlobBuilderCreate();
154     OH_Drawing_Font* font = OH_Drawing_FontCreate();
155     int32_t count = 1;
156     float left = 10;
157     float top = 10;
158     float right = 10;
159     float bottom = 10;
160     OH_Drawing_Rect* rect = OH_Drawing_RectCreate(left, top, right, bottom);
161     const OH_Drawing_RunBuffer* rbuff = OH_Drawing_TextBlobBuilderAllocRunPos(textBlobBuilder, font, count, rect);
162     napi_create_int32(env, rbuff->glyphs != nullptr, &result);
163     return result;
164 }
OH_Drawing_RunBufferPosSuccess(napi_env env,napi_callback_info info)165 napi_value OH_Drawing_RunBufferPosSuccess(napi_env env, napi_callback_info info)
166 {
167     napi_value result;
168     OH_Drawing_TextBlobBuilder* textBlobBuilder = OH_Drawing_TextBlobBuilderCreate();
169     OH_Drawing_Font* font = OH_Drawing_FontCreate();
170     int32_t count = 1;
171     float left = 10;
172     float top = 10;
173     float right = 10;
174     float bottom = 10;
175     OH_Drawing_Rect* rect = OH_Drawing_RectCreate(left, top, right, bottom);
176     const OH_Drawing_RunBuffer* rbuff = OH_Drawing_TextBlobBuilderAllocRunPos(textBlobBuilder, font, count, rect);
177     napi_create_int32(env, rbuff->pos != nullptr, &result);
178     return result;
179 }
180 
OH_Drawing_RunBufferUtf8textSuccess(napi_env env,napi_callback_info info)181 napi_value OH_Drawing_RunBufferUtf8textSuccess(napi_env env, napi_callback_info info)
182 {
183     napi_value result;
184     OH_Drawing_TextBlobBuilder* textBlobBuilder = OH_Drawing_TextBlobBuilderCreate();
185     OH_Drawing_Font* font = OH_Drawing_FontCreate();
186     const char* str = "HellWorld";
187     OH_Drawing_FontFeatures* fontFeatures = OH_Drawing_FontFeaturesCreate();
188     float textWidth = 10;
189     OH_Drawing_FontMeasureSingleCharacterWithFeatures(font, str, fontFeatures, &textWidth);
190     int32_t count = 1;
191     float left = 10;
192     float top = 10;
193     float right = 10;
194     float bottom = 10;
195     OH_Drawing_Rect* rect = OH_Drawing_RectCreate(left, top, right, bottom);
196     const OH_Drawing_RunBuffer* rbuff = OH_Drawing_TextBlobBuilderAllocRunPos(textBlobBuilder, font, count, rect);
197     napi_create_int32(env, rbuff->utf8text == nullptr, &result);
198     return result;
199 }
OH_Drawing_RunBufferClustersSuccess(napi_env env,napi_callback_info info)200 napi_value OH_Drawing_RunBufferClustersSuccess(napi_env env, napi_callback_info info)
201 {
202     napi_value result;
203     OH_Drawing_TextBlobBuilder* textBlobBuilder = OH_Drawing_TextBlobBuilderCreate();
204     OH_Drawing_Font* font = OH_Drawing_FontCreate();
205     const char* str = "HellWorld";
206     OH_Drawing_FontFeatures* fontFeatures = OH_Drawing_FontFeaturesCreate();
207     float textWidth = 10;
208     OH_Drawing_FontMeasureSingleCharacterWithFeatures(font, str, fontFeatures, &textWidth);
209 
210     int32_t count = 1;
211     float left = 10;
212     float top = 10;
213     float right = 10;
214     float bottom = 10;
215     OH_Drawing_Rect* rect = OH_Drawing_RectCreate(left, top, right, bottom);
216     const OH_Drawing_RunBuffer* rbuff = OH_Drawing_TextBlobBuilderAllocRunPos(textBlobBuilder, font, count, rect);
217     napi_create_int32(env, rbuff->clusters == nullptr, &result);
218     return result;
219 }
220 
OH_Drawing_SystemFontTypeSuccess(napi_env env,napi_callback_info info)221 napi_value OH_Drawing_SystemFontTypeSuccess(napi_env env, napi_callback_info info)
222 {
223     napi_value result;
224     OH_Drawing_SystemFontType fontType = INSTALLED;
225     OH_Drawing_Array* fullNameArray = OH_Drawing_GetSystemFontFullNamesByType(GENERIC);
226     size_t index = 1;
227     const OH_Drawing_String* pfstr = OH_Drawing_GetSystemFontFullNameByIndex(fullNameArray, index);
228     OH_Drawing_FontDescriptor* pful = OH_Drawing_GetFontDescriptorByFullName(pfstr, fontType);
229     napi_create_int32(env, pful == nullptr, &result);
230     return result;
231 }
232 
OH_Drawing_TextUndefinedGlyphDisplayDEFAULT(napi_env env,napi_callback_info info)233 napi_value OH_Drawing_TextUndefinedGlyphDisplayDEFAULT(napi_env env, napi_callback_info info)
234 {
235     napi_value result;
236     OH_Drawing_SetTextUndefinedGlyphDisplay(TEXT_NO_GLYPH_USE_DEFAULT);
237     napi_create_int32(env, true, &result);
238     return result;
239 }
OH_Drawing_TextUndefinedGlyphDisplayTOFU(napi_env env,napi_callback_info info)240 napi_value OH_Drawing_TextUndefinedGlyphDisplayTOFU(napi_env env, napi_callback_info info)
241 {
242     napi_value result;
243     OH_Drawing_SetTextUndefinedGlyphDisplay(TEXT_NO_GLYPH_USE_TOFU);
244     napi_create_int32(env, true, &result);
245     return result;
246 }