From 55dddf602599e0c6a27a890fb943ffb554ededb1 Mon Sep 17 00:00:00 2001 From: li_zt <281364103@qq.com> Date: Mon, 22 Jan 2024 15:53:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Edrawing=20api:=20readpixels?= =?UTF-8?q?=20imageinfo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishutian --- .../native_drawing/drawing_canvas.h | 28 +++++++++++++++---- .../graphic_2d/native_drawing/drawing_image.h | 11 ++++++++ .../graphic_2d/native_drawing/drawing_types.h | 23 +++++++++++++-- .../native_drawing/libnative_drawing.ndk.json | 2 ++ 4 files changed, 56 insertions(+), 8 deletions(-) diff --git a/graphic/graphic_2d/native_drawing/drawing_canvas.h b/graphic/graphic_2d/native_drawing/drawing_canvas.h index 8d882ecc4..8fc57c03a 100644 --- a/graphic/graphic_2d/native_drawing/drawing_canvas.h +++ b/graphic/graphic_2d/native_drawing/drawing_canvas.h @@ -482,7 +482,7 @@ void OH_Drawing_CanvasClear(OH_Drawing_Canvas*, uint32_t color); * * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing * @param OH_Drawing_Canvas Indicates the pointer to an OH_Drawing_Canvas object. - * @param OH_Drawing_Matrix Indicates the pointer to an OH_Drawing_Canvas object. + * @param OH_Drawing_Matrix Indicates the pointer to an OH_Drawing_Matrix object. * @since 12 * @version 1.0 */ @@ -494,13 +494,31 @@ void OH_Drawing_CanvasSetMatrix(OH_Drawing_Canvas*, OH_Drawing_Matrix*); * * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing * @param OH_Drawing_Canvas Indicates the pointer to an OH_Drawing_Canvas object. - * @param OH_Drawing_Matrix Indicates the pointer to an OH_Drawing_Image object. + * @param OH_Drawing_Image Indicates the pointer to an OH_Drawing_Image object. * @param OH_Drawing_Rect Indicates the pointer to an OH_Drawing_Rect object. * @param OH_Drawing_SamplingOptions Indicates the pointer to an OH_Drawing_SamplingOptions object. * @since 12 * @version 1.0 */ -void OH_Drawing_CanvasDrawImageRect(OH_Drawing_Canvas*, OH_Drawing_Image*, OH_Drawing_Rect* dst, OH_Drawing_SamplingOptions*); +void OH_Drawing_CanvasDrawImageRect(OH_Drawing_Canvas*, OH_Drawing_Image*, + OH_Drawing_Rect* dst, OH_Drawing_SamplingOptions*); + +/** + * @brief Read pixels data from canvas. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Canvas Indicates the pointer to an OH_Drawing_Canvas object. + * @param OH_Drawing_Image_Info width, height, colorType, and alphaType of dstPixels. + * @param dstPixels destination pixel storage. + * @param dstRowBytes size of one row of pixels. + * @param srcX offset into canvas writable pixels on x-axis. + * @param srcY offset into canvas writable pixels on y-axis. + * @return true if pixels are copied to dstPixels. + * @since 12 + * @version 1.0 + */ +bool OH_Drawing_CanvasReadPixels(OH_Drawing_Canvas*, OH_Drawing_Image_Info*, + void* dstPixels, uint32_t dstRowBytes, int32_t srcX, int32_t srcY); /** * @brief Read pixels data to a bitmap from canvas. @@ -508,8 +526,8 @@ void OH_Drawing_CanvasDrawImageRect(OH_Drawing_Canvas*, OH_Drawing_Image*, OH_Dr * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing * @param OH_Drawing_Canvas Indicates the pointer to an OH_Drawing_Canvas object. * @param OH_Drawing_Bitmap Indicates the pointer to an OH_Drawing_Bitmap object. - * @param srcX offset into SkCanvas writable pixels on x-axis. - * @param srcY offset into SkCanvas writable pixels on y-axis. + * @param srcX offset into canvas writable pixels on x-axis. + * @param srcY offset into canvas writable pixels on y-axis. * @return true if pixels are copied to dstBitmap. * @since 12 * @version 1.0 diff --git a/graphic/graphic_2d/native_drawing/drawing_image.h b/graphic/graphic_2d/native_drawing/drawing_image.h index bf96b7b34..ed2f1f491 100644 --- a/graphic/graphic_2d/native_drawing/drawing_image.h +++ b/graphic/graphic_2d/native_drawing/drawing_image.h @@ -97,6 +97,17 @@ int32_t OH_Drawing_ImageGetWidth(OH_Drawing_Image*); */ int32_t OH_Drawing_ImageGetHeight(OH_Drawing_Image*); +/** + * @brief Gets the image info. + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing + * @param OH_Drawing_Image Indicates the pointer to an OH_Drawing_Image object. + * @param OH_Drawing_Image_Info Indicates the pointer to an OH_Drawing_Image_Info object. + * @since 12 + * @version 1.0 + */ +void OH_Drawing_ImageGetImageInfo(OH_Drawing_Image*, OH_Drawing_Image_Info*); + #ifdef __cplusplus } #endif diff --git a/graphic/graphic_2d/native_drawing/drawing_types.h b/graphic/graphic_2d/native_drawing/drawing_types.h index f3d927d4e..71a59ac76 100644 --- a/graphic/graphic_2d/native_drawing/drawing_types.h +++ b/graphic/graphic_2d/native_drawing/drawing_types.h @@ -201,15 +201,15 @@ typedef struct OH_Drawing_TextBlob OH_Drawing_TextBlob; /** * @brief Defines a image, which is used to describe a two dimensional array of pixels to draw. * - * @since 11 + * @since 12 * @version 1.0 */ typedef struct OH_Drawing_Image OH_Drawing_Image; /** - * @brief Defines a matrix, which is used to describe the transforming coordinates. + * @brief Defines a sampling options, which is used to describe the sampling mode. * - * @since 11 + * @since 12 * @version 1.0 */ typedef struct OH_Drawing_SamplingOptions OH_Drawing_SamplingOptions; @@ -352,6 +352,23 @@ typedef enum { BLEND_MODE_LUMINOSITY, } OH_Drawing_BlendMode; +/** + * @brief Defines image info struct. + * + * @since 12 + * @version 1.0 + */ +typedef struct { + /** storage for width of image */ + int32_t width; + /** storage for height of image */ + int32_t height; + /** storage for color formats */ + OH_Drawing_ColorFormat colorType; + /** storage for alpha formats */ + OH_Drawing_AlphaFormat alphaType; +} OH_Drawing_Image_Info; + #ifdef __cplusplus } #endif diff --git a/graphic/graphic_2d/native_drawing/libnative_drawing.ndk.json b/graphic/graphic_2d/native_drawing/libnative_drawing.ndk.json index 64d2dd988..1b6dbe76d 100644 --- a/graphic/graphic_2d/native_drawing/libnative_drawing.ndk.json +++ b/graphic/graphic_2d/native_drawing/libnative_drawing.ndk.json @@ -45,6 +45,7 @@ { "name": "OH_Drawing_CanvasClear" }, { "name": "OH_Drawing_CanvasSetMatrix" }, { "name": "OH_Drawing_CanvasDrawImageRect" }, + { "name": "OH_Drawing_CanvasReadPixels" }, { "name": "OH_Drawing_CanvasReadPixelsToBitmap" }, { "name": "OH_Drawing_CanvasGetWidth" }, { "name": "OH_Drawing_CanvasGetHeight" }, @@ -194,6 +195,7 @@ { "name": "OH_Drawing_ImageBuildFromBitmap" }, { "name": "OH_Drawing_ImageGetWidth" }, { "name": "OH_Drawing_ImageGetHeight" }, + { "name": "OH_Drawing_ImageGetImageInfo" }, { "name": "OH_Drawing_SamplingOptionsCreate" }, { "name": "OH_Drawing_SamplingOptionsDestroy" }, { -- Gitee