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