1 /* 2 * Copyright (c) 2024 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_DRAWING_RENDERING_CONTEXT_H 17 #define FOUNDATION_ACE_FRAMEWORK_JAVASCRIPT_BRIDGE_JS_VIEW_JS_DRAWING_RENDERING_CONTEXT_H 18 19 #include "base/memory/referenced.h" 20 #include "bridge/declarative_frontend/engine/bindings_defines.h" 21 #include "bridge/declarative_frontend/engine/js_converter.h" 22 #include "bridge/declarative_frontend/jsview/canvas/js_rendering_context_base.h" 23 #include "bridge/declarative_frontend/jsview/canvas/js_rendering_context_settings.h" 24 #include "bridge/declarative_frontend/jsview/js_view_abstract.h" 25 #include "core/components_ng/base/modifier.h" 26 #include "core/components_ng/pattern/canvas/canvas_pattern.h" 27 #include "core/pipeline/base/rosen_render_context.h" 28 29 namespace OHOS::Ace::Framework { 30 31 class JSDrawingRenderingContext : public JSRenderingContextBase { 32 DECLARE_ACE_TYPE(JSDrawingRenderingContext, JSRenderingContextBase); 33 public: 34 JSDrawingRenderingContext(); 35 ~JSDrawingRenderingContext() override = default; 36 37 static void JSBind(BindingTarget globalObj); 38 static void Constructor(const JSCallbackInfo& args); 39 static void Destructor(JSDrawingRenderingContext* controller); 40 41 void JsGetCanvas(const JSCallbackInfo& info); 42 void JsGetSize(const JSCallbackInfo& info); 43 void JsSetCanvas(const JSCallbackInfo& info); 44 void JsSetSize(const JSCallbackInfo& info); 45 void SetInvalidate(const JSCallbackInfo& info); 46 void SetRSCanvasCallback(RefPtr<AceType>& canvasPattern); 47 48 ACE_DISALLOW_COPY_AND_MOVE(JSDrawingRenderingContext); 49 SetAntiAlias()50 void SetAntiAlias() override {} SetDensity()51 void SetDensity() override {} 52 SetCanvasPattern(const RefPtr<AceType> & canvas)53 void SetCanvasPattern(const RefPtr<AceType>& canvas) override 54 { 55 canvasPattern_ = canvas; 56 SetRSCanvasCallback(canvasPattern_); 57 } 58 SetInstanceId(int32_t id)59 void SetInstanceId(int32_t id) override 60 { 61 instanceId_ = id; 62 } 63 SetUnit(CanvasUnit unit)64 void SetUnit(CanvasUnit unit) 65 { 66 unit_ = unit; 67 } 68 GetUnit()69 CanvasUnit GetUnit() 70 { 71 return unit_; 72 } 73 GetDensity()74 double GetDensity() 75 { 76 double density = PipelineBase::GetCurrentDensity(); 77 return ((GetUnit() == CanvasUnit::DEFAULT) && !NearZero(density)) ? density : 1.0; 78 } 79 80 protected: 81 RefPtr<AceType> canvasPattern_; 82 int32_t instanceId_ = INSTANCE_ID_UNDEFINED; 83 84 private: 85 JSRef<JSVal> jsCanvasVal_; 86 NG::OptionalSizeF size_; 87 CanvasUnit unit_ = CanvasUnit::DEFAULT; 88 }; 89 } // namespace OHOS::Ace::Framework 90 91 #endif // FOUNDATION_ACE_FRAMEWORK_JAVASCRIPT_BRIDGE_JS_VIEW_JS_DRAWING_RENDERING_CONTEXT_H 92