1f6603c60Sopenharmony_ci/* 2f6603c60Sopenharmony_ci * Copyright (c) 2022-2024 Huawei Device Co., Ltd. 3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License. 5f6603c60Sopenharmony_ci * You may obtain a copy of the License at 6f6603c60Sopenharmony_ci * 7f6603c60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8f6603c60Sopenharmony_ci * 9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, Hardware 10f6603c60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and 13f6603c60Sopenharmony_ci * limitations under the License. 14f6603c60Sopenharmony_ci */ 15f6603c60Sopenharmony_ci 16f6603c60Sopenharmony_ci#include "gtest/gtest.h" 17f6603c60Sopenharmony_ci 18f6603c60Sopenharmony_ci#include "drawing_bitmap.h" 19f6603c60Sopenharmony_ci#include "drawing_brush.h" 20f6603c60Sopenharmony_ci#include "drawing_canvas.h" 21f6603c60Sopenharmony_ci#include "drawing_color.h" 22f6603c60Sopenharmony_ci#include "drawing_color_filter.h" 23f6603c60Sopenharmony_ci#include "drawing_filter.h" 24f6603c60Sopenharmony_ci#include "drawing_font.h" 25f6603c60Sopenharmony_ci#include "drawing_image.h" 26f6603c60Sopenharmony_ci#include "drawing_mask_filter.h" 27f6603c60Sopenharmony_ci#include "drawing_matrix.h" 28f6603c60Sopenharmony_ci#include "drawing_path.h" 29f6603c60Sopenharmony_ci#include "drawing_pen.h" 30f6603c60Sopenharmony_ci#include "drawing_point.h" 31f6603c60Sopenharmony_ci#include "drawing_rect.h" 32f6603c60Sopenharmony_ci#include "drawing_region.h" 33f6603c60Sopenharmony_ci#include "drawing_round_rect.h" 34f6603c60Sopenharmony_ci#include "drawing_sampling_options.h" 35f6603c60Sopenharmony_ci#include "drawing_shader_effect.h" 36f6603c60Sopenharmony_ci#include "drawing_text_blob.h" 37f6603c60Sopenharmony_ci#include "drawing_typeface.h" 38f6603c60Sopenharmony_ci#include "drawing_memory_stream.h" 39f6603c60Sopenharmony_ci#include "effect/color_filter.h" 40f6603c60Sopenharmony_ci#include "effect/filter.h" 41f6603c60Sopenharmony_ci 42f6603c60Sopenharmony_ciusing namespace testing; 43f6603c60Sopenharmony_ciusing namespace testing::ext; 44f6603c60Sopenharmony_ci 45f6603c60Sopenharmony_cinamespace OHOS { 46f6603c60Sopenharmony_cinamespace Rosen { 47f6603c60Sopenharmony_cinamespace Drawing { 48f6603c60Sopenharmony_ciclass NativeDrawingCanvasTest : public testing::Test { 49f6603c60Sopenharmony_cipublic: 50f6603c60Sopenharmony_ci static void SetUpTestCase(); 51f6603c60Sopenharmony_ci static void TearDownTestCase(); 52f6603c60Sopenharmony_ci void SetUp() override; 53f6603c60Sopenharmony_ci void TearDown() override; 54f6603c60Sopenharmony_ci protected: 55f6603c60Sopenharmony_ci OH_Drawing_Canvas *canvas_ = nullptr; 56f6603c60Sopenharmony_ci OH_Drawing_Brush *brush_ = nullptr; 57f6603c60Sopenharmony_ci}; 58f6603c60Sopenharmony_ci 59f6603c60Sopenharmony_ciconstexpr uint32_t POINT_PARAMETER = 3; 60f6603c60Sopenharmony_ciconstexpr uint32_t COLOR_PARAMETER = 3; 61f6603c60Sopenharmony_ci 62f6603c60Sopenharmony_civoid NativeDrawingCanvasTest::SetUpTestCase() {} 63f6603c60Sopenharmony_civoid NativeDrawingCanvasTest::TearDownTestCase() {} 64f6603c60Sopenharmony_civoid NativeDrawingCanvasTest::SetUp() 65f6603c60Sopenharmony_ci{ 66f6603c60Sopenharmony_ci canvas_ = OH_Drawing_CanvasCreate(); 67f6603c60Sopenharmony_ci ASSERT_NE(nullptr, canvas_); 68f6603c60Sopenharmony_ci OH_Drawing_CanvasClear(canvas_, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0xFF, 0xFF)); 69f6603c60Sopenharmony_ci brush_ = OH_Drawing_BrushCreate(); 70f6603c60Sopenharmony_ci EXPECT_NE(brush_, nullptr); 71f6603c60Sopenharmony_ci OH_Drawing_BrushSetColor(brush_, 0xffff0000); 72f6603c60Sopenharmony_ci OH_Drawing_CanvasAttachBrush(canvas_, brush_); 73f6603c60Sopenharmony_ci} 74f6603c60Sopenharmony_ci 75f6603c60Sopenharmony_civoid NativeDrawingCanvasTest::TearDown() 76f6603c60Sopenharmony_ci{ 77f6603c60Sopenharmony_ci if (canvas_ != nullptr) { 78f6603c60Sopenharmony_ci OH_Drawing_CanvasDetachBrush(canvas_); 79f6603c60Sopenharmony_ci OH_Drawing_BrushDestroy(brush_); 80f6603c60Sopenharmony_ci brush_ = nullptr; 81f6603c60Sopenharmony_ci OH_Drawing_CanvasDestroy(canvas_); 82f6603c60Sopenharmony_ci canvas_ = nullptr; 83f6603c60Sopenharmony_ci } 84f6603c60Sopenharmony_ci} 85f6603c60Sopenharmony_ci 86f6603c60Sopenharmony_ci/* 87f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_CanvasNULLPTR001 88f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasBind. 89f6603c60Sopenharmony_ci * @tc.size : MediumTest 90f6603c60Sopenharmony_ci * @tc.type : Function 91f6603c60Sopenharmony_ci * @tc.level : Level 1 92f6603c60Sopenharmony_ci */ 93f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_CanvasNULLPTR001, TestSize.Level1) 94f6603c60Sopenharmony_ci{ 95f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 96f6603c60Sopenharmony_ci EXPECT_NE(bitmap, nullptr); 97f6603c60Sopenharmony_ci OH_Drawing_CanvasBind(nullptr, bitmap); 98f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 99f6603c60Sopenharmony_ci OH_Drawing_CanvasAttachPen(canvas_, nullptr); 100f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, INT32_MIN, INT32_MIN); 101f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, INT32_MAX, INT32_MAX); 102f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawLine(nullptr, 0, 0, 20, 20); 103f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawLine(canvas_, 0, 0, INT32_MAX, INT32_MAX); 104f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawLine(canvas_, 0, 0, INT32_MIN, INT32_MIN); 105f6603c60Sopenharmony_ci OH_Drawing_Path* path = OH_Drawing_PathCreate(); 106f6603c60Sopenharmony_ci OH_Drawing_PathMoveTo(path, INT32_MAX, INT32_MIN); 107f6603c60Sopenharmony_ci OH_Drawing_PathMoveTo(nullptr, 9999, -1000); 108f6603c60Sopenharmony_ci OH_Drawing_PathClose(nullptr); 109f6603c60Sopenharmony_ci OH_Drawing_PathClose(path); 110f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawPath(nullptr, path); 111f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawPath(canvas_, nullptr); 112f6603c60Sopenharmony_ci OH_Drawing_PathDestroy(path); 113f6603c60Sopenharmony_ci} 114f6603c60Sopenharmony_ci 115f6603c60Sopenharmony_ci/* 116f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_CanvasBind002 117f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasBind. 118f6603c60Sopenharmony_ci * @tc.size : MediumTest 119f6603c60Sopenharmony_ci * @tc.type : Function 120f6603c60Sopenharmony_ci * @tc.level : Level 1 121f6603c60Sopenharmony_ci */ 122f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_CanvasBind002, TestSize.Level1) 123f6603c60Sopenharmony_ci{ 124f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 125f6603c60Sopenharmony_ci EXPECT_NE(bitmap, nullptr); 126f6603c60Sopenharmony_ci OH_Drawing_CanvasBind(canvas_, bitmap); 127f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 128f6603c60Sopenharmony_ci} 129f6603c60Sopenharmony_ci 130f6603c60Sopenharmony_ci/* 131f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_canvas003 132f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasAttachPen & OH_Drawing_CanvasDetachPen. 133f6603c60Sopenharmony_ci * @tc.size : MediumTest 134f6603c60Sopenharmony_ci * @tc.type : Function 135f6603c60Sopenharmony_ci * @tc.level : Level 1 136f6603c60Sopenharmony_ci */ 137f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_canvas003, TestSize.Level1) 138f6603c60Sopenharmony_ci{ 139f6603c60Sopenharmony_ci OH_Drawing_Pen* pen = OH_Drawing_PenCreate(); 140f6603c60Sopenharmony_ci EXPECT_NE(pen, nullptr); 141f6603c60Sopenharmony_ci OH_Drawing_CanvasAttachPen(canvas_, pen); 142f6603c60Sopenharmony_ci OH_Drawing_CanvasDetachPen(canvas_); 143f6603c60Sopenharmony_ci OH_Drawing_PenDestroy(pen); 144f6603c60Sopenharmony_ci} 145f6603c60Sopenharmony_ci 146f6603c60Sopenharmony_ci/* 147f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawLine004 148f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasDrawLine. 149f6603c60Sopenharmony_ci * @tc.size : MediumTest 150f6603c60Sopenharmony_ci * @tc.type : Function 151f6603c60Sopenharmony_ci * @tc.level : Level 1 152f6603c60Sopenharmony_ci */ 153f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawLine004, TestSize.Level1) 154f6603c60Sopenharmony_ci{ 155f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawLine(canvas_, 0, 0, 20, 20); 156f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawLine(canvas_, -15.2f, -1, 0, 20); 157f6603c60Sopenharmony_ci} 158f6603c60Sopenharmony_ci 159f6603c60Sopenharmony_ci/* 160f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawPath005 161f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasDrawPath. 162f6603c60Sopenharmony_ci * @tc.size : MediumTest 163f6603c60Sopenharmony_ci * @tc.type : Function 164f6603c60Sopenharmony_ci * @tc.level : Level 1 165f6603c60Sopenharmony_ci */ 166f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawPath005, TestSize.Level1) 167f6603c60Sopenharmony_ci{ 168f6603c60Sopenharmony_ci OH_Drawing_Path* path = OH_Drawing_PathCreate(); 169f6603c60Sopenharmony_ci EXPECT_NE(path, nullptr); 170f6603c60Sopenharmony_ci constexpr int height = 300; 171f6603c60Sopenharmony_ci constexpr int width = 300; 172f6603c60Sopenharmony_ci constexpr float arc = 18.0f; 173f6603c60Sopenharmony_ci int len = height / 4; 174f6603c60Sopenharmony_ci float aX = width / 2; 175f6603c60Sopenharmony_ci float aY = height / 4; 176f6603c60Sopenharmony_ci float dX = aX - len * std::sin(arc); 177f6603c60Sopenharmony_ci float dY = aY + len * std::cos(arc); 178f6603c60Sopenharmony_ci float cX = aX + len * std::sin(arc); 179f6603c60Sopenharmony_ci float cY = dY; 180f6603c60Sopenharmony_ci float bX = aX + (len / 2.0); 181f6603c60Sopenharmony_ci float bY = aY + std::sqrt((cX - dX) * (cX - dX) + (len / 2.0) * (len / 2.0)); 182f6603c60Sopenharmony_ci float eX = aX - (len / 2.0); 183f6603c60Sopenharmony_ci float eY = bY; 184f6603c60Sopenharmony_ci OH_Drawing_PathMoveTo(path, aX, aY); 185f6603c60Sopenharmony_ci OH_Drawing_PathLineTo(path, bX, bY); 186f6603c60Sopenharmony_ci OH_Drawing_PathLineTo(path, cX, cY); 187f6603c60Sopenharmony_ci OH_Drawing_PathLineTo(path, dX, dY); 188f6603c60Sopenharmony_ci OH_Drawing_PathLineTo(path, eX, eY); 189f6603c60Sopenharmony_ci OH_Drawing_PathClose(path); 190f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawPath(canvas_, path); 191f6603c60Sopenharmony_ci OH_Drawing_PathDestroy(path); 192f6603c60Sopenharmony_ci} 193f6603c60Sopenharmony_ci 194f6603c60Sopenharmony_ci/* 195f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawPoints006 196f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasDrawPoints. 197f6603c60Sopenharmony_ci * @tc.size : MediumTest 198f6603c60Sopenharmony_ci * @tc.type : Function 199f6603c60Sopenharmony_ci * @tc.level : Level 1 200f6603c60Sopenharmony_ci */ 201f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawPoints006, TestSize.Level1) 202f6603c60Sopenharmony_ci{ 203f6603c60Sopenharmony_ci OH_Drawing_Point2D pointOne={250, 500}; 204f6603c60Sopenharmony_ci OH_Drawing_Point2D pointTwo={200, 500}; 205f6603c60Sopenharmony_ci OH_Drawing_Point2D pointThree={500, 700}; 206f6603c60Sopenharmony_ci OH_Drawing_Point2D points[POINT_PARAMETER] = {pointOne, pointTwo, pointThree}; 207f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawPoints(canvas_, POINT_MODE_POINTS, POINT_PARAMETER, nullptr); 208f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawPoints(nullptr, POINT_MODE_POINTS, POINT_PARAMETER, nullptr); 209f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawPoints(canvas_, POINT_MODE_POINTS, POINT_PARAMETER, points); 210f6603c60Sopenharmony_ci} 211f6603c60Sopenharmony_ci 212f6603c60Sopenharmony_ci/* 213f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawVertices007 214f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasDrawVertices. 215f6603c60Sopenharmony_ci * @tc.size : MediumTest 216f6603c60Sopenharmony_ci * @tc.type : Function 217f6603c60Sopenharmony_ci * @tc.level : Level 1 218f6603c60Sopenharmony_ci */ 219f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawVertices007, TestSize.Level1) 220f6603c60Sopenharmony_ci{ 221f6603c60Sopenharmony_ci OH_Drawing_Point2D point_one = {0, 0}; 222f6603c60Sopenharmony_ci OH_Drawing_Point2D point_two = {100, 100}; 223f6603c60Sopenharmony_ci OH_Drawing_Point2D point_three = {300, 100}; 224f6603c60Sopenharmony_ci OH_Drawing_Point2D points_vertices[POINT_PARAMETER] = {point_one, point_two, point_three}; 225f6603c60Sopenharmony_ci 226f6603c60Sopenharmony_ci OH_Drawing_Point2D texs_one = {0, 0}; 227f6603c60Sopenharmony_ci OH_Drawing_Point2D texs_two = {1, 1}; 228f6603c60Sopenharmony_ci OH_Drawing_Point2D texs_three = {2, 0}; 229f6603c60Sopenharmony_ci OH_Drawing_Point2D texs_vertices[POINT_PARAMETER] = {texs_one, texs_two, texs_three}; 230f6603c60Sopenharmony_ci uint32_t colors[COLOR_PARAMETER] = {0xFFFF0000, 0xFFFF0000, 0xFFFF0000}; 231f6603c60Sopenharmony_ci 232f6603c60Sopenharmony_ci uint16_t indices[COLOR_PARAMETER] = {0, 1, 2}; 233f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawVertices(nullptr, VERTEX_MODE_TRIANGLES, POINT_PARAMETER, points_vertices, texs_vertices, 234f6603c60Sopenharmony_ci colors, POINT_PARAMETER, indices, BLEND_MODE_COLOR); 235f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawVertices(canvas_, VERTEX_MODE_TRIANGLES, POINT_PARAMETER, nullptr, texs_vertices, colors, 236f6603c60Sopenharmony_ci POINT_PARAMETER, indices, BLEND_MODE_COLOR); 237f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawVertices(canvas_, VERTEX_MODE_TRIANGLES, POINT_PARAMETER, points_vertices, nullptr, colors, 238f6603c60Sopenharmony_ci POINT_PARAMETER, indices, BLEND_MODE_COLOR); 239f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawVertices(canvas_, VERTEX_MODE_TRIANGLES, POINT_PARAMETER, points_vertices, texs_vertices, 240f6603c60Sopenharmony_ci nullptr, POINT_PARAMETER, indices, BLEND_MODE_COLOR); 241f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawVertices(canvas_, VERTEX_MODE_TRIANGLES, POINT_PARAMETER, points_vertices, texs_vertices, 242f6603c60Sopenharmony_ci colors, POINT_PARAMETER, nullptr, BLEND_MODE_COLOR); 243f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawVertices(nullptr, VERTEX_MODE_TRIANGLES, POINT_PARAMETER, nullptr, nullptr, nullptr, 244f6603c60Sopenharmony_ci POINT_PARAMETER, nullptr, BLEND_MODE_COLOR); 245f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawVertices(canvas_, VERTEX_MODE_TRIANGLES, POINT_PARAMETER, points_vertices, texs_vertices, 246f6603c60Sopenharmony_ci colors, POINT_PARAMETER, indices, BLEND_MODE_COLOR); 247f6603c60Sopenharmony_ci} 248f6603c60Sopenharmony_ci 249f6603c60Sopenharmony_ci/* 250f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_SaveAndRestore008 251f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasSave & OH_Drawing_CanvasRestore. 252f6603c60Sopenharmony_ci * @tc.size : MediumTest 253f6603c60Sopenharmony_ci * @tc.type : Function 254f6603c60Sopenharmony_ci * @tc.level : Level 1 255f6603c60Sopenharmony_ci */ 256f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_SaveAndRestore008, TestSize.Level1) 257f6603c60Sopenharmony_ci{ 258f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(100, 200, 500, 300); 259f6603c60Sopenharmony_ci EXPECT_NE(nullptr, rect); 260f6603c60Sopenharmony_ci OH_Drawing_CanvasSave(nullptr); 261f6603c60Sopenharmony_ci OH_Drawing_CanvasSave(canvas_); 262f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(nullptr, 100, 100); 263f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 100, 100); 264f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawArc(nullptr, rect, 10, 200); 265f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawArc(canvas_, nullptr, 10, 200); 266f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawArc(canvas_, rect, 10, 200); 267f6603c60Sopenharmony_ci OH_Drawing_CanvasRestore(nullptr); 268f6603c60Sopenharmony_ci OH_Drawing_CanvasRestore(canvas_); 269f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 200, 200); 270f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawOval(nullptr, rect); 271f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawOval(canvas_, nullptr); 272f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawOval(canvas_, rect); 273f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(nullptr); 274f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 275f6603c60Sopenharmony_ci} 276f6603c60Sopenharmony_ci 277f6603c60Sopenharmony_ci/* 278f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_Clear009 279f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasClear. 280f6603c60Sopenharmony_ci * @tc.size : MediumTest 281f6603c60Sopenharmony_ci * @tc.type : Function 282f6603c60Sopenharmony_ci * @tc.level : Level 1 283f6603c60Sopenharmony_ci */ 284f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_Clear009, TestSize.Level1) 285f6603c60Sopenharmony_ci{ 286f6603c60Sopenharmony_ci OH_Drawing_CanvasClear(nullptr, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00)); 287f6603c60Sopenharmony_ci OH_Drawing_CanvasClear(canvas_, -100); 288f6603c60Sopenharmony_ci OH_Drawing_CanvasClear(canvas_, OH_Drawing_ColorSetArgb(INT32_MAX, INT32_MAX, INT32_MIN, INT32_MIN)); 289f6603c60Sopenharmony_ci OH_Drawing_CanvasClear(canvas_, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00)); 290f6603c60Sopenharmony_ci} 291f6603c60Sopenharmony_ci 292f6603c60Sopenharmony_ci/* 293f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_RestoreToCount010 294f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasRestoreToCount. 295f6603c60Sopenharmony_ci * @tc.size : MediumTest 296f6603c60Sopenharmony_ci * @tc.type : Function 297f6603c60Sopenharmony_ci * @tc.level : Level 1 298f6603c60Sopenharmony_ci */ 299f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_RestoreToCount010, TestSize.Level1) 300f6603c60Sopenharmony_ci{ 301f6603c60Sopenharmony_ci OH_Drawing_CanvasSave(canvas_); 302f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 300, 300); 303f6603c60Sopenharmony_ci OH_Drawing_CanvasSave(canvas_); 304f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 100, 100); 305f6603c60Sopenharmony_ci OH_Drawing_CanvasSave(canvas_); 306f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 100, 100); 307f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 100, 100); 308f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 309f6603c60Sopenharmony_ci int count = OH_Drawing_CanvasGetSaveCount(canvas_); 310f6603c60Sopenharmony_ci EXPECT_EQ(count, 4); 311f6603c60Sopenharmony_ci OH_Drawing_CanvasRestoreToCount(nullptr, count - 2); 312f6603c60Sopenharmony_ci OH_Drawing_CanvasRestoreToCount(canvas_, count - 2); 313f6603c60Sopenharmony_ci EXPECT_EQ(2, OH_Drawing_CanvasGetSaveCount(canvas_)); 314f6603c60Sopenharmony_ci OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(nullptr, 20, 20); 315f6603c60Sopenharmony_ci EXPECT_EQ(roundRect, nullptr); 316f6603c60Sopenharmony_ci roundRect = OH_Drawing_RoundRectCreate(rect, 20, 20); 317f6603c60Sopenharmony_ci EXPECT_NE(roundRect, nullptr); 318f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRoundRect(nullptr, roundRect); 319f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRoundRect(canvas_, nullptr); 320f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRoundRect(canvas_, roundRect); 321f6603c60Sopenharmony_ci OH_Drawing_CanvasRestoreToCount(canvas_, 1); 322f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 323f6603c60Sopenharmony_ci OH_Drawing_RoundRectDestroy(roundRect); 324f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 325f6603c60Sopenharmony_ci OH_Drawing_RoundRectDestroy(nullptr); 326f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(nullptr); 327f6603c60Sopenharmony_ci} 328f6603c60Sopenharmony_ci 329f6603c60Sopenharmony_ci/* 330f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_Scale011 331f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasScale. 332f6603c60Sopenharmony_ci * @tc.size : MediumTest 333f6603c60Sopenharmony_ci * @tc.type : Function 334f6603c60Sopenharmony_ci * @tc.level : Level 1 335f6603c60Sopenharmony_ci */ 336f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_Scale011, TestSize.Level1) 337f6603c60Sopenharmony_ci{ 338f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 20, 60, 120); 339f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 20, 20); 340f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 341f6603c60Sopenharmony_ci OH_Drawing_CanvasScale(nullptr, 2, .5f); 342f6603c60Sopenharmony_ci OH_Drawing_CanvasScale(canvas_, 2, .5f); 343f6603c60Sopenharmony_ci OH_Drawing_BrushSetColor(nullptr, 0xFF67C23A); 344f6603c60Sopenharmony_ci OH_Drawing_BrushSetColor(brush_, 0xFF67C23A); 345f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 346f6603c60Sopenharmony_ci} 347f6603c60Sopenharmony_ci/* 348f6603c60Sopenharmony_ci * @tc.name : NativeDrawingCanvasTest_Skew012 349f6603c60Sopenharmony_ci * @tc.desc : test for OH_Drawing_CanvasSkew. 350f6603c60Sopenharmony_ci * @tc.size : MediumTest 351f6603c60Sopenharmony_ci * @tc.type : Function 352f6603c60Sopenharmony_ci * @tc.level : Level 1 353f6603c60Sopenharmony_ci */ 354f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_Skew012, TestSize.Level1) 355f6603c60Sopenharmony_ci{ 356f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(100, 100, 300, 300); 357f6603c60Sopenharmony_ci ASSERT_NE(rect, nullptr); 358f6603c60Sopenharmony_ci OH_Drawing_CanvasSkew(nullptr, 0, 0.3f); 359f6603c60Sopenharmony_ci OH_Drawing_BrushSetColor(brush_, 0xFF67C23A); 360f6603c60Sopenharmony_ci OH_Drawing_CanvasSkew(canvas_, 0, 0.3f); 361f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 362f6603c60Sopenharmony_ci 363f6603c60Sopenharmony_ci OH_Drawing_Matrix* matrixSkew= OH_Drawing_MatrixCreate(); 364f6603c60Sopenharmony_ci OH_Drawing_MatrixReset(matrixSkew); 365f6603c60Sopenharmony_ci Matrix* cMatrix = reinterpret_cast<Matrix*>(matrixSkew); 366f6603c60Sopenharmony_ci EXPECT_NE(cMatrix, nullptr); 367f6603c60Sopenharmony_ci cMatrix->SetSkew(0, 0.3f); 368f6603c60Sopenharmony_ci 369f6603c60Sopenharmony_ci OH_Drawing_Matrix* matrixTotal = OH_Drawing_MatrixCreate(); 370f6603c60Sopenharmony_ci OH_Drawing_CanvasGetTotalMatrix(canvas_, nullptr); 371f6603c60Sopenharmony_ci OH_Drawing_CanvasGetTotalMatrix(nullptr, matrixTotal); 372f6603c60Sopenharmony_ci float valueMatrixSkew; 373f6603c60Sopenharmony_ci float valueCanvasSkew; 374f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 0); 375f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 0); 376f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 377f6603c60Sopenharmony_ci 378f6603c60Sopenharmony_ci OH_Drawing_CanvasGetTotalMatrix(canvas_, matrixTotal); 379f6603c60Sopenharmony_ci EXPECT_NE(matrixTotal, nullptr); 380f6603c60Sopenharmony_ci 381f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 0); 382f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 0); 383f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 384f6603c60Sopenharmony_ci 385f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 1); 386f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 1); 387f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 388f6603c60Sopenharmony_ci 389f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 2); 390f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 2); 391f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 392f6603c60Sopenharmony_ci 393f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 3); 394f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 3); 395f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 396f6603c60Sopenharmony_ci 397f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 4); 398f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 4); 399f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 400f6603c60Sopenharmony_ci 401f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 5); 402f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 5); 403f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 404f6603c60Sopenharmony_ci 405f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 6); 406f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 6); 407f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 408f6603c60Sopenharmony_ci 409f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 7); 410f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 7); 411f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 412f6603c60Sopenharmony_ci 413f6603c60Sopenharmony_ci valueMatrixSkew = OH_Drawing_MatrixGetValue(matrixSkew, 8); 414f6603c60Sopenharmony_ci valueCanvasSkew = OH_Drawing_MatrixGetValue(matrixTotal, 8); 415f6603c60Sopenharmony_ci EXPECT_TRUE(IsScalarAlmostEqual(valueMatrixSkew, valueCanvasSkew)); 416f6603c60Sopenharmony_ci 417f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 418f6603c60Sopenharmony_ci OH_Drawing_MatrixDestroy(matrixSkew); 419f6603c60Sopenharmony_ci OH_Drawing_MatrixDestroy(matrixTotal); 420f6603c60Sopenharmony_ci} 421f6603c60Sopenharmony_ci/* 422f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ClipRect013 423f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasClipRect. 424f6603c60Sopenharmony_ci * @tc.size : MediumTest 425f6603c60Sopenharmony_ci * @tc.type : Function 426f6603c60Sopenharmony_ci * @tc.level : Level 1 427f6603c60Sopenharmony_ci */ 428f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ClipRect013, TestSize.Level1) 429f6603c60Sopenharmony_ci{ 430f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 90, 90); 431f6603c60Sopenharmony_ci OH_Drawing_CanvasRotate(nullptr, 10, 0, 0); 432f6603c60Sopenharmony_ci OH_Drawing_CanvasRotate(canvas_, 10, 0, 0); 433f6603c60Sopenharmony_ci OH_Drawing_Point *point = OH_Drawing_PointCreate(100, 60); 434f6603c60Sopenharmony_ci OH_Drawing_BrushSetAntiAlias(nullptr, true); 435f6603c60Sopenharmony_ci OH_Drawing_BrushSetAntiAlias(brush_, true); 436f6603c60Sopenharmony_ci for (auto alias : {false, true}) { 437f6603c60Sopenharmony_ci OH_Drawing_CanvasSave(canvas_); 438f6603c60Sopenharmony_ci OH_Drawing_CanvasClipRect(nullptr, rect, OH_Drawing_CanvasClipOp::INTERSECT, alias); 439f6603c60Sopenharmony_ci OH_Drawing_CanvasClipRect(canvas_, nullptr, OH_Drawing_CanvasClipOp::INTERSECT, alias); 440f6603c60Sopenharmony_ci OH_Drawing_CanvasClipRect(canvas_, rect, OH_Drawing_CanvasClipOp::INTERSECT, alias); 441f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawCircle(canvas_, nullptr, 60); 442f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawCircle(nullptr, point, 60); 443f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawCircle(canvas_, point, 60); 444f6603c60Sopenharmony_ci OH_Drawing_CanvasRestore(canvas_); 445f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 80, 0); 446f6603c60Sopenharmony_ci } 447f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 448f6603c60Sopenharmony_ci OH_Drawing_PointDestroy(point); 449f6603c60Sopenharmony_ci} 450f6603c60Sopenharmony_ci 451f6603c60Sopenharmony_ci/* 452f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ClipPath014 453f6603c60Sopenharmony_ci * @tc.desc: test for OH_Drawing_CanvasClipPath. 454f6603c60Sopenharmony_ci * @tc.size : MediumTest 455f6603c60Sopenharmony_ci * @tc.type : Function 456f6603c60Sopenharmony_ci * @tc.level : Level 1 457f6603c60Sopenharmony_ci */ 458f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ClipPath014, TestSize.Level1) 459f6603c60Sopenharmony_ci{ 460f6603c60Sopenharmony_ci OH_Drawing_Path *path = OH_Drawing_PathCreate(); 461f6603c60Sopenharmony_ci OH_Drawing_PathMoveTo(path, 100, 300); 462f6603c60Sopenharmony_ci OH_Drawing_PathLineTo(path, 200, 300); 463f6603c60Sopenharmony_ci OH_Drawing_PathLineTo(path, 200, 400); 464f6603c60Sopenharmony_ci OH_Drawing_PathLineTo(path, 100, 350); 465f6603c60Sopenharmony_ci OH_Drawing_PathClose(nullptr); 466f6603c60Sopenharmony_ci OH_Drawing_PathClose(path); 467f6603c60Sopenharmony_ci OH_Drawing_CanvasClipPath(nullptr, path, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 468f6603c60Sopenharmony_ci OH_Drawing_CanvasClipPath(canvas_, nullptr, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 469f6603c60Sopenharmony_ci OH_Drawing_CanvasClipPath(canvas_, path, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 470f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(100, 300, 200, 400); 471f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 472f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 473f6603c60Sopenharmony_ci OH_Drawing_PathDestroy(path); 474f6603c60Sopenharmony_ci} 475f6603c60Sopenharmony_ci 476f6603c60Sopenharmony_ci/* 477f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_LinearGradient015 478f6603c60Sopenharmony_ci * @tc.desc: test for LinearGradient 479f6603c60Sopenharmony_ci * @tc.size : MediumTest 480f6603c60Sopenharmony_ci * @tc.type : Function 481f6603c60Sopenharmony_ci * @tc.level : Level 1 482f6603c60Sopenharmony_ci */ 483f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_LinearGradient015, TestSize.Level1) 484f6603c60Sopenharmony_ci{ 485f6603c60Sopenharmony_ci OH_Drawing_Point* startPt = OH_Drawing_PointCreate(100, 400); 486f6603c60Sopenharmony_ci OH_Drawing_Point* endPt = OH_Drawing_PointCreate(200, 500); 487f6603c60Sopenharmony_ci uint32_t color[] = {0xffff0000, 0xff00ff00}; 488f6603c60Sopenharmony_ci float pos[] = {0., 1.0}; 489f6603c60Sopenharmony_ci OH_Drawing_ShaderEffect* linearGradient = OH_Drawing_ShaderEffectCreateLinearGradient(startPt, endPt, 490f6603c60Sopenharmony_ci color, pos, 2, OH_Drawing_TileMode::CLAMP); 491f6603c60Sopenharmony_ci OH_Drawing_BrushSetShaderEffect(nullptr, linearGradient); 492f6603c60Sopenharmony_ci OH_Drawing_BrushSetShaderEffect(brush_, nullptr); 493f6603c60Sopenharmony_ci OH_Drawing_BrushSetShaderEffect(brush_, linearGradient); 494f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(200, 500, 300, 600); 495f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 496f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 497f6603c60Sopenharmony_ci OH_Drawing_ShaderEffectDestroy(nullptr); 498f6603c60Sopenharmony_ci OH_Drawing_ShaderEffectDestroy(linearGradient); 499f6603c60Sopenharmony_ci OH_Drawing_PointDestroy(startPt); 500f6603c60Sopenharmony_ci OH_Drawing_PointDestroy(endPt); 501f6603c60Sopenharmony_ci} 502f6603c60Sopenharmony_ci 503f6603c60Sopenharmony_ci/* 504f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_SweepGradient016 505f6603c60Sopenharmony_ci * @tc.desc: test for sweep gradient shader effect 506f6603c60Sopenharmony_ci * @tc.size : MediumTest 507f6603c60Sopenharmony_ci * @tc.type : Function 508f6603c60Sopenharmony_ci * @tc.level : Level 1 509f6603c60Sopenharmony_ci */ 510f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_SweepGradient016, TestSize.Level1) 511f6603c60Sopenharmony_ci{ 512f6603c60Sopenharmony_ci OH_Drawing_Point* centerPt = OH_Drawing_PointCreate(350, 450); 513f6603c60Sopenharmony_ci uint32_t colors[] = {0xffff00ff, 0xff00ff00}; 514f6603c60Sopenharmony_ci float pos[] = {0., 1.0}; 515f6603c60Sopenharmony_ci OH_Drawing_ShaderEffect* sweepGradient = OH_Drawing_ShaderEffectCreateSweepGradient(nullptr, nullptr, 516f6603c60Sopenharmony_ci nullptr, -2, OH_Drawing_TileMode::MIRROR); 517f6603c60Sopenharmony_ci EXPECT_EQ(sweepGradient, nullptr); 518f6603c60Sopenharmony_ci sweepGradient = OH_Drawing_ShaderEffectCreateSweepGradient(centerPt, colors, 519f6603c60Sopenharmony_ci pos, 2, OH_Drawing_TileMode::MIRROR); 520f6603c60Sopenharmony_ci EXPECT_NE(sweepGradient, nullptr); 521f6603c60Sopenharmony_ci OH_Drawing_BrushSetShaderEffect(brush_, sweepGradient); 522f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(300, 400, 500, 500); 523f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 524f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 525f6603c60Sopenharmony_ci OH_Drawing_ShaderEffectDestroy(sweepGradient); 526f6603c60Sopenharmony_ci OH_Drawing_PointDestroy(centerPt); 527f6603c60Sopenharmony_ci} 528f6603c60Sopenharmony_ci/* 529f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ImageShader017 530f6603c60Sopenharmony_ci * @tc.desc: test for image shader effect 531f6603c60Sopenharmony_ci * @tc.size : MediumTest 532f6603c60Sopenharmony_ci * @tc.type : Function 533f6603c60Sopenharmony_ci * @tc.level : Level 1 534f6603c60Sopenharmony_ci */ 535f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ImageShader017, TestSize.Level1) 536f6603c60Sopenharmony_ci{ 537f6603c60Sopenharmony_ci OH_Drawing_Image *image = OH_Drawing_ImageCreate(); 538f6603c60Sopenharmony_ci OH_Drawing_Brush *brush = OH_Drawing_BrushCreate(); 539f6603c60Sopenharmony_ci OH_Drawing_BrushSetColor(brush, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0xFF, 0x00)); 540f6603c60Sopenharmony_ci OH_Drawing_SamplingOptions *options = OH_Drawing_SamplingOptionsCreate(FILTER_MODE_LINEAR, MIPMAP_MODE_LINEAR); 541f6603c60Sopenharmony_ci OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate(); 542f6603c60Sopenharmony_ci OH_Drawing_ShaderEffect *effect = nullptr; 543f6603c60Sopenharmony_ci effect = OH_Drawing_ShaderEffectCreateImageShader(nullptr, CLAMP, CLAMP, nullptr, nullptr); 544f6603c60Sopenharmony_ci EXPECT_EQ(effect, nullptr); 545f6603c60Sopenharmony_ci effect = OH_Drawing_ShaderEffectCreateImageShader(image, CLAMP, CLAMP, options, matrix); 546f6603c60Sopenharmony_ci OH_Drawing_BrushSetShaderEffect(brush, effect); 547f6603c60Sopenharmony_ci OH_Drawing_CanvasAttachBrush(canvas_, brush); 548f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(300, 400, 500, 500); 549f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 550f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 551f6603c60Sopenharmony_ci OH_Drawing_ShaderEffectDestroy(effect); 552f6603c60Sopenharmony_ci OH_Drawing_MatrixDestroy(matrix); 553f6603c60Sopenharmony_ci OH_Drawing_SamplingOptionsDestroy(options); 554f6603c60Sopenharmony_ci OH_Drawing_BrushDestroy(brush); 555f6603c60Sopenharmony_ci OH_Drawing_ImageDestroy(image); 556f6603c60Sopenharmony_ci} 557f6603c60Sopenharmony_ci 558f6603c60Sopenharmony_ci/* 559f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_RadialGradient 560f6603c60Sopenharmony_ci * @tc.desc: test for Radial gradient shader effect 561f6603c60Sopenharmony_ci * @tc.size : MediumTest 562f6603c60Sopenharmony_ci * @tc.type : Function 563f6603c60Sopenharmony_ci * @tc.level : Level 1 564f6603c60Sopenharmony_ci */ 565f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_RadialGradient, TestSize.Level1) 566f6603c60Sopenharmony_ci{ 567f6603c60Sopenharmony_ci OH_Drawing_Point* centerPt = OH_Drawing_PointCreate(350, 450); 568f6603c60Sopenharmony_ci uint32_t colors[] = {0xffff00ff, 0xff00ff00}; 569f6603c60Sopenharmony_ci float pos[] = {0., 1.0}; 570f6603c60Sopenharmony_ci OH_Drawing_ShaderEffect* radialGradient = OH_Drawing_ShaderEffectCreateRadialGradient(nullptr, 20, 571f6603c60Sopenharmony_ci nullptr, nullptr, -2, OH_Drawing_TileMode::MIRROR); 572f6603c60Sopenharmony_ci EXPECT_EQ(radialGradient, nullptr); 573f6603c60Sopenharmony_ci radialGradient = OH_Drawing_ShaderEffectCreateRadialGradient(centerPt, 30, colors, 574f6603c60Sopenharmony_ci pos, 2, OH_Drawing_TileMode::MIRROR); 575f6603c60Sopenharmony_ci EXPECT_NE(radialGradient, nullptr); 576f6603c60Sopenharmony_ci OH_Drawing_BrushSetShaderEffect(brush_, radialGradient); 577f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(300, 400, 500, 500); 578f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 579f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 580f6603c60Sopenharmony_ci OH_Drawing_ShaderEffectDestroy(radialGradient); 581f6603c60Sopenharmony_ci OH_Drawing_PointDestroy(centerPt); 582f6603c60Sopenharmony_ci} 583f6603c60Sopenharmony_ci 584f6603c60Sopenharmony_ci/* 585f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_MaskFilter018 586f6603c60Sopenharmony_ci * @tc.desc: test for maskfilter 587f6603c60Sopenharmony_ci * @tc.size : MediumTest 588f6603c60Sopenharmony_ci * @tc.type : Function 589f6603c60Sopenharmony_ci * @tc.level : Level 1 590f6603c60Sopenharmony_ci */ 591f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_MaskFilter018, TestSize.Level1) 592f6603c60Sopenharmony_ci{ 593f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_BrushGetColor(brush_), 0xFFFF0000); 594f6603c60Sopenharmony_ci OH_Drawing_MaskFilter* maskFilter = OH_Drawing_MaskFilterCreateBlur(OH_Drawing_BlurType::NORMAL, 10, true); 595f6603c60Sopenharmony_ci OH_Drawing_Filter* filter = OH_Drawing_FilterCreate(); 596f6603c60Sopenharmony_ci OH_Drawing_FilterSetMaskFilter(nullptr, maskFilter); 597f6603c60Sopenharmony_ci OH_Drawing_FilterSetMaskFilter(filter, nullptr); 598f6603c60Sopenharmony_ci OH_Drawing_FilterSetMaskFilter(filter, maskFilter); 599f6603c60Sopenharmony_ci OH_Drawing_BrushSetFilter(brush_, filter); 600f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(200, 500, 300, 600); 601f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 602f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 603f6603c60Sopenharmony_ci OH_Drawing_MaskFilterDestroy(maskFilter); 604f6603c60Sopenharmony_ci OH_Drawing_FilterDestroy(filter); 605f6603c60Sopenharmony_ci} 606f6603c60Sopenharmony_ci 607f6603c60Sopenharmony_ci/* 608f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ColorFilter019 609f6603c60Sopenharmony_ci * @tc.desc: test for colorfilter create blend mode, linear to srgb gamma, luma, matrix 610f6603c60Sopenharmony_ci * @tc.size : MediumTest 611f6603c60Sopenharmony_ci * @tc.type : Function 612f6603c60Sopenharmony_ci * @tc.level : Level 1 613f6603c60Sopenharmony_ci */ 614f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ColorFilterCreateBlendMode019, TestSize.Level1) 615f6603c60Sopenharmony_ci{ 616f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_BrushGetColor(brush_), 0xFFFF0000); 617f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* colorFilter = OH_Drawing_ColorFilterCreateBlendMode(0xff0000ff, 618f6603c60Sopenharmony_ci OH_Drawing_BlendMode::BLEND_MODE_SRC); 619f6603c60Sopenharmony_ci EXPECT_NE(colorFilter, nullptr); 620f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* colorFilterTmp = OH_Drawing_ColorFilterCreateLinearToSrgbGamma(); 621f6603c60Sopenharmony_ci EXPECT_NE(colorFilterTmp, nullptr); 622f6603c60Sopenharmony_ci OH_Drawing_Filter* filter = OH_Drawing_FilterCreate(); 623f6603c60Sopenharmony_ci EXPECT_NE(filter, nullptr); 624f6603c60Sopenharmony_ci 625f6603c60Sopenharmony_ci OH_Drawing_FilterSetColorFilter(nullptr, colorFilter); 626f6603c60Sopenharmony_ci OH_Drawing_FilterSetColorFilter(filter, nullptr); 627f6603c60Sopenharmony_ci OH_Drawing_FilterGetColorFilter(filter, colorFilterTmp); 628f6603c60Sopenharmony_ci EXPECT_EQ(reinterpret_cast<ColorFilter*>(colorFilterTmp)->GetType(), ColorFilter::FilterType::NO_TYPE); 629f6603c60Sopenharmony_ci 630f6603c60Sopenharmony_ci OH_Drawing_FilterSetColorFilter(filter, colorFilter); 631f6603c60Sopenharmony_ci OH_Drawing_FilterGetColorFilter(filter, colorFilterTmp); 632f6603c60Sopenharmony_ci EXPECT_EQ(reinterpret_cast<ColorFilter*>(colorFilterTmp)->GetType(), ColorFilter::FilterType::BLEND_MODE); 633f6603c60Sopenharmony_ci 634f6603c60Sopenharmony_ci OH_Drawing_BrushSetFilter(brush_, nullptr); 635f6603c60Sopenharmony_ci OH_Drawing_BrushSetFilter(brush_, filter); 636f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 100, 100); 637f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 638f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* linear = OH_Drawing_ColorFilterCreateLinearToSrgbGamma(); 639f6603c60Sopenharmony_ci OH_Drawing_FilterSetColorFilter(filter, linear); 640f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 100, 100); 641f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 642f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* luma = OH_Drawing_ColorFilterCreateLuma(); 643f6603c60Sopenharmony_ci OH_Drawing_FilterSetColorFilter(filter, luma); 644f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 200, 200); 645f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 646f6603c60Sopenharmony_ci const float matrix[20] = { 647f6603c60Sopenharmony_ci 1, 0, 0, 0, 0, 648f6603c60Sopenharmony_ci 0, 1, 0, 0, 0, 649f6603c60Sopenharmony_ci 0, 0, 1, 0, 0, 650f6603c60Sopenharmony_ci 0, 0, 0, 0.5f, 0 651f6603c60Sopenharmony_ci }; 652f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* matrixFilter = OH_Drawing_ColorFilterCreateMatrix(nullptr); 653f6603c60Sopenharmony_ci EXPECT_EQ(matrixFilter, nullptr); 654f6603c60Sopenharmony_ci matrixFilter = OH_Drawing_ColorFilterCreateMatrix(matrix); 655f6603c60Sopenharmony_ci EXPECT_NE(matrixFilter, nullptr); 656f6603c60Sopenharmony_ci OH_Drawing_FilterSetColorFilter(filter, matrixFilter); 657f6603c60Sopenharmony_ci OH_Drawing_CanvasTranslate(canvas_, 300, 300); 658f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 659f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 660f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(colorFilter); 661f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(luma); 662f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(matrixFilter); 663f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(linear); 664f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(colorFilterTmp); 665f6603c60Sopenharmony_ci OH_Drawing_FilterDestroy(filter); 666f6603c60Sopenharmony_ci OH_Drawing_FilterDestroy(nullptr); 667f6603c60Sopenharmony_ci} 668f6603c60Sopenharmony_ci 669f6603c60Sopenharmony_ci/* 670f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ColorFilterCreateCompose020 671f6603c60Sopenharmony_ci * @tc.desc: test for create compose color filter 672f6603c60Sopenharmony_ci * @tc.size : MediumTest 673f6603c60Sopenharmony_ci * @tc.type : Function 674f6603c60Sopenharmony_ci * @tc.level : Level 1 675f6603c60Sopenharmony_ci */ 676f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ColorFilterCreateCompose020, TestSize.Level1) 677f6603c60Sopenharmony_ci{ 678f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_BrushGetColor(brush_), 0xFFFF0000); 679f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* outerFilter = OH_Drawing_ColorFilterCreateLuma(); 680f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* innerFilter = OH_Drawing_ColorFilterCreateSrgbGammaToLinear(); 681f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* compose = OH_Drawing_ColorFilterCreateCompose(nullptr, nullptr); 682f6603c60Sopenharmony_ci EXPECT_EQ(compose, nullptr); 683f6603c60Sopenharmony_ci compose = OH_Drawing_ColorFilterCreateCompose(outerFilter, innerFilter); 684f6603c60Sopenharmony_ci EXPECT_NE(compose, nullptr); 685f6603c60Sopenharmony_ci OH_Drawing_Filter* filter = OH_Drawing_FilterCreate(); 686f6603c60Sopenharmony_ci OH_Drawing_FilterSetColorFilter(filter, compose); 687f6603c60Sopenharmony_ci OH_Drawing_BrushSetFilter(brush_, filter); 688f6603c60Sopenharmony_ci OH_Drawing_Canvas* canvas_ = OH_Drawing_CanvasCreate(); 689f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(200, 500, 300, 600); 690f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 691f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 692f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(outerFilter); 693f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(innerFilter); 694f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(compose); 695f6603c60Sopenharmony_ci OH_Drawing_FilterDestroy(filter); 696f6603c60Sopenharmony_ci} 697f6603c60Sopenharmony_ci 698f6603c60Sopenharmony_ci/* 699f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawBitmap021 700f6603c60Sopenharmony_ci * @tc.desc: test for DrawBitmap 701f6603c60Sopenharmony_ci * @tc.size : MediumTest 702f6603c60Sopenharmony_ci * @tc.type : Function 703f6603c60Sopenharmony_ci * @tc.level : Level 1 704f6603c60Sopenharmony_ci */ 705f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawBitmap021, TestSize.Level1) 706f6603c60Sopenharmony_ci{ 707f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 708f6603c60Sopenharmony_ci OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE}; 709f6603c60Sopenharmony_ci constexpr uint32_t width = 200; 710f6603c60Sopenharmony_ci constexpr uint32_t height = 200; 711f6603c60Sopenharmony_ci OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat); 712f6603c60Sopenharmony_ci OH_Drawing_CanvasBind(canvas_, bitmap); 713f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawBitmap(canvas_, bitmap, 0, 0); 714f6603c60Sopenharmony_ci OH_Drawing_CanvasClear(canvas_, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0xFF, 0xFF)); 715f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 716f6603c60Sopenharmony_ci} 717f6603c60Sopenharmony_ci/* 718f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawBitmapRect022 719f6603c60Sopenharmony_ci * @tc.desc: test for DrawBitmapRect 720f6603c60Sopenharmony_ci * @tc.size : MediumTest 721f6603c60Sopenharmony_ci * @tc.type : Function 722f6603c60Sopenharmony_ci * @tc.level : Level 1 723f6603c60Sopenharmony_ci */ 724f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawBitmapRect022, TestSize.Level1) 725f6603c60Sopenharmony_ci{ 726f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 727f6603c60Sopenharmony_ci EXPECT_NE(bitmap, nullptr); 728f6603c60Sopenharmony_ci OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE}; 729f6603c60Sopenharmony_ci constexpr uint32_t width = 200; 730f6603c60Sopenharmony_ci constexpr uint32_t height = 200; 731f6603c60Sopenharmony_ci OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat); 732f6603c60Sopenharmony_ci OH_Drawing_Rect* src = OH_Drawing_RectCreate(0, 0, 200, 200); 733f6603c60Sopenharmony_ci EXPECT_NE(src, nullptr); 734f6603c60Sopenharmony_ci OH_Drawing_Rect* dst = OH_Drawing_RectCreate(0, 0, 200, 200); 735f6603c60Sopenharmony_ci EXPECT_NE(dst, nullptr); 736f6603c60Sopenharmony_ci OH_Drawing_SamplingOptions* options = OH_Drawing_SamplingOptionsCreate( 737f6603c60Sopenharmony_ci OH_Drawing_FilterMode::FILTER_MODE_NEAREST, OH_Drawing_MipmapMode::MIPMAP_MODE_NEAREST); 738f6603c60Sopenharmony_ci EXPECT_NE(options, nullptr); 739f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawBitmapRect(canvas_, bitmap, src, dst, options); 740f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawBitmapRect(canvas_, bitmap, src, dst, nullptr); 741f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawBitmapRect(canvas_, bitmap, src, nullptr, nullptr); 742f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawBitmapRect(canvas_, bitmap, nullptr, nullptr, nullptr); 743f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawBitmapRect(canvas_, nullptr, nullptr, nullptr, nullptr); 744f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawBitmapRect(nullptr, nullptr, nullptr, nullptr, nullptr); 745f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 746f6603c60Sopenharmony_ci} 747f6603c60Sopenharmony_ci 748f6603c60Sopenharmony_ci/* 749f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_SetMatrix023 750f6603c60Sopenharmony_ci * @tc.desc: test for SetMatrix 751f6603c60Sopenharmony_ci * @tc.size : MediumTest 752f6603c60Sopenharmony_ci * @tc.type : Function 753f6603c60Sopenharmony_ci * @tc.level : Level 1 754f6603c60Sopenharmony_ci */ 755f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_SetMatrix023, TestSize.Level1) 756f6603c60Sopenharmony_ci{ 757f6603c60Sopenharmony_ci OH_Drawing_Matrix* matrix = OH_Drawing_MatrixCreate(); 758f6603c60Sopenharmony_ci EXPECT_NE(matrix, nullptr); 759f6603c60Sopenharmony_ci OH_Drawing_MatrixSetMatrix( 760f6603c60Sopenharmony_ci matrix, 761f6603c60Sopenharmony_ci 1, 0, 0, 762f6603c60Sopenharmony_ci 0, -1, 0, 763f6603c60Sopenharmony_ci 0, 0, 1); 764f6603c60Sopenharmony_ci OH_Drawing_CanvasSetMatrix(canvas_, matrix); 765f6603c60Sopenharmony_ci OH_Drawing_CanvasSetMatrix(canvas_, nullptr); 766f6603c60Sopenharmony_ci OH_Drawing_CanvasSetMatrix(nullptr, nullptr); 767f6603c60Sopenharmony_ci OH_Drawing_MatrixDestroy(matrix); 768f6603c60Sopenharmony_ci} 769f6603c60Sopenharmony_ci 770f6603c60Sopenharmony_ci/* 771f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ResetMatrix024 772f6603c60Sopenharmony_ci * @tc.desc: test for ResetMatrix 773f6603c60Sopenharmony_ci * @tc.size : MediumTest 774f6603c60Sopenharmony_ci * @tc.type : Function 775f6603c60Sopenharmony_ci * @tc.level : Level 1 776f6603c60Sopenharmony_ci */ 777f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ResetMatrix024, TestSize.Level1) 778f6603c60Sopenharmony_ci{ 779f6603c60Sopenharmony_ci OH_Drawing_CanvasResetMatrix(nullptr); 780f6603c60Sopenharmony_ci OH_Drawing_CanvasResetMatrix(canvas_); 781f6603c60Sopenharmony_ci} 782f6603c60Sopenharmony_ci 783f6603c60Sopenharmony_ci/* 784f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawImageRect025 785f6603c60Sopenharmony_ci * @tc.desc: test for DrawImageRect 786f6603c60Sopenharmony_ci * @tc.size : MediumTest 787f6603c60Sopenharmony_ci * @tc.type : Function 788f6603c60Sopenharmony_ci * @tc.level : Level 1 789f6603c60Sopenharmony_ci */ 790f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawImageRect025, TestSize.Level1) 791f6603c60Sopenharmony_ci{ 792f6603c60Sopenharmony_ci OH_Drawing_Rect* rect = OH_Drawing_RectCreate(0, 0, 200, 200); 793f6603c60Sopenharmony_ci EXPECT_NE(rect, nullptr); 794f6603c60Sopenharmony_ci OH_Drawing_Image* image = OH_Drawing_ImageCreate(); 795f6603c60Sopenharmony_ci EXPECT_NE(image, nullptr); 796f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 797f6603c60Sopenharmony_ci EXPECT_NE(bitmap, nullptr); 798f6603c60Sopenharmony_ci OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE}; 799f6603c60Sopenharmony_ci constexpr uint32_t width = 200; 800f6603c60Sopenharmony_ci constexpr uint32_t height = 200; 801f6603c60Sopenharmony_ci OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat); 802f6603c60Sopenharmony_ci OH_Drawing_ImageBuildFromBitmap(image, bitmap); 803f6603c60Sopenharmony_ci OH_Drawing_SamplingOptions* options = OH_Drawing_SamplingOptionsCreate( 804f6603c60Sopenharmony_ci OH_Drawing_FilterMode::FILTER_MODE_NEAREST, OH_Drawing_MipmapMode::MIPMAP_MODE_NEAREST); 805f6603c60Sopenharmony_ci EXPECT_NE(options, nullptr); 806f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawImageRect(canvas_, image, rect, options); 807f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawImageRect(canvas_, image, rect, nullptr); 808f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawImageRect(canvas_, image, nullptr, nullptr); 809f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawImageRect(canvas_, nullptr, nullptr, nullptr); 810f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawImageRect(nullptr, nullptr, nullptr, nullptr); 811f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawImageRectWithSrc(canvas_, image, rect, rect, options, STRICT_SRC_RECT_CONSTRAINT); 812f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawImageRectWithSrc(nullptr, nullptr, nullptr, nullptr, nullptr, STRICT_SRC_RECT_CONSTRAINT); 813f6603c60Sopenharmony_ci OH_Drawing_SamplingOptionsDestroy(options); 814f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 815f6603c60Sopenharmony_ci OH_Drawing_ImageDestroy(image); 816f6603c60Sopenharmony_ci} 817f6603c60Sopenharmony_ci 818f6603c60Sopenharmony_ci/* 819f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ReadPixelsToBitmap026 820f6603c60Sopenharmony_ci * @tc.desc: test for ReadPixelsToBitmap 821f6603c60Sopenharmony_ci * @tc.size : MediumTest 822f6603c60Sopenharmony_ci * @tc.type : Function 823f6603c60Sopenharmony_ci * @tc.level : Level 1 824f6603c60Sopenharmony_ci */ 825f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ReadPixelsToBitmap026, TestSize.Level1) 826f6603c60Sopenharmony_ci{ 827f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 828f6603c60Sopenharmony_ci EXPECT_NE(bitmap, nullptr); 829f6603c60Sopenharmony_ci EXPECT_TRUE(!OH_Drawing_CanvasReadPixelsToBitmap(canvas_, bitmap, 100, 100)); 830f6603c60Sopenharmony_ci EXPECT_TRUE(!OH_Drawing_CanvasReadPixelsToBitmap(canvas_, nullptr, 100, 100)); 831f6603c60Sopenharmony_ci EXPECT_TRUE(!OH_Drawing_CanvasReadPixelsToBitmap(nullptr, nullptr, 100, 100)); 832f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 833f6603c60Sopenharmony_ci} 834f6603c60Sopenharmony_ci 835f6603c60Sopenharmony_ci/* 836f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ReadPixels027 837f6603c60Sopenharmony_ci * @tc.desc: test for ReadPixels 838f6603c60Sopenharmony_ci * @tc.size : MediumTest 839f6603c60Sopenharmony_ci * @tc.type : Function 840f6603c60Sopenharmony_ci * @tc.level : Level 1 841f6603c60Sopenharmony_ci */ 842f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ReadPixels027, TestSize.Level1) 843f6603c60Sopenharmony_ci{ 844f6603c60Sopenharmony_ci OH_Drawing_Image_Info imageInfo; 845f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 846f6603c60Sopenharmony_ci EXPECT_NE(bitmap, nullptr); 847f6603c60Sopenharmony_ci OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE}; 848f6603c60Sopenharmony_ci constexpr uint32_t width = 200; 849f6603c60Sopenharmony_ci constexpr uint32_t height = 200; 850f6603c60Sopenharmony_ci OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat); 851f6603c60Sopenharmony_ci void* pixels = OH_Drawing_BitmapGetPixels(bitmap); 852f6603c60Sopenharmony_ci EXPECT_TRUE(!OH_Drawing_CanvasReadPixels(canvas_, &imageInfo, pixels, 0, 0, 0)); 853f6603c60Sopenharmony_ci EXPECT_TRUE(!OH_Drawing_CanvasReadPixels(canvas_, &imageInfo, nullptr, 0, 0, 0)); 854f6603c60Sopenharmony_ci EXPECT_TRUE(!OH_Drawing_CanvasReadPixels(canvas_, nullptr, nullptr, 0, 0, 0)); 855f6603c60Sopenharmony_ci EXPECT_TRUE(!OH_Drawing_CanvasReadPixels(nullptr, nullptr, nullptr, 0, 0, 0)); 856f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 857f6603c60Sopenharmony_ci} 858f6603c60Sopenharmony_ci 859f6603c60Sopenharmony_ci/* 860f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_GetWidth028 861f6603c60Sopenharmony_ci * @tc.desc: test for GetWidth 862f6603c60Sopenharmony_ci * @tc.size : MediumTest 863f6603c60Sopenharmony_ci * @tc.type : Function 864f6603c60Sopenharmony_ci * @tc.level : Level 1 865f6603c60Sopenharmony_ci */ 866f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_GetWidth028, TestSize.Level1) 867f6603c60Sopenharmony_ci{ 868f6603c60Sopenharmony_ci EXPECT_TRUE(OH_Drawing_CanvasGetWidth(nullptr) == 0); 869f6603c60Sopenharmony_ci EXPECT_TRUE(OH_Drawing_CanvasGetWidth(canvas_) >= 0); 870f6603c60Sopenharmony_ci} 871f6603c60Sopenharmony_ci 872f6603c60Sopenharmony_ci/* 873f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_GetHeight029 874f6603c60Sopenharmony_ci * @tc.desc: test for GetHeight 875f6603c60Sopenharmony_ci * @tc.size : MediumTest 876f6603c60Sopenharmony_ci * @tc.type : Function 877f6603c60Sopenharmony_ci * @tc.level : Level 1 878f6603c60Sopenharmony_ci */ 879f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_GetHeight029, TestSize.Level1) 880f6603c60Sopenharmony_ci{ 881f6603c60Sopenharmony_ci EXPECT_TRUE(OH_Drawing_CanvasGetHeight(nullptr) == 0); 882f6603c60Sopenharmony_ci EXPECT_TRUE(OH_Drawing_CanvasGetHeight(canvas_) >= 0); 883f6603c60Sopenharmony_ci} 884f6603c60Sopenharmony_ci 885f6603c60Sopenharmony_ci/* 886f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_GetLocalClipBounds030 887f6603c60Sopenharmony_ci * @tc.desc: test for GetLocalClipBounds 888f6603c60Sopenharmony_ci * @tc.size : MediumTest 889f6603c60Sopenharmony_ci * @tc.type : Function 890f6603c60Sopenharmony_ci * @tc.level : Level 1 891f6603c60Sopenharmony_ci */ 892f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_GetLocalClipBounds030, TestSize.Level1) 893f6603c60Sopenharmony_ci{ 894f6603c60Sopenharmony_ci OH_Drawing_CanvasGetLocalClipBounds(nullptr, nullptr); 895f6603c60Sopenharmony_ci OH_Drawing_Rect* rect = OH_Drawing_RectCreate(0, 0, 1, 1); 896f6603c60Sopenharmony_ci EXPECT_NE(rect, nullptr); 897f6603c60Sopenharmony_ci OH_Drawing_CanvasGetLocalClipBounds(nullptr, rect); 898f6603c60Sopenharmony_ci OH_Drawing_CanvasGetLocalClipBounds(canvas_, rect); 899f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 900f6603c60Sopenharmony_ci} 901f6603c60Sopenharmony_ci 902f6603c60Sopenharmony_ci/* 903f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ConcatMatrix031 904f6603c60Sopenharmony_ci * @tc.desc: test for ConcatMatrix 905f6603c60Sopenharmony_ci * @tc.size : MediumTest 906f6603c60Sopenharmony_ci * @tc.type : Function 907f6603c60Sopenharmony_ci * @tc.level : Level 1 908f6603c60Sopenharmony_ci */ 909f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ConcatMatrix031, TestSize.Level1) 910f6603c60Sopenharmony_ci{ 911f6603c60Sopenharmony_ci OH_Drawing_Matrix* matrix = OH_Drawing_MatrixCreate(); 912f6603c60Sopenharmony_ci EXPECT_NE(matrix, nullptr); 913f6603c60Sopenharmony_ci OH_Drawing_MatrixSetMatrix( 914f6603c60Sopenharmony_ci matrix, 915f6603c60Sopenharmony_ci 1, 0, 0, 916f6603c60Sopenharmony_ci 0, -1, 0, 917f6603c60Sopenharmony_ci 0, 0, 1); 918f6603c60Sopenharmony_ci OH_Drawing_CanvasConcatMatrix(canvas_, matrix); 919f6603c60Sopenharmony_ci OH_Drawing_CanvasConcatMatrix(canvas_, nullptr); 920f6603c60Sopenharmony_ci OH_Drawing_CanvasConcatMatrix(nullptr, nullptr); 921f6603c60Sopenharmony_ci OH_Drawing_MatrixDestroy(matrix); 922f6603c60Sopenharmony_ci} 923f6603c60Sopenharmony_ci 924f6603c60Sopenharmony_ci/* 925f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawShadow032 926f6603c60Sopenharmony_ci * @tc.desc: test for DrawShadow 927f6603c60Sopenharmony_ci * @tc.size : MediumTest 928f6603c60Sopenharmony_ci * @tc.type : Function 929f6603c60Sopenharmony_ci * @tc.level : Level 1 930f6603c60Sopenharmony_ci */ 931f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawShadow032, TestSize.Level1) 932f6603c60Sopenharmony_ci{ 933f6603c60Sopenharmony_ci OH_Drawing_Point3D p1{0.0, 0.0, 0.0}; 934f6603c60Sopenharmony_ci OH_Drawing_Point3D p2{10.0, 10.0, 10.0}; 935f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawShadow(nullptr, nullptr, p1, p2, 0, 0xFF000000, 936f6603c60Sopenharmony_ci 0xFF000000, OH_Drawing_CanvasShadowFlags::SHADOW_FLAGS_ALL); 937f6603c60Sopenharmony_ci 938f6603c60Sopenharmony_ci OH_Drawing_Path* path = OH_Drawing_PathCreate(); 939f6603c60Sopenharmony_ci EXPECT_NE(path, nullptr); 940f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawShadow(canvas_, path, p1, p2, 10, 0xFF000000, 0xFF000000, 941f6603c60Sopenharmony_ci OH_Drawing_CanvasShadowFlags::SHADOW_FLAGS_ALL); 942f6603c60Sopenharmony_ci} 943f6603c60Sopenharmony_ci/* 944f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawTextBlob033 945f6603c60Sopenharmony_ci * @tc.desc: test for DrawTextBlob 946f6603c60Sopenharmony_ci * @tc.size : MediumTest 947f6603c60Sopenharmony_ci * @tc.type : Function 948f6603c60Sopenharmony_ci * @tc.level : Level 1 949f6603c60Sopenharmony_ci */ 950f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawTextBlob033, TestSize.Level1) 951f6603c60Sopenharmony_ci{ 952f6603c60Sopenharmony_ci OH_Drawing_Font *font = OH_Drawing_FontCreate(); 953f6603c60Sopenharmony_ci OH_Drawing_FontSetFakeBoldText(font, true); 954f6603c60Sopenharmony_ci OH_Drawing_FontSetTextSize(font, 20); 955f6603c60Sopenharmony_ci OH_Drawing_FontSetTextSkewX(font, 0.25); 956f6603c60Sopenharmony_ci OH_Drawing_Typeface *typeSurface = OH_Drawing_TypefaceCreateDefault(); 957f6603c60Sopenharmony_ci OH_Drawing_FontSetTypeface(font, typeSurface); 958f6603c60Sopenharmony_ci auto *builder = OH_Drawing_TextBlobBuilderCreate(); 959f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobBuilderAllocRunPos(nullptr, nullptr, INT32_MAX, nullptr)); 960f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobBuilderAllocRunPos(builder, font, INT32_MIN, nullptr)); 961f6603c60Sopenharmony_ci const OH_Drawing_RunBuffer* runBuffer = OH_Drawing_TextBlobBuilderAllocRunPos(builder, font, 9, nullptr); 962f6603c60Sopenharmony_ci ASSERT_NE(runBuffer, nullptr); 963f6603c60Sopenharmony_ci runBuffer->glyphs[0] = 65; 964f6603c60Sopenharmony_ci runBuffer->pos[0] = 0; 965f6603c60Sopenharmony_ci runBuffer->pos[1] = 0; 966f6603c60Sopenharmony_ci runBuffer->glyphs[1] = 227; 967f6603c60Sopenharmony_ci runBuffer->pos[2] = 14.9; 968f6603c60Sopenharmony_ci runBuffer->pos[3] = 0; 969f6603c60Sopenharmony_ci runBuffer->glyphs[2] = 283; 970f6603c60Sopenharmony_ci runBuffer->pos[4] = 25.84; 971f6603c60Sopenharmony_ci runBuffer->pos[5] = 0; 972f6603c60Sopenharmony_ci runBuffer->glyphs[3] = 283; 973f6603c60Sopenharmony_ci runBuffer->pos[6] = 30.62; 974f6603c60Sopenharmony_ci runBuffer->pos[7] = 0; 975f6603c60Sopenharmony_ci runBuffer->glyphs[4] = 299; 976f6603c60Sopenharmony_ci runBuffer->pos[8] = 35.4; 977f6603c60Sopenharmony_ci runBuffer->pos[9] = 0; 978f6603c60Sopenharmony_ci runBuffer->glyphs[5] = 2; 979f6603c60Sopenharmony_ci runBuffer->pos[10] = 47.22; 980f6603c60Sopenharmony_ci runBuffer->pos[11] = 0; 981f6603c60Sopenharmony_ci runBuffer->glyphs[6]= 94; 982f6603c60Sopenharmony_ci runBuffer->pos[12] = 52.62; 983f6603c60Sopenharmony_ci runBuffer->pos[13] = 0; 984f6603c60Sopenharmony_ci runBuffer->glyphs[7] = 37; 985f6603c60Sopenharmony_ci runBuffer->pos[14] = 67.42; 986f6603c60Sopenharmony_ci runBuffer->pos[15] = 0; 987f6603c60Sopenharmony_ci runBuffer->glyphs[8] = 84; 988f6603c60Sopenharmony_ci runBuffer->pos[16] = 81.7; 989f6603c60Sopenharmony_ci runBuffer->pos[17] = 0; 990f6603c60Sopenharmony_ci OH_Drawing_TextBlob *textBlob = OH_Drawing_TextBlobBuilderMake(builder); 991f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawTextBlob(canvas_, textBlob, 100, 700); 992f6603c60Sopenharmony_ci OH_Drawing_TextBlobDestroy(textBlob); 993f6603c60Sopenharmony_ci OH_Drawing_TextBlobBuilderDestroy(builder); 994f6603c60Sopenharmony_ci OH_Drawing_FontDestroy(font); 995f6603c60Sopenharmony_ci OH_Drawing_TypefaceDestroy(typeSurface); 996f6603c60Sopenharmony_ci OH_Drawing_TextBlobDestroy(nullptr); 997f6603c60Sopenharmony_ci OH_Drawing_TextBlobBuilderDestroy(nullptr); 998f6603c60Sopenharmony_ci OH_Drawing_FontDestroy(nullptr); 999f6603c60Sopenharmony_ci OH_Drawing_TypefaceDestroy(nullptr); 1000f6603c60Sopenharmony_ci} 1001f6603c60Sopenharmony_ci 1002f6603c60Sopenharmony_ci/* 1003f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawTextBlob034 1004f6603c60Sopenharmony_ci * @tc.desc: test for DrawTextBlob2 1005f6603c60Sopenharmony_ci * @tc.size : MediumTest 1006f6603c60Sopenharmony_ci * @tc.type : Function 1007f6603c60Sopenharmony_ci * @tc.level : Level 1 1008f6603c60Sopenharmony_ci */ 1009f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawTextBlob034, TestSize.Level1) 1010f6603c60Sopenharmony_ci{ 1011f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 0, 0); 1012f6603c60Sopenharmony_ci EXPECT_NE(rect, nullptr); 1013f6603c60Sopenharmony_ci OH_Drawing_Font *font = OH_Drawing_FontCreate(); 1014f6603c60Sopenharmony_ci EXPECT_NE(font, nullptr); 1015f6603c60Sopenharmony_ci const char* str = "123456"; 1016f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobCreateFromString(nullptr, 1017f6603c60Sopenharmony_ci font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8)); 1018f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobCreateFromString(str, 1019f6603c60Sopenharmony_ci nullptr, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8)); 1020f6603c60Sopenharmony_ci OH_Drawing_TextBlob *textBlob = OH_Drawing_TextBlobCreateFromString(str, 1021f6603c60Sopenharmony_ci font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 1022f6603c60Sopenharmony_ci EXPECT_NE(textBlob, nullptr); 1023f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawTextBlob(canvas_, textBlob, 0, 0); 1024f6603c60Sopenharmony_ci OH_Drawing_TextBlobGetBounds(textBlob, nullptr); 1025f6603c60Sopenharmony_ci OH_Drawing_TextBlobGetBounds(textBlob, rect); 1026f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas_, rect); 1027f6603c60Sopenharmony_ci OH_Drawing_TextBlobDestroy(textBlob); 1028f6603c60Sopenharmony_ci OH_Drawing_FontDestroy(font); 1029f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 1030f6603c60Sopenharmony_ci} 1031f6603c60Sopenharmony_ci 1032f6603c60Sopenharmony_ci/* 1033f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawTextBlob035 1034f6603c60Sopenharmony_ci * @tc.desc: test for DrawTextBlob3 1035f6603c60Sopenharmony_ci * @tc.size : MediumTest 1036f6603c60Sopenharmony_ci * @tc.type : Function 1037f6603c60Sopenharmony_ci * @tc.level : Level 1 1038f6603c60Sopenharmony_ci */ 1039f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawTextBlob035, TestSize.Level1) 1040f6603c60Sopenharmony_ci{ 1041f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 0, 0); 1042f6603c60Sopenharmony_ci EXPECT_NE(rect, nullptr); 1043f6603c60Sopenharmony_ci OH_Drawing_Font *font = OH_Drawing_FontCreate(); 1044f6603c60Sopenharmony_ci EXPECT_NE(font, nullptr); 1045f6603c60Sopenharmony_ci OH_Drawing_Typeface* typeface = OH_Drawing_TypefaceCreateFromFile(nullptr, 0); 1046f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, typeface); 1047f6603c60Sopenharmony_ci // sub test 1, OH_Drawing_FontGetTypeface 1048f6603c60Sopenharmony_ci OH_Drawing_FontGetTypeface(nullptr); 1049f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, typeface); 1050f6603c60Sopenharmony_ci OH_Drawing_Typeface *typeSurface = OH_Drawing_TypefaceCreateDefault(); 1051f6603c60Sopenharmony_ci OH_Drawing_FontSetTypeface(font, typeSurface); 1052f6603c60Sopenharmony_ci EXPECT_NE(nullptr, OH_Drawing_FontGetTypeface(font)); 1053f6603c60Sopenharmony_ci // sub test 2, OH_Drawing_FontCountText 1054f6603c60Sopenharmony_ci const char* str = "123456"; 1055f6603c60Sopenharmony_ci int count = 0; 1056f6603c60Sopenharmony_ci count = OH_Drawing_FontCountText(nullptr, str, strlen(str), 1057f6603c60Sopenharmony_ci OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 1058f6603c60Sopenharmony_ci EXPECT_EQ(0, count); 1059f6603c60Sopenharmony_ci count = OH_Drawing_FontCountText(font, nullptr, strlen(str), 1060f6603c60Sopenharmony_ci OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 1061f6603c60Sopenharmony_ci EXPECT_EQ(0, count); 1062f6603c60Sopenharmony_ci count = OH_Drawing_FontCountText(font, str, strlen(str), 1063f6603c60Sopenharmony_ci OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 1064f6603c60Sopenharmony_ci EXPECT_EQ(strlen(str), count); 1065f6603c60Sopenharmony_ci // sub test 3, OH_Drawing_TextBlobCreateFromText 1066f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobCreateFromText(nullptr, strlen(str), 1067f6603c60Sopenharmony_ci font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8)); 1068f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobCreateFromText(str, strlen(str), 1069f6603c60Sopenharmony_ci nullptr, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8)); 1070f6603c60Sopenharmony_ci OH_Drawing_TextBlob *textBlob = OH_Drawing_TextBlobCreateFromText(str, strlen(str), 1071f6603c60Sopenharmony_ci font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 1072f6603c60Sopenharmony_ci EXPECT_NE(textBlob, nullptr); 1073f6603c60Sopenharmony_ci EXPECT_TRUE(OH_Drawing_TextBlobUniqueID(nullptr) == 0); 1074f6603c60Sopenharmony_ci EXPECT_TRUE(OH_Drawing_TextBlobUniqueID(textBlob) > 0); 1075f6603c60Sopenharmony_ci // draw textblob 1076f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawTextBlob(canvas_, textBlob, 0, 0); 1077f6603c60Sopenharmony_ci 1078f6603c60Sopenharmony_ci OH_Drawing_TextBlobDestroy(textBlob); 1079f6603c60Sopenharmony_ci OH_Drawing_FontDestroy(font); 1080f6603c60Sopenharmony_ci OH_Drawing_TypefaceDestroy(typeSurface); 1081f6603c60Sopenharmony_ci} 1082f6603c60Sopenharmony_ci 1083f6603c60Sopenharmony_ci/* 1084f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawTextBlob036 1085f6603c60Sopenharmony_ci * @tc.desc: test for DrawTextBlob4 1086f6603c60Sopenharmony_ci * @tc.size : MediumTest 1087f6603c60Sopenharmony_ci * @tc.type : Function 1088f6603c60Sopenharmony_ci * @tc.level : Level 1 1089f6603c60Sopenharmony_ci */ 1090f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawTextBlob036, TestSize.Level1) 1091f6603c60Sopenharmony_ci{ 1092f6603c60Sopenharmony_ci size_t length = 1; 1093f6603c60Sopenharmony_ci OH_Drawing_Font *font = OH_Drawing_FontCreate(); 1094f6603c60Sopenharmony_ci EXPECT_NE(font, nullptr); 1095f6603c60Sopenharmony_ci OH_Drawing_MemoryStream* memoryStream = OH_Drawing_MemoryStreamCreate(nullptr, 1096f6603c60Sopenharmony_ci length, false); 1097f6603c60Sopenharmony_ci OH_Drawing_MemoryStreamDestroy(memoryStream); 1098f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, memoryStream); 1099f6603c60Sopenharmony_ci OH_Drawing_Typeface* typeface = OH_Drawing_TypefaceCreateFromStream( 1100f6603c60Sopenharmony_ci memoryStream, 0); 1101f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, typeface); 1102f6603c60Sopenharmony_ci OH_Drawing_Typeface *typeSurface = OH_Drawing_TypefaceCreateDefault(); 1103f6603c60Sopenharmony_ci OH_Drawing_FontSetTypeface(font, typeSurface); 1104f6603c60Sopenharmony_ci EXPECT_NE(nullptr, OH_Drawing_FontGetTypeface(font)); 1105f6603c60Sopenharmony_ci const char* str = "123456"; 1106f6603c60Sopenharmony_ci int count = strlen(str); 1107f6603c60Sopenharmony_ci OH_Drawing_Point2D pts[count]; 1108f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobCreateFromPosText(nullptr, count, &pts[0], 1109f6603c60Sopenharmony_ci font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8)); 1110f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobCreateFromPosText(str, count, nullptr, 1111f6603c60Sopenharmony_ci font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8)); 1112f6603c60Sopenharmony_ci EXPECT_EQ(nullptr, OH_Drawing_TextBlobCreateFromPosText(str, count, &pts[0], 1113f6603c60Sopenharmony_ci nullptr, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8)); 1114f6603c60Sopenharmony_ci OH_Drawing_TextBlob *textBlob = OH_Drawing_TextBlobCreateFromPosText(str, count, &pts[0], 1115f6603c60Sopenharmony_ci font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 1116f6603c60Sopenharmony_ci EXPECT_NE(textBlob, nullptr); 1117f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawTextBlob(canvas_, textBlob, 0, 0); 1118f6603c60Sopenharmony_ci 1119f6603c60Sopenharmony_ci OH_Drawing_TextBlobDestroy(textBlob); 1120f6603c60Sopenharmony_ci OH_Drawing_FontDestroy(font); 1121f6603c60Sopenharmony_ci OH_Drawing_TypefaceDestroy(typeSurface); 1122f6603c60Sopenharmony_ci} 1123f6603c60Sopenharmony_ci 1124f6603c60Sopenharmony_ci/* 1125f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_SaveLayer037 1126f6603c60Sopenharmony_ci * @tc.desc: test for SaveLayer 1127f6603c60Sopenharmony_ci * @tc.size : MediumTest 1128f6603c60Sopenharmony_ci * @tc.type : Function 1129f6603c60Sopenharmony_ci * @tc.level : Level 1 1130f6603c60Sopenharmony_ci */ 1131f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_SaveLayer037, TestSize.Level1) 1132f6603c60Sopenharmony_ci{ 1133f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(200, 500, 300, 600); 1134f6603c60Sopenharmony_ci EXPECT_NE(rect, nullptr); 1135f6603c60Sopenharmony_ci OH_Drawing_Brush* brush = OH_Drawing_BrushCreate(); 1136f6603c60Sopenharmony_ci EXPECT_NE(brush, nullptr); 1137f6603c60Sopenharmony_ci // test exception 1138f6603c60Sopenharmony_ci OH_Drawing_CanvasSaveLayer(nullptr, rect, brush); 1139f6603c60Sopenharmony_ci OH_Drawing_CanvasSaveLayer(canvas_, rect, brush); 1140f6603c60Sopenharmony_ci OH_Drawing_CanvasRestore(canvas_); 1141f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 1142f6603c60Sopenharmony_ci} 1143f6603c60Sopenharmony_ci/* 1144f6603c60Sopenharmony_ci * @tc.name: NativeDrawingTest001 1145f6603c60Sopenharmony_ci * @tc.desc: test for fontSetLinearText 1146f6603c60Sopenharmony_ci * @tc.size : MediumTest 1147f6603c60Sopenharmony_ci * @tc.type : Function 1148f6603c60Sopenharmony_ci * @tc.level : Level 1 1149f6603c60Sopenharmony_ci */ 1150f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, OH_Drawing_FontSetLinearText_001, TestSize.Level1) 1151f6603c60Sopenharmony_ci{ 1152f6603c60Sopenharmony_ci OH_Drawing_Font *font = OH_Drawing_FontCreate(); 1153f6603c60Sopenharmony_ci OH_Drawing_FontSetTextSize(font, 20); 1154f6603c60Sopenharmony_ci OH_Drawing_FontSetTextSkewX(font, 0.25); 1155f6603c60Sopenharmony_ci OH_Drawing_FontSetLinearText(font, true); 1156f6603c60Sopenharmony_ci OH_Drawing_FontDestroy(font); 1157f6603c60Sopenharmony_ci} 1158f6603c60Sopenharmony_ci 1159f6603c60Sopenharmony_ci/* 1160f6603c60Sopenharmony_ci * @tc.name: NativeDrawingTest002 1161f6603c60Sopenharmony_ci * @tc.desc: test for penSetFilter 1162f6603c60Sopenharmony_ci * @tc.size : MediumTest 1163f6603c60Sopenharmony_ci * @tc.type : Function 1164f6603c60Sopenharmony_ci * @tc.level : Level 1 1165f6603c60Sopenharmony_ci */ 1166f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, OH_Drawing_PenSetFilter_001, TestSize.Level1) 1167f6603c60Sopenharmony_ci{ 1168f6603c60Sopenharmony_ci OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate(); 1169f6603c60Sopenharmony_ci EXPECT_EQ(canvas == nullptr, false); 1170f6603c60Sopenharmony_ci OH_Drawing_ColorFilter* colorFilter = OH_Drawing_ColorFilterCreateBlendMode(0xff0000ff, 1171f6603c60Sopenharmony_ci OH_Drawing_BlendMode::BLEND_MODE_SRC); 1172f6603c60Sopenharmony_ci OH_Drawing_Filter* filter = OH_Drawing_FilterCreate(); 1173f6603c60Sopenharmony_ci OH_Drawing_FilterSetColorFilter(filter, colorFilter); 1174f6603c60Sopenharmony_ci OH_Drawing_Pen* pen = OH_Drawing_PenCreate(); 1175f6603c60Sopenharmony_ci OH_Drawing_PenSetColor(pen, 0xff00ff00); 1176f6603c60Sopenharmony_ci OH_Drawing_PenSetFilter(pen, filter); 1177f6603c60Sopenharmony_ci OH_Drawing_CanvasAttachPen(canvas, pen); 1178f6603c60Sopenharmony_ci OH_Drawing_Rect* rect = OH_Drawing_RectCreate(100, 400, 200, 500); 1179f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas, rect); 1180f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 1181f6603c60Sopenharmony_ci OH_Drawing_PenDestroy(pen); 1182f6603c60Sopenharmony_ci OH_Drawing_ColorFilterDestroy(colorFilter); 1183f6603c60Sopenharmony_ci OH_Drawing_FilterDestroy(filter); 1184f6603c60Sopenharmony_ci OH_Drawing_CanvasDestroy(canvas); 1185f6603c60Sopenharmony_ci} 1186f6603c60Sopenharmony_ci 1187f6603c60Sopenharmony_ci/* 1188f6603c60Sopenharmony_ci * @tc.name: NativeDrawingTest003 1189f6603c60Sopenharmony_ci * @tc.desc: test for penSetFilter 1190f6603c60Sopenharmony_ci * @tc.size : MediumTest 1191f6603c60Sopenharmony_ci * @tc.type : Function 1192f6603c60Sopenharmony_ci * @tc.level : Level 1 1193f6603c60Sopenharmony_ci */ 1194f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, OH_Drawing_PenSetshaderEffect, TestSize.Level1) 1195f6603c60Sopenharmony_ci{ 1196f6603c60Sopenharmony_ci OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate(); 1197f6603c60Sopenharmony_ci EXPECT_EQ(canvas == nullptr, false); 1198f6603c60Sopenharmony_ci OH_Drawing_Point* startPt = OH_Drawing_PointCreate(100, 400); 1199f6603c60Sopenharmony_ci OH_Drawing_Point* endPt = OH_Drawing_PointCreate(200, 500); 1200f6603c60Sopenharmony_ci uint32_t color[] = {0xffff0000, 0xff00ff00}; 1201f6603c60Sopenharmony_ci float pos[] = {0., 1.0}; 1202f6603c60Sopenharmony_ci OH_Drawing_ShaderEffect* linearGradient = OH_Drawing_ShaderEffectCreateLinearGradient(startPt, endPt, 1203f6603c60Sopenharmony_ci color, pos, 2, OH_Drawing_TileMode::CLAMP); 1204f6603c60Sopenharmony_ci OH_Drawing_Pen* pen = OH_Drawing_PenCreate(); 1205f6603c60Sopenharmony_ci OH_Drawing_PenSetShaderEffect(pen, linearGradient); 1206f6603c60Sopenharmony_ci OH_Drawing_CanvasAttachPen(canvas, pen); 1207f6603c60Sopenharmony_ci OH_Drawing_Rect* rect = OH_Drawing_RectCreate(100, 400, 200, 500); 1208f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRect(canvas, rect); 1209f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 1210f6603c60Sopenharmony_ci OH_Drawing_PenDestroy(pen); 1211f6603c60Sopenharmony_ci OH_Drawing_ShaderEffectDestroy(linearGradient); 1212f6603c60Sopenharmony_ci OH_Drawing_PointDestroy(startPt); 1213f6603c60Sopenharmony_ci OH_Drawing_PointDestroy(endPt); 1214f6603c60Sopenharmony_ci OH_Drawing_CanvasDestroy(canvas); 1215f6603c60Sopenharmony_ci} 1216f6603c60Sopenharmony_ci/* 1217f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawRegion038 1218f6603c60Sopenharmony_ci * @tc.desc: test for DrawRegion 1219f6603c60Sopenharmony_ci * @tc.size : MediumTest 1220f6603c60Sopenharmony_ci * @tc.type : Function 1221f6603c60Sopenharmony_ci * @tc.level : Level 1 1222f6603c60Sopenharmony_ci */ 1223f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawRegion038, TestSize.Level1) 1224f6603c60Sopenharmony_ci{ 1225f6603c60Sopenharmony_ci OH_Drawing_Region* region=OH_Drawing_RegionCreate(); 1226f6603c60Sopenharmony_ci OH_Drawing_Rect* rect=OH_Drawing_RectCreate(0.0f, 0.0f, 256.0f, 256.0f); 1227f6603c60Sopenharmony_ci OH_Drawing_RegionSetRect(region, rect); 1228f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawRegion(canvas_, region); 1229f6603c60Sopenharmony_ci} 1230f6603c60Sopenharmony_ci 1231f6603c60Sopenharmony_ci/* 1232f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawBackground039 1233f6603c60Sopenharmony_ci * @tc.desc: test for DrawBackground 1234f6603c60Sopenharmony_ci * @tc.size : MediumTest 1235f6603c60Sopenharmony_ci * @tc.type : Function 1236f6603c60Sopenharmony_ci * @tc.level : Level 1 1237f6603c60Sopenharmony_ci */ 1238f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawBackground039, TestSize.Level1) 1239f6603c60Sopenharmony_ci{ 1240f6603c60Sopenharmony_ci OH_Drawing_Brush* brush = OH_Drawing_BrushCreate(); 1241f6603c60Sopenharmony_ci OH_Drawing_BrushSetColor(brush, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00)); 1242f6603c60Sopenharmony_ci OH_Drawing_CanvasDrawBackground(canvas_, brush); 1243f6603c60Sopenharmony_ci} 1244f6603c60Sopenharmony_ci 1245f6603c60Sopenharmony_ci/* 1246f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_DrawColor046 1247f6603c60Sopenharmony_ci * @tc.desc: test for DrawColor 1248f6603c60Sopenharmony_ci * @tc.type: FUNC 1249f6603c60Sopenharmony_ci * @tc.require: SR000S9F0C 1250f6603c60Sopenharmony_ci */ 1251f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_DrawColor046, TestSize.Level1) 1252f6603c60Sopenharmony_ci{ 1253f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_CanvasDrawColor(nullptr, 0xFFFF0000, OH_Drawing_BlendMode::BLEND_MODE_SRC), 1254f6603c60Sopenharmony_ci OH_DRAWING_ERROR_INVALID_PARAMETER); 1255f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_CanvasDrawColor(canvas_, 0xFFFF0000, OH_Drawing_BlendMode::BLEND_MODE_COLOR), 1256f6603c60Sopenharmony_ci OH_DRAWING_SUCCESS); 1257f6603c60Sopenharmony_ci} 1258f6603c60Sopenharmony_ci 1259f6603c60Sopenharmony_ci/* 1260f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_IsClipEmpty042 1261f6603c60Sopenharmony_ci * @tc.desc: test for if clip is empty 1262f6603c60Sopenharmony_ci * @tc.type: FUNC 1263f6603c60Sopenharmony_ci * @tc.require: AR000GTO5R 1264f6603c60Sopenharmony_ci */ 1265f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_IsClipEmpty042, TestSize.Level1) 1266f6603c60Sopenharmony_ci{ 1267f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 1268f6603c60Sopenharmony_ci OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE}; 1269f6603c60Sopenharmony_ci // 720: bitmap's width, 720: bitmap's height 1270f6603c60Sopenharmony_ci constexpr uint32_t width = 720; 1271f6603c60Sopenharmony_ci constexpr uint32_t height = 720; 1272f6603c60Sopenharmony_ci OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat); 1273f6603c60Sopenharmony_ci OH_Drawing_CanvasBind(canvas_, bitmap); 1274f6603c60Sopenharmony_ci 1275f6603c60Sopenharmony_ci // 150.0f: rect's left, 100.0f: rect's top, 500.0f: rect's right, 500.0f: rect's bottom 1276f6603c60Sopenharmony_ci OH_Drawing_Rect* rect = OH_Drawing_RectCreate(150.0f, 100.0f, 500.f, 500.f); 1277f6603c60Sopenharmony_ci 1278f6603c60Sopenharmony_ci OH_Drawing_CanvasClipRect(canvas_, rect, OH_Drawing_CanvasClipOp::INTERSECT, false); 1279f6603c60Sopenharmony_ci 1280f6603c60Sopenharmony_ci bool isClipEmpty = false; 1281f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_CanvasIsClipEmpty(canvas_, &isClipEmpty), OH_DRAWING_SUCCESS); 1282f6603c60Sopenharmony_ci EXPECT_EQ(isClipEmpty, false); 1283f6603c60Sopenharmony_ci 1284f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 1285f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 1286f6603c60Sopenharmony_ci} 1287f6603c60Sopenharmony_ci 1288f6603c60Sopenharmony_ci/* 1289f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_GetImageInfo043 1290f6603c60Sopenharmony_ci * @tc.desc: test for Gets ImageInfo of Canvas. 1291f6603c60Sopenharmony_ci * @tc.type: FUNC 1292f6603c60Sopenharmony_ci * @tc.require: AR000GTO5R 1293f6603c60Sopenharmony_ci */ 1294f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_GetImageInfo043, TestSize.Level1) 1295f6603c60Sopenharmony_ci{ 1296f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 1297f6603c60Sopenharmony_ci OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE}; 1298f6603c60Sopenharmony_ci // 720: bitmap's width, 720: bitmap's height 1299f6603c60Sopenharmony_ci constexpr uint32_t width = 720; 1300f6603c60Sopenharmony_ci constexpr uint32_t height = 720; 1301f6603c60Sopenharmony_ci OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat); 1302f6603c60Sopenharmony_ci OH_Drawing_CanvasBind(canvas_, bitmap); 1303f6603c60Sopenharmony_ci OH_Drawing_Image_Info* imageInfo = new OH_Drawing_Image_Info(); 1304f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_CanvasGetImageInfo(canvas_, imageInfo), OH_DRAWING_SUCCESS); 1305f6603c60Sopenharmony_ci EXPECT_EQ(720, imageInfo->width); 1306f6603c60Sopenharmony_ci EXPECT_EQ(720, imageInfo->height); 1307f6603c60Sopenharmony_ci EXPECT_EQ(1, imageInfo->alphaType); 1308f6603c60Sopenharmony_ci EXPECT_EQ(4, imageInfo->colorType); 1309f6603c60Sopenharmony_ci delete imageInfo; 1310f6603c60Sopenharmony_ci} 1311f6603c60Sopenharmony_ci 1312f6603c60Sopenharmony_ci 1313f6603c60Sopenharmony_ci/* 1314f6603c60Sopenharmony_ci * @tc.name: NativeDrawingCanvasTest_ClipRegion044 1315f6603c60Sopenharmony_ci * @tc.desc: test for Drawing Canvas Clip Region. 1316f6603c60Sopenharmony_ci * @tc.type: FUNC 1317f6603c60Sopenharmony_ci * @tc.require: AR000GTO5R 1318f6603c60Sopenharmony_ci */ 1319f6603c60Sopenharmony_ciHWTEST_F(NativeDrawingCanvasTest, NativeDrawingCanvasTest_ClipRegion044, TestSize.Level1) 1320f6603c60Sopenharmony_ci{ 1321f6603c60Sopenharmony_ci OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate(); 1322f6603c60Sopenharmony_ci OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE}; 1323f6603c60Sopenharmony_ci constexpr uint32_t width = 720; // 720: width of canvas 1324f6603c60Sopenharmony_ci constexpr uint32_t height = 720; // 720: height of canvas 1325f6603c60Sopenharmony_ci OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat); 1326f6603c60Sopenharmony_ci OH_Drawing_CanvasBind(canvas_, bitmap); 1327f6603c60Sopenharmony_ci 1328f6603c60Sopenharmony_ci OH_Drawing_Region *region = OH_Drawing_RegionCreate(); 1329f6603c60Sopenharmony_ci // 0.0f: rect's left, 0.0f: rect's top, 720.0f: rect's right, 720.0f: rect's bottom 1330f6603c60Sopenharmony_ci OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0.0f, 0.0f, 720.f, 720.f); 1331f6603c60Sopenharmony_ci OH_Drawing_RegionSetRect(region, rect); 1332f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_CanvasClipRegion(canvas_, region, OH_Drawing_CanvasClipOp::INTERSECT), OH_DRAWING_SUCCESS); 1333f6603c60Sopenharmony_ci EXPECT_EQ(OH_Drawing_CanvasClipRegion(nullptr, region, OH_Drawing_CanvasClipOp::INTERSECT), 1334f6603c60Sopenharmony_ci OH_DRAWING_ERROR_INVALID_PARAMETER); 1335f6603c60Sopenharmony_ci 1336f6603c60Sopenharmony_ci EXPECT_EQ(720, OH_Drawing_CanvasGetWidth(canvas_)); 1337f6603c60Sopenharmony_ci EXPECT_EQ(720, OH_Drawing_CanvasGetHeight(canvas_)); 1338f6603c60Sopenharmony_ci 1339f6603c60Sopenharmony_ci OH_Drawing_RegionDestroy(region); 1340f6603c60Sopenharmony_ci OH_Drawing_RectDestroy(rect); 1341f6603c60Sopenharmony_ci OH_Drawing_BitmapDestroy(bitmap); 1342f6603c60Sopenharmony_ci} 1343f6603c60Sopenharmony_ci} // namespace Drawing 1344f6603c60Sopenharmony_ci} // namespace Rosen 1345f6603c60Sopenharmony_ci} // namespace OHOS