+Window New(Any surface, PositionSize windowPosition, const std::string& name, bool isTransparent)
+{
+ return DevelWindow::New(surface, windowPosition, name, "", isTransparent);
+}
+
+Window New(Any surface, PositionSize windowPosition, const std::string& name, const std::string& className, bool isTransparent)
+{
+ Window newWindow;
+
+ const bool isAdaptorAvailable = Dali::Adaptor::IsAvailable();
+ bool isNewWindowAllowed = true;
+
+ if(isAdaptorAvailable)
+ {
+ Dali::Adaptor& adaptor = Internal::Adaptor::Adaptor::Get();
+ isNewWindowAllowed = Internal::Adaptor::Adaptor::GetImplementation(adaptor).IsMultipleWindowSupported();
+ }
+
+ if(isNewWindowAllowed)
+ {
+ Internal::Adaptor::Window* window = Internal::Adaptor::Window::New(surface, windowPosition, name, className, WindowType::NORMAL, isTransparent);
+
+ Integration::SceneHolder sceneHolder = Integration::SceneHolder(window);
+ if(isAdaptorAvailable)
+ {
+ Dali::Adaptor& adaptor = Internal::Adaptor::Adaptor::Get();
+ Internal::Adaptor::Adaptor::GetImplementation(adaptor).AddWindow(sceneHolder);
+ }
+ newWindow = Window(window);
+ }
+ else
+ {
+ DALI_LOG_ERROR("This device can't support multiple windows.\n");
+ }
+
+ return newWindow;
+}
+
+void SetPositionSize(Window window, PositionSize positionSize)
+{
+ GetImplementation(window).SetPositionSize(positionSize);
+}
+
+Window Get(Actor actor)
+{
+ return Internal::Adaptor::Window::Get(actor);
+}
+
+EventProcessingFinishedSignalType& EventProcessingFinishedSignal(Window window)
+{
+ return GetImplementation(window).EventProcessingFinishedSignal();
+}
+
+WheelEventSignalType& WheelEventSignal(Window window)
+{
+ return GetImplementation(window).WheelEventSignal();
+}
+
+VisibilityChangedSignalType& VisibilityChangedSignal(Window window)
+{
+ return GetImplementation(window).VisibilityChangedSignal();
+}
+
+TransitionEffectEventSignalType& TransitionEffectEventSignal(Window window)
+{
+ return GetImplementation(window).TransitionEffectEventSignal();
+}
+
+KeyboardRepeatSettingsChangedSignalType& KeyboardRepeatSettingsChangedSignal(Window window)
+{
+ return GetImplementation(window).KeyboardRepeatSettingsChangedSignal();
+}
+
+AuxiliaryMessageSignalType& AuxiliaryMessageSignal(Window window)
+{
+ return GetImplementation(window).AuxiliaryMessageSignal();
+}
+
+AccessibilityHighlightSignalType& AccessibilityHighlightSignal(Window window)
+{
+ return GetImplementation(window).AccessibilityHighlightSignal();
+}
+
+void SetParent(Window window, Window parent)
+{
+ GetImplementation(window).SetParent(parent);
+}
+
+void SetParent(Window window, Window parent, bool belowParent)
+{
+ GetImplementation(window).SetParent(parent, belowParent);
+}
+
+void Unparent(Window window)
+{
+ GetImplementation(window).Unparent();
+}
+
+Window GetParent(Window window)
+{
+ return GetImplementation(window).GetParent();
+}
+
+Window DownCast(BaseHandle handle)
+{
+ return Window(dynamic_cast<Dali::Internal::Adaptor::Window*>(handle.GetObjectPtr()));
+}
+
+WindowOrientation GetCurrentOrientation(Window window)
+{
+ return GetImplementation(window).GetCurrentOrientation();
+}
+
+int GetPhysicalOrientation(Window window)
+{
+ return GetImplementation(window).GetPhysicalOrientation();
+}
+
+void SetAvailableOrientations(Window window, const Dali::Vector<WindowOrientation>& orientations)
+{
+ GetImplementation(window).SetAvailableOrientations(orientations);
+}
+
+int32_t GetNativeId(Window window)
+{
+ return GetImplementation(window).GetNativeId();
+}
+
+void AddFrameRenderedCallback(Window window, std::unique_ptr<CallbackBase> callback, int32_t frameId)
+{
+ GetImplementation(window).AddFrameRenderedCallback(std::move(callback), frameId);
+}
+
+void AddFramePresentedCallback(Window window, std::unique_ptr<CallbackBase> callback, int32_t frameId)
+{
+ GetImplementation(window).AddFramePresentedCallback(std::move(callback), frameId);
+}
+
+void SetPositionSizeWithOrientation(Window window, PositionSize positionSize, WindowOrientation orientation)
+{
+ GetImplementation(window).SetPositionSizeWithOrientation(positionSize, orientation);
+}