diff --git a/include/ge_shader_filter.h b/include/ge_shader_filter.h index 9f0ac69d5511398bf87d6b4f5e80c17b5dacc670..5880921568ec63821669f80708c5f62299ba864b 100644 --- a/include/ge_shader_filter.h +++ b/include/ge_shader_filter.h @@ -21,8 +21,8 @@ #include #include "draw/canvas.h" -#include "image/image.h" #include "ge_shader_filter_params.h" +#include "image/image.h" namespace OHOS { namespace Rosen { diff --git a/include/ge_shader_filter_params.h b/include/ge_shader_filter_params.h index 2f79fdbea69441832ed5ca4084d2bd712aed0424..491da81a381ed4bfa8450217aba54cf5b33ceebe 100644 --- a/include/ge_shader_filter_params.h +++ b/include/ge_shader_filter_params.h @@ -30,11 +30,11 @@ namespace Rosen { namespace Drawing { struct CanvasInfo { - float geoWidth_ = 0.0f; - float geoHeight_ = 0.0f; - float tranX_ = 0.0f; - float tranY_ = 0.0f; - Drawing::Matrix mat_; + float geoWidth = 0.0f; + float geoHeight = 0.0f; + float tranX = 0.0f; + float tranY = 0.0f; + Drawing::Matrix mat; }; constexpr char GE_FILTER_AI_BAR[] = "AIBAR"; diff --git a/src/ge_color_gradient_shader_filter.cpp b/src/ge_color_gradient_shader_filter.cpp index 69224bdcfe65b512fb62ede1f86caaaced91462b..1271ff7807d67f03fd57eabff0de5c9b8c359048 100644 --- a/src/ge_color_gradient_shader_filter.cpp +++ b/src/ge_color_gradient_shader_filter.cpp @@ -58,10 +58,15 @@ std::shared_ptr GEColorGradientShaderFilter::OnProcessImage(Draw float strength[ARRAY_SIZE] = {0.0}; // 0.0 default if (!CheckInParams(color, position, strength, ARRAY_SIZE)) { return image; } - Drawing::Matrix matrix = canvasInfo_.mat_; - matrix.PostTranslate(-canvasInfo_.tranX_, -canvasInfo_.tranY_); + Drawing::Matrix matrix = canvasInfo_.mat; + matrix.PostTranslate(-canvasInfo_.tranX, -canvasInfo_.tranY); Drawing::Matrix invertMatrix; - matrix.Invert(invertMatrix); + + if (!matrix.Invert(invertMatrix)) { + LOGE("GEColorGradientShaderFilter::ProcessImage Invert matrix failed."); + return image; + } + auto srcImageShader = Drawing::ShaderEffect::CreateImageShader(*image, Drawing::TileMode::CLAMP, Drawing::TileMode::CLAMP, Drawing::SamplingOptions(Drawing::FilterMode::LINEAR), invertMatrix); if (srcImageShader == nullptr) { @@ -70,14 +75,14 @@ std::shared_ptr GEColorGradientShaderFilter::OnProcessImage(Draw } std::shared_ptr builder = - PreProcessColorGradientBuilder(canvasInfo_.geoWidth_, canvasInfo_.geoHeight_); + PreProcessColorGradientBuilder(canvasInfo_.geoWidth, canvasInfo_.geoHeight); if (!builder) { LOGE("GEColorGradientShaderFilter::OnProcessImage mask builder error\n"); return image; } builder->SetChild("srcImageShader", srcImageShader); - builder->SetUniform("iResolution", canvasInfo_.geoWidth_, canvasInfo_.geoHeight_); + builder->SetUniform("iResolution", canvasInfo_.geoWidth, canvasInfo_.geoHeight); builder->SetUniform("color", color, ARRAY_SIZE * COLOR_CHANNEL); builder->SetUniform("position", position, ARRAY_SIZE * POSITION_CHANNEL); builder->SetUniform("strength", strength, ARRAY_SIZE); diff --git a/src/ge_direction_light_shader_filter.cpp b/src/ge_direction_light_shader_filter.cpp index 8f6d11932fe883b7f90db1f79a9892d489d7ea6a..8e0fc370ee5a5f16c52c5d94081fcb65e5091bef 100644 --- a/src/ge_direction_light_shader_filter.cpp +++ b/src/ge_direction_light_shader_filter.cpp @@ -267,7 +267,7 @@ std::shared_ptr GEDirectionLightShaderFilter::OnProcessImage(Dra LOGE("GEDirectionLightShaderFilter::OnProcessImage lightingBuilder is nullptr"); return image; } - auto maskShader = params_.mask->GenerateDrawingShader(canvasInfo_.geoWidth_, canvasInfo_.geoHeight_); + auto maskShader = params_.mask->GenerateDrawingShader(canvasInfo_.geoWidth, canvasInfo_.geoHeight); if (maskShader == nullptr) { LOGE("GEDirectionLightShaderFilter::OnProcessImage mask generate failed"); return image; @@ -286,8 +286,8 @@ std::shared_ptr GEDirectionLightShaderFilter::OnProcessImage(Dra } } - Drawing::Matrix imageMatrix = canvasInfo_.mat_; - imageMatrix.PostTranslate(-canvasInfo_.tranX_, -canvasInfo_.tranY_); + Drawing::Matrix imageMatrix = canvasInfo_.mat; + imageMatrix.PostTranslate(-canvasInfo_.tranX, -canvasInfo_.tranY); Drawing::Matrix imageInvertMatrix; if (!imageMatrix.Invert(imageInvertMatrix)) { LOGE("GEDirectionLightShaderFilter::OnProcessImage Invert imageMatrix failed."); @@ -296,7 +296,7 @@ std::shared_ptr GEDirectionLightShaderFilter::OnProcessImage(Dra auto imageShader = Drawing::ShaderEffect::CreateImageShader(*image, Drawing::TileMode::CLAMP, Drawing::TileMode::CLAMP, Drawing::SamplingOptions(Drawing::FilterMode::LINEAR), imageInvertMatrix); lightingBuilder->SetChild("image", imageShader); - lightingBuilder->SetUniform("iResolution", canvasInfo_.geoWidth_, canvasInfo_.geoHeight_); + lightingBuilder->SetUniform("iResolution", canvasInfo_.geoWidth, canvasInfo_.geoHeight); lightingBuilder->SetUniform("lightDirection", params_.lightDirection.x_, params_.lightDirection.y_, -params_.lightDirection.z_); lightingBuilder->SetUniformVec4("lightColor", diff --git a/src/ge_displacement_distort_shader_filter.cpp b/src/ge_displacement_distort_shader_filter.cpp index 22ddc9adf78d9352abfebfee5355a6697dbed310..1565e7789d960860be647ed885dcec52ae7e2062 100644 --- a/src/ge_displacement_distort_shader_filter.cpp +++ b/src/ge_displacement_distort_shader_filter.cpp @@ -40,8 +40,8 @@ std::shared_ptr GEDisplacementDistortFilter::OnProcessImage(Draw return nullptr; } - Drawing::Matrix matrix = canvasInfo_.mat_; - matrix.PostTranslate(-canvasInfo_.tranX_, -canvasInfo_.tranY_); + Drawing::Matrix matrix = canvasInfo_.mat; + matrix.PostTranslate(-canvasInfo_.tranX, -canvasInfo_.tranY); Drawing::Matrix invertMatrix; matrix.Invert(invertMatrix); auto shader = Drawing::ShaderEffect::CreateImageShader(*image, Drawing::TileMode::CLAMP, @@ -54,7 +54,7 @@ std::shared_ptr GEDisplacementDistortFilter::OnProcessImage(Draw } auto maskEffectShader = - params_.mask_->GenerateDrawingShaderHasNormal(canvasInfo_.geoWidth_, canvasInfo_.geoHeight_); + params_.mask_->GenerateDrawingShaderHasNormal(canvasInfo_.geoWidth, canvasInfo_.geoHeight); if (!maskEffectShader) { LOGE("GEDisplacementDistortFilter::OnProcessImage maskEffectShader generate failed"); return image; @@ -69,7 +69,7 @@ std::shared_ptr GEDisplacementDistortFilter::OnProcessImage(Draw Drawing::RuntimeShaderBuilder builder(displacementDistortShader); builder.SetChild("image", shader); builder.SetChild("maskEffect", maskEffectShader); - builder.SetUniform("iResolution", canvasInfo_.geoWidth_, canvasInfo_.geoHeight_); + builder.SetUniform("iResolution", canvasInfo_.geoWidth, canvasInfo_.geoHeight); builder.SetUniform("factor", params_.factor_.first, params_.factor_.second); auto invertedImage = builder.MakeImage(canvas.GetGPUContext().get(), &(matrix), imageInfo, false); diff --git a/src/ge_linear_gradient_blur_shader_filter.cpp b/src/ge_linear_gradient_blur_shader_filter.cpp index 3be52b705d4a55ace973c9d7a84a6e33a39b596e..38c109a8d24f6f0734b8ac8cbd09fae6443529e2 100644 --- a/src/ge_linear_gradient_blur_shader_filter.cpp +++ b/src/ge_linear_gradient_blur_shader_filter.cpp @@ -65,7 +65,7 @@ std::shared_ptr GELinearGradientBlurShaderFilter::ProcessImageDD Drawing::Canvas& canvas, const std::shared_ptr image, uint8_t directionBias) { auto& para = linearGradientBlurPara_; - auto clipIPadding = Drawing::Rect(0, 0, canvasInfo_.geoWidth_ * imageScale_, canvasInfo_.geoHeight_ * imageScale_); + auto clipIPadding = Drawing::Rect(0, 0, canvasInfo_.geoWidth * imageScale_, canvasInfo_.geoHeight * imageScale_); uint8_t direction = static_cast(para->direction_); TransformGradientBlurDirection(direction, directionBias); float radius = para->blurRadius_; @@ -101,13 +101,13 @@ std::shared_ptr GELinearGradientBlurShaderFilter::OnProcessImage return image; } LOGD("GELinearGradientBlurShaderFilter::DrawImageRect%{public}f, %{public}f, %{public}f, %{public}f, %{public}f " - "%{public}d", para->blurRadius_, canvasInfo_.geoWidth_, canvasInfo_.geoHeight_, canvasInfo_.tranX_, - canvasInfo_.tranY_, (int)isOffscreenCanvas_); + "%{public}d", para->blurRadius_, canvasInfo_.geoWidth, canvasInfo_.geoHeight, canvasInfo_.tranX, + canvasInfo_.tranY, (int)isOffscreenCanvas_); ComputeScale(dst.GetWidth(), dst.GetHeight(), !para->isRadiusGradient_); Drawing::Point pts[2]; uint8_t direction = static_cast(para->direction_); - auto clipIPadding = Drawing::Rect(0, 0, canvasInfo_.geoWidth_ * imageScale_, canvasInfo_.geoHeight_ * imageScale_); + auto clipIPadding = Drawing::Rect(0, 0, canvasInfo_.geoWidth * imageScale_, canvasInfo_.geoHeight * imageScale_); bool result = GetGEGradientDirectionPoints(pts, clipIPadding, static_cast(direction)); if (!result) { return image; @@ -125,7 +125,7 @@ std::shared_ptr GELinearGradientBlurShaderFilter::OnProcessImage const auto& RSFilter = para->linearGradientBlurFilter_; auto filter = RSFilter; auto alphaGradientShader = - mask->GenerateDrawingShader(canvasInfo_.geoWidth_ * imageScale_, canvasInfo_.geoHeight_ * imageScale_); + mask->GenerateDrawingShader(canvasInfo_.geoWidth * imageScale_, canvasInfo_.geoHeight * imageScale_); if (alphaGradientShader == nullptr) { LOGE("GELinearGradientBlurShaderFilter::alphaGradientShader null"); return image; @@ -257,9 +257,9 @@ bool GELinearGradientBlurShaderFilter::ProcessGradientDirectionPoints( default: { } } - Drawing::Matrix pointsMat = canvasInfo_.mat_; + Drawing::Matrix pointsMat = canvasInfo_.mat; if (isOffscreenCanvas_) { - pointsMat.PostTranslate(-canvasInfo_.tranX_, -canvasInfo_.tranY_); + pointsMat.PostTranslate(-canvasInfo_.tranX, -canvasInfo_.tranY); } std::vector points(pts, pts + 2); // 2 size of pts pointsMat.MapPoints(points, points, points.size()); diff --git a/src/ge_mask_transition_shader_filter.cpp b/src/ge_mask_transition_shader_filter.cpp index b557af1fe9e9d93b6e345c6da3b3836c878deec3..aa6f2ef7e8903be422c3b9220fcb0730abcf273c 100644 --- a/src/ge_mask_transition_shader_filter.cpp +++ b/src/ge_mask_transition_shader_filter.cpp @@ -39,8 +39,8 @@ std::shared_ptr GEMaskTransitionShaderFilter::OnProcessImage(Dra return image; } - Drawing::Matrix matrix = canvasInfo_.mat_; - matrix.PostTranslate(-canvasInfo_.tranX_, -canvasInfo_.tranY_); + Drawing::Matrix matrix = canvasInfo_.mat; + matrix.PostTranslate(-canvasInfo_.tranX, -canvasInfo_.tranY); Drawing::Matrix invertMatrix; if (!matrix.Invert(invertMatrix)) { GE_LOGE("GEMaskTransitionShaderFilter::OnProcessImage Invert matrix failed"); @@ -62,7 +62,7 @@ std::shared_ptr GEMaskTransitionShaderFilter::OnProcessImage(Dra return image; } - auto maskEffectShader = params_.mask->GenerateDrawingShader(canvasInfo_.geoWidth_, canvasInfo_.geoHeight_); + auto maskEffectShader = params_.mask->GenerateDrawingShader(canvasInfo_.geoWidth, canvasInfo_.geoHeight); if (maskEffectShader == nullptr) { GE_LOGE("GEMaskTransitionShaderFilter::OnProcessImage maskEffectShader generate failed"); return image; diff --git a/src/ge_sound_wave_filter.cpp b/src/ge_sound_wave_filter.cpp index 62da984f7d121f799c85ac54acad694a792f4836..45410d7336012a0bc89fd2183eeb1aafe8097c0b 100644 --- a/src/ge_sound_wave_filter.cpp +++ b/src/ge_sound_wave_filter.cpp @@ -61,10 +61,13 @@ std::shared_ptr GESoundWaveFilter::OnProcessImage(Drawing::Canva return nullptr; } - Drawing::Matrix matrix = canvasInfo_.mat_; - matrix.PostTranslate(-canvasInfo_.tranX_, -canvasInfo_.tranY_); + Drawing::Matrix matrix = canvasInfo_.mat; + matrix.PostTranslate(-canvasInfo_.tranX, -canvasInfo_.tranY); Drawing::Matrix invertMatrix; - matrix.Invert(invertMatrix); + if (!matrix.Invert(invertMatrix)) { + LOGE("GESoundWaveFilter::ProcessImage Invert matrix"); + } + auto shader = Drawing::ShaderEffect::CreateImageShader(*image, Drawing::TileMode::CLAMP, Drawing::TileMode::CLAMP, Drawing::SamplingOptions(Drawing::FilterMode::LINEAR), invertMatrix); auto imageInfo = image->GetImageInfo(); @@ -86,7 +89,7 @@ std::shared_ptr GESoundWaveFilter::OnProcessImage(Drawing::Canva Drawing::RuntimeShaderBuilder builder(soundWaveShader); builder.SetChild("image", shader); - builder.SetUniform("iResolution", canvasInfo_.geoWidth_, canvasInfo_.geoHeight_); + builder.SetUniform("iResolution", canvasInfo_.geoWidth, canvasInfo_.geoHeight); builder.SetUniform("colorA", colorA, COLOR_CHANNEL); builder.SetUniform("colorB", colorB, COLOR_CHANNEL); builder.SetUniform("colorC", colorC, COLOR_CHANNEL); diff --git a/src/ge_visual_effect.cpp b/src/ge_visual_effect.cpp index 2aee6e0e9e622d3aa3a6a4152e8e293a0121c5f5..3ef84bc5bb1526b2899fad1de7f7d47405ccc8bf 100644 --- a/src/ge_visual_effect.cpp +++ b/src/ge_visual_effect.cpp @@ -31,11 +31,7 @@ GEVisualEffect::GEVisualEffect( const std::string& name, DrawingPaintType type, const std::optional& canvasInfo) : visualEffectName_(name), type_(type), visualEffectImpl_(std::make_unique(name)) { - if (canvasInfo) { - canvasInfo_ = canvasInfo.value(); - } else { - canvasInfo_ = Drawing::CanvasInfo(); - } + canvasInfo_ = canvasInfo.value_or(Drawing::CanvasInfo()); } GEVisualEffect::~GEVisualEffect() {} diff --git a/test/unittest/ge_color_gradient_shader_filter_test.cpp b/test/unittest/ge_color_gradient_shader_filter_test.cpp index 5ee864fb2304b247d4639241fd6501c749616b09..25259faa0e1df8c6ac7fdf9b186a8c6ee55c0a58 100644 --- a/test/unittest/ge_color_gradient_shader_filter_test.cpp +++ b/test/unittest/ge_color_gradient_shader_filter_test.cpp @@ -104,13 +104,13 @@ HWTEST_F(GEColorGradientShaderFilterTest, OnProcessImage_002, TestSize.Level0) // 1.0, 0.0, 0.0, 1.0 is the color rgba params std::vector colors = { 1.0f, 0.0f, 0.0f, 1.0f }; - std::vector poitions = { 1.0f, 1.0f }; // 1.0, 1.0 is poition xy params + std::vector positions = { 1.0f, 1.0f }; // 1.0, 1.0 is positions of xy params std::vector strengths = { 0.5f }; // 0.5 is strength params Drawing::GEColorGradientShaderFilterParams params; auto filter = std::make_unique(params); EXPECT_EQ(filter->OnProcessImage(canvas_, image_, src_, dst_), image_); - Drawing::GEColorGradientShaderFilterParams params1 { colors, poitions, strengths, nullptr }; + Drawing::GEColorGradientShaderFilterParams params1 { colors, positions, strengths, nullptr }; auto filter1 = std::make_unique(params1); EXPECT_EQ(filter1->OnProcessImage(canvas_, image_, src_, dst_), image_); @@ -138,7 +138,7 @@ HWTEST_F(GEColorGradientShaderFilterTest, CheckInParams_001, TestSize.Level0) // 1.0, 0.0, 0.0, 1.0 is the color rgba params std::vector colors = { 1.0f, 0.0f, 0.0f, 1.0f }; - std::vector positions = { 1.0f, 1.0f }; // 1.0, 1.0 is poition xy params + std::vector positions = { 1.0f, 1.0f }; // 1.0, 1.0 is positions of xy params std::vector strengths = { 0.5f }; // 0.5 is strength params Drawing::GEColorGradientShaderFilterParams params { colors, positions, strengths, nullptr }; auto filter = std::make_unique(params); @@ -174,11 +174,11 @@ HWTEST_F(GEColorGradientShaderFilterTest, PreProcessColorGradientBuilder_001, Te // 1.0, 0.0, 0.0, 1.0 is the color rgba params std::vector colors = { 1.0f, 0.0f, 0.0f, 1.0f }; - std::vector poitions = { 1.0f, 1.0f }; // 1.0, 1.0 is poition xy params + std::vector positions = { 1.0f, 1.0f }; // 1.0, 1.0 is positions of xy params std::vector strengths = { 0.5f }; // 0.5 is strength params float geoWidth = 100; float geoHeight = 100; - Drawing::GEColorGradientShaderFilterParams params { colors, poitions, strengths, nullptr }; + Drawing::GEColorGradientShaderFilterParams params { colors, positions, strengths, nullptr }; auto filter = std::make_unique(params); EXPECT_NE(filter->PreProcessColorGradientBuilder(geoWidth, geoHeight), nullptr); diff --git a/test/unittest/ge_render_test.cpp b/test/unittest/ge_render_test.cpp index f24288bad53d4069c723104209aefa7be97a45c7..6177eaf76ed4273334e6e2623f6a685178bbc2e8 100644 --- a/test/unittest/ge_render_test.cpp +++ b/test/unittest/ge_render_test.cpp @@ -724,7 +724,7 @@ HWTEST_F(GERenderTest, GenerateShaderFilters_007, TestSize.Level1) auto visualEffect = std::make_shared(Drawing::GE_FILTER_COLOR_GRADIENT); std::vector colors = { 1.0f, 0.0f, 0.0f, 1.0f }; - std::vector positions = { 1.0f, 1.0f }; // 1.0, 1.0 is poition xy params + std::vector positions = { 1.0f, 1.0f }; // 1.0, 1.0 is positions of xy params std::vector strengths = { 0.5f }; // 0.5 is strength params visualEffect->SetParam(Drawing::GE_FILTER_COLOR_GRADIENT_COLOR, colors); visualEffect->SetParam(Drawing::GE_FILTER_COLOR_GRADIENT_POSITION, positions); diff --git a/test/unittest/ge_shader_filter_test.cpp b/test/unittest/ge_shader_filter_test.cpp index 7d2392d640a706cc2b6755d18c76b4352c2066ce..e51be26643b3914317c6cf592cb601d30ca36a03 100644 --- a/test/unittest/ge_shader_filter_test.cpp +++ b/test/unittest/ge_shader_filter_test.cpp @@ -48,8 +48,6 @@ void GEShaderFilterTest::TearDownTestCase(void) {} void GEShaderFilterTest::SetUp() { - canvas_.Restore(); - Drawing::Bitmap bmp; Drawing::BitmapFormat format { Drawing::COLORTYPE_RGBA_8888, Drawing::ALPHATYPE_PREMUL }; bmp.Build(50, 50, format); // 50, 50 bitmap size @@ -57,7 +55,7 @@ void GEShaderFilterTest::SetUp() image_ = bmp.MakeImage(); } -void GEShaderFilterTest::TearDown() {} +void GEShaderFilterTest::TearDown() { image_ = nullptr; } /** * @tc.name: SetShaderFilterCanvasinfo_001 @@ -67,18 +65,26 @@ void GEShaderFilterTest::TearDown() {} HWTEST_F(GEShaderFilterTest, SetShaderFilterCanvasinfo_001, TestSize.Level0) { GTEST_LOG_(INFO) << "GEShaderFilterTest SetShaderFilterCanvasinfo_001 start"; - Drawing::CanvasInfo canvasInfo = {100.0f, 100.0f, 0.0f, 0.0f, Drawing::Matrix()}; + Drawing::Matrix matrix = Drawing::Matrix(); + matrix.SetMatrix(1, 2, 3, 4, 5, 6, 7, 8, 9); + Drawing::CanvasInfo canvasInfo = {100.0f, 100.0f, 1.0f, -1.0f, matrix}; // 1.0, 0.0, 0.0, 1.0 is the color rgba params std::vector colors = { 1.0f, 0.0f, 0.0f, 1.0f }; - std::vector poitions = { 1.0f, 1.0f }; // 1.0, 1.0 is poition xy params + std::vector positions = { 1.0f, 1.0f }; // 1.0, 1.0 is positions of xy params std::vector strengths = { 0.5f }; // 0.5 is strength params - Drawing::GEColorGradientShaderFilterParams params { colors, poitions, strengths, nullptr }; + Drawing::GEColorGradientShaderFilterParams params { colors, positions, strengths, nullptr }; auto filter = std::make_unique(params); - EXPECT_NE(filter->canvasInfo_.geoHeight_, canvasInfo.geoHeight_); + EXPECT_NE(filter->canvasInfo_.geoHeight, canvasInfo.geoHeight); + EXPECT_NE(filter->canvasInfo_.geoWidth, canvasInfo.geoWidth); + EXPECT_NE(filter->canvasInfo_.tranX, canvasInfo.tranX); + EXPECT_NE(filter->canvasInfo_.tranY, canvasInfo.tranY); filter->SetShaderFilterCanvasinfo(canvasInfo); - EXPECT_EQ(filter->canvasInfo_.geoHeight_, canvasInfo.geoHeight_); + EXPECT_FLOAT_EQ(filter->canvasInfo_.geoHeight, canvasInfo.geoHeight); + EXPECT_FLOAT_EQ(filter->canvasInfo_.geoWidth, canvasInfo.geoWidth); + EXPECT_FLOAT_EQ(filter->canvasInfo_.tranX, canvasInfo.tranX); + EXPECT_FLOAT_EQ(filter->canvasInfo_.tranY, canvasInfo.tranY); GTEST_LOG_(INFO) << "GEShaderFilterTest SetShaderFilterCanvasinfo_001 end"; } diff --git a/test/unittest/ge_visual_effect_test.cpp b/test/unittest/ge_visual_effect_test.cpp index e206e5a873e6ddb748028ea1aae502488e36aab0..a58b1dd44f29aae514311c05d6b60c89b3901cd9 100644 --- a/test/unittest/ge_visual_effect_test.cpp +++ b/test/unittest/ge_visual_effect_test.cpp @@ -202,13 +202,21 @@ HWTEST_F(GEVisualEffectTest, GetCanvasInfo_001, TestSize.Level1) auto visualEffect1 = std::make_shared(GE_FILTER_KAWASE_BLUR); Drawing::CanvasInfo canvasInfo1 = visualEffect1->GetCanvasInfo(); - EXPECT_EQ(canvasInfo1.geoWidth_, 0.0f); - - Drawing::CanvasInfo canvasInfo2 = {100.0f, 100.0f, 0.0f, 0.0f, Drawing::Matrix()}; + EXPECT_FLOAT_EQ(canvasInfo1.geoWidth, 0.0f); + EXPECT_FLOAT_EQ(canvasInfo1.geoHeight, 0.0f); + EXPECT_FLOAT_EQ(canvasInfo1.tranX, 0.0f); + EXPECT_FLOAT_EQ(canvasInfo1.tranY, 0.0f); + + Drawing::Matrix matrix = Drawing::Matrix(); + matrix.SetMatrix(1, 2, 3, 4, 5, 6, 7, 8, 9); + Drawing::CanvasInfo canvasInfo2 = {100.0f, 100.0f, 1.0f, -1.0f, matrix}; auto visualEffect2 = std::make_shared(GE_FILTER_KAWASE_BLUR, Drawing::DrawingPaintType::BRUSH, canvasInfo2); Drawing::CanvasInfo canvasInfo3 = visualEffect2->GetCanvasInfo(); - EXPECT_EQ(canvasInfo3.geoWidth_, canvasInfo2.geoWidth_); + EXPECT_FLOAT_EQ(canvasInfo3.geoWidth, canvasInfo2.geoWidth); + EXPECT_FLOAT_EQ(canvasInfo3.geoHeight, canvasInfo2.geoHeight); + EXPECT_FLOAT_EQ(canvasInfo3.tranX, canvasInfo2.tranX); + EXPECT_FLOAT_EQ(canvasInfo3.tranY, canvasInfo2.tranY); GTEST_LOG_(INFO) << "GEVisualEffectTest GetCanvasInfo_001 end"; }