X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftoolkit-window.cpp;h=b770e14ccfc737b77941f997c94d6f1ca2be98ed;hp=1b8cdbd679fb0b1d9f8e59fcc2ae48f9c45b6277;hb=HEAD;hpb=71f37f16f983957d32defb8456fade32c99fcfef diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp index 1b8cdbd..b770e14 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 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. @@ -16,20 +16,22 @@ */ // CLASS HEADER -#include "toolkit-window.h" +#include "toolkit-window-impl.h" // EXTERNAL INCLUDES #include #include -#include #include +#include -// INTERNAL INCLUDES -#include "test-render-surface.h" +#define DALI_WINDOW_H +#include +#include + +using AdaptorImpl = Dali::Internal::Adaptor::Adaptor; namespace Dali { - class Window; /******************************************************************************** @@ -40,42 +42,66 @@ namespace Internal { namespace Adaptor { -class Window : public Dali::BaseObject +Window::Window(const PositionSize& positionSize) +: SceneHolder(positionSize), + mFocusChangeSignal(), + mResizeSignal(), + mRotationAngle(90), // dummy angle for test coverage + mVisible(true), + mVisibilityChangedSignal() { -public: +} - Window( const PositionSize& positionSize ) - : mScene( Dali::Integration::Scene::New( Size( positionSize.width, positionSize.height ) ) ), - mRenderSurface( new TestRenderSurface( positionSize ) ) - { - mScene.SetSurface( *mRenderSurface ); - } +Window* Window::New(const PositionSize& positionSize, const std::string& name, const std::string& className, bool isTransparent) +{ + return new Window(positionSize); +} - virtual ~Window() - { - delete mRenderSurface; - mRenderSurface = nullptr; - } +Dali::Window::WindowPosition Window::GetPosition() const +{ + PositionSize positionSize = mRenderSurface.GetPositionSize(); - static Window* New(const PositionSize& positionSize, const std::string& name, const std::string& className, bool isTransparent) - { - return new Window( positionSize ); - } + return Dali::Window::WindowPosition(positionSize.x, positionSize.y); +} + +PositionSize Window::GetPositionSize() const +{ + return mRenderSurface.GetPositionSize(); +} + +Dali::Window::WindowSize Window::GetSize() const +{ + PositionSize positionSize = mRenderSurface.GetPositionSize(); - Integration::Scene mScene; - TestRenderSurface* mRenderSurface; -}; + return Dali::Window::WindowSize(positionSize.width, positionSize.height); +} + +void Window::SetPositionSize(PositionSize positionSize) +{ + mRenderSurface.MoveResize(positionSize); + + Uint16Pair newSize(positionSize.width, positionSize.height); + Dali::Window handle(this); + mResizeSignal.Emit(handle, newSize); +} -} // Adaptor -} // Internal +} // namespace Adaptor +} // namespace Internal inline Internal::Adaptor::Window& GetImplementation(Dali::Window& window) { - DALI_ASSERT_ALWAYS( window && "Window handle is empty" ); + DALI_ASSERT_ALWAYS(window && "Window handle is empty"); BaseObject& object = window.GetBaseObject(); return static_cast(object); } +inline const Internal::Adaptor::Window& GetImplementation(const Dali::Window& window) +{ + DALI_ASSERT_ALWAYS(window && "Window handle is empty"); + const BaseObject& object = window.GetBaseObject(); + return static_cast(object); +} + Window::Window() { } @@ -84,77 +110,187 @@ Window::~Window() { } -Window::Window(const Window& handle) -: BaseHandle( handle ) +Window::Window(const Window& copy) = default; + +Window& Window::operator=(const Window& rhs) = default; + +Window::Window(Window&& rhs) = default; + +Window& Window::operator=(Window&& rhs) = default; + +Dali::Window Window::New(PositionSize windowPosition, const std::string& name, bool isTransparent) { + return New(windowPosition, name, "", isTransparent); } -Window& Window::operator=(const Window& rhs) +Dali::Window Window::New(PositionSize windowPosition, const std::string& name, const std::string& className, bool isTransparent) { - BaseHandle::operator=(rhs); - return *this; + Internal::Adaptor::Window* window = Internal::Adaptor::Window::New(windowPosition, name, className, isTransparent); + + Dali::Window result(window); + + // This will also emit the window created signals + AdaptorImpl::GetImpl(AdaptorImpl::Get()).AddWindow(window); + + return result; } -Dali::Window Window::New( PositionSize windowPosition, const std::string& name, bool isTransparent ) +Window Window::DownCast(BaseHandle handle) { - Internal::Adaptor::Window* window = Internal::Adaptor::Window::New( windowPosition, name, "", isTransparent ); - return Window( window ); + Internal::Adaptor::Window* windowImpl = nullptr; + if(Dali::Adaptor::IsAvailable()) + { + windowImpl = dynamic_cast(handle.GetObjectPtr()); + } + return Dali::Window(windowImpl); } -Dali::Window Window::New(PositionSize windowPosition, const std::string& name, const std::string& className, bool isTransparent ) +Window::Window(Internal::Adaptor::Window* window) +: BaseHandle(window) { - Internal::Adaptor::Window* window = Internal::Adaptor::Window::New( windowPosition, name, className, isTransparent ); - return Window( window ); +} + +Integration::Scene Window::GetScene() +{ + return GetImplementation(*this).GetScene(); +} + +Dali::RenderSurfaceInterface& Window::GetRenderSurface() +{ + return GetImplementation(*this).GetRenderSurface(); +} + +void Window::Add(Actor actor) +{ + GetImplementation(*this).Add(actor); +} + +void Window::Remove(Actor actor) +{ + GetImplementation(*this).Remove(actor); } Dali::Layer Window::GetRootLayer() const { - return Dali::Stage::GetCurrent().GetRootLayer(); + return GetImplementation(*this).GetRootLayer(); } -Window::Window( Internal::Adaptor::Window* window ) -: BaseHandle( window ) +void Window::SetBackgroundColor(const Vector4& color) { + GetImplementation(*this).SetBackgroundColor(color); } -Integration::Scene Window::GetScene() +Vector4 Window::GetBackgroundColor() const +{ + return GetImplementation(*this).GetBackgroundColor(); +} + +void Window::Raise() +{ + GetImplementation(*this).mFocusChangeSignal.Emit(*this, true); +} + +void Window::Show() +{ + GetImplementation(*this).mVisible = true; + GetImplementation(*this).mVisibilityChangedSignal.Emit(*this, true); +} + +void Window::Hide() { - return GetImplementation( *this ).mScene; + GetImplementation(*this).mVisible = false; + GetImplementation(*this).mVisibilityChangedSignal.Emit(*this, false); } -Integration::RenderSurface& Window::GetRenderSurface() +bool Window::IsVisible() const { - return *GetImplementation( *this ).mRenderSurface; + return GetImplementation(*this).mVisible; +} + +FocusChangeSignalType& Window::FocusChangeSignal() +{ + return GetImplementation(*this).mFocusChangeSignal; +} + +ResizeSignalType& Window::ResizeSignal() +{ + return GetImplementation(*this).mResizeSignal; +} + +Window::KeyEventSignalType& Window::KeyEventSignal() +{ + return GetImplementation(*this).KeyEventSignal(); +} + +Window::TouchEventSignalType& Window::TouchedSignal() +{ + return GetImplementation(*this).TouchedSignal(); +} + +Dali::RenderTaskList Window::GetRenderTaskList() +{ + return GetImplementation(*this).GetRenderTaskList(); } namespace DevelWindow { +Window Get(Actor actor) +{ + Internal::Adaptor::Window* windowImpl = nullptr; + + if(Dali::Adaptor::IsAvailable()) + { + windowImpl = static_cast(AdaptorImpl::GetImpl(AdaptorImpl::Get()).GetWindow(actor)); + } + + return Dali::Window(windowImpl); +} + +void SetPositionSize(Window window, PositionSize positionSize) +{ + GetImplementation(window).SetPositionSize(positionSize); +} + +int GetPhysicalOrientation(Window window) +{ + return GetImplementation(window).mRotationAngle; +} + +void AddFrameRenderedCallback(Window window, std::unique_ptr callback, int32_t frameId) +{ + CallbackBase::Execute(*callback, frameId); +} + +void AddFramePresentedCallback(Window window, std::unique_ptr callback, int32_t frameId) +{ + CallbackBase::Execute(*callback, frameId); +} -Window Get( Actor actor ) +EventProcessingFinishedSignalType& EventProcessingFinishedSignal(Window window) { - return Window(); + return GetImplementation(window).GetScene().EventProcessingFinishedSignal(); } -EventProcessingFinishedSignalType& EventProcessingFinishedSignal( Window window ) +KeyEventGeneratedSignalType& KeyEventGeneratedSignal(Window window) { - return GetImplementation( window ).mScene.EventProcessingFinishedSignal(); + return GetImplementation(window).KeyEventGeneratedSignal(); } -KeyEventSignalType& KeyEventSignal( Window window ) +WheelEventSignalType& WheelEventSignal(Window window) { - return GetImplementation( window ).mScene.KeyEventSignal(); + return GetImplementation(window).WheelEventSignal(); } -TouchSignalType& TouchSignal( Window window ) +WheelEventGeneratedSignalType& WheelEventGeneratedSignal(Window window) { - return GetImplementation( window ).mScene.TouchSignal(); + return GetImplementation(window).WheelEventGeneratedSignal(); } -WheelEventSignalType& WheelEventSignal( Window window ) +VisibilityChangedSignalType& VisibilityChangedSignal(Window window) { - return GetImplementation( window ).mScene.WheelEventSignal(); + return GetImplementation(window).mVisibilityChangedSignal; } } // namespace DevelWindow -} // Dali +} // namespace Dali