[dali_2.3.22] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / controls / gl-view / gl-view.cpp
index 958d031..5060566 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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-toolkit/public-api/controls/gl-view/gl-view.h>
 
 // INTERNAL INCLUDES
+#include <dali-toolkit/internal/controls/gl-view/drawable-view-impl.h>
 #include <dali-toolkit/internal/controls/gl-view/gl-view-impl.h>
 
-namespace Dali
+namespace Dali::Toolkit
 {
-namespace Toolkit
-{
-GlView::GlView()
-{
-}
+GlView::GlView() = default;
 
 GlView::GlView(const GlView& GlView) = default;
 
-GlView::GlView(GlView&& rhs) = default;
+GlView::GlView(GlView&& rhs) noexcept = default;
 
 GlView& GlView::operator=(const GlView& GlView) = default;
 
-GlView& GlView::operator=(GlView&& rhs) = default;
+GlView& GlView::operator=(GlView&& rhs) noexcept = default;
 
-GlView::~GlView()
-{
-}
+GlView::~GlView() = default;
 
 GlView GlView::New(ColorFormat colorFormat)
 {
+  // This function is backward compatible and always returns
+  // backend based on NativeImage.
   return Internal::GlView::New(colorFormat);
 }
 
+GlView GlView::New(BackendMode backendMode, ColorFormat colorFormat)
+{
+  switch(backendMode)
+  {
+    case BackendMode::DIRECT_RENDERING:
+    case BackendMode::DIRECT_RENDERING_THREADED:
+    case BackendMode::UNSAFE_DIRECT_RENDERING:
+    {
+      return Internal::DrawableView::New(backendMode);
+    }
+    case BackendMode::EGL_IMAGE_OFFSCREEN_RENDERING:
+    {
+      return Internal::GlView::New(colorFormat);
+    }
+    default:
+    {
+      DALI_ASSERT_ALWAYS("Invalid BackendMode");
+    }
+  }
+  return {};
+}
+
 GlView GlView::DownCast(BaseHandle handle)
 {
-  return Control::DownCast<GlView, Internal::GlView>(handle);
+  return Control::DownCast<GlView, Internal::GlViewImpl>(handle);
 }
 
 void GlView::RegisterGlCallbacks(CallbackBase* initCallback, CallbackBase* renderFrameCallback, CallbackBase* terminateCallback)
@@ -76,12 +95,22 @@ Dali::Toolkit::GlView::RenderingMode GlView::GetRenderingMode() const
   return Dali::Toolkit::GetImpl(*this).GetRenderingMode();
 }
 
+Dali::Toolkit::GlView::BackendMode GlView::GetBackendMode() const
+{
+  return Dali::Toolkit::GetImpl(*this).GetBackendMode();
+}
+
 void GlView::RenderOnce()
 {
   Dali::Toolkit::GetImpl(*this).RenderOnce();
 }
 
-GlView::GlView(Internal::GlView& implementation)
+void GlView::BindTextureResources(std::vector<Dali::Texture> textures)
+{
+  Dali::Toolkit::GetImpl(*this).BindTextureResources(std::move(textures));
+}
+
+GlView::GlView(Internal::GlViewImpl& implementation)
 : Control(implementation)
 {
 }
@@ -89,9 +118,7 @@ GlView::GlView(Internal::GlView& implementation)
 GlView::GlView(Dali::Internal::CustomActor* internal)
 : Control(internal)
 {
-  VerifyCustomActorPointer<Internal::GlView>(internal);
+  VerifyCustomActorPointer<Internal::GlViewImpl>(internal);
 }
 
-} // namespace Toolkit
-
-} // namespace Dali
+} // namespace Dali::Toolkit