1 /*
2  * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef RENDER_SERVICE_CLIENT_CORE_PIPELINE_OVERDRAW_RS_CANVAS_LISTENER_H
17 #define RENDER_SERVICE_CLIENT_CORE_PIPELINE_OVERDRAW_RS_CANVAS_LISTENER_H
18 
19 #include "draw/canvas.h"
20 
21 namespace OHOS {
22 namespace Rosen {
23 class RSCanvasListener {
24 public:
RSCanvasListener(Drawing::Canvas & canvas)25     explicit RSCanvasListener(Drawing::Canvas &canvas) : canvas_(canvas) {}
26     virtual ~RSCanvasListener() = default;
Draw()27     virtual void Draw() {}
IsValid()28     virtual bool IsValid() const
29     {
30         return false;
31     }
32 
Name()33     virtual const char *Name() const
34     {
35         return "RSCanvasListener";
36     }
37 
38     // shapes
DrawPoint(const Drawing::Point & point)39     virtual void DrawPoint(const Drawing::Point& point) {};
DrawLine(const Drawing::Point & startPt,const Drawing::Point & endPt)40     virtual void DrawLine(const Drawing::Point& startPt, const Drawing::Point& endPt) {};
DrawRect(const Drawing::Rect & rect)41     virtual void DrawRect(const Drawing::Rect& rect) {};
DrawRoundRect(const Drawing::RoundRect & roundRect)42     virtual void DrawRoundRect(const Drawing::RoundRect& roundRect) {};
DrawNestedRoundRect(const Drawing::RoundRect & outer,const Drawing::RoundRect & inner)43     virtual void DrawNestedRoundRect(const Drawing::RoundRect& outer, const Drawing::RoundRect& inner) {};
DrawArc(const Drawing::Rect & oval,Drawing::scalar startAngle,Drawing::scalar sweepAngle)44     virtual void DrawArc(const Drawing::Rect& oval, Drawing::scalar startAngle, Drawing::scalar sweepAngle) {};
DrawPie(const Drawing::Rect & oval,Drawing::scalar startAngle,Drawing::scalar sweepAngle)45     virtual void DrawPie(const Drawing::Rect& oval, Drawing::scalar startAngle, Drawing::scalar sweepAngle) {};
DrawOval(const Drawing::Rect & oval)46     virtual void DrawOval(const Drawing::Rect& oval) {};
DrawCircle(const Drawing::Point & centerPt,Drawing::scalar radius)47     virtual void DrawCircle(const Drawing::Point& centerPt, Drawing::scalar radius) {};
DrawPath(const Drawing::Path & path)48     virtual void DrawPath(const Drawing::Path& path) {};
DrawBackground(const Drawing::Brush & brush)49     virtual void DrawBackground(const Drawing::Brush& brush) {};
DrawShadow(const Drawing::Path & path,const Drawing::Point3 & planeParams,const Drawing::Point3 & devLightPos,Drawing::scalar lightRadius,Drawing::Color ambientColor,Drawing::Color spotColor,Drawing::ShadowFlags flag)50     virtual void DrawShadow(const Drawing::Path& path, const Drawing::Point3& planeParams,
51         const Drawing::Point3& devLightPos, Drawing::scalar lightRadius,
52         Drawing::Color ambientColor, Drawing::Color spotColor, Drawing::ShadowFlags flag) {};
DrawShadowStyle(const Drawing::Path & path,const Drawing::Point3 & planeParams,const Drawing::Point3 & devLightPos,Drawing::scalar lightRadius,Drawing::Color ambientColor,Drawing::Color spotColor,Drawing::ShadowFlags flag,bool isLimitElevation)53     virtual void DrawShadowStyle(const Drawing::Path& path, const Drawing::Point3& planeParams,
54         const Drawing::Point3& devLightPos, Drawing::scalar lightRadius,
55         Drawing::Color ambientColor, Drawing::Color spotColor, Drawing::ShadowFlags flag, bool isLimitElevation) {};
DrawRegion(const Drawing::Region & region)56     virtual void DrawRegion(const Drawing::Region& region) {};
DrawTextBlob(const Drawing::TextBlob * blob,const Drawing::scalar x,const Drawing::scalar y)57     virtual void DrawTextBlob(const Drawing::TextBlob* blob, const Drawing::scalar x, const Drawing::scalar y) {};
58 
59     // image
DrawBitmap(const Drawing::Bitmap & bitmap,const Drawing::scalar px,const Drawing::scalar py)60     virtual void DrawBitmap(const Drawing::Bitmap& bitmap, const Drawing::scalar px, const Drawing::scalar py) {};
DrawImage(const Drawing::Image & image,const Drawing::scalar px,const Drawing::scalar py,const Drawing::SamplingOptions & sampling)61     virtual void DrawImage(const Drawing::Image& image,
62         const Drawing::scalar px, const Drawing::scalar py, const Drawing::SamplingOptions& sampling) {};
63     virtual void DrawImageRect(const Drawing::Image& image,
64         const Drawing::Rect& src, const Drawing::Rect& dst, const Drawing::SamplingOptions& sampling,
65         Drawing::SrcRectConstraint constraint = Drawing::SrcRectConstraint::STRICT_SRC_RECT_CONSTRAINT) {};
DrawImageRect(const Drawing::Image & image,const Drawing::Rect & dst,const Drawing::SamplingOptions & sampling)66     virtual void DrawImageRect(const Drawing::Image& image,
67         const Drawing::Rect& dst, const Drawing::SamplingOptions& sampling) {};
DrawPicture(const Drawing::Picture & picture)68     virtual void DrawPicture(const Drawing::Picture& picture) {};
69 
Clear(Drawing::ColorQuad color)70     virtual void Clear(Drawing::ColorQuad color) {};
71 
72     // paint
AttachPen(const Drawing::Pen & pen)73     virtual void AttachPen(const Drawing::Pen& pen) {};
AttachBrush(const Drawing::Brush & brush)74     virtual void AttachBrush(const Drawing::Brush& brush) {};
DetachPen()75     virtual void DetachPen() {};
DetachBrush()76     virtual void DetachBrush() {};
77 
78 protected:
79     Drawing::Canvas &canvas_;
80 };
81 } // namespace Rosen
82 } // namespace OHOS
83 
84 #endif // RENDER_SERVICE_CLIENT_CORE_PIPELINE_OVERDRAW_RS_CANVAS_LISTENER_H
85