8db2a8443e20209b8d7ea418cc9f349f50fca1cc
[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   {
44   }
45
46   ~CanvasRenderer()
47   {
48   }
49
50   bool Commit()
51   {
52      return true;
53   }
54
55   bool IsCanvasChanged() const
56   {
57      return true;
58   }
59
60   bool Rasterize()
61   {
62      return true;
63   }
64
65   bool AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
66   {
67     if (!drawable)
68     {
69       return false;
70     }
71     return true;
72   }
73
74   Devel::PixelBuffer GetPixelBuffer()
75   {
76     return mPixelBuffer;
77   }
78
79
80   bool SetSize(const Vector2& size)
81   {
82     mSize = size;
83     // For negative test
84     if ( size.width == -999 && size.height == -999 )
85     {
86       return false;
87     }
88     return true;
89   }
90
91   const Vector2& GetSize()
92   {
93     mSize = Vector2(200, 200);
94     return mSize;
95   }
96
97
98 public:
99    Devel::PixelBuffer mPixelBuffer;
100    Vector2 mSize;
101 };
102
103 inline CanvasRenderer& GetImplementation( Dali::CanvasRenderer& renderer )
104 {
105   DALI_ASSERT_ALWAYS( renderer && "CanvasRenderer handle is empty." );
106   BaseObject& handle = renderer.GetBaseObject();
107   return static_cast< Internal::Adaptor::CanvasRenderer& >( handle );
108 }
109
110 inline const CanvasRenderer& GetImplementation( const Dali::CanvasRenderer& renderer )
111 {
112   DALI_ASSERT_ALWAYS( renderer && "CanvasRenderer handle is empty." );
113   const BaseObject& handle = renderer.GetBaseObject();
114   return static_cast< const Internal::Adaptor::CanvasRenderer& >( handle );
115 }
116
117 } // namespace Adaptor
118
119 } // namespace Internal
120
121
122 /********************************************************************************/
123 /*********************************  PUBLIC CLASS  *******************************/
124 /********************************************************************************/
125
126 CanvasRenderer CanvasRenderer::New( const Vector2& size )
127 {
128   Internal::Adaptor::CanvasRenderer* imageRenderer = new Internal::Adaptor::CanvasRenderer(size);
129
130   return CanvasRenderer( imageRenderer );
131 }
132
133 CanvasRenderer::CanvasRenderer()
134 {
135 }
136
137 CanvasRenderer::~CanvasRenderer()
138 {
139 }
140
141 CanvasRenderer::CanvasRenderer( Internal::Adaptor::CanvasRenderer* internal )
142 : BaseHandle( internal )
143 {
144 }
145
146 bool CanvasRenderer::Commit()
147 {
148   return Internal::Adaptor::GetImplementation(*this).Commit();
149 }
150
151 bool CanvasRenderer::IsCanvasChanged() const
152 {
153   return Internal::Adaptor::GetImplementation(*this).IsCanvasChanged();
154 }
155
156 bool CanvasRenderer::Rasterize()
157 {
158   return Internal::Adaptor::GetImplementation(*this).Rasterize();
159 }
160
161 Devel::PixelBuffer CanvasRenderer::GetPixelBuffer()
162 {
163   return Internal::Adaptor::GetImplementation(*this).GetPixelBuffer();
164 }
165
166 bool CanvasRenderer::AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
167 {
168   return Internal::Adaptor::GetImplementation(*this).AddDrawable(drawable);
169 }
170
171 bool CanvasRenderer::SetSize(const Vector2& size)
172 {
173   return Internal::Adaptor::GetImplementation(*this).SetSize(size);
174 }
175
176 const Vector2& CanvasRenderer::GetSize()
177 {
178   return Internal::Adaptor::GetImplementation(*this).GetSize();
179 }
180
181
182 } // namespace Dali