From 4dde056432002abce089ce44118958205d02c6ca Mon Sep 17 00:00:00 2001 From: guanzengkun Date: Wed, 18 Jun 2025 22:01:25 +0800 Subject: [PATCH] =?UTF-8?q?https://gitee.com/openharmony/arkui=5Face=5Feng?= =?UTF-8?q?ine/issues/ICG6CF=3Ffrom=3Dproject-issue=20Description:=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D0328=E5=88=86=E6=94=AF=E7=9A=84Image=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=92=8CImageAnimator=E5=BC=82=E5=B8=B8=E5=80=BC?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20Sig:=20SIG=5FApplicationFramework=20Featur?= =?UTF-8?q?e=20or=20Bugfix:Feature=20Binary=20Source:No=20TDD:Pass=20XTS:P?= =?UTF-8?q?ass=20=E9=A2=84=E6=B5=8B=E8=AF=95:Pass=20Signed-off-by:guanzeng?= =?UTF-8?q?kun=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pattern/image/image_model_static.cpp | 294 +++++++++--------- 1 file changed, 148 insertions(+), 146 deletions(-) diff --git a/frameworks/core/components_ng/pattern/image/image_model_static.cpp b/frameworks/core/components_ng/pattern/image/image_model_static.cpp index 82eb6d1fbd1..194a4db8a0f 100644 --- a/frameworks/core/components_ng/pattern/image/image_model_static.cpp +++ b/frameworks/core/components_ng/pattern/image/image_model_static.cpp @@ -13,74 +13,75 @@ * limitations under the License. */ - #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_IMAGE_IMAGE_MODEL_STATIC_CPP - #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_IMAGE_IMAGE_MODEL_STATIC_CPP - - #include "core/components_ng/pattern/image/image_model_static.h" - - #include "core/components/common/layout/constants.h" - #include "core/components/image/image_theme.h" - #include "core/components_ng/base/frame_node.h" - #include "core/components_ng/pattern/image/image_render_property.h" - #include "core/image/image_source_info.h" - #ifndef ACE_UNITTEST - #include "core/components_ng/base/view_abstract.h" - #endif - #include "interfaces/native/node/resource.h" - - #include "core/components_ng/pattern/text/span_node.h" - - namespace OHOS::Ace::NG { - void ImageModelStatic::SetSmoothEdge(FrameNode* frameNode, const std::optional& value) - { - CHECK_NULL_VOID(frameNode); - if (value) { - ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, SmoothEdge, *value, frameNode); - } else { - ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, SmoothEdge, frameNode); - } - } - - void ImageModelStatic::SetDynamicRangeMode( - FrameNode* frameNode, const std::optional& dynamicRangeMode) - { - CHECK_NULL_VOID(frameNode); - if (dynamicRangeMode) { - ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, DynamicMode, dynamicRangeMode.value(), frameNode); - ACE_UPDATE_NODE_RENDER_CONTEXT(DynamicRangeMode, dynamicRangeMode.value(), frameNode); - } else { - ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, DynamicMode, frameNode); - ACE_RESET_NODE_RENDER_CONTEXT(RenderContext, DynamicRangeMode, frameNode); - } - } - - void ImageModelStatic::SetCopyOption(FrameNode* frameNode, const std::optional& copyOption) - { - CHECK_NULL_VOID(frameNode); - auto pattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern(frameNode); - CHECK_NULL_VOID(pattern); - pattern->SetCopyOption(copyOption.value_or(CopyOptions::None)); - } - - void ImageModelStatic::SetImageRepeat(FrameNode* frameNode, const std::optional& imageRepeat) - { - CHECK_NULL_VOID(frameNode); - if (imageRepeat) { - ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageRepeat, imageRepeat.value(), frameNode); - } else { - ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageRepeat, frameNode); - } - } - - void ImageModelStatic::SetImageRenderMode(FrameNode* frameNode, const std::optional& imageRenderMode) - { - CHECK_NULL_VOID(frameNode); - if (imageRenderMode) { - ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageRenderMode, *imageRenderMode, frameNode); - } else { - ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageRenderMode, frameNode); - } - } +#ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_IMAGE_IMAGE_MODEL_STATIC_CPP +#define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_IMAGE_IMAGE_MODEL_STATIC_CPP + +#include "core/components_ng/pattern/image/image_model_static.h" + +#include "core/components/common/layout/constants.h" +#include "core/components/image/image_theme.h" +#include "core/components_ng/base/frame_node.h" +#include "core/components_ng/pattern/image/image_render_property.h" +#include "core/image/image_source_info.h" +#include "core/pipeline/pipeline_base.h" +#ifndef ACE_UNITTEST +#include "core/components_ng/base/view_abstract.h" +#endif +#include "interfaces/native/node/resource.h" + +#include "core/components_ng/pattern/text/span_node.h" + +namespace OHOS::Ace::NG { +void ImageModelStatic::SetSmoothEdge(FrameNode* frameNode, const std::optional& value) +{ + CHECK_NULL_VOID(frameNode); + if (value) { + ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, SmoothEdge, *value, frameNode); + } else { + ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, SmoothEdge, frameNode); + } +} + +void ImageModelStatic::SetDynamicRangeMode( + FrameNode* frameNode, const std::optional& dynamicRangeMode) +{ + CHECK_NULL_VOID(frameNode); + if (dynamicRangeMode) { + ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, DynamicMode, dynamicRangeMode.value(), frameNode); + ACE_UPDATE_NODE_RENDER_CONTEXT(DynamicRangeMode, dynamicRangeMode.value(), frameNode); + } else { + ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, DynamicMode, frameNode); + ACE_RESET_NODE_RENDER_CONTEXT(RenderContext, DynamicRangeMode, frameNode); + } +} + +void ImageModelStatic::SetCopyOption(FrameNode* frameNode, const std::optional& copyOption) +{ + CHECK_NULL_VOID(frameNode); + auto pattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern(frameNode); + CHECK_NULL_VOID(pattern); + pattern->SetCopyOption(copyOption.value_or(CopyOptions::None)); +} + +void ImageModelStatic::SetImageRepeat(FrameNode* frameNode, const std::optional& imageRepeat) +{ + CHECK_NULL_VOID(frameNode); + if (imageRepeat) { + ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageRepeat, imageRepeat.value(), frameNode); + } else { + ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageRepeat, frameNode); + } +} + +void ImageModelStatic::SetImageRenderMode(FrameNode* frameNode, const std::optional& imageRenderMode) +{ + CHECK_NULL_VOID(frameNode); + if (imageRenderMode) { + ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageRenderMode, *imageRenderMode, frameNode); + } else { + ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageRenderMode, frameNode); + } +} void ImageModelStatic::SetImageMatrix(FrameNode* frameNode, const std::optional& value) { @@ -90,81 +91,82 @@ void ImageModelStatic::SetImageMatrix(FrameNode* frameNode, const std::optional< ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageMatrix, frameNode); } } - - void ImageModelStatic::SetImageFit(FrameNode* frameNode, const std::optional& value) - { - CHECK_NULL_VOID(frameNode); - if (value) { - ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageFit, value.value(), frameNode); - ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageFit, value.value(), frameNode); - } else { - ACE_RESET_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageFit, frameNode); - ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageFit, frameNode); - } - } - - void ImageModelStatic::SetImageSourceSize( - FrameNode* frameNode, const std::optional>& size) - { - CHECK_NULL_VOID(frameNode); - if (size) { - SizeF sourceSize = - SizeF(static_cast(size->first.ConvertToPx()), static_cast(size->second.ConvertToPx())); - ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, SourceSize, sourceSize, frameNode); - } else { - ACE_RESET_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, SourceSize, frameNode); - } - } - - void ImageModelStatic::SetImageFill(FrameNode* frameNode, const std::optional& color) - { - CHECK_NULL_VOID(frameNode); - if (color) { - ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, SvgFillColor, color.value(), frameNode); - ACE_UPDATE_NODE_RENDER_CONTEXT(ForegroundColor, color.value(), frameNode); - } else { - ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, SvgFillColor, frameNode); - ACE_RESET_NODE_RENDER_CONTEXT(RenderContext, ForegroundColor, frameNode); - } - } - - void ImageModelStatic::SetAlt(FrameNode* frameNode, const std::optional& src) - { - CHECK_NULL_VOID(frameNode); - if (src) { - ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, Alt, src.value(), frameNode); - } else { - ACE_RESET_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, Alt, frameNode); - } - } - - void ImageModelStatic::SetImageInterpolation( - FrameNode* frameNode, const std::optional& interpolation) - { - CHECK_NULL_VOID(frameNode); - if (interpolation) { - ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageInterpolation, interpolation.value(), frameNode); - } else { - ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageInterpolation, frameNode); - } - } - - void ImageModelStatic::SetOrientation(FrameNode* frameNode, const std::optional& orientation) - { - const auto orientationValue = orientation.value_or(ImageRotateOrientation::UP); - ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageRotateOrientation, orientationValue, frameNode); - auto pattern = frameNode->GetPattern(); - CHECK_NULL_VOID(pattern); - pattern->SetOrientation(orientationValue); - } - - void ImageModelStatic::SetEnhancedImageQuality(FrameNode* frameNode, const std::optional& imageQuality) - { - CHECK_NULL_VOID(frameNode); - auto pattern = frameNode->GetPattern(); - CHECK_NULL_VOID(pattern); - pattern->SetImageQuality(imageQuality.value_or(AIImageQuality::NONE)); - } - } // namespace OHOS::Ace::NG - #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_IMAGE_IMAGE_MODEL_STATIC_CPP - \ No newline at end of file + +void ImageModelStatic::SetImageFit(FrameNode* frameNode, const std::optional& value) +{ + CHECK_NULL_VOID(frameNode); + if (value) { + ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageFit, value.value(), frameNode); + ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageFit, value.value(), frameNode); + } else { + ACE_RESET_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageFit, frameNode); + ACE_RESET_NODE_PAINT_PROPERTY(ImageRenderProperty, ImageFit, frameNode); + } +} + +void ImageModelStatic::SetImageSourceSize( + FrameNode* frameNode, const std::optional>& size) +{ + CHECK_NULL_VOID(frameNode); + if (size) { + SizeF sourceSize = + SizeF(static_cast(size->first.ConvertToPx()), static_cast(size->second.ConvertToPx())); + ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, SourceSize, sourceSize, frameNode); + } else { + ACE_RESET_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, SourceSize, frameNode); + } +} + +void ImageModelStatic::SetImageFill(FrameNode* frameNode, const std::optional& color) +{ + CHECK_NULL_VOID(frameNode); + if (color) { + ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, SvgFillColor, color.value(), frameNode); + ACE_UPDATE_NODE_RENDER_CONTEXT(ForegroundColor, color.value(), frameNode); + } else { + auto pipelineContext = PipelineBase::GetCurrentContext(); + CHECK_NULL_VOID(pipelineContext); + auto theme = pipelineContext->GetTheme(); + CHECK_NULL_VOID(theme); + auto fillColor = theme->GetFillColor(); + ACE_UPDATE_NODE_PAINT_PROPERTY(ImageRenderProperty, SvgFillColor, fillColor, frameNode); + ACE_UPDATE_NODE_RENDER_CONTEXT(ForegroundColor, fillColor, frameNode); + } +} + +void ImageModelStatic::SetAlt(FrameNode* frameNode, const std::optional& src) +{ + CHECK_NULL_VOID(frameNode); + if (src) { + ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, Alt, src.value(), frameNode); + } else { + ACE_RESET_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, Alt, frameNode); + } +} + +void ImageModelStatic::SetImageInterpolation( + FrameNode* frameNode, const std::optional& interpolation) +{ + CHECK_NULL_VOID(frameNode); + ACE_UPDATE_NODE_PAINT_PROPERTY( + ImageRenderProperty, ImageInterpolation, interpolation.value_or(ImageInterpolation::NONE), frameNode); +} + +void ImageModelStatic::SetOrientation(FrameNode* frameNode, const std::optional& orientation) +{ + const auto orientationValue = orientation.value_or(ImageRotateOrientation::UP); + ACE_UPDATE_NODE_LAYOUT_PROPERTY(ImageLayoutProperty, ImageRotateOrientation, orientationValue, frameNode); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_VOID(pattern); + pattern->SetOrientation(orientationValue); +} + +void ImageModelStatic::SetEnhancedImageQuality(FrameNode* frameNode, const std::optional& imageQuality) +{ + CHECK_NULL_VOID(frameNode); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_VOID(pattern); + pattern->SetImageQuality(imageQuality.value_or(AIImageQuality::NONE)); +} +} // namespace OHOS::Ace::NG +#endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_IMAGE_IMAGE_MODEL_STATIC_CPP -- Gitee