1 /*
2 * Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development 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 #include <vector>
17 #include "gtest/gtest.h"
18 #include "image/pixelmap_native.h"
19
20 using namespace std;
21
GET_OH_PixelmapNative()22 OH_PixelmapNative *GET_OH_PixelmapNative()
23 {
24 OH_Pixelmap_InitializationOptions *options = nullptr;
25 OH_PixelmapNative *pixelMap = nullptr;
26 OH_PixelmapInitializationOptions_Create(&options);
27 // 4 means width
28 uint32_t width = 4;
29 OH_PixelmapInitializationOptions_SetWidth(options, width);
30 // 4 means height
31 uint32_t height = 4;
32 OH_PixelmapInitializationOptions_SetHeight(options, height);
33 // 4 means RGBA format
34 int32_t pixelFormat = 3;
35 OH_PixelmapInitializationOptions_SetPixelFormat(options, pixelFormat);
36 // 2 means ALPHA_FORMAT_PREMUL format
37 int32_t alphaType = 2;
38 OH_PixelmapInitializationOptions_SetAlphaType(options, alphaType);
39 // 255 means rgba data
40 uint8_t data[] = {255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255};
41 // 16 means data length
42 size_t dataLength = 16;
43 OH_PixelmapNative_CreatePixelmap(data, dataLength, options, &pixelMap);
44 OH_PixelmapInitializationOptions_Release(options);
45 return pixelMap;
46 }
47
GET_OH_PixelmapNative( uint32_t width, uint32_t height)48 OH_PixelmapNative *GET_OH_PixelmapNative(
49 uint32_t width, uint32_t height)
50 {
51 OH_Pixelmap_InitializationOptions *options = nullptr;
52 OH_PixelmapNative *pixelMap = nullptr;
53 OH_PixelmapInitializationOptions_Create(&options);
54 OH_PixelmapInitializationOptions_SetWidth(options, width);
55 OH_PixelmapInitializationOptions_SetHeight(options, height);
56 // 4 means RGBA format
57 int32_t pixelFormat = 3;
58 OH_PixelmapInitializationOptions_SetPixelFormat(options, pixelFormat);
59 // 2 means ALPHA_FORMAT_PREMUL format
60 int32_t alphaType = 2;
61 OH_PixelmapInitializationOptions_SetAlphaType(options, alphaType);
62 // 255 means rgba data
63 uint8_t data[] = {255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255};
64 // 16 means data length
65 size_t dataLength = 16;
66 OH_PixelmapNative_CreatePixelmap(data, dataLength, options, &pixelMap);
67 OH_PixelmapInitializationOptions_Release(options);
68 return pixelMap;
69 }
70
GET_OH_PixelmapNative4KBoundary()71 OH_PixelmapNative *GET_OH_PixelmapNative4KBoundary()
72 {
73 OH_Pixelmap_InitializationOptions *options = nullptr;
74 OH_PixelmapNative *pixelMap = nullptr;
75 OH_PixelmapInitializationOptions_Create(&options);
76 // 4096 means width
77 uint32_t width = 4096;
78 OH_PixelmapInitializationOptions_SetWidth(options, width);
79 // 2160 means height
80 uint32_t height = 2160;
81 OH_PixelmapInitializationOptions_SetHeight(options, height);
82 // 3 means RGBA format
83 int32_t pixelFormat = 3;
84 OH_PixelmapInitializationOptions_SetPixelFormat(options, pixelFormat);
85 // 2 means ALPHA_FORMAT_PREMUL format
86 int32_t alphaType = 2;
87 OH_PixelmapInitializationOptions_SetAlphaType(options, alphaType);
88 // 255/0 means rgba data
89 vector<uint8_t> data;
90 uint8_t value[] = {255, 255, 0, 255};
91 size_t repeatTimes = 4096 * 2160 / 4;
92 uint8_t *valueData = nullptr;
93
94 for (size_t i = 0; i < repeatTimes; ++i) {
95 data.insert(data.end(), begin(value), end(value));
96 valueData = data.data();
97 }
98
99 // 4096 * 2160 means data length
100 size_t dataLength = 4096 * 2160;
101 OH_PixelmapNative_CreatePixelmap(valueData, dataLength, options, &pixelMap);
102 OH_PixelmapInitializationOptions_Release(options);
103 return pixelMap;
104 }
105