DALi Version 2.2.17
[platform/core/uifw/dali-core.git] / dali / public-api / rendering / renderer.cpp
1 /*
2  * Copyright (c) 2022 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 // CLASS HEADER
19 #include <dali/public-api/rendering/renderer.h> // Dali::Renderer
20
21 // INTERNAL INCLUDES
22 #include <dali/internal/event/rendering/renderer-impl.h> // Dali::Internal::Renderer
23
24 namespace Dali
25 {
26 Renderer Renderer::New(Geometry& geometry, Shader& shader)
27 {
28   Internal::RendererPtr renderer = Internal::Renderer::New();
29   renderer->SetGeometry(GetImplementation(geometry));
30   renderer->SetShader(GetImplementation(shader));
31   return Renderer(renderer.Get());
32 }
33
34 Renderer Renderer::New(RenderCallback& renderCallback)
35 {
36   Internal::RendererPtr renderer = Internal::Renderer::New();
37   renderer->SetRenderCallback(&renderCallback);
38   return Renderer(renderer.Get());
39 }
40
41 Renderer::Renderer() = default;
42
43 Renderer::~Renderer() = default;
44
45 Renderer::Renderer(const Renderer& handle) = default;
46
47 Renderer Renderer::DownCast(BaseHandle handle)
48 {
49   return Renderer(dynamic_cast<Dali::Internal::Renderer*>(handle.GetObjectPtr()));
50 }
51
52 Renderer& Renderer::operator=(const Renderer& handle) = default;
53
54 Renderer::Renderer(Renderer&& rhs) = default;
55
56 Renderer& Renderer::operator=(Renderer&& rhs) = default;
57
58 void Renderer::SetGeometry(Geometry& geometry)
59 {
60   DALI_ASSERT_ALWAYS(geometry && "Geometry handle not initialized");
61   GetImplementation(*this).SetGeometry(GetImplementation(geometry));
62 }
63
64 Geometry Renderer::GetGeometry() const
65 {
66   return Dali::Geometry(GetImplementation(*this).GetGeometry().Get());
67 }
68
69 void Renderer::SetTextures(TextureSet& textureSet)
70 {
71   DALI_ASSERT_ALWAYS(textureSet && "TextureSet handle not initialized");
72   GetImplementation(*this).SetTextures(GetImplementation(textureSet));
73 }
74
75 TextureSet Renderer::GetTextures() const
76 {
77   return Dali::TextureSet(GetImplementation(*this).GetTextures().Get());
78 }
79
80 void Renderer::SetShader(Shader& shader)
81 {
82   DALI_ASSERT_ALWAYS(shader && "Shader handle not initialized");
83   GetImplementation(*this).SetShader(GetImplementation(shader));
84 }
85
86 void Renderer::SetRenderCallback(RenderCallback* callback)
87 {
88   GetImplementation(*this).SetRenderCallback(callback);
89 }
90
91 Shader Renderer::GetShader() const
92 {
93   return Dali::Shader(GetImplementation(*this).GetShader().Get());
94 }
95
96 Renderer::Renderer(Internal::Renderer* pointer)
97 : Handle(pointer)
98 {
99 }
100
101 } //namespace Dali