SvgVisual: Using VectorImageRenderer
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / toolkit-vector-image-renderer.cpp
1 /*
2  * Copyright (c) 2020 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/vector-image-renderer.h>
19 #include <dali/public-api/object/base-object.h>
20 #include <dali/public-api/rendering/renderer.h>
21 #include <toolkit-application.h>
22 #include <toolkit-event-thread-callback.h>
23 #include <memory>
24 #include <sys/stat.h>
25
26 namespace Dali
27 {
28
29 namespace Internal
30 {
31
32 namespace Adaptor
33 {
34
35 class VectorImageRenderer: public Dali::BaseObject
36 {
37 public:
38
39   VectorImageRenderer()
40   : mUrl(),
41     mRenderer(),
42     mWidth( 0 ),
43     mHeight( 0 )
44   {
45   }
46
47   ~VectorImageRenderer()
48   {
49   }
50
51   bool Render( float scale )
52   {
53      return true;
54   }
55
56   void SetBuffer( Dali::Devel::PixelBuffer &buffer )
57   {
58   }
59
60   bool Load( const std::string& url )
61   {
62     struct stat sb;
63     if ( stat(url.c_str(), &sb) == 0 )
64     {
65       return true;
66     }
67
68     return false;
69   }
70
71   bool Load( const char *data, uint32_t size )
72   {
73     return true;
74   }
75
76   void GetDefaultSize( uint32_t& width, uint32_t& height ) const
77   {
78     width = 100;
79     height = 100;
80   }
81
82 public:
83
84   std::string mUrl;
85   Dali::Renderer mRenderer;
86   uint32_t mWidth;
87   uint32_t mHeight;
88 };
89
90 inline VectorImageRenderer& GetImplementation( Dali::VectorImageRenderer& renderer )
91 {
92   DALI_ASSERT_ALWAYS( renderer && "VectorImageRenderer handle is empty." );
93   BaseObject& handle = renderer.GetBaseObject();
94   return static_cast< Internal::Adaptor::VectorImageRenderer& >( handle );
95 }
96
97 inline const VectorImageRenderer& GetImplementation( const Dali::VectorImageRenderer& renderer )
98 {
99   DALI_ASSERT_ALWAYS( renderer && "VectorImageRenderer handle is empty." );
100   const BaseObject& handle = renderer.GetBaseObject();
101   return static_cast< const Internal::Adaptor::VectorImageRenderer& >( handle );
102 }
103
104 } // namespace Adaptor
105
106 } // namespace Internal
107
108
109 /********************************************************************************/
110 /*********************************  PUBLIC CLASS  *******************************/
111 /********************************************************************************/
112
113 VectorImageRenderer VectorImageRenderer::New()
114 {
115   Internal::Adaptor::VectorImageRenderer* imageRenderer = new Internal::Adaptor::VectorImageRenderer();
116
117   return VectorImageRenderer( imageRenderer );
118 }
119
120 VectorImageRenderer::VectorImageRenderer()
121 {
122 }
123
124 VectorImageRenderer::~VectorImageRenderer()
125 {
126 }
127
128 VectorImageRenderer::VectorImageRenderer( Internal::Adaptor::VectorImageRenderer* internal )
129 : BaseHandle( internal )
130 {
131 }
132
133 void VectorImageRenderer::SetBuffer( Dali::Devel::PixelBuffer &buffer )
134 {
135   Internal::Adaptor::GetImplementation( *this ).SetBuffer( buffer );
136 }
137
138 bool VectorImageRenderer::Render( float scale )
139 {
140   return Internal::Adaptor::GetImplementation( *this ).Render( scale );
141 }
142
143 bool VectorImageRenderer::Load( const std::string& url )
144 {
145   return Internal::Adaptor::GetImplementation( *this ).Load( url );
146 }
147
148 bool VectorImageRenderer::Load( const char *data, uint32_t size )
149 {
150   return Internal::Adaptor::GetImplementation( *this ).Load( data, size );
151 }
152
153 void VectorImageRenderer::GetDefaultSize( uint32_t& width, uint32_t& height ) const
154 {
155   Internal::Adaptor::GetImplementation( *this ).GetDefaultSize( width, height );
156 }
157
158 } // namespace Dali