/* * Copyright (c) 2021-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_JS_VIEW_JS_IMAGE_H #define FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_JS_VIEW_JS_IMAGE_H #include "core/components/image/image_event.h" #include "frameworks/bridge/declarative_frontend/jsview/js_interactable_view.h" #include "frameworks/bridge/declarative_frontend/jsview/js_utils.h" #include "frameworks/bridge/declarative_frontend/jsview/js_view_abstract.h" namespace OHOS::Ace::Framework { JSRef<JSVal> LoadImageSuccEventToJSValue(const LoadImageSuccessEvent& eventInfo); JSRef<JSVal> LoadImageFailEventToJSValue(const LoadImageFailEvent& eventInfo); class JSImage : public JSViewAbstract, public JSInteractableView { public: static void Create(const JSCallbackInfo& info); static bool CheckIsCard(); static bool CheckResetImage(const JSCallbackInfo& info); static void CreateImage(const JSCallbackInfo& info, bool isImageSpan = false); static void CreateImageAnimation(std::vector<RefPtr<PixelMap>>& pixelMaps, int32_t duration, int32_t iterations); static bool GetIsCard(); static void HandleLoadImageSuccess(const BaseEventInfo& param); static void HandleLoadImageFail(const BaseEventInfo& param); static void SetAlt(const JSCallbackInfo& args); static void SetMatchTextDirection(bool value); static void SetFitOriginalSize(bool value); static void SetSourceSize(const JSCallbackInfo& info); static void SetObjectFit(const JSCallbackInfo& args); static void SetImageFill(const JSCallbackInfo& info); static void SetImageInterpolation(int32_t imageInterpolation); static void SetImageRenderMode(const JSCallbackInfo& info); static void SetImageRepeat(int32_t imageRepeat); static void JSBind(BindingTarget globalObj); static void OnComplete(const JSCallbackInfo& args); static void OnError(const JSCallbackInfo& args); static void OnFinish(const JSCallbackInfo& info); static void SetSyncLoad(const JSCallbackInfo& info); static void SetColorFilter(const JSCallbackInfo& info); static void SetSmoothEdge(const JSCallbackInfo& info); static void SetDynamicRangeMode(const JSCallbackInfo& info); static void SetEnhancedImageQuality(const JSCallbackInfo& info); static void SetOrientation(const JSCallbackInfo& info); static void JsBorder(const JSCallbackInfo& info); static void JsBorderRadius(const JSCallbackInfo& info); static void SetLeftBorderWidth(const CalcDimension& value); static void SetTopBorderWidth(const CalcDimension& value); static void SetRightBorderWidth(const CalcDimension& value); static void SetBottomBorderWidth(const CalcDimension& value); static void SetBorderRadius(const CalcDimension& value); static void ParseBorderRadius(const JSRef<JSVal>& args); static void JsOpacity(const JSCallbackInfo& info); static void JsBlur(const JSCallbackInfo& info); static void JsTransition(const JSCallbackInfo& info); static void JsSetDraggable(bool draggable); static void JsOnDragStart(const JSCallbackInfo& info); static void SetCopyOption(const JSCallbackInfo& info); static void EnableAnalyzer(bool isEnableAnalyzer); static void AnalyzerConfig(const JSCallbackInfo &info); static void ParseResizableSlice(const JSRef<JSObject>& info); static void ParseResizableLattice(const JSRef<JSObject>& info); static void JsImageResizable(const JSCallbackInfo& info); static bool IsDrawable(const JSRef<JSVal>& jsValue); protected: static void SetBorder(const Border& border); static void SetAutoResize(bool autoResize); static void UpdateSliceResult(const JSRef<JSObject>& sliceObj, ImageResizableSlice& sliceResult); static void ParseImageAIOptions(const JSRef<JSVal>& jsValue); }; class JSColorFilter : public AceType { DECLARE_ACE_TYPE(JSColorFilter, AceType); public: JSColorFilter() = default; ~JSColorFilter() override = default; static void ConstructorCallback(const JSCallbackInfo& info); static void DestructorCallback(JSColorFilter* obj); void SetColorFilterMatrix(const std::vector<float>&& matrix) { colorfiltermatrix_ = std::move(matrix); } const std::vector<float>& GetColorFilterMatrix() const { return colorfiltermatrix_; } private: std::vector<float> colorfiltermatrix_; }; } // namespace OHOS::Ace::Framework #endif // FRAMEWORKS_BRIDGE_DECLARATIVE_FRONTEND_JS_VIEW_JS_IMAGE_H