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 #ifndef INTERFACE_CANVAS_TEST_H
17 #define INTERFACE_CANVAS_TEST_H
18 #include <bits/alltypes.h>
19 #include <multimedia/player_framework/native_avscreen_capture_base.h>
20 #include <native_drawing/drawing_canvas.h>
21 #include <native_drawing/drawing_rect.h>
22 
23 #include "test_base.h"
24 #include "test_common.h"
25 class CanvasDrawRect : public TestBase {
26 public:
CanvasDrawRect(int type)27     explicit CanvasDrawRect(int type) : TestBase(type) {};
~CanvasDrawRect()28     ~CanvasDrawRect() override {};
29 
30 protected:
31     int rectWidth_ = 0;  // 0 矩形宽度
32     int rectHeight_ = 0; // 0 矩形高度
33     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
34 };
35 
36 class CanvasDrawImageRect : public TestBase {
37 public:
CanvasDrawImageRect(int type)38     explicit CanvasDrawImageRect(int type) : TestBase(type) {};
~CanvasDrawImageRect()39     ~CanvasDrawImageRect() override {};
40 
41 protected:
42     int rectWidth_ = 0;  // 0 矩形宽度
43     int rectHeight_ = 0; // 0 矩形高度
44     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
45 };
46 
47 /*
48  * 测试void OH_Drawing_CanvasRotate
49  */
50 class CanvasRotate : public TestBase {
51 public:
CanvasRotate(int type)52     explicit CanvasRotate(int type) : TestBase(type) {};
~CanvasRotate()53     ~CanvasRotate() override {};
54 
55 protected:
56     int rectWidth_ = 0;  // 0 矩形宽度
57     int rectHeight_ = 0; // 0 矩形高度
58     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
59 };
60 
61 // 测试void OH_Drawing_CanvasTranslate
62 class CanvasTranslate : public TestBase {
63 public:
CanvasTranslate(int type)64     explicit CanvasTranslate(int type) : TestBase(type) {};
~CanvasTranslate()65     ~CanvasTranslate() override {};
66 
67 protected:
68     int rectWidth_ = 0;  // 0 矩形宽度
69     int rectHeight_ = 0; // 0 矩形高度
70     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
71 };
72 
73 // void OH_Drawing_CanvasSkew
74 class CanvasScale : public TestBase {
75 public:
CanvasScale(int type)76     explicit CanvasScale(int type) : TestBase(type) {};
~CanvasScale()77     ~CanvasScale() override {};
78 
79 protected:
80     int rectWidth_ = 0;  // 0 矩形宽度
81     int rectHeight_ = 0; // 0 矩形高度
82     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
83 };
84 
85 class CanvasConcatMatrix : public TestBase {
86 public:
CanvasConcatMatrix(int type)87     explicit CanvasConcatMatrix(int type) : TestBase(type) {};
~CanvasConcatMatrix()88     ~CanvasConcatMatrix() override {};
89 
90 protected:
91     int rectWidth_ = 0;  // 0 矩形宽度
92     int rectHeight_ = 0; // 0 矩形高度
93     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
94 };
95 
96 // 清理画布
97 class CanvasClear : public TestBase {
98 public:
CanvasClear(int type)99     explicit CanvasClear(int type) : TestBase(type) {};
~CanvasClear()100     ~CanvasClear() override {};
101 
102 protected:
103     int rectWidth_ = 0;  // 0 矩形宽度
104     int rectHeight_ = 0; // 0 矩形高度
105     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
106 };
107 
108 // 设置画布的矩阵状态。
109 class CanvasSetMatrix : public TestBase {
110 public:
CanvasSetMatrix(int type)111     explicit CanvasSetMatrix(int type) : TestBase(type) {};
~CanvasSetMatrix()112     ~CanvasSetMatrix() override {};
113 
114 protected:
115     int rectWidth_ = 0;  // 0 矩形宽度
116     int rectHeight_ = 0; // 0 矩形高度
117     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
118 };
119 
120 class CanvasResetMatrix : public TestBase {
121 public:
CanvasResetMatrix(int type)122     explicit CanvasResetMatrix(int type) : TestBase(type) {};
~CanvasResetMatrix()123     ~CanvasResetMatrix() override {};
124 
125 protected:
126     int rectWidth_ = 0;  // 0 矩形宽度
127     int rectHeight_ = 0; // 0 矩形高度
128     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
129 };
130 
131 class CanvasDrawImageRectWithSrc : public TestBase {
132 public:
CanvasDrawImageRectWithSrc(int type)133     explicit CanvasDrawImageRectWithSrc(int type) : TestBase(type) {};
~CanvasDrawImageRectWithSrc()134     ~CanvasDrawImageRectWithSrc() override {};
135 
136 protected:
137     int rectWidth_ = 0;  // 0 矩形宽度
138     int rectHeight_ = 0; // 0 矩形高度
139     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
140 };
141 
142 // 3
143 class CanvasReadPixels : public TestBase {
144 public:
CanvasReadPixels(int type)145     explicit CanvasReadPixels(int type) : TestBase(type) {};
~CanvasReadPixels()146     ~CanvasReadPixels() override {};
147 
148 protected:
149     int rectWidth_ = 0;  // 0 矩形宽度
150     int rectHeight_ = 0; // 0 矩形高度
151     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
152 };
153 // 4
154 class CanvasReadPixelsToBitmap : public TestBase {
155 public:
CanvasReadPixelsToBitmap(int type)156     explicit CanvasReadPixelsToBitmap(int type) : TestBase(type) {};
~CanvasReadPixelsToBitmap()157     ~CanvasReadPixelsToBitmap() override {};
158 
159 protected:
160     int rectWidth_ = 0;  // 0 矩形宽度
161     int rectHeight_ = 0; // 0 矩形高度
162     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
163 };
164 
165 class CanvasDrawShadow : public TestBase {
166 public:
CanvasDrawShadow(int type)167     explicit CanvasDrawShadow(int type) : TestBase(type) {};
~CanvasDrawShadow()168     ~CanvasDrawShadow() override {};
169 
170 protected:
171     int rectWidth_ = 0;  // 0 矩形宽度
172     int rectHeight_ = 0; // 0 矩形高度
173     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
174 };
175 
176 class CanvasSkew : public TestBase {
177 public:
CanvasSkew(int type)178     explicit CanvasSkew(int type) : TestBase(type) {};
~CanvasSkew()179     ~CanvasSkew() override {};
180 
181 protected:
182     int rectWidth_ = 0;  // 0 矩形宽度
183     int rectHeight_ = 0; // 0 矩形高度
184     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
185 };
186 
187 class CanvasDrawVertices : public TestBase {
188 public:
CanvasDrawVertices(int type)189     explicit CanvasDrawVertices(int type) : TestBase(type) {};
~CanvasDrawVertices()190     ~CanvasDrawVertices() override {};
191 
192 protected:
193     int rectWidth_ = 0;  // 0 矩形宽度
194     int rectHeight_ = 0; // 0 矩形高度
195     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
196 };
197 
198 class CanvasDrawPath : public TestBase {
199 public:
CanvasDrawPath(int type)200     explicit CanvasDrawPath(int type) : TestBase(type) {};
~CanvasDrawPath()201     ~CanvasDrawPath() override {};
202 
203 protected:
204     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
205 };
206 
207 class CanvasRestoreToCount : public TestBase {
208 public:
CanvasRestoreToCount(int type)209     explicit CanvasRestoreToCount(int type) : TestBase(type) {};
~CanvasRestoreToCount()210     ~CanvasRestoreToCount() override {};
211 
212 protected:
213     uint32_t fSave_Count = 0; // 0 保存的数量
214     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
215 };
216 
217 class CanvasDrawPoints : public TestBase {
218 public:
CanvasDrawPoints(int type)219     explicit CanvasDrawPoints(int type) : TestBase(type) {};
~CanvasDrawPoints()220     ~CanvasDrawPoints() override {};
221 
222 protected:
223     const int n = 10; // 10 可以同时存储的点的数量
224     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
225 };
226 
227 class CanvasDrawLine : public TestBase {
228 public:
CanvasDrawLine(int type)229     explicit CanvasDrawLine(int type) : TestBase(type) {};
~CanvasDrawLine()230     ~CanvasDrawLine() override {};
231 
232 protected:
233     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
234 };
235 
236 class CanvasDrawLayer : public TestBase {
237 public:
CanvasDrawLayer(int type)238     explicit CanvasDrawLayer(int type) : TestBase(type) {};
~CanvasDrawLayer()239     ~CanvasDrawLayer() override {};
240 
241 protected:
242     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
243 };
244 
245 class CanvasDrawBitmap : public TestBase {
246 public:
CanvasDrawBitmap(int type)247     explicit CanvasDrawBitmap(int type) : TestBase(type) {};
~CanvasDrawBitmap()248     ~CanvasDrawBitmap() override {};
249 
250 protected:
251     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
252 };
253 
254 class CanvasDrawBackground : public TestBase {
255 public:
CanvasDrawBackground(int type)256     explicit CanvasDrawBackground(int type) : TestBase(type) {};
~CanvasDrawBackground()257     ~CanvasDrawBackground() override {};
258 
259 protected:
260     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
261 };
262 
263 class CanvasDrawRegion : public TestBase {
264 public:
CanvasDrawRegion(int type)265     explicit CanvasDrawRegion(int type) : TestBase(type) {};
~CanvasDrawRegion()266     ~CanvasDrawRegion() override {};
267 
268 protected:
269     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
270 };
271 
272 class CanvasDrawPixelMapRect : public TestBase {
273 public:
CanvasDrawPixelMapRect(int type)274     explicit CanvasDrawPixelMapRect(int type) : TestBase(type) {};
~CanvasDrawPixelMapRect()275     ~CanvasDrawPixelMapRect() override {};
276 
277 protected:
278     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
279 };
280 
281 class CanvasSave : public TestBase {
282 public:
CanvasSave(int type)283     explicit CanvasSave(int type) : TestBase(type) {};
~CanvasSave()284     ~CanvasSave() override {};
285 
286 protected:
287     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
288 };
289 
290 class CanvasDrawBitmapRect : public TestBase {
291 public:
CanvasDrawBitmapRect(int type)292     explicit CanvasDrawBitmapRect(int type) : TestBase(type)
293     {
294         fileName_ = "CanvasDrawBitmapRect";
295     };
~CanvasDrawBitmapRect()296     ~CanvasDrawBitmapRect() override {};
297 
298 protected:
299     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
300 };
301 
302 class CanvasDrawCircle : public TestBase {
303 public:
CanvasDrawCircle(int type)304     explicit CanvasDrawCircle(int type) : TestBase(type)
305     {
306         fileName_ = "CanvasDrawCircle";
307     };
~CanvasDrawCircle()308     ~CanvasDrawCircle() override {};
309 
310 protected:
311     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
312 };
313 
314 class CanvasDrawOval : public TestBase {
315 public:
CanvasDrawOval(int type)316     explicit CanvasDrawOval(int type) : TestBase(type)
317     {
318         fileName_ = "CanvasDrawOval";
319     };
~CanvasDrawOval()320     ~CanvasDrawOval() override {};
321 
322 protected:
323     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
324 };
325 
326 class CanvasDrawArc : public TestBase {
327 public:
CanvasDrawArc(int type)328     explicit CanvasDrawArc(int type) : TestBase(type)
329     {
330         fileName_ = "CanvasDrawArc";
331     };
~CanvasDrawArc()332     ~CanvasDrawArc() override {};
333 
334 protected:
335     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
336 };
337 
338 class CanvasDrawRoundRect : public TestBase {
339 public:
CanvasDrawRoundRect(int type)340     explicit CanvasDrawRoundRect(int type) : TestBase(type)
341     {
342         fileName_ = "CanvasDrawRoundRect";
343     };
~CanvasDrawRoundRect()344     ~CanvasDrawRoundRect() override {};
345 
346 protected:
347     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
348 };
349 
350 class CanvasDrawTextBlob : public TestBase {
351 public:
CanvasDrawTextBlob(int type)352     explicit CanvasDrawTextBlob(int type) : TestBase(type)
353     {
354         fileName_ = "CanvasDrawTextBlob";
355     };
~CanvasDrawTextBlob()356     ~CanvasDrawTextBlob() override {};
357 
358 protected:
359     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
360 };
361 
362 class CanvasClipRect : public TestBase {
363 public:
CanvasClipRect(int type)364     explicit CanvasClipRect(int type) : TestBase(type)
365     {
366         fileName_ = "CanvasClipRect";
367     };
~CanvasClipRect()368     ~CanvasClipRect() override {};
369 
370 protected:
371     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
372 };
373 
374 class CanvasClipRoundRect : public TestBase {
375 public:
CanvasClipRoundRect(int type)376     explicit CanvasClipRoundRect(int type) : TestBase(type)
377     {
378         fileName_ = "CanvasClipRoundRect";
379     };
~CanvasClipRoundRect()380     ~CanvasClipRoundRect() override {};
381 
382 protected:
383     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
384 };
385 
386 class CanvasClipPath : public TestBase {
387 public:
CanvasClipPath(int type)388     explicit CanvasClipPath(int type) : TestBase(type)
389     {
390         fileName_ = "CanvasClipPath";
391     };
~CanvasClipPath()392     ~CanvasClipPath() override {};
393 
394 protected:
395     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
396 };
397 
398 class CanvasGetTotalMatrix : public TestBase {
399 public:
CanvasGetTotalMatrix(int type)400     explicit CanvasGetTotalMatrix(int type) : TestBase(type)
401     {
402         fileName_ = "CanvasGetTotalMatrix";
403     };
~CanvasGetTotalMatrix()404     ~CanvasGetTotalMatrix() override {};
405 
406 protected:
407     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
408 };
409 
410 class CanvasRestore : public TestBase {
411 public:
CanvasRestore(int type)412     explicit CanvasRestore(int type) : TestBase(type)
413     {
414         fileName_ = "CanvasRestore";
415     };
~CanvasRestore()416     ~CanvasRestore() override {};
417 
418 protected:
419     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
420 };
421 
422 class CanvasGetLocalClipBounds : public TestBase {
423 public:
CanvasGetLocalClipBounds(int type)424     explicit CanvasGetLocalClipBounds(int type) : TestBase(type)
425     {
426         fileName_ = "CanvasGetLocalClipBounds";
427     };
~CanvasGetLocalClipBounds()428     ~CanvasGetLocalClipBounds() override {};
429 
430 protected:
431     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
432 };
433 
434 class CanvasGetSaveCount : public TestBase {
435 public:
CanvasGetSaveCount(int type)436     explicit CanvasGetSaveCount(int type) : TestBase(type)
437     {
438         fileName_ = "CanvasGetSaveCount";
439     };
~CanvasGetSaveCount()440     ~CanvasGetSaveCount() override {};
441 
442 protected:
443     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
444 };
445 
446 class CanvasGetWidth : public TestBase {
447 public:
CanvasGetWidth(int type)448     explicit CanvasGetWidth(int type) : TestBase(type)
449     {
450         fileName_ = "CanvasGetWidth";
451     };
~CanvasGetWidth()452     ~CanvasGetWidth() override {};
453 
454 protected:
455     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
456 };
457 
458 class CanvasGetHeight : public TestBase {
459 public:
CanvasGetHeight(int type)460     explicit CanvasGetHeight(int type) : TestBase(type)
461     {
462         fileName_ = "CanvasGetHeight";
463     };
~CanvasGetHeight()464     ~CanvasGetHeight() override {};
465 
466 protected:
467     void OnTestPerformance(OH_Drawing_Canvas* canvas) override;
468 };
469 #endif // INTERFACE_CANVAS_TEST_H
470