Merge "add theme to TextSelectionPopup/Button/Toolbar according to 6.5 IoT UX" into...
[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 AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
56   {
57     if (!drawable)
58     {
59       return false;
60     }
61     return true;
62   }
63
64   Devel::PixelBuffer GetPixelBuffer()
65   {
66     return mPixelBuffer;
67   }
68
69
70   bool SetSize(const Vector2& size)
71   {
72     mSize = size;
73     // For negative test
74     if ( size.width == -999 && size.height == -999 )
75     {
76       return false;
77     }
78     return true;
79   }
80
81   const Vector2& GetSize()
82   {
83     mSize = Vector2(200, 200);
84     return mSize;
85   }
86
87
88 public:
89    Devel::PixelBuffer mPixelBuffer;
90    Vector2 mSize;
91 };
92
93 inline CanvasRenderer& GetImplementation( Dali::CanvasRenderer& renderer )
94 {
95   DALI_ASSERT_ALWAYS( renderer && "CanvasRenderer handle is empty." );
96   BaseObject& handle = renderer.GetBaseObject();
97   return static_cast< Internal::Adaptor::CanvasRenderer& >( handle );
98 }
99
100 inline const CanvasRenderer& GetImplementation( const Dali::CanvasRenderer& renderer )
101 {
102   DALI_ASSERT_ALWAYS( renderer && "CanvasRenderer handle is empty." );
103   const BaseObject& handle = renderer.GetBaseObject();
104   return static_cast< const Internal::Adaptor::CanvasRenderer& >( handle );
105 }
106
107 } // namespace Adaptor
108
109 } // namespace Internal
110
111
112 /********************************************************************************/
113 /*********************************  PUBLIC CLASS  *******************************/
114 /********************************************************************************/
115
116 CanvasRenderer CanvasRenderer::New( const Vector2& size )
117 {
118   Internal::Adaptor::CanvasRenderer* imageRenderer = new Internal::Adaptor::CanvasRenderer(size);
119
120   return CanvasRenderer( imageRenderer );
121 }
122
123 CanvasRenderer::CanvasRenderer()
124 {
125 }
126
127 CanvasRenderer::~CanvasRenderer()
128 {
129 }
130
131 CanvasRenderer::CanvasRenderer( Internal::Adaptor::CanvasRenderer* internal )
132 : BaseHandle( internal )
133 {
134 }
135
136 bool CanvasRenderer::Commit()
137 {
138   return Internal::Adaptor::GetImplementation(*this).Commit();
139 }
140
141 Devel::PixelBuffer CanvasRenderer::GetPixelBuffer()
142 {
143   return Internal::Adaptor::GetImplementation(*this).GetPixelBuffer();
144 }
145
146 bool CanvasRenderer::AddDrawable(Dali::CanvasRenderer::Drawable& drawable)
147 {
148   return Internal::Adaptor::GetImplementation(*this).AddDrawable(drawable);
149 }
150
151 bool CanvasRenderer::SetSize(const Vector2& size)
152 {
153   return Internal::Adaptor::GetImplementation(*this).SetSize(size);
154 }
155
156 const Vector2& CanvasRenderer::GetSize()
157 {
158   return Internal::Adaptor::GetImplementation(*this).GetSize();
159 }
160
161
162 } // namespace Dali