1 /* 2 * Copyright (c) 2021 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 INTERFACES_INNERKITS_WMCLIENT_WINDOW_MANAGER_TYPE_H 17 #define INTERFACES_INNERKITS_WMCLIENT_WINDOW_MANAGER_TYPE_H 18 19 #ifdef __cplusplus 20 #include <functional> 21 #include <string> 22 #endif 23 24 #include "wm_common.h" 25 26 #include "../common/graphic_common.h" 27 28 #ifdef __cplusplus 29 namespace OHOS { 30 #endif 31 32 enum SubwindowType { 33 SUBWINDOW_TYPE_NORMAL = 0, 34 SUBWINDOW_TYPE_VIDEO = 1, 35 SUBWINDOW_TYPE_OFFSCREEN = 2, 36 SUBWINDOW_TYPE_MAX, 37 }; 38 39 enum WindowRotateType { 40 WINDOW_ROTATE_TYPE_NORMAL = 0, 41 WINDOW_ROTATE_TYPE_90 = 1, 42 WINDOW_ROTATE_TYPE_180 = 2, 43 WINDOW_ROTATE_TYPE_270 = 3, 44 WINDOW_ROTATE_TYPE_FLIPPED = 4, 45 WINDOW_ROTATE_TYPE_FLIPPED_90 = 5, 46 WINDOW_ROTATE_TYPE_FLIPPED_180 = 6, 47 WINDOW_ROTATE_TYPE_FLIPPED_270 = 7, 48 WINDOW_ROTATE_TYPE_MAX, 49 }; 50 51 enum WindowMode { 52 WINDOW_MODE_UNSET = 0, 53 WINDOW_MODE_FULL = 1, 54 WINDOW_MODE_FREE = 2, 55 WINDOW_MODE_MAX, 56 }; 57 58 // bitmask 59 enum WMSDisplayMode { 60 WM_DISPLAY_MODE_SINGLE = 1, 61 WM_DISPLAY_MODE_CLONE = 2, 62 WM_DISPLAY_MODE_EXTEND = 4, 63 WM_DISPLAY_MODE_EXPAND = 8, 64 }; 65 66 enum DisplayType { 67 DISPLAY_TYPE_PHYSICAL = 0, 68 DISPLAY_TYPE_VIRTUAL, 69 DISPLAY_TYPE_MAX, 70 }; 71 72 enum SplitStatus { 73 SPLIT_STATUS_CLEAR = 0, 74 SPLIT_STATUS_VAGUE = 1, 75 SPLIT_STATUS_RETAIN = 2, 76 SPLIT_STATUS_DESTROY = 3, 77 SPLIT_STATUS_MAX, 78 }; 79 80 enum WindowSplitMode { 81 WINDOW_SPLIT_MODE_UNSET = 0, 82 WINDOW_SPLIT_MODE_SET = 1, 83 WINDOW_SPLIT_MODE_MAX, 84 }; 85 86 enum SplitMode { 87 SPLIT_MODE_NULL = 0, 88 SPLIT_MODE_UNENABLE = 1, 89 SPLIT_MODE_SINGLE = 2, 90 SPLIT_MODE_SELECT = 3, 91 SPLIT_MODE_CONFIRM = 4, 92 SPLIT_MODE_DIVIDER_TOUCH_DOWN = 5, 93 SPLIT_MODE_DIVIDER_TOUCH_MOVE = 6, 94 SPLIT_MODE_DIVIDER_TOUCH_UP = 7, 95 SPLIT_MODE_MAX, 96 }; 97 98 struct WMDisplayInfo { 99 int32_t id; 100 uint32_t width; 101 uint32_t height; 102 uint32_t phyWidth; 103 uint32_t phyHeight; 104 uint32_t vsync; 105 enum DisplayType type; 106 }; 107 108 #ifdef __cplusplus 109 using WindowModeChangeFunc = std::function<void(WindowMode mode)>; 110 using BeforeFrameSubmitFunc = std::function<void()>; 111 using SplitStatusChangeFunc = std::function<void(SplitStatus status)>; 112 } // namespace OHOS 113 #endif 114 115 #endif // INTERFACES_INNERKITS_WMCLIENT_WINDOW_MANAGER_TYPE_H 116