2 // Copyright (c) 2012 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.
17 * @file FCntImageContentInfo.h
18 * @brief This is the header file for the %ImageContentInfo class.
20 * This header file contains the declarations of the %ImageContentInfo class.
23 #ifndef _FCNT_IMAGE_CONTENT_INFO_H_
24 #define _FCNT_IMAGE_CONTENT_INFO_H_
26 #include <FCntContentInfo.h>
28 namespace Tizen { namespace Content
31 class _ImageContentInfoImpl;
34 * @class ImageContentInfo
35 * @brief This class provides methods to access the image content information.
39 * @final This class is not intended for extension.
41 * The %ImageContentInfo class provides methods to access the image content information that is extracted from a physical file. @n
42 * Before getting the image content information, ContentManager must be used to create the content.
44 * For more information on the different types of content information, see <a href="../org.tizen.native.appprogramming/html/guide/content/device_content_mgmt.htm">Device Content Management</a>.
46 * The following example demonstrates how to use the %ImageContentInfo class.
50 * MyClass::TestImageContentInfo(void)
52 * result r = E_SUCCESS;
54 * ContentId contentId;
55 * ContentManager contentManager;
56 * r = contentManager.Construct();
57 * TryReturn(!IsFailed(r), r, "Construct failed.");
59 * ImageContentInfo imageContentInfo;
60 * r = imageContentInfo.Construct(null);
61 * TryReturn(!IsFailed(r), r, "Construct failed.");
63 * Tizen::Base::String sourcePath = Tizen::App::App::GetInstance()->GetAppRootPath() + L"data/flower.jpg";
64 * Tizen::Base::String destPath = Tizen::System::Environment::GetMediaPath() + L"Images/flower.jpg";
66 * contentId = contentManager.CreateContent(sourcePath, destPath, false, &imageContentInfo);
67 * TryReturn(Tizen::Base::UuId::GetInvalidUuId() != contentId, GetLastResult(), "CreateContent failed.");
73 class _OSP_EXPORT_ ImageContentInfo
74 : public Tizen::Content::ContentInfo
78 * The object is not fully constructed after this constructor is called. @n
79 * For full construction, the Construct() method must be called right after calling this constructor.
83 ImageContentInfo(void);
86 * This destructor overrides Tizen::Base::Object::~Object().
90 virtual ~ImageContentInfo(void);
93 * Initializes this instance of %ImageContentInfo with the specified parameter.
96 * @brief <i> [Compatibility] </i>
100 * @compatibility This method has compatibility issues with OSP compatible applications. @n
101 * For more information, see @ref CompImageContentInfoConstructPage "here".
104 * @return An error code
105 * @param[in] pContentPath The content path @n
106 * The path should be started with directory path returned by
107 * either Tizen::System::Environment::GetMediaPath() or Tizen::System::Environment::GetExternalStoragePath(). @n
108 * If the path is @c null,
109 * use ContentManager::CreateContent(const Tizen::Base::ByteBuffer&, const Tizen::Base::String&, const ContentInfo*) @n
110 * or ContentManager::CreateContent(const Tizen::Base::String&, const Tizen::Base::String&, bool, const ContentInfo*),
111 * instead of this method.
112 * @exception E_SUCCESS The method is successful.
113 * @exception E_FILE_NOT_FOUND The specified file cannot be found or accessed.
114 * @exception E_INVALID_ARG The specified input parameter is invalid.
115 * @exception E_OUT_OF_MEMORY The memory is insufficient.
116 * @exception E_IO An I/O error has occurred.
117 * @exception E_SYSTEM An internal error has occurred.
118 * @remarks If the content has coordinates as metadata, they are automatically set.
120 result Construct(const Tizen::Base::String* pContentPath);
124 * @page CompImageContentInfoConstructPage Compatibility for the file path.
125 * @section CompImageContentInfoConstructPageIssueSection Issues
126 * The content path argument of this method in OSP compatible applications has the following issues: @n
127 * <UL><li> The content path should be a path that begins with an allowed path prefix.
128 * For example, L"/Media/Images/flower.jpg", L"/Storagecard/Media/Images/flower.jpg". </UL></li>
130 * @section CompImageContentInfoConstructPageSolutionSection Resolutions
131 * This issue has been resolved in Tizen. @n
132 * <UL><li> The content path can be a path without a specific allowed path prefix.
133 * Application do not need to know the specific allowed path prefixes.
134 * To get the directory path, use the following methods: </UL></li>
135 * - For accessing the media directory, use Tizen::System::Environment::GetMediaPath().
136 * - For accessing the external storage, use Tizen::System::Environment::GetExternalStoragePath().
143 * Initializes this instance of %ImageContentInfo with the specified parameters.
145 * @brief <i> [Deprecated] </i>
146 * @deprecated This method is deprecated as there is a problem in managing the user-defined thumbnail and device coordinates. @n
147 * Instead of using this method, use Construct(const Tizen::Base::String*). @n
148 * To set the coordinates in the ContentInfo instance, use ContentInfo::SetCoordinates(const Tizen::Locations::Coordinates&).
151 * @return An error code
152 * @param[in] contentPath The content path
153 * @param[in] thumbnailPath The thumbnail path
154 * @param[in] setGps Set to @c true to save the device's last known coordinates in the ContentInfo instance, @n
156 * The coordinate information may be incorrect if it is outdated or has never been updated.
157 * To update the coordinate information or to get the exact value,
158 * use Tizen::Locations::LocationProvider::RequestLocationUpdates() before calling this method.
159 * @exception E_SUCCESS The method is successful.
160 * @exception E_FILE_NOT_FOUND The specified file cannot be found or accessed.
161 * @exception E_INVALID_ARG The specified input parameter is invalid.
162 * @exception E_OUT_OF_MEMORY The memory is insufficient.
163 * @exception E_IO An I/O error has occurred.
165 * - The content path must start with @c '/Media' or @c '/Storagecard/Media'.
166 * - The thumbnail path must start with @c '/Home', @c '/Media', or @c '/Storagecard/Media'. @n
167 * The permitted format for a thumbnail image is Bitmap (bmp).
170 virtual result Construct(const Tizen::Base::String& contentPath, const Tizen::Base::String& thumbnailPath = L"", bool setGps = false);
173 * Gets the width of the image file.
177 * @return The width of the image file
179 int GetWidth(void) const;
182 * Gets the height of the image file.
186 * @return The height of the image file
188 int GetHeight(void) const;
191 * Gets the title of the image file.
195 * @return The title of the image file, @n
196 * else @c Unknown if the value is empty
198 Tizen::Base::String GetTitle(void) const;
201 * Gets the orientation of the image file.
205 * @return The orientation of the image file
207 ImageOrientationType GetOrientation(void) const;
210 class _ImageContentData
216 , orientationType(IMAGE_ORIENTATION_TYPE_UNKNOWN)
221 ImageOrientationType orientationType;
222 Tizen::Base::String title;
226 * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
228 ImageContentInfo(const ImageContentInfo& rhs);
231 * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
233 ImageContentInfo& operator =(const ImageContentInfo& rhs);
235 result SetImageContentData(const _ImageContentData* pImageContentData);
237 _ImageContentData* GetImageContentData(void);
240 _ImageContentData* __pImageContentData;
242 friend class _ContentManagerImpl;
243 friend class _ContentSearchImpl;
244 friend class _ContentDirectoryImpl;
245 friend class _ContentUtility;
246 friend class _PlayListManagerImpl;
247 friend class _PlayListImpl;
249 friend class _ImageContentInfoImpl;
250 _ImageContentInfoImpl* __pImpl;
252 }; // Class ImageContentInfo
256 #endif // _FCNT_IMAGE_CONTENT_INFO_H_