Merge "Fix documentation for Text::EditableControlInterface interface override functi...
[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 <cstring>
25 #include <sys/stat.h>
26
27 namespace Dali
28 {
29
30 namespace Internal
31 {
32
33 namespace Adaptor
34 {
35
36 class VectorImageRenderer: public Dali::BaseObject
37 {
38 public:
39
40   VectorImageRenderer()
41   : mWidth(0),
42     mHeight(0),
43     mRasterizeSuccess(true)
44   {
45   }
46
47   ~VectorImageRenderer()
48   {
49   }
50
51   bool Load(const Vector<uint8_t>& data, float dpi)
52   {
53     if(strncmp(reinterpret_cast<char*>(data.Begin()), "invalid", 7) == 0)
54     {
55       return false;
56     }
57     else if(strncmp(reinterpret_cast<char*>(data.Begin()), "Fail to rasterize", strlen("Fail to rasterize")) == 0)
58     {
59       mRasterizeSuccess = false;
60     }
61     return true;
62   }
63
64   bool Rasterize(Dali::Devel::PixelBuffer& buffer, float scale)
65   {
66      return mRasterizeSuccess;
67   }
68
69   void GetDefaultSize(uint32_t& width, uint32_t& height) const
70   {
71     width = 100;
72     height = 100;
73   }
74
75 public:
76
77   uint32_t mWidth;
78   uint32_t mHeight;
79   bool     mRasterizeSuccess;
80 };
81
82 inline VectorImageRenderer& GetImplementation( Dali::VectorImageRenderer& renderer )
83 {
84   DALI_ASSERT_ALWAYS( renderer && "VectorImageRenderer handle is empty." );
85   BaseObject& handle = renderer.GetBaseObject();
86   return static_cast< Internal::Adaptor::VectorImageRenderer& >( handle );
87 }
88
89 inline const VectorImageRenderer& GetImplementation( const Dali::VectorImageRenderer& renderer )
90 {
91   DALI_ASSERT_ALWAYS( renderer && "VectorImageRenderer handle is empty." );
92   const BaseObject& handle = renderer.GetBaseObject();
93   return static_cast< const Internal::Adaptor::VectorImageRenderer& >( handle );
94 }
95
96 } // namespace Adaptor
97
98 } // namespace Internal
99
100
101 /********************************************************************************/
102 /*********************************  PUBLIC CLASS  *******************************/
103 /********************************************************************************/
104
105 VectorImageRenderer VectorImageRenderer::New()
106 {
107   Internal::Adaptor::VectorImageRenderer* imageRenderer = new Internal::Adaptor::VectorImageRenderer();
108
109   return VectorImageRenderer( imageRenderer );
110 }
111
112 VectorImageRenderer::VectorImageRenderer()
113 {
114 }
115
116 VectorImageRenderer::~VectorImageRenderer()
117 {
118 }
119
120 VectorImageRenderer::VectorImageRenderer( Internal::Adaptor::VectorImageRenderer* internal )
121 : BaseHandle( internal )
122 {
123 }
124
125 bool VectorImageRenderer::Load(const Vector<uint8_t>& data, float dpi)
126 {
127   return Internal::Adaptor::GetImplementation(*this).Load(data, dpi);
128 }
129
130 bool VectorImageRenderer::Rasterize(Dali::Devel::PixelBuffer& buffer, float scale)
131 {
132   return Internal::Adaptor::GetImplementation(*this).Rasterize(buffer, scale);
133 }
134
135 void VectorImageRenderer::GetDefaultSize( uint32_t& width, uint32_t& height ) const
136 {
137   Internal::Adaptor::GetImplementation( *this ).GetDefaultSize( width, height );
138 }
139
140 } // namespace Dali