提交 07bd13ee 编写于 作者: P pssea

Description: clip circle for image and screen short error

issueNo: https://gitee.com/openharmony/graphic_ui/issues/I3W6UV
Feature or Bugfix: Feature
Binary Source:No
Signed-off-by: Nlizhiqi <lizhiqi1@huawei.com>
上级 51037f65
......@@ -938,6 +938,7 @@ bool UIView::GetBitmap(ImageInfo& bitmap)
newBufferInfo.width = bufferWidth;
newBufferInfo.height = bufferHeight;
newBufferInfo.mode = bufferInfo->mode;
newBufferInfo.stride = bufferWidth * DrawUtils::GetByteSizeByColorMode(bitmap.header.colorMode);
RootView::GetInstance()->SaveDrawContext();
RootView::GetInstance()->UpdateBufferInfo(&newBufferInfo);
......
......@@ -17,6 +17,7 @@
#include <cstdlib>
#include "draw/clip_utils.h"
#include "draw/draw_arc.h"
#include "draw/draw_curve.h"
#include "draw/draw_line.h"
......@@ -67,7 +68,7 @@ void BaseGfxEngine::DrawRect(BufferInfo& dst,
DrawRect::Draw(dst, rect, dirtyRect, style, opacity);
}
void BaseGfxEngine::DrawTransform(BufferInfo& dst,
void BaseGfxEngine::DrawTransform(BufferInfo& dst,
const Rect& mask,
const Point& position,
ColorType color,
......@@ -79,6 +80,15 @@ void BaseGfxEngine::DrawTransform(BufferInfo& dst,
opacity, transMap, dataInfo);
}
void BaseGfxEngine::ClipCircle(const ImageInfo* info, float x, float y, float radius)
{
ClipPath path;
path.Circle({x, y}, radius);
ClipImageBlitter blitter(info);
ClipUtils clip;
clip.PerformScan(path, blitter);
}
void BaseGfxEngine::Blit(BufferInfo& dst,
const Point& dstPos,
const BufferInfo& src,
......
......@@ -106,6 +106,9 @@ public:
const TransformMap& transMap,
const TransformDataInfo& dataInfo);
// x/y: center of a circle
virtual void ClipCircle(const ImageInfo* info, float x, float y, float radius);
virtual void Blit(BufferInfo& dst,
const Point& dstPos,
const BufferInfo& src,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册