43807bfe6bafe9040e37001fefd2b4efbc449867
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / toolkit-canvas-renderer.cpp
1 /*
2  * Copyright (c) 2021 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 #include <dali/devel-api/adaptor-framework/canvas-renderer.h>
19 #include <dali/devel-api/adaptor-framework/canvas-renderer-drawable.h>
20 #include <dali/public-api/object/base-object.h>
21 #include <dali/public-api/rendering/renderer.h>
22 #include <toolkit-application.h>
23 #include <toolkit-event-thread-callback.h>
24 #include <memory>
25 #include <cstring>
26 #include <sys/stat.h>
27
28 namespace Dali
29 {
30
31 namespace Internal
32 {
33
34 namespace Adaptor
35 {
36
37 class CanvasRenderer: public Dali::BaseObject
38 {
39 public:
40   CanvasRenderer( const Vector2& size )
41   : mPixelBuffer( Devel::PixelBuffer::New(size.width, size.height, Dali::Pixel::RGBA8888) ),
42     mSize(size),
43     mViewBox(size)
44   {
45   }
46
47   ~CanvasRenderer()
48   {
49   }
50
51   bool Commit()
52   {
53      return true;
54   }
55
56   bool IsCanvasChanged() const
57   {
58      return true;
59   }
60
61   bool Rasterize()
62   {
63      return true;
64   }
65
66   bool AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
67   {
68     if (!drawable)
69     {
70       return false;
71     }
72     return true;
73   }
74
75   Devel::PixelBuffer GetPixelBuffer()
76   {
77     return mPixelBuffer;
78   }
79
80
81   bool SetSize(const Vector2& size)
82   {
83     mSize = size;
84     // For negative test
85     if ( size.width == -999 && size.height == -999 )
86     {
87       return false;
88     }
89     return true;
90   }
91
92   const Vector2& GetSize()
93   {
94     mSize = Vector2(200, 200);
95     return mSize;
96   }
97
98   bool SetViewBox(const Vector2& viewBox)
99   {
100     mViewBox = viewBox;
101     // For negative test
102     if ( viewBox.width == -999 && viewBox.height == -999 )
103     {
104       return false;
105     }
106     return true;
107   }
108
109   const Vector2& GetViewBox()
110   {
111     return mViewBox;
112   }
113
114 public:
115    Devel::PixelBuffer mPixelBuffer;
116    Vector2 mSize;
117    Vector2 mViewBox;
118 };
119
120 inline CanvasRenderer& GetImplementation( Dali::CanvasRenderer& renderer )
121 {
122   DALI_ASSERT_ALWAYS( renderer && "CanvasRenderer handle is empty." );
123   BaseObject& handle = renderer.GetBaseObject();
124   return static_cast< Internal::Adaptor::CanvasRenderer& >( handle );
125 }
126
127 inline const CanvasRenderer& GetImplementation( const Dali::CanvasRenderer& renderer )
128 {
129   DALI_ASSERT_ALWAYS( renderer && "CanvasRenderer handle is empty." );
130   const BaseObject& handle = renderer.GetBaseObject();
131   return static_cast< const Internal::Adaptor::CanvasRenderer& >( handle );
132 }
133
134 } // namespace Adaptor
135
136 } // namespace Internal
137
138
139 /********************************************************************************/
140 /*********************************  PUBLIC CLASS  *******************************/
141 /********************************************************************************/
142
143 CanvasRenderer CanvasRenderer::New( const Vector2& size )
144 {
145   Internal::Adaptor::CanvasRenderer* imageRenderer = new Internal::Adaptor::CanvasRenderer(size);
146
147   return CanvasRenderer( imageRenderer );
148 }
149
150 CanvasRenderer::CanvasRenderer()
151 {
152 }
153
154 CanvasRenderer::~CanvasRenderer()
155 {
156 }
157
158 CanvasRenderer::CanvasRenderer( Internal::Adaptor::CanvasRenderer* internal )
159 : BaseHandle( internal )
160 {
161 }
162
163 bool CanvasRenderer::Commit()
164 {
165   return Internal::Adaptor::GetImplementation(*this).Commit();
166 }
167
168 bool CanvasRenderer::IsCanvasChanged() const
169 {
170   return Internal::Adaptor::GetImplementation(*this).IsCanvasChanged();
171 }
172
173 bool CanvasRenderer::Rasterize()
174 {
175   return Internal::Adaptor::GetImplementation(*this).Rasterize();
176 }
177
178 Devel::PixelBuffer CanvasRenderer::GetPixelBuffer()
179 {
180   return Internal::Adaptor::GetImplementation(*this).GetPixelBuffer();
181 }
182
183 bool CanvasRenderer::AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
184 {
185   return Internal::Adaptor::GetImplementation(*this).AddDrawable(drawable);
186 }
187
188 bool CanvasRenderer::SetSize(const Vector2& size)
189 {
190   return Internal::Adaptor::GetImplementation(*this).SetSize(size);
191 }
192
193 const Vector2& CanvasRenderer::GetSize()
194 {
195   return Internal::Adaptor::GetImplementation(*this).GetSize();
196 }
197
198 bool CanvasRenderer::SetViewBox(const Vector2& viewBox)
199 {
200   return Internal::Adaptor::GetImplementation(*this).SetViewBox(viewBox);
201 }
202
203 const Vector2& CanvasRenderer::GetViewBox()
204 {
205   return Internal::Adaptor::GetImplementation(*this).GetViewBox();
206 }
207
208 } // namespace Dali