f392f518a3f890c81c439ccf9b9b4d5cca1881af
[platform/core/uifw/dali-core.git] / dali / public-api / images / image.cpp
1 //
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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 // CLASS HEADER
18 #include <dali/public-api/images/image.h>
19
20 // INTERNAL INCLUDES
21 #include <dali/public-api/images/image-attributes.h>
22 #include <dali/public-api/math/vector2.h>
23 #include <dali/internal/event/images/image-impl.h>
24 #include <dali/internal/event/common/thread-local-storage.h>
25 #include <dali/integration-api/platform-abstraction.h>
26
27 namespace Dali
28 {
29
30 const char* const Image::SIGNAL_IMAGE_LOADING_FINISHED = "image-loading-finished";
31 const char* const Image::SIGNAL_IMAGE_UPLOADED = "uploaded";
32
33 Vector2 Image::GetImageSize(const std::string fileName)
34 {
35   Vector2 size;
36   Internal::ThreadLocalStorage::Get().GetPlatformAbstraction().LoadImageMetadata(fileName, size);
37
38   return size;
39 }
40
41 Image::Image()
42 {
43 }
44
45 Image::Image(Internal::Image* internal) : BaseHandle(internal)
46 {
47 }
48
49 Image::~Image()
50 {
51 }
52
53 Image Image::New(const std::string& filename)
54 {
55   Internal::Image* internal = Internal::Image::New(filename);
56   return Image(internal);
57 }
58
59 Image Image::New(const std::string& filename, LoadPolicy loadPol, ReleasePolicy releasePol)
60 {
61   Internal::Image* internal = Internal::Image::New(filename, loadPol, releasePol);
62   return Image(internal);
63 }
64
65 Image Image::New(const std::string& filename, const ImageAttributes& attributes)
66 {
67   Internal::Image* internal = Internal::Image::New(filename, attributes);
68   return Image(internal);
69 }
70
71 Image Image::New(const std::string& filename, const ImageAttributes& attributes, LoadPolicy loadPol, ReleasePolicy releasePol)
72 {
73   Internal::Image* internal = Internal::Image::New(filename, attributes, loadPol, releasePol);
74   return Image(internal);
75 }
76
77 Image Image::NewDistanceField(const std::string& filename)
78 {
79   ImageAttributes attributes = ImageAttributes::NewDistanceField();
80   Internal::Image* internal = Internal::Image::New(filename, attributes);
81   return Image(internal);
82 }
83
84 Image Image::NewDistanceField(const std::string& filename, LoadPolicy loadPol, ReleasePolicy releasePol)
85 {
86   ImageAttributes attributes = ImageAttributes::NewDistanceField();
87   Internal::Image* internal = Internal::Image::New(filename, attributes, loadPol, releasePol);
88   return Image(internal);
89 }
90
91 Image Image::NewDistanceField(const std::string& filename, const ImageAttributes& attributes)
92 {
93   DALI_ASSERT_DEBUG(attributes.IsDistanceField());
94
95   Internal::Image* internal = Internal::Image::New(filename, attributes);
96   return Image(internal);
97 }
98
99 Image Image::NewDistanceField(const std::string& filename, const ImageAttributes& attributes, LoadPolicy loadPol, ReleasePolicy releasePol)
100 {
101   DALI_ASSERT_DEBUG(attributes.IsDistanceField());
102
103   Internal::Image* internal = Internal::Image::New(filename, attributes, loadPol, releasePol);
104   return Image(internal);
105 }
106
107 Image Image::New(NativeImage& nativeImg)
108 {
109   Internal::Image* internal = Internal::Image::New(nativeImg);
110   return Image(internal);
111 }
112
113 Image Image::New(NativeImage& nativeImg, LoadPolicy loadPol, ReleasePolicy releasePol)
114 {
115   Internal::Image* internal = Internal::Image::New(nativeImg, loadPol, releasePol);
116   return Image(internal);
117 }
118
119 Image Image::DownCast( BaseHandle handle )
120 {
121   return Image( dynamic_cast<Dali::Internal::Image*>(handle.GetObjectPtr()) );
122 }
123
124 LoadingState Image::GetLoadingState() const
125 {
126   return GetImplementation(*this).GetLoadingState();
127 }
128
129 ImageAttributes Image::GetAttributes() const
130 {
131   return GetImplementation(*this).GetAttributes();
132 }
133
134 std::string Image::GetFilename() const
135 {
136   return GetImplementation(*this).GetFilename();
137 }
138
139 Image::LoadPolicy Image::GetLoadPolicy() const
140 {
141   return GetImplementation(*this).GetLoadPolicy();
142 }
143
144 Image::ReleasePolicy Image::GetReleasePolicy() const
145 {
146   return GetImplementation(*this).GetReleasePolicy();
147 }
148
149 unsigned int Image::GetWidth() const
150 {
151   return GetImplementation(*this).GetWidth();
152 }
153
154 unsigned int Image::GetHeight() const
155 {
156   return GetImplementation(*this).GetHeight();
157 }
158
159 void Image::Reload()
160 {
161   GetImplementation(*this).Reload();
162 }
163
164 Image::ImageSignalV2& Image::LoadingFinishedSignal()
165 {
166   return GetImplementation(*this).LoadingFinishedSignal();
167 }
168
169 Image::ImageSignalV2& Image::UploadedSignal()
170 {
171   return GetImplementation(*this).UploadedSignal();
172 }
173
174 } // namespace Dali