2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include <dali/public-api/images/image.h>
22 #include <dali/public-api/images/image-attributes.h>
23 #include <dali/public-api/math/vector2.h>
24 #include <dali/internal/event/images/image-impl.h>
25 #include <dali/internal/event/common/thread-local-storage.h>
26 #include <dali/integration-api/platform-abstraction.h>
31 const char* const Image::SIGNAL_IMAGE_LOADING_FINISHED = "image-loading-finished";
32 const char* const Image::SIGNAL_IMAGE_UPLOADED = "uploaded";
34 Vector2 Image::GetImageSize(const std::string fileName)
37 Internal::ThreadLocalStorage::Get().GetPlatformAbstraction().GetClosestImageSize(fileName, ImageAttributes::DEFAULT_ATTRIBUTES, size);
45 Image::Image(Internal::Image* internal) : BaseHandle(internal)
53 Image::Image(const Image& handle)
58 Image& Image::operator=(const Image& rhs)
60 BaseHandle::operator=(rhs);
64 Image& Image::operator=(BaseHandle::NullType* rhs)
66 DALI_ASSERT_ALWAYS( (rhs == NULL) && "Can only assign NULL pointer to handle");
71 Image Image::New(const std::string& filename)
73 Internal::ImagePtr internal = Internal::Image::New( filename,
74 Dali::ImageAttributes::DEFAULT_ATTRIBUTES );
75 return Image(internal.Get());
78 Image Image::New(const std::string& filename, LoadPolicy loadPol, ReleasePolicy releasePol)
80 Internal::ImagePtr internal = Internal::Image::New( filename,
81 Dali::ImageAttributes::DEFAULT_ATTRIBUTES,
82 loadPol, releasePol );
83 return Image(internal.Get());
86 Image Image::New(const std::string& filename, const ImageAttributes& attributes)
88 Internal::ImagePtr internal = Internal::Image::New(filename, attributes);
89 return Image(internal.Get());
92 Image Image::New(const std::string& filename, const ImageAttributes& attributes, LoadPolicy loadPol, ReleasePolicy releasePol)
94 Internal::ImagePtr internal = Internal::Image::New(filename, attributes, loadPol, releasePol);
95 return Image(internal.Get());
98 Image Image::NewDistanceField(const std::string& filename)
100 ImageAttributes attributes = ImageAttributes::NewDistanceField();
101 Internal::ImagePtr internal = Internal::Image::New(filename, attributes);
102 return Image(internal.Get());
105 Image Image::NewDistanceField(const std::string& filename, LoadPolicy loadPol, ReleasePolicy releasePol)
107 ImageAttributes attributes = ImageAttributes::NewDistanceField();
108 Internal::ImagePtr internal = Internal::Image::New(filename, attributes, loadPol, releasePol);
109 return Image(internal.Get());
112 Image Image::NewDistanceField(const std::string& filename, const ImageAttributes& attributes)
114 DALI_ASSERT_DEBUG(attributes.IsDistanceField());
116 Internal::ImagePtr internal = Internal::Image::New(filename, attributes);
117 return Image(internal.Get());
120 Image Image::NewDistanceField(const std::string& filename, const ImageAttributes& attributes, LoadPolicy loadPol, ReleasePolicy releasePol)
122 DALI_ASSERT_DEBUG(attributes.IsDistanceField());
124 Internal::ImagePtr internal = Internal::Image::New(filename, attributes, loadPol, releasePol);
125 return Image(internal.Get());
128 Image Image::New(NativeImage& nativeImg)
130 Internal::ImagePtr internal = Internal::Image::New(nativeImg);
131 return Image(internal.Get());
134 Image Image::New(NativeImage& nativeImg, LoadPolicy loadPol, ReleasePolicy releasePol)
136 Internal::ImagePtr internal = Internal::Image::New(nativeImg, loadPol, releasePol);
137 return Image(internal.Get());
140 Image Image::DownCast( BaseHandle handle )
142 return Image( dynamic_cast<Dali::Internal::Image*>(handle.GetObjectPtr()) );
145 LoadingState Image::GetLoadingState() const
147 return GetImplementation(*this).GetLoadingState();
150 ImageAttributes Image::GetAttributes() const
152 return GetImplementation(*this).GetAttributes();
155 std::string Image::GetFilename() const
157 return GetImplementation(*this).GetFilename();
160 Image::LoadPolicy Image::GetLoadPolicy() const
162 return GetImplementation(*this).GetLoadPolicy();
165 Image::ReleasePolicy Image::GetReleasePolicy() const
167 return GetImplementation(*this).GetReleasePolicy();
170 unsigned int Image::GetWidth() const
172 return GetImplementation(*this).GetWidth();
175 unsigned int Image::GetHeight() const
177 return GetImplementation(*this).GetHeight();
182 GetImplementation(*this).Reload();
185 Image::ImageSignalV2& Image::LoadingFinishedSignal()
187 return GetImplementation(*this).LoadingFinishedSignal();
190 Image::ImageSignalV2& Image::UploadedSignal()
192 return GetImplementation(*this).UploadedSignal();