${TEST_HARNESS_DIR}/test-graphics-reflection.cpp
${TEST_HARNESS_DIR}/test-platform-abstraction.cpp
${TEST_HARNESS_DIR}/test-render-controller.cpp
+ ${TEST_HARNESS_DIR}/test-render-surface.cpp
${TEST_HARNESS_DIR}/test-trace-call-stack.cpp
)
${TEST_HARNESS_DIR}/test-graphics-reflection.cpp
${TEST_HARNESS_DIR}/test-platform-abstraction.cpp
${TEST_HARNESS_DIR}/test-render-controller.cpp
+ ${TEST_HARNESS_DIR}/test-render-surface.cpp
${TEST_HARNESS_DIR}/test-trace-call-stack.cpp
)
${TEST_HARNESS_DIR}/test-graphics-reflection.cpp
${TEST_HARNESS_DIR}/test-platform-abstraction.cpp
${TEST_HARNESS_DIR}/test-render-controller.cpp
+ ${TEST_HARNESS_DIR}/test-render-surface.cpp
${TEST_HARNESS_DIR}/test-trace-call-stack.cpp
)
${TEST_HARNESS_DIR}/test-graphics-reflection.cpp
${TEST_HARNESS_DIR}/test-platform-abstraction.cpp
${TEST_HARNESS_DIR}/test-render-controller.cpp
+ ${TEST_HARNESS_DIR}/test-render-surface.cpp
${TEST_HARNESS_DIR}/test-trace-call-stack.cpp
)
../dali-toolkit/dali-toolkit-test-utils/test-graphics-shader.cpp
../dali-toolkit/dali-toolkit-test-utils/test-platform-abstraction.cpp
../dali-toolkit/dali-toolkit-test-utils/test-render-controller.cpp
+ ../dali-toolkit/dali-toolkit-test-utils/test-render-surface.cpp
../dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.cpp
../dali-toolkit/dali-toolkit-test-utils/test-native-image.cpp
dali-toolkit-test-utils/toolkit-text-utils.cpp
../dali-toolkit/dali-toolkit-test-utils/test-graphics-shader.cpp
../dali-toolkit/dali-toolkit-test-utils/test-graphics-reflection.cpp
../dali-toolkit/dali-toolkit-test-utils/test-render-controller.cpp
+ ../dali-toolkit/dali-toolkit-test-utils/test-render-surface.cpp
../dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.cpp
../dali-toolkit/dali-toolkit-test-utils/test-native-image.cpp
)
../dali-toolkit/dali-toolkit-test-utils/test-graphics-reflection.cpp
../dali-toolkit/dali-toolkit-test-utils/test-platform-abstraction.cpp
../dali-toolkit/dali-toolkit-test-utils/test-render-controller.cpp
+ ../dali-toolkit/dali-toolkit-test-utils/test-render-surface.cpp
../dali-toolkit/dali-toolkit-test-utils/test-trace-call-stack.cpp
../dali-toolkit/dali-toolkit-test-utils/test-native-image.cpp
)
dali-toolkit-test-utils/test-graphics-shader.cpp
dali-toolkit-test-utils/test-platform-abstraction.cpp
dali-toolkit-test-utils/test-render-controller.cpp
+ dali-toolkit-test-utils/test-render-surface.cpp
dali-toolkit-test-utils/test-trace-call-stack.cpp
dali-toolkit-test-utils/test-native-image.cpp
test-text-geometry-utils.cpp
mScene.SetDpi(Vector2(static_cast<float>(mDpi.x), static_cast<float>(mDpi.y)));
// Create render target for the scene
+ mRenderSurface = new TestRenderSurface(Dali::PositionSize(0, 0, mSurfaceWidth, mSurfaceHeight));
Graphics::RenderTargetCreateInfo rtInfo{};
rtInfo.SetExtent({mSurfaceWidth, mSurfaceHeight});
- rtInfo.SetSurface(&mSurfaceWidth); // Can point to anything, really.
-
+ rtInfo.SetSurface(mRenderSurface);
mScene.SetSurfaceRenderTarget(rtInfo);
mScenes.push_back(mScene);
#include "test-graphics-controller.h"
#include "test-render-controller.h"
+#include "test-render-surface.h"
namespace Dali
{
TestPlatformAbstraction mPlatformAbstraction;
TestRenderController mRenderController;
TestGraphicsController mGraphicsController;
+ TestRenderSurface* mRenderSurface;
Integration::UpdateStatus mStatus;
Integration::RenderStatus mRenderStatus;
--- /dev/null
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "test-render-surface.h"
+
+namespace Dali
+{
+TestRenderSurface::TestRenderSurface(Dali::PositionSize positionSize)
+: mPositionSize(positionSize),
+ mBackgroundColor()
+{
+}
+
+TestRenderSurface::~TestRenderSurface()
+{
+}
+
+Dali::PositionSize TestRenderSurface::GetPositionSize() const
+{
+ return mPositionSize;
+};
+
+void TestRenderSurface::GetDpi(unsigned int& dpiHorizontal, unsigned int& dpiVertical)
+{
+ dpiHorizontal = dpiVertical = 96;
+};
+
+int TestRenderSurface::GetSurfaceOrientation() const
+{
+ return 0;
+}
+
+int TestRenderSurface::GetScreenOrientation() const
+{
+ return 0;
+}
+
+void TestRenderSurface::InitializeGraphics()
+{
+}
+
+void TestRenderSurface::CreateSurface()
+{
+}
+
+void TestRenderSurface::DestroySurface()
+{
+}
+
+bool TestRenderSurface::ReplaceGraphicsSurface()
+{
+ return false;
+}
+
+void TestRenderSurface::MoveResize(Dali::PositionSize positionSize)
+{
+ mPositionSize = positionSize;
+}
+
+void TestRenderSurface::StartRender()
+{
+}
+
+bool TestRenderSurface::PreRender(bool resizingSurface, const std::vector<Rect<int>>& damageRects, Rect<int>& clippingRect)
+{
+ return true;
+}
+
+void TestRenderSurface::PostRender()
+{
+}
+
+void TestRenderSurface::StopRender()
+{
+}
+
+void TestRenderSurface::ReleaseLock()
+{
+}
+
+void TestRenderSurface::SetThreadSynchronization(ThreadSynchronizationInterface& threadSynchronization)
+{
+}
+
+Dali::Integration::RenderSurfaceInterface::Type TestRenderSurface::GetSurfaceType()
+{
+ return WINDOW_RENDER_SURFACE;
+}
+
+void TestRenderSurface::MakeContextCurrent()
+{
+}
+
+Integration::DepthBufferAvailable TestRenderSurface::GetDepthBufferRequired()
+{
+ return Integration::DepthBufferAvailable::TRUE;
+}
+
+Integration::StencilBufferAvailable TestRenderSurface::GetStencilBufferRequired()
+{
+ return Integration::StencilBufferAvailable::TRUE;
+}
+
+} // namespace Dali
--- /dev/null
+#ifndef TEST_RENDER_SURFACE_H
+#define TEST_RENDER_SURFACE_H
+
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// INTERNAL INCLUDES
+#include <dali/integration-api/adaptor-framework/render-surface-interface.h>
+#include <dali/public-api/common/dali-common.h>
+
+namespace Dali
+{
+/**
+ * Concrete implementation of the RenderSurface class.
+ */
+class TestRenderSurface : public Dali::Integration::RenderSurfaceInterface
+{
+public:
+ /**
+ * @copydoc Dali::Integration::RenderSurface::RenderSurface
+ */
+ TestRenderSurface(Dali::PositionSize positionSize);
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::~RenderSurface
+ */
+ ~TestRenderSurface() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::GetPositionSize
+ */
+ Dali::PositionSize GetPositionSize() const override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::GetDpi
+ */
+ void GetDpi(unsigned int& dpiHorizontal, unsigned int& dpiVertical) override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::GetSurfaceOrientation
+ */
+ int GetSurfaceOrientation() const override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::GetScreenOrientation
+ */
+ int GetScreenOrientation() const override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::InitializeGraphics
+ */
+ void InitializeGraphics() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::CreateSurface
+ */
+ void CreateSurface() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::DestroySurface
+ */
+ void DestroySurface() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::ReplaceGraphicsSurface
+ */
+ bool ReplaceGraphicsSurface() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::MoveResize
+ */
+ void MoveResize(Dali::PositionSize positionSize) override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::StartRender
+ */
+ void StartRender() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::PreRender
+ */
+ bool PreRender(bool resizingSurface, const std::vector<Rect<int>>& damageRects, Rect<int>& clippingRect) override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::PostRender
+ */
+ void PostRender() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::StopRender
+ */
+ void StopRender() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::ReleaseLock
+ */
+ void ReleaseLock() override;
+
+ void SetThreadSynchronization(ThreadSynchronizationInterface& threadSynchronization) override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::GetSurfaceType
+ */
+ Dali::Integration::RenderSurfaceInterface::Type GetSurfaceType() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::MakeContextCurrent
+ */
+ void MakeContextCurrent() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::GetDepthBufferRequired
+ */
+ Integration::DepthBufferAvailable GetDepthBufferRequired() override;
+
+ /**
+ * @copydoc Dali::Integration::RenderSurface::GetStencilBufferRequired
+ */
+ Integration::StencilBufferAvailable GetStencilBufferRequired() override;
+
+private:
+ /**
+ * @brief Undefined copy constructor. RenderSurface cannot be copied
+ */
+ TestRenderSurface(const TestRenderSurface& rhs);
+
+ /**
+ * @brief Undefined assignment operator. RenderSurface cannot be copied
+ */
+ TestRenderSurface& operator=(const TestRenderSurface& rhs);
+
+private:
+ Dali::PositionSize mPositionSize;
+ Vector4 mBackgroundColor; ///< The background color of the surface
+};
+
+} // namespace Dali
+
+#endif // TEST_RENDER_SURFACE_H
static Integration::Scene GetScene(Dali::Window window);
- Dali::RenderSurfaceInterface& GetSurface();
- Dali::WindowContainer GetWindows();
- Dali::SceneHolderList GetSceneHolders();
+ Dali::Integration::RenderSurfaceInterface& GetSurface();
+ Dali::WindowContainer GetWindows();
+ Dali::SceneHolderList GetSceneHolders();
Dali::Internal::Adaptor::SceneHolder* GetWindow(Dali::Actor& actor);
void AddWindow(Internal::Adaptor::SceneHolder* window);
void Adaptor::RemoveIdle(CallbackBase* callback)
{
- mCallbacks.Erase(std::remove_if(mCallbacks.Begin(), mCallbacks.End(), [&callback](CallbackBase* current) { return callback == current; }), mCallbacks.End());
- mReturnCallbacks.Erase(std::remove_if(mReturnCallbacks.Begin(), mReturnCallbacks.End(), [&callback](CallbackBase* current) { return callback == current; }), mReturnCallbacks.End());
+ mCallbacks.Erase(std::remove_if(mCallbacks.Begin(), mCallbacks.End(), [&callback](CallbackBase* current)
+ { return callback == current; }),
+ mCallbacks.End());
+ mReturnCallbacks.Erase(std::remove_if(mReturnCallbacks.Begin(), mReturnCallbacks.End(), [&callback](CallbackBase* current)
+ { return callback == current; }),
+ mReturnCallbacks.End());
}
void Adaptor::RunIdles()
}
}
-Dali::RenderSurfaceInterface& Adaptor::GetSurface()
+Dali::Integration::RenderSurfaceInterface& Adaptor::GetSurface()
{
DALI_ASSERT_ALWAYS(!mWindows.empty());
- return reinterpret_cast<Dali::RenderSurfaceInterface&>(mWindows.front()->GetRenderSurface());
+ return reinterpret_cast<Dali::Integration::RenderSurfaceInterface&>(mWindows.front()->GetRenderSurface());
}
Dali::WindowContainer Adaptor::GetWindows()
mImpl->RemoveIdle(callback);
}
-void Adaptor::ReplaceSurface(Window window, Dali::RenderSurfaceInterface& surface)
+void Adaptor::ReplaceSurface(Window window, Dali::Integration::RenderSurfaceInterface& surface)
{
}
-void Adaptor::ReplaceSurface(Dali::Integration::SceneHolder window, Dali::RenderSurfaceInterface& surface)
+void Adaptor::ReplaceSurface(Dali::Integration::SceneHolder window, Dali::Integration::RenderSurfaceInterface& surface)
{
}
return mImpl->WindowCreatedSignal();
}
-Dali::RenderSurfaceInterface& Adaptor::GetSurface()
+Dali::Integration::RenderSurfaceInterface& Adaptor::GetSurface()
{
return mImpl->GetSurface();
}
#define DALI_TOOLKIT_SCENE_HOLDER_IMPL_H
/*
- * Copyright (c) 2021 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.
*
*/
-#include <dali/integration-api/adaptor-framework/render-surface-interface.h>
-
#include <dali/integration-api/scene.h>
#include <dali/public-api/actors/layer.h>
#include <dali/public-api/object/base-object.h>
+#include "test-render-surface.h"
namespace Dali
{
-class TestRenderSurface : public Dali::RenderSurfaceInterface
-{
-public:
-
- TestRenderSurface( PositionSize positionSize ) : mPositionSize(positionSize) {};
-
- PositionSize GetPositionSize() const override { return mPositionSize; };
-
- virtual void GetDpi( unsigned int& dpiHorizontal, unsigned int& dpiVertical ) { dpiHorizontal = dpiVertical = 96; }
-
- void InitializeGraphics() override {};
-
- void CreateSurface() override {};
-
- void DestroySurface() override {};
-
- bool ReplaceGraphicsSurface() override { return false; };
-
- void MoveResize( Dali::PositionSize positionSize ) override { mPositionSize = positionSize; };
-
- void StartRender() override {};
-
- bool PreRender( bool resizingSurface, const std::vector<Rect<int>>& damagedRects, Rect<int>& clippingRect ) override { return false; };
-
- void PostRender()
- {
- }
-
- //void PostRender( bool renderToFbo, bool replacingSurface, bool resizingSurface, const std::vector<Rect<int>>& damagedRects ) override {};
-
- void StopRender() override {};
-
- void ReleaseLock() override {};
-
- void SetThreadSynchronization( ThreadSynchronizationInterface& threadSynchronization ) override {};
-
- RenderSurfaceInterface::Type GetSurfaceType() override { return RenderSurfaceInterface::WINDOW_RENDER_SURFACE; };
-
- void MakeContextCurrent() override {};
-
- Integration::DepthBufferAvailable GetDepthBufferRequired() override { return Integration::DepthBufferAvailable::FALSE; };
-
- Integration::StencilBufferAvailable GetStencilBufferRequired() override { return Integration::StencilBufferAvailable::FALSE; };
-
- int GetSurfaceOrientation() const override {return 0;};
-
- int GetScreenOrientation() const override {return 0;};
-
- void SetBackgroundColor( Vector4 color ) {};
-
- Vector4 GetBackgroundColor() { return Color::WHITE; };
-
-private:
- PositionSize mPositionSize;
-};
-
namespace Internal
{
class SceneHolder : public Dali::BaseObject
{
public:
-
- SceneHolder( const Dali::Rect<int>& positionSize );
+ SceneHolder(const Dali::Rect<int>& positionSize);
virtual ~SceneHolder();
- void Add( Dali::Actor actor );
+ void Add(Dali::Actor actor);
- void Remove( Dali::Actor actor );
+ void Remove(Dali::Actor actor);
Dali::Layer GetRootLayer() const;
- void SetBackgroundColor( Vector4 color );
+ void SetBackgroundColor(Vector4 color);
Vector4 GetBackgroundColor() const;
- void FeedTouchPoint( Dali::TouchPoint& point, int timeStamp );
+ void FeedTouchPoint(Dali::TouchPoint& point, int timeStamp);
- void FeedWheelEvent( Dali::WheelEvent& wheelEvent );
+ void FeedWheelEvent(Dali::WheelEvent& wheelEvent);
- void FeedKeyEvent( Dali::KeyEvent& keyEvent );
+ void FeedKeyEvent(Dali::KeyEvent& keyEvent);
Dali::Integration::SceneHolder::KeyEventSignalType& KeyEventSignal();
Integration::Scene GetScene();
- Dali::RenderSurfaceInterface& GetRenderSurface();
+ Dali::Integration::RenderSurfaceInterface& GetRenderSurface();
Dali::RenderTaskList GetRenderTaskList();
protected:
-
- TestRenderSurface mRenderSurface;
+ TestRenderSurface* mRenderSurface;
Integration::Scene mScene;
};
} // namespace Internal
-inline Internal::Adaptor::SceneHolder& GetImplementation( Dali::Integration::SceneHolder& sceneHolder )
+inline Internal::Adaptor::SceneHolder& GetImplementation(Dali::Integration::SceneHolder& sceneHolder)
{
- DALI_ASSERT_ALWAYS( sceneHolder && "SceneHolder handle is empty" );
+ DALI_ASSERT_ALWAYS(sceneHolder && "SceneHolder handle is empty");
BaseObject& object = sceneHolder.GetBaseObject();
- return static_cast<Internal::Adaptor::SceneHolder&>( object );
+ return static_cast<Internal::Adaptor::SceneHolder&>(object);
}
-inline const Internal::Adaptor::SceneHolder& GetImplementation( const Dali::Integration::SceneHolder& sceneHolder )
+inline const Internal::Adaptor::SceneHolder& GetImplementation(const Dali::Integration::SceneHolder& sceneHolder)
{
- DALI_ASSERT_ALWAYS( sceneHolder && "SceneHolder handle is empty" );
+ DALI_ASSERT_ALWAYS(sceneHolder && "SceneHolder handle is empty");
const BaseObject& object = sceneHolder.GetBaseObject();
- return static_cast<const Internal::Adaptor::SceneHolder&>( object );
+ return static_cast<const Internal::Adaptor::SceneHolder&>(object);
}
} // namespace Dali
/*
- * Copyright (c) 2023 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.
#include <dali/integration-api/adaptor-framework/adaptor.h>
#include <dali/public-api/render-tasks/render-task-list.h>
#include <toolkit-adaptor-impl.h>
+#include "test-render-surface.h"
using AdaptorImpl = Dali::Internal::Adaptor::Adaptor;
namespace Adaptor
{
SceneHolder::SceneHolder(const Dali::Rect<int>& positionSize)
-: mRenderSurface(positionSize),
+: mRenderSurface(new TestRenderSurface(positionSize)),
mScene(Dali::Integration::Scene::New(Dali::Size(static_cast<float>(positionSize.width), static_cast<float>(positionSize.height))))
{
}
return mScene;
}
-Dali::RenderSurfaceInterface& SceneHolder::GetRenderSurface()
+Dali::Integration::RenderSurfaceInterface& SceneHolder::GetRenderSurface()
{
- return mRenderSurface;
+ return *mRenderSurface;
}
Dali::RenderTaskList SceneHolder::GetRenderTaskList()
Dali::Window::WindowPosition Window::GetPosition() const
{
- PositionSize positionSize = mRenderSurface.GetPositionSize();
+ PositionSize positionSize = mRenderSurface->GetPositionSize();
return Dali::Window::WindowPosition(positionSize.x, positionSize.y);
}
PositionSize Window::GetPositionSize() const
{
- return mRenderSurface.GetPositionSize();
+ return mRenderSurface->GetPositionSize();
}
Dali::Window::WindowSize Window::GetSize() const
{
- PositionSize positionSize = mRenderSurface.GetPositionSize();
+ PositionSize positionSize = mRenderSurface->GetPositionSize();
return Dali::Window::WindowSize(positionSize.width, positionSize.height);
}
void Window::SetPositionSize(PositionSize positionSize)
{
- mRenderSurface.MoveResize(positionSize);
+ mRenderSurface->MoveResize(positionSize);
Uint16Pair newSize(positionSize.width, positionSize.height);
Dali::Window handle(this);
return GetImplementation(*this).GetScene();
}
-Dali::RenderSurfaceInterface& Window::GetRenderSurface()
+Dali::Integration::RenderSurfaceInterface& Window::GetRenderSurface()
{
return GetImplementation(*this).GetRenderSurface();
}
*
*/
-//EXTERNAL INCLUDES
+// EXTERNAL INCLUDES
#include <dali/integration-api/scene.h>
#include <dali/public-api/math/int-pair.h>
#include <dali/public-api/math/rect.h>
Window& operator=(Window&& rhs);
static Window DownCast(BaseHandle handle);
- Integration::Scene GetScene();
- Dali::RenderSurfaceInterface& GetRenderSurface();
- void Add(Dali::Actor actor);
- void Remove(Dali::Actor actor);
- Dali::Layer GetRootLayer() const;
- void SetBackgroundColor(const Vector4& color);
- Vector4 GetBackgroundColor() const;
- void Raise();
- void Show();
- void Hide();
- bool IsVisible() const;
- FocusChangeSignalType& FocusChangeSignal();
- KeyEventSignalType& KeyEventSignal();
- TouchEventSignalType& TouchedSignal();
- ResizeSignalType& ResizeSignal();
- Dali::RenderTaskList GetRenderTaskList();
+ Integration::Scene GetScene();
+ Dali::Integration::RenderSurfaceInterface& GetRenderSurface();
+ void Add(Dali::Actor actor);
+ void Remove(Dali::Actor actor);
+ Dali::Layer GetRootLayer() const;
+ void SetBackgroundColor(const Vector4& color);
+ Vector4 GetBackgroundColor() const;
+ void Raise();
+ void Show();
+ void Hide();
+ bool IsVisible() const;
+ FocusChangeSignalType& FocusChangeSignal();
+ KeyEventSignalType& KeyEventSignal();
+ TouchEventSignalType& TouchedSignal();
+ ResizeSignalType& ResizeSignal();
+ Dali::RenderTaskList GetRenderTaskList();
public:
explicit Window(Internal::Adaptor::Window* window);