diff --git a/rosen/modules/2d_graphics/drawing_ndk/drawing_utils/drawing_canvas_utils.cpp b/rosen/modules/2d_graphics/drawing_ndk/drawing_utils/drawing_canvas_utils.cpp index 5ce3e4bf24ad3c703b485a1968a64d3429de3657..c81c479dd177226b0281a549a645f36eab799db1 100644 --- a/rosen/modules/2d_graphics/drawing_ndk/drawing_utils/drawing_canvas_utils.cpp +++ b/rosen/modules/2d_graphics/drawing_ndk/drawing_utils/drawing_canvas_utils.cpp @@ -24,15 +24,21 @@ using namespace OHOS; using namespace Rosen; void DrawingCanvasUtils::DrawPixelMapRect(Drawing::Canvas* canvas, std::shared_ptr pixelMap, - const Drawing::Rect& src, const Drawing::Rect& dst, const Drawing::SamplingOptions& sampling) + const Drawing::Rect* src, const Drawing::Rect* dst, const Drawing::SamplingOptions* sampling) { #ifdef OHOS_PLATFORM + if (!canvas || !pixelMap || !dst) { + return; + } if (canvas->GetDrawingType() == Drawing::DrawingType::RECORDING) { ExtendRecordingCanvas* canvas_ = reinterpret_cast(canvas); - canvas_->DrawPixelMapRect(pixelMap, src, dst, sampling); + canvas_->DrawPixelMapRect(pixelMap, + src ? *src : Drawing::Rect(0, 0, pixelMap->GetWidth(), pixelMap->GetHeight()), + *dst, sampling ? *sampling : Drawing::SamplingOptions()); return; } std::shared_ptr image = RSPixelMapUtil::ExtractDrawingImage(pixelMap); - canvas->DrawImageRect(*image, src, dst, sampling); + canvas->DrawImageRect(*image, src ? *src : Drawing::Rect(0, 0, pixelMap->GetWidth(), pixelMap->GetHeight()), + *dst, sampling ? *sampling : Drawing::SamplingOptions()); #endif } \ No newline at end of file diff --git a/rosen/modules/2d_graphics/drawing_ndk/drawing_utils/drawing_canvas_utils.h b/rosen/modules/2d_graphics/drawing_ndk/drawing_utils/drawing_canvas_utils.h index 824e1b204823c6fc2afb0f18f00099af36f194fd..c5d7ae5ca6004a185b8086e6c791b70c8933bacd 100644 --- a/rosen/modules/2d_graphics/drawing_ndk/drawing_utils/drawing_canvas_utils.h +++ b/rosen/modules/2d_graphics/drawing_ndk/drawing_utils/drawing_canvas_utils.h @@ -28,7 +28,7 @@ class PixelMap; class DrawingCanvasUtils { public: static void DrawPixelMapRect(OHOS::Rosen::Drawing::Canvas* canvas, std::shared_ptr pixelMap, - const OHOS::Rosen::Drawing::Rect& src, const OHOS::Rosen::Drawing::Rect& dst, - const OHOS::Rosen::Drawing::SamplingOptions& sampling); + const OHOS::Rosen::Drawing::Rect* src, const OHOS::Rosen::Drawing::Rect* dst, + const OHOS::Rosen::Drawing::SamplingOptions* sampling); }; #endif // DRAWING_CANVAS_H \ No newline at end of file diff --git a/rosen/modules/2d_graphics/drawing_ndk/src/drawing_canvas.cpp b/rosen/modules/2d_graphics/drawing_ndk/src/drawing_canvas.cpp index 6bd8bf1ac77e19f00dc5d46712857d143e49d1ec..ca8ee0e69533937c3dd3c0135d062299d0820f18 100644 --- a/rosen/modules/2d_graphics/drawing_ndk/src/drawing_canvas.cpp +++ b/rosen/modules/2d_graphics/drawing_ndk/src/drawing_canvas.cpp @@ -383,7 +383,8 @@ void OH_Drawing_CanvasDrawPixelMapRect(OH_Drawing_Canvas* cCanvas, OH_Drawing_Pi #ifdef OHOS_PLATFORM DrawingCanvasUtils::DrawPixelMapRect(CastToCanvas(cCanvas), Media::PixelMapNative_GetPixelMap(reinterpret_cast(pixelMap)), - CastToRect(*src), CastToRect(*dst), CastToSamplingOptions(*cSampingOptions)); + reinterpret_cast(src), reinterpret_cast(dst), + reinterpret_cast(cSampingOptions)); #endif }