1 #ifndef DALI_INTERNAL_WINDOW_SYSTEM_COMMON_WINDOW_SYSTEM_H
2 #define DALI_INTERNAL_WINDOW_SYSTEM_COMMON_WINDOW_SYSTEM_H
5 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/public-api/object/any.h>
31 namespace WindowSystem
34 * @brief Initialize a window system
39 * @brief Shutdown a window system
44 * @brief Set the DPI of the target screen.
46 * @note Multiple screens are not currently supported.
47 * @param[in] horizontalDpi The horizontal resolution in DPI.
48 * @param[in] verticalDpi The vertical resolution in DPI.
50 void SetDpi(uint32_t dpiHorizontal, uint32_t dpiVertical);
53 * @brief Retrieves the DPI previously set to the target screen.
55 * @note Multiple screens are not currently supported.
56 * @param[out] horizontalDpi The horizontal resolution in DPI.
57 * @param[out] verticalDpi The vertical resolution in DPI.
59 void GetDpi(uint32_t& dpiHorizontal, uint32_t& dpiVertical);
62 * @brief Get the screen size
64 void GetScreenSize(int32_t& width, int32_t& height);
67 * @brief Update the screen size
68 * @note The screen size may be updated while application is running. So update the stored size.
70 void UpdateScreenSize();
73 * @copydoc Dali::Keyboard::SetRepeatInfo()
75 bool SetKeyboardRepeatInfo(float rate, float delay);
78 * @copydoc Dali::Keyboard::GetRepeatInfo()
80 bool GetKeyboardRepeatInfo(float& rate, float& delay);
83 * @copydoc Dali::Keyboard::SetHorizontalRepeatInfo()
85 bool SetKeyboardHorizontalRepeatInfo(float rate, float delay);
88 * @copydoc Dali::Keyboard::GetHorizontalRepeatInfo()
90 bool GetKeyboardHorizontalRepeatInfo(float& rate, float& delay);
93 * @copydoc Dali::Keyboard::SetVerticalRepeatInfo()
95 bool SetKeyboardVerticalRepeatInfo(float rate, float delay);
98 * @copydoc Dali::Keyboard::GetVerticalRepeatInfo()
100 bool GetKeyboardVerticalRepeatInfo(float& rate, float& delay);
103 * @brief Sets whether the processes using geometry event propagation touch and hover events.
105 * @param[in] enabled True if the processes using geometry event propagation touch and hover events.
107 void SetGeometryHittestEnabled(bool enabled);
110 * @brief Queries whether the scene using geometry event propagation touch and hover events.
112 * @return True if the scene using geometry event propagation touch and hover events.
114 bool IsGeometryHittestEnabled();
116 } // namespace WindowSystem
119 * Base class for window system. The minimal set of events and properties that should be received/set on the window
121 class WindowSystemBase
125 * Event types that can be received from the window manager for a given window
148 * Base ptr for events - implementation can downcast to platform specific event structure
155 * Callback function signature. Platform implementation can call generic handler on a given window
157 using EventHandlerCallback = bool (*)(void* data, Event eventType, EventBase* event);
160 * Struct to define an event handler in a window implementation
164 EventHandlerCallback callback; ///< User callback.
165 void* data; ///< user data
166 Event event; ///< Event the handler is listening to
167 int handlerId; ///< Id of the handler
171 * @return Get the current display of this application
173 virtual Dali::Any GetDisplay() = 0;
176 * Add an event handler to the window system
177 * @param event The window system event to listen for
178 * @param callback A callback to handle the event
179 * @param data User data to pass to the callback
180 * @return A handler object that may be passed to DeleteEventHandler.
182 * When the callback is executed, if it returns true, then the invoker will stop calling
183 * other event handlers that have registered with that event type. If it returns false,
184 * then it will continue with other registered handlers.
186 virtual EventHandler* AddEventHandler(Event event, EventHandlerCallback callback, void* data) = 0;
189 * Delete an event handler from the window system.
190 * @param eventHandler The event handler to delete.
192 virtual void DeleteEventHandler(EventHandler* eventHandler) = 0;
195 * Get the screen size for this window system.
197 * @param[out] width The width of the screen
198 * @param[out] height The height of the screen
200 virtual void GetScreenSize(int32_t& width, int32_t& height) = 0;
203 } // namespace Adaptor
204 } // namespace Internal
207 #endif // DALI_INTERNAL_WINDOW_SYSTEM_COMMON_WINDOW_SYSTEM_H