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 FOUNDATION_ACE_FRAMEWORK_JAVASCRIPT_BRIDGE_JS_VIEW_JS_OFFSCREEN_CANVAS_H 17 #define FOUNDATION_ACE_FRAMEWORK_JAVASCRIPT_BRIDGE_JS_VIEW_JS_OFFSCREEN_CANVAS_H 18 19 #include "bridge/declarative_frontend/jsview/js_offscreen_rendering_context.h" 20 #include "core/components/common/properties/paint_state.h" 21 #include "core/components_ng/pattern/custom_paint/offscreen_canvas_pattern.h" 22 23 namespace OHOS::Ace::Framework { 24 25 class JSOffscreenCanvas : public AceType, public JSInteractableView, public JSViewAbstract { 26 DECLARE_ACE_TYPE(JSOffscreenCanvas, AceType); 27 public: 28 JSOffscreenCanvas() = default; 29 ~JSOffscreenCanvas() override = default; 30 31 static void JSBind(BindingTarget globalObj); 32 static void Constructor(const JSCallbackInfo& args); 33 static void Destructor(JSOffscreenCanvas* controller); 34 35 void JsGetWidth(const JSCallbackInfo& info); 36 void JsGetHeight(const JSCallbackInfo& info); 37 void JsSetHeight(const JSCallbackInfo& info); 38 void JsSetWidth(const JSCallbackInfo& info); 39 void JsTransferToImageBitmap(const JSCallbackInfo& info); 40 void JsGetContext(const JSCallbackInfo& info); JsCreateRadialGradient(const JSCallbackInfo & info)41 void JsCreateRadialGradient(const JSCallbackInfo& info) {} JsFillRect(const JSCallbackInfo & info)42 void JsFillRect(const JSCallbackInfo& info) {} JsStrokeRect(const JSCallbackInfo & info)43 void JsStrokeRect(const JSCallbackInfo& info) {} JsClearRect(const JSCallbackInfo & info)44 void JsClearRect(const JSCallbackInfo& info) {} JsCreateLinearGradient(const JSCallbackInfo & info)45 void JsCreateLinearGradient(const JSCallbackInfo& info) {} JsFillText(const JSCallbackInfo & info)46 void JsFillText(const JSCallbackInfo& info) {} JsStrokeText(const JSCallbackInfo & info)47 void JsStrokeText(const JSCallbackInfo& info) {} JsMeasureText(const JSCallbackInfo & info)48 void JsMeasureText(const JSCallbackInfo& info) {} JsMoveTo(const JSCallbackInfo & info)49 void JsMoveTo(const JSCallbackInfo& info) {} JsLineTo(const JSCallbackInfo & info)50 void JsLineTo(const JSCallbackInfo& info) {} JsBezierCurveTo(const JSCallbackInfo & info)51 void JsBezierCurveTo(const JSCallbackInfo& info) {} JsQuadraticCurveTo(const JSCallbackInfo & info)52 void JsQuadraticCurveTo(const JSCallbackInfo& info) {} JsArcTo(const JSCallbackInfo & info)53 void JsArcTo(const JSCallbackInfo& info) {} JsArc(const JSCallbackInfo & info)54 void JsArc(const JSCallbackInfo& info) {} JsEllipse(const JSCallbackInfo & info)55 void JsEllipse(const JSCallbackInfo& info) {} JsFill(const JSCallbackInfo & info)56 void JsFill(const JSCallbackInfo& info) {} JsStroke(const JSCallbackInfo & info)57 void JsStroke(const JSCallbackInfo& info) {} JsClip(const JSCallbackInfo & info)58 void JsClip(const JSCallbackInfo& info) {} JsRect(const JSCallbackInfo & info)59 void JsRect(const JSCallbackInfo& info) {} JsBeginPath(const JSCallbackInfo & info)60 void JsBeginPath(const JSCallbackInfo& info) {} JsClosePath(const JSCallbackInfo & info)61 void JsClosePath(const JSCallbackInfo& info) {} JsRestore(const JSCallbackInfo & info)62 void JsRestore(const JSCallbackInfo& info) {} JsSave(const JSCallbackInfo & info)63 void JsSave(const JSCallbackInfo& info) {} JsRotate(const JSCallbackInfo & info)64 void JsRotate(const JSCallbackInfo& info) {} JsScale(const JSCallbackInfo & info)65 void JsScale(const JSCallbackInfo& info) {} JsGetTransform(const JSCallbackInfo & info)66 void JsGetTransform(const JSCallbackInfo& info) {} JsSetTransform(const JSCallbackInfo & info)67 void JsSetTransform(const JSCallbackInfo& info) {} JsResetTransform(const JSCallbackInfo & info)68 void JsResetTransform(const JSCallbackInfo& info) {} JsTransform(const JSCallbackInfo & info)69 void JsTransform(const JSCallbackInfo& info) {} JsTranslate(const JSCallbackInfo & info)70 void JsTranslate(const JSCallbackInfo& info) {} JsSetLineDash(const JSCallbackInfo & info)71 void JsSetLineDash(const JSCallbackInfo& info) {} JsGetLineDash(const JSCallbackInfo & info)72 void JsGetLineDash(const JSCallbackInfo& info) {} JsDrawImage(const JSCallbackInfo & info)73 void JsDrawImage(const JSCallbackInfo& info) {} JsCreatePattern(const JSCallbackInfo & info)74 void JsCreatePattern(const JSCallbackInfo& info) {} JsCreateImageData(const JSCallbackInfo & info)75 void JsCreateImageData(const JSCallbackInfo& info) {} JsPutImageData(const JSCallbackInfo & info)76 void JsPutImageData(const JSCallbackInfo& info) {} JsGetImageData(const JSCallbackInfo & info)77 void JsGetImageData(const JSCallbackInfo& info) {} JsGetJsonData(const JSCallbackInfo & info)78 void JsGetJsonData(const JSCallbackInfo& info) {} JsGetPixelMap(const JSCallbackInfo & info)79 void JsGetPixelMap(const JSCallbackInfo& info) {} JsSetPixelMap(const JSCallbackInfo & info)80 void JsSetPixelMap(const JSCallbackInfo& info) {} JsCreateConicGradient(const JSCallbackInfo & info)81 void JsCreateConicGradient(const JSCallbackInfo& info) {} JsSetFilter(const JSCallbackInfo & info)82 void JsSetFilter(const JSCallbackInfo& info) {} JsGetFilter(const JSCallbackInfo & info)83 void JsGetFilter(const JSCallbackInfo& info) {} JsSetDirection(const JSCallbackInfo & info)84 void JsSetDirection(const JSCallbackInfo& info) {} JsGetDirection(const JSCallbackInfo & info)85 void JsGetDirection(const JSCallbackInfo& info) {} JsSetFillStyle(const JSCallbackInfo & info)86 void JsSetFillStyle(const JSCallbackInfo& info) {} JsGetFillStyle(const JSCallbackInfo & info)87 void JsGetFillStyle(const JSCallbackInfo& info) {} JsSetStrokeStyle(const JSCallbackInfo & info)88 void JsSetStrokeStyle(const JSCallbackInfo& info) {} JsGetStrokeStyle(const JSCallbackInfo & info)89 void JsGetStrokeStyle(const JSCallbackInfo& info) {} JsSetLineCap(const JSCallbackInfo & info)90 void JsSetLineCap(const JSCallbackInfo& info) {} JsGetLineCap(const JSCallbackInfo & info)91 void JsGetLineCap(const JSCallbackInfo& info) {} JsSetLineJoin(const JSCallbackInfo & info)92 void JsSetLineJoin(const JSCallbackInfo& info) {} JsGetLineJoin(const JSCallbackInfo & info)93 void JsGetLineJoin(const JSCallbackInfo& info) {} JsSetMiterLimit(const JSCallbackInfo & info)94 void JsSetMiterLimit(const JSCallbackInfo& info) {} JsGetMiterLimit(const JSCallbackInfo & info)95 void JsGetMiterLimit(const JSCallbackInfo& info) {} JsSetLineWidth(const JSCallbackInfo & info)96 void JsSetLineWidth(const JSCallbackInfo& info) {} JsGetLineWidth(const JSCallbackInfo & info)97 void JsGetLineWidth(const JSCallbackInfo& info) {} JsSetFont(const JSCallbackInfo & info)98 void JsSetFont(const JSCallbackInfo& info) {} JsGetFont(const JSCallbackInfo & info)99 void JsGetFont(const JSCallbackInfo& info) {} JsSetTextAlign(const JSCallbackInfo & info)100 void JsSetTextAlign(const JSCallbackInfo& info) {} JsGetTextAlign(const JSCallbackInfo & info)101 void JsGetTextAlign(const JSCallbackInfo& info) {} JsSetTextBaseline(const JSCallbackInfo & info)102 void JsSetTextBaseline(const JSCallbackInfo& info) {} JsGetTextBaseline(const JSCallbackInfo & info)103 void JsGetTextBaseline(const JSCallbackInfo& info) {} JsSetGlobalAlpha(const JSCallbackInfo & info)104 void JsSetGlobalAlpha(const JSCallbackInfo& info) {} JsGetGlobalAlpha(const JSCallbackInfo & info)105 void JsGetGlobalAlpha(const JSCallbackInfo& info) {} JsSetGlobalCompositeOperation(const JSCallbackInfo & info)106 void JsSetGlobalCompositeOperation(const JSCallbackInfo& info) {} JsGetGlobalCompositeOperation(const JSCallbackInfo & info)107 void JsGetGlobalCompositeOperation(const JSCallbackInfo& info) {} JsSetLineDashOffset(const JSCallbackInfo & info)108 void JsSetLineDashOffset(const JSCallbackInfo& info) {} JsGetLineDashOffset(const JSCallbackInfo & info)109 void JsGetLineDashOffset(const JSCallbackInfo& info) {} JsSetShadowBlur(const JSCallbackInfo & info)110 void JsSetShadowBlur(const JSCallbackInfo& info) {} JsGetShadowBlur(const JSCallbackInfo & info)111 void JsGetShadowBlur(const JSCallbackInfo& info) {} JsSetShadowColor(const JSCallbackInfo & info)112 void JsSetShadowColor(const JSCallbackInfo& info) {} JsGetShadowColor(const JSCallbackInfo & info)113 void JsGetShadowColor(const JSCallbackInfo& info) {} JsSetShadowOffsetX(const JSCallbackInfo & info)114 void JsSetShadowOffsetX(const JSCallbackInfo& info) {} JsGetShadowOffsetX(const JSCallbackInfo & info)115 void JsGetShadowOffsetX(const JSCallbackInfo& info) {} JsSetShadowOffsetY(const JSCallbackInfo & info)116 void JsSetShadowOffsetY(const JSCallbackInfo& info) {} JsGetShadowOffsetY(const JSCallbackInfo & info)117 void JsGetShadowOffsetY(const JSCallbackInfo& info) {} JsSetImageSmoothingEnabled(const JSCallbackInfo & info)118 void JsSetImageSmoothingEnabled(const JSCallbackInfo& info) {} JsGetImageSmoothingEnabled(const JSCallbackInfo & info)119 void JsGetImageSmoothingEnabled(const JSCallbackInfo& info) {} JsSetImageSmoothingQuality(const JSCallbackInfo & info)120 void JsSetImageSmoothingQuality(const JSCallbackInfo& info) {} JsGetImageSmoothingQuality(const JSCallbackInfo & info)121 void JsGetImageSmoothingQuality(const JSCallbackInfo& info) {} JSTransferFromImageBitmap(const JSCallbackInfo & info)122 void JSTransferFromImageBitmap(const JSCallbackInfo& info) {} 123 SetWidth(double width)124 void SetWidth(double width) 125 { 126 width_ = width; 127 } 128 GetWidth()129 double GetWidth() const 130 { 131 return width_; 132 } 133 SetHeight(double height)134 void SetHeight(double height) 135 { 136 height_ = height; 137 } 138 GetHeight()139 double GetHeight() const 140 { 141 return height_; 142 } 143 144 enum class ContextType { 145 CONTEXT_2D = 0, 146 }; 147 148 ACE_DISALLOW_COPY_AND_MOVE(JSOffscreenCanvas); 149 private: 150 JSRef<JSObject> CreateContext2d(double width, double height); 151 RefPtr<NG::OffscreenCanvasPattern> offscreenCanvasPattern_; 152 RefPtr<JSOffscreenRenderingContext> offscreenCanvasContext_; 153 RefPtr<JSRenderingContextSettings> offscreenCanvasSettings_; 154 double width_ = 0.0f; 155 double height_ = 0.0f; 156 ContextType contextType_; 157 }; 158 159 } // namespace OHOS::Ace::Framework 160 161 #endif // FOUNDATION_ACE_FRAMEWORK_JAVASCRIPT_BRIDGE_JS_VIEW_JS_OFFSCREEN_CANVAS_H 162