Merge "Ensure BaseHandle class move noexcept (core public-api)" into devel/master
[platform/core/uifw/dali-core.git] / dali / public-api / rendering / renderer.cpp
index e894e30..90cb94e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
  */
 
 // CLASS HEADER
-#include <dali/public-api/rendering/renderer.h>          // Dali::Renderer
+#include <dali/public-api/rendering/renderer.h> // Dali::Renderer
 
 // INTERNAL INCLUDES
 #include <dali/internal/event/rendering/renderer-impl.h> // Dali::Internal::Renderer
 
 namespace Dali
 {
-
-Renderer Renderer::New( Geometry& geometry, Shader& shader )
+Renderer Renderer::New(Geometry& geometry, Shader& shader)
 {
-  Internal::RendererPtr renderer = Internal::Renderer::New(  );
-  renderer->SetGeometry( GetImplementation(geometry) );
-  renderer->SetShader( GetImplementation(shader) );
-  return Renderer( renderer.Get() );
+  Internal::RendererPtr renderer = Internal::Renderer::New();
+  renderer->SetGeometry(GetImplementation(geometry));
+  renderer->SetShader(GetImplementation(shader));
+  return Renderer(renderer.Get());
 }
 
-Renderer::Renderer()
+Renderer Renderer::New(RenderCallback& renderCallback)
 {
+  Internal::RendererPtr renderer = Internal::Renderer::New();
+  renderer->SetRenderCallback(&renderCallback);
+  return Renderer(renderer.Get());
 }
 
-Renderer::~Renderer()
-{
-}
+Renderer::Renderer() = default;
 
-Renderer::Renderer( const Renderer& handle )
-: Handle( handle )
-{
-}
+Renderer::~Renderer() = default;
 
-Renderer Renderer::DownCast( BaseHandle handle )
-{
-  return Renderer( dynamic_cast<Dali::Internal::Renderer*>(handle.GetObjectPtr()));
-}
+Renderer::Renderer(const Renderer& handle) = default;
 
-Renderer& Renderer::operator=( const Renderer& handle )
+Renderer Renderer::DownCast(BaseHandle handle)
 {
-  BaseHandle::operator=( handle );
-  return *this;
+  return Renderer(dynamic_cast<Dali::Internal::Renderer*>(handle.GetObjectPtr()));
 }
 
-void Renderer::SetGeometry( Geometry& geometry )
+Renderer& Renderer::operator=(const Renderer& handle) = default;
+
+Renderer::Renderer(Renderer&& rhs) noexcept = default;
+
+Renderer& Renderer::operator=(Renderer&& rhs) noexcept = default;
+
+void Renderer::SetGeometry(Geometry& geometry)
 {
-  DALI_ASSERT_ALWAYS( geometry && "Geometry handle not initialized" );
-  GetImplementation(*this).SetGeometry( GetImplementation(geometry) );
+  DALI_ASSERT_ALWAYS(geometry && "Geometry handle not initialized");
+  GetImplementation(*this).SetGeometry(GetImplementation(geometry));
 }
 
 Geometry Renderer::GetGeometry() const
 {
-  Internal::Geometry* geometryPtr( GetImplementation(*this).GetGeometry() );
-  return Dali::Geometry( geometryPtr );
+  return Dali::Geometry(GetImplementation(*this).GetGeometry().Get());
 }
 
-void Renderer::SetTextures( TextureSet& textureSet )
+void Renderer::SetTextures(TextureSet& textureSet)
 {
-  DALI_ASSERT_ALWAYS( textureSet && "TextureSet handle not initialized" );
-  GetImplementation(*this).SetTextures( GetImplementation(textureSet) );
+  DALI_ASSERT_ALWAYS(textureSet && "TextureSet handle not initialized");
+  GetImplementation(*this).SetTextures(GetImplementation(textureSet));
 }
 
 TextureSet Renderer::GetTextures() const
 {
-  Internal::TextureSet* textureSet( GetImplementation(*this).GetTextures() );
-  return Dali::TextureSet( textureSet );
+  return Dali::TextureSet(GetImplementation(*this).GetTextures().Get());
+}
+
+void Renderer::SetShader(Shader& shader)
+{
+  DALI_ASSERT_ALWAYS(shader && "Shader handle not initialized");
+  GetImplementation(*this).SetShader(GetImplementation(shader));
 }
 
-void Renderer::SetShader( Shader& shader )
+void Renderer::SetRenderCallback(RenderCallback* callback)
 {
-  DALI_ASSERT_ALWAYS( shader && "Shader handle not initialized" );
-  GetImplementation(*this).SetShader( GetImplementation(shader) );
+  GetImplementation(*this).SetRenderCallback(callback);
 }
 
 Shader Renderer::GetShader() const
 {
-  Internal::Shader* shaderPtr( GetImplementation(*this).GetShader() );
-  return Dali::Shader( shaderPtr );
+  return Dali::Shader(GetImplementation(*this).GetShader().Get());
 }
 
-Renderer::Renderer( Internal::Renderer* pointer )
-: Handle( pointer )
+Renderer::Renderer(Internal::Renderer* pointer)
+: Handle(pointer)
 {
 }