1 /* 2 * Copyright (c) 2022 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 OHOS_JS_DISPLAY_H 17 #define OHOS_JS_DISPLAY_H 18 #include <js_runtime_utils.h> 19 #include <native_engine/native_engine.h> 20 #include <native_engine/native_value.h> 21 #include <refbase.h> 22 23 #include "cutout_info.h" 24 #include "display.h" 25 26 namespace OHOS { 27 namespace Rosen { 28 std::shared_ptr<NativeReference> FindJsDisplayObject(DisplayId displayId); 29 NativeValue* CreateJsDisplayObject(NativeEngine& engine, sptr<Display>& display); 30 NativeValue* CreateJsCutoutInfoObject(NativeEngine& engine, sptr<CutoutInfo> cutoutInfo); 31 NativeValue* CreateJsRectObject(NativeEngine& engine, DMRect rect); 32 NativeValue* CreateJsWaterfallDisplayAreaRectsObject(NativeEngine& engine, 33 WaterfallDisplayAreaRects waterfallDisplayAreaRects); 34 NativeValue* CreateJsBoundingRectsArrayObject(NativeEngine& engine, std::vector<DMRect> boundingRects); 35 class JsDisplay final { 36 public: 37 explicit JsDisplay(const sptr<Display>& display); 38 ~JsDisplay(); 39 static void Finalizer(NativeEngine* engine, void* data, void* hint); 40 static NativeValue* GetCutoutInfo(NativeEngine* engine, NativeCallbackInfo* info); 41 private: 42 sptr<Display> display_ = nullptr; 43 NativeValue* OnGetCutoutInfo(NativeEngine& engine, NativeCallbackInfo& info); 44 }; 45 enum class DisplayStateMode : uint32_t { 46 STATE_UNKNOWN = 0, 47 STATE_OFF, 48 STATE_ON, 49 STATE_DOZE, 50 STATE_DOZE_SUSPEND, 51 STATE_VR, 52 STATE_ON_SUSPEND 53 }; 54 } // namespace Rosen 55 } // namespace OHOS 56 #endif