1 /* 2 * Copyright (c) 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 FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_CANVAS_RENDERER_CANVAS_RENDERER_MODEL_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_CANVAS_RENDERER_CANVAS_RENDERER_MODEL_H 18 19 #include <mutex> 20 21 #include "base/geometry/dimension.h" 22 #include "core/components/common/layout/constants.h" 23 #include "core/components_ng/pattern/canvas_renderer/canvas_renderer_type.h" 24 25 namespace OHOS::Ace { 26 class CanvasRendererModel { 27 public: 28 static CanvasRendererModel* GetInstance(); 29 virtual ~CanvasRendererModel() = default; 30 31 virtual void SetFillText(const BaseInfo& baseInfo, const FillTextInfo& fillTextInfo) = 0; 32 virtual void SetStrokeText(const BaseInfo& baseInfo, const FillTextInfo& fillTextInfo) = 0; 33 virtual void SetAntiAlias(const BaseInfo& baseInfo) = 0; 34 virtual void SetFontWeight(const BaseInfo& baseInfo, const FontWeight& weight) = 0; 35 virtual void SetFontStyle(const BaseInfo& baseInfo, const FontStyle& fontStyle) = 0; 36 virtual void SetFontFamilies(const BaseInfo& baseInfo, const std::vector<std::string>& families) = 0; 37 virtual void SetFontSize(const BaseInfo& baseInfo, const Dimension& size) = 0; 38 virtual std::vector<double> GetLineDash(const BaseInfo& baseInfo) = 0; 39 virtual void SetFillGradient(const BaseInfo& baseInfo, const Ace::Gradient& gradient) = 0; 40 virtual void SetFillPattern(const BaseInfo& baseInfo, const std::shared_ptr<Ace::Pattern>& pattern) = 0; 41 virtual void SetFillColor(const BaseInfo& baseInfo, const Color& color, bool colorFlag) = 0; 42 virtual void SetStrokeGradient(const BaseInfo& baseInfo, const Ace::Gradient& gradient) = 0; 43 virtual void SetStrokePattern(const BaseInfo& baseInfo, const std::shared_ptr<Ace::Pattern>& pattern) = 0; 44 virtual void SetStrokeColor(const BaseInfo& baseInfo, const Color& color, bool colorFlag) = 0; 45 virtual void DrawImage(const BaseInfo& baseInfo, const ImageInfo& imageInfo) = 0; 46 virtual void PutImageData(const BaseInfo& baseInfo, const ImageData& imageData) = 0; CloseImageBitmap(const BaseInfo & baseInfo,const std::string & src)47 virtual void CloseImageBitmap(const BaseInfo& baseInfo, const std::string& src) {} 48 virtual std::unique_ptr<ImageData> GetImageData(const BaseInfo& baseInfo, const ImageSize& imageSize) = 0; 49 virtual void DrawPixelMap(const BaseInfo& baseInfo, const ImageInfo& imageInfo) = 0; SetFilterParam(const BaseInfo & baseInfo,const std::string & src)50 virtual void SetFilterParam(const BaseInfo& baseInfo, const std::string& src) {} SetTextDirection(const BaseInfo & baseInfo,const TextDirection & direction)51 virtual void SetTextDirection(const BaseInfo& baseInfo, const TextDirection& direction) {} 52 virtual std::string GetJsonData(const BaseInfo& baseInfo, const std::string& path) = 0; 53 virtual std::string ToDataURL(const BaseInfo& baseInfo, const std::string& dataUrl, double quality) = 0; 54 virtual void SetLineCap(const BaseInfo& baseInfo, const LineCapStyle& lineCap) = 0; 55 virtual void SetLineJoin(const BaseInfo& baseInfo, const LineJoinStyle& lineJoin) = 0; 56 virtual void SetMiterLimit(const BaseInfo& baseInfo, double limit) = 0; 57 virtual void SetLineWidth(const BaseInfo& baseInfo, double lineWidth) = 0; 58 virtual void SetGlobalAlpha(const BaseInfo& baseInfo, double alpha) = 0; 59 virtual void SetCompositeType(const BaseInfo& baseInfo, const CompositeOperation& type) = 0; 60 virtual void SetLineDashOffset(const BaseInfo& baseInfo, double lineDashOffset) = 0; 61 virtual void SetShadowBlur(const BaseInfo& baseInfo, double blur) = 0; 62 virtual void SetShadowColor(const BaseInfo& baseInfo, const Color& color) = 0; 63 virtual void SetShadowOffsetX(const BaseInfo& baseInfo, double offsetX) = 0; 64 virtual void SetShadowOffsetY(const BaseInfo& baseInfo, double offsetY) = 0; 65 virtual void SetSmoothingEnabled(const BaseInfo& baseInfo, bool enabled) = 0; 66 virtual void SetSmoothingQuality(const BaseInfo& baseInfo, const std::string& quality) = 0; 67 virtual void MoveTo(const BaseInfo& baseInfo, double x, double y) = 0; 68 virtual void LineTo(const BaseInfo& baseInfo, double x, double y) = 0; 69 virtual void BezierCurveTo(const BaseInfo& baseInfo, const BezierCurveParam& param) = 0; 70 virtual void QuadraticCurveTo(const BaseInfo& baseInfo, const QuadraticCurveParam& param) = 0; 71 virtual void ArcTo(const BaseInfo& baseInfo, const ArcToParam& param) = 0; 72 virtual void Arc(const BaseInfo& baseInfo, const ArcParam& param) = 0; 73 virtual void Ellipse(const BaseInfo& baseInfo, const EllipseParam& param) = 0; 74 virtual void SetFillRuleForPath(const BaseInfo& baseInfo, const CanvasFillRule& fillRule) = 0; 75 virtual void SetFillRuleForPath2D(const BaseInfo& baseInfo, const CanvasFillRule& fillRule, 76 const RefPtr<CanvasPath2D>& path) = 0; 77 virtual void SetStrokeRuleForPath2D(const BaseInfo& baseInfo, const CanvasFillRule& fillRule, 78 const RefPtr<CanvasPath2D>& path) = 0; 79 virtual void SetStrokeRuleForPath(const BaseInfo& baseInfo, const CanvasFillRule& fillRule) = 0; 80 virtual void SetClipRuleForPath(const BaseInfo& baseInfo, const CanvasFillRule& fillRule) = 0; 81 virtual void SetClipRuleForPath2D(const BaseInfo& baseInfo, const CanvasFillRule& fillRule, 82 const RefPtr<CanvasPath2D>& path) = 0; 83 virtual void AddRect(const BaseInfo& baseInfo, const Rect& rect) = 0; 84 virtual void BeginPath(const BaseInfo& baseInfo) = 0; 85 virtual void ClosePath(const BaseInfo& baseInfo) = 0; 86 virtual void Restore(const BaseInfo& baseInfo) = 0; 87 virtual void CanvasRendererSave(const BaseInfo& baseInfo) = 0; 88 virtual void CanvasRendererRotate(const BaseInfo& baseInfo, double angle) = 0; 89 virtual void CanvasRendererScale(const BaseInfo& baseInfo, double x, double y) = 0; 90 virtual void SetTransform(const BaseInfo& baseInfo, TransformParam& param, bool lengthFlag) = 0; 91 virtual void ResetTransform(const BaseInfo& baseInfo) = 0; 92 virtual void Transform(const BaseInfo& baseInfo, const TransformParam& param) = 0; 93 virtual void Translate(const BaseInfo& baseInfo, double x, double y) = 0; 94 virtual void SetLineDash(const BaseInfo& baseInfo, const std::vector<double>& lineDash) = 0; 95 virtual void SetTextAlign(const BaseInfo& baseInfo, const TextAlign& align) = 0; 96 virtual void SetTextBaseline(const BaseInfo& baseInfo, const TextBaseline& baseline) = 0; 97 virtual double GetMeasureTextWidth(const BaseInfo& baseInfo, const std::string& text) = 0; 98 virtual double GetMeasureTextHeight(const BaseInfo& baseInfo, const std::string& text) = 0; 99 virtual void FillRect(const BaseInfo& baseInfo, const Rect& rect) = 0; 100 virtual void StrokeRect(const BaseInfo& baseInfo, const Rect& rect) = 0; 101 virtual void ClearRect(const BaseInfo& baseInfo, const Rect& rect) = 0; DrawBitmapMesh(const BitmapMeshInfo & bitmapMeshInfo)102 virtual void DrawBitmapMesh(const BitmapMeshInfo& bitmapMeshInfo) {} 103 virtual RefPtr<Ace::PixelMap> GetPixelMap(const BaseInfo& baseInfo, const ImageSize& imageSize) = 0; 104 virtual void GetImageDataModel(const BaseInfo& baseInfo, const ImageSize& imageSize, uint8_t* buffer) = 0; 105 GetTransform(const BaseInfo & baseInfo)106 virtual TransformParam GetTransform(const BaseInfo& baseInfo) 107 { 108 TransformParam param; 109 return param; 110 } 111 112 private: 113 static std::unique_ptr<CanvasRendererModel> instance_; 114 static std::mutex mutex_; 115 }; 116 } // namespace OHOS::Ace 117 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_CANVAS_RENDERER_CANVAS_RENDERER_MODEL_H 118