#define DALI_INTERNAL_WINDOWSYSTEM_COMMON_WINDOW_IMPL_H
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <dali/public-api/object/base-object.h>
#include <dali/public-api/object/property-array.h>
#include <dali/public-api/object/ref-object.h>
-#include <dali/public-api/render-tasks/render-task-list.h>
// INTERNAL INCLUDES
#include <dali/devel-api/adaptor-framework/window-devel.h>
class WindowBase;
class Window;
-using WindowPtr = IntrusivePtr<Window>;
-using OrientationPtr = IntrusivePtr<Orientation>;
-using EventHandlerPtr = IntrusivePtr<EventHandler>;
+using WindowPtr = IntrusivePtr<Window>;
+using OrientationPtr = IntrusivePtr<Orientation>;
+using MouseInOutEventPtr = IntrusivePtr<Dali::DevelWindow::MouseInOutEvent>;
+using EventHandlerPtr = IntrusivePtr<EventHandler>;
/**
* Window provides a surface to render onto with orientation & indicator properties.
typedef Dali::DevelWindow::AuxiliaryMessageSignalType AuxiliaryMessageSignalType;
typedef Dali::DevelWindow::AccessibilityHighlightSignalType AccessibilityHighlightSignalType;
typedef Dali::DevelWindow::MovedSignalType MovedSignalType;
+ typedef Dali::DevelWindow::OrientationChangedSignalType OrientationChangedSignalType;
+ typedef Dali::DevelWindow::MouseInOutEventSignalType MouseInOutEventSignalType;
+ typedef Dali::DevelWindow::MoveCompletedSignalType MoveCompletedSignalType;
+ typedef Dali::DevelWindow::ResizeCompletedSignalType ResizeCompletedSignalType;
+ typedef Dali::DevelWindow::InsetsChangedSignalType InsetsChangedSignalType;
typedef Signal<void()> SignalType;
/**
Dali::Layer GetLayer(uint32_t depth) const;
/**
- * @copydoc Dali::DevelWindow::GetRenderTaskList()
- */
- Dali::RenderTaskList GetRenderTaskList() const;
-
- /**
* @brief Get window resource ID assigned by window manager
* @return The resource ID of the window
*/
PositionSize GetPositionSize() const;
/**
+ * @copydoc Dali::Window::SetLayout()
+ */
+ void SetLayout(unsigned int numCols, unsigned int numRows, unsigned int column, unsigned int row, unsigned int colSpan, unsigned int rowSpan);
+
+ /**
* @copydoc Dali::Window::GetRootLayer()
*/
Dali::Layer GetRootLayer() const;
*/
void EmitAccessibilityHighlightSignal(bool highlight);
+ /**
+ * @brief Sets the render notification trigger to call when render thread is completed a frame
+ *
+ * @param[in] renderNotification to use
+ */
+ void SetRenderNotification(TriggerEventInterface* renderNotification);
+
public: // Dali::Internal::Adaptor::SceneHolder
/**
* @copydoc Dali::Internal::Adaptor::SceneHolder::GetNativeHandle
void EnableFloatingMode(bool enable);
/**
+ * @copydoc Dali::DevelWindow::IsFloatingModeEnabled()
+ */
+ bool IsFloatingModeEnabled();
+
+ /**
* @copydoc Dali::DevelWindow::IncludeInputRegion()
*/
void IncludeInputRegion(const Rect<int>& inputRegion);
void OnWindowRedrawRequest();
/**
- * @brief Called when the window is resized or moved by display server.
+ * @brief Called when the window's geometry data is changed by display server or client.
+ * It is based on configure noification event.
*
* @param[in] positionSize the updated window's position and size.
*/
void OnRotationFinished();
/**
+ * @brief Called when the mouse in or out event is received.
+ * @param[in] mouseInOutEvent the mouse event
+ */
+ void OnMouseInOutEvent(const Dali::DevelWindow::MouseInOutEvent& mouseInOutEvent);
+
+ /**
+ * @brief Called when the window is moved by display server.
+ *
+ * @param[in] position the moved window's position.
+ */
+ void OnMoveCompleted(Dali::Window::WindowPosition& position);
+
+ /**
+ * @brief Called when the window is resized by display server.
+ *
+ * @param[in] positionSize the resized window's size.
+ */
+ void OnResizeCompleted(Dali::Window::WindowSize& size);
+
+ /**
* @brief Set available orientation to window base.
*/
void SetAvailableAnlges(const std::vector<int>& angles);
bool IsOrientationAvailable(WindowOrientation orientation) const;
/**
- * @brief Return the rect value to recalulate with the default system coordinates.
- *
- * Some native window APIs work the geometry value based on the default system coordinates.
- * IncludeInputRegion() and ExcludeInputRegion() are one of them.
- * When the window is rotated, current window's geometry already were set with the rotated angle.
- * If IncludeInputRegion() or ExcludeInputRegion() are called with rotated angle by application,
- * the rect's area should be re-calcuated on the default system coordinates.
+ * @brief Called when window insets are changed by appearing or disappearing indicator, virtual keyboard, or clipboard.
*
- * @param[in] rect the window's current position and size with current window rotation angle.
- * @return the re-calculated rect on the default system coordinates.
+ * @param[in] partType the type of the part that occurs the window insets change.
+ * @param[in] partState the state of the part that occurs the window insets change.
+ * @param[in] insets the extents value of window insets.
*/
- Rect<int> RecalculateRect(const Rect<int>& rect);
+ void OnInsetsChanged(WindowInsetsPartType partType, WindowInsetsPartState partState, const Extents& insets);
+
private: // Dali::Internal::Adaptor::SceneHolder
/**
void OnResume() override;
/**
- * @copydoc Dali::Internal::Adaptor::SceneHolder::RecalculateTouchPosition
+ * @copydoc Dali::Internal::Adaptor::SceneHolder::RecalculatePosition
*/
- void RecalculateTouchPosition(Integration::Point& point) override;
+ Vector2 RecalculatePosition(const Vector2& position) override;
private: // Dali::Internal::Adaptor::EventHandler::Observer
/**
return mMovedSignal;
}
+ /**
+ * @copydoc Dali::DevelWindow::OrientationChangedSignal()
+ */
+ OrientationChangedSignalType& OrientationChangedSignal()
+ {
+ return mOrientationChangedSignal;
+ }
+
+ /**
+ * @copydoc Dali::DevelWindow::MouseInOutEventSignal()
+ */
+ MouseInOutEventSignalType& MouseInOutEventSignal()
+ {
+ return mMouseInOutEventSignal;
+ }
+
+ /**
+ * @copydoc Dali::DevelWindow::MoveCompletedSignal()
+ */
+ MoveCompletedSignalType& MoveCompletedSignal()
+ {
+ return mMoveCompletedSignal;
+ }
+
+ /**
+ * @copydoc Dali::DevelWindow::ResizeCompletedSignal()
+ */
+ ResizeCompletedSignalType& ResizeCompletedSignal()
+ {
+ return mResizeCompletedSignal;
+ }
+
+ /**
+ * @copydoc Dali::DevelWindow::InsetsChangedSignal()
+ */
+ InsetsChangedSignalType& InsetsChangedSignal()
+ {
+ return mInsetsChangedSignal;
+ }
+
private:
WindowRenderSurface* mWindowSurface; ///< The window rendering surface
WindowBase* mWindowBase;
std::vector<int> mAvailableAngles;
int mPreferredAngle;
- int mRotationAngle; ///< The angle of the rotation
- int mWindowWidth; ///< The width of the window
- int mWindowHeight; ///< The height of the window
- int mNativeWindowId; ///< The Native Window Id
+ int mRotationAngle; ///< The angle of the rotation
+ int mWindowWidth; ///< The width of the window
+ int mWindowHeight; ///< The height of the window
+ int mNativeWindowId; ///< The Native Window Id
EventHandlerPtr mEventHandler; ///< The window events handler
OrientationMode mOrientationMode; ///< The physical screen mode is portrait or landscape
AuxiliaryMessageSignalType mAuxiliaryMessageSignal;
AccessibilityHighlightSignalType mAccessibilityHighlightSignal;
MovedSignalType mMovedSignal;
+ OrientationChangedSignalType mOrientationChangedSignal;
+ MouseInOutEventSignalType mMouseInOutEventSignal;
+ MoveCompletedSignalType mMoveCompletedSignal;
+ ResizeCompletedSignalType mResizeCompletedSignal;
+ InsetsChangedSignalType mInsetsChangedSignal;
Dali::KeyEvent mLastKeyEvent;
Dali::TouchEvent mLastTouchEvent;