2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali/public-api/rendering/renderer.h> // Dali::Renderer
22 #include <dali/internal/event/rendering/renderer-impl.h> // Dali::Internal::Renderer
26 Renderer Renderer::New(Geometry& geometry, Shader& shader)
28 Internal::RendererPtr renderer = Internal::Renderer::New();
29 renderer->SetGeometry(GetImplementation(geometry));
30 renderer->SetShader(GetImplementation(shader));
31 return Renderer(renderer.Get());
34 Renderer Renderer::New(RenderCallback& renderCallback)
36 Internal::RendererPtr renderer = Internal::Renderer::New();
37 renderer->SetRenderCallback(&renderCallback);
38 return Renderer(renderer.Get());
41 Renderer::Renderer() = default;
43 Renderer::~Renderer() = default;
45 Renderer::Renderer(const Renderer& handle) = default;
47 Renderer Renderer::DownCast(BaseHandle handle)
49 return Renderer(dynamic_cast<Dali::Internal::Renderer*>(handle.GetObjectPtr()));
52 Renderer& Renderer::operator=(const Renderer& handle) = default;
54 Renderer::Renderer(Renderer&& rhs) = default;
56 Renderer& Renderer::operator=(Renderer&& rhs) = default;
58 void Renderer::SetGeometry(Geometry& geometry)
60 DALI_ASSERT_ALWAYS(geometry && "Geometry handle not initialized");
61 GetImplementation(*this).SetGeometry(GetImplementation(geometry));
64 Geometry Renderer::GetGeometry() const
66 return Dali::Geometry(GetImplementation(*this).GetGeometry().Get());
69 void Renderer::SetTextures(TextureSet& textureSet)
71 DALI_ASSERT_ALWAYS(textureSet && "TextureSet handle not initialized");
72 GetImplementation(*this).SetTextures(GetImplementation(textureSet));
75 TextureSet Renderer::GetTextures() const
77 return Dali::TextureSet(GetImplementation(*this).GetTextures().Get());
80 void Renderer::SetShader(Shader& shader)
82 DALI_ASSERT_ALWAYS(shader && "Shader handle not initialized");
83 GetImplementation(*this).SetShader(GetImplementation(shader));
86 void Renderer::SetRenderCallback(RenderCallback* callback)
88 GetImplementation(*this).SetRenderCallback(callback);
91 Shader Renderer::GetShader() const
93 return Dali::Shader(GetImplementation(*this).GetShader().Get());
96 Renderer::Renderer(Internal::Renderer* pointer)