Fix : Remove exception handling codes at the sample code
[platform/framework/native/content.git] / inc / FCntImageContentInfo.h
1 //
2 // Copyright (c) 2012 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  * @file                        FCntImageContentInfo.h
18  * @brief               This is the header file for the %ImageContentInfo class.
19  *
20  * This header file contains the declarations of the %ImageContentInfo class.
21  */
22
23 #ifndef _FCNT_IMAGE_CONTENT_INFO_H_
24 #define _FCNT_IMAGE_CONTENT_INFO_H_
25
26 #include <FCntContentInfo.h>
27
28 namespace Tizen { namespace Content
29 {
30
31 class _ImageContentInfoImpl;
32 class _ImageContentData;
33
34 /**
35  * @class       ImageContentInfo
36  * @brief       This class provides methods to access the image content information.
37  *
38  * @since       2.0
39  *
40  * @final       This class is not intended for extension.
41  *
42  * The %ImageContentInfo class provides methods to access the image content information that is extracted from a physical file. @n
43  * Before getting the image content information, ContentManager must be used to create the content.
44  *
45  * 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  *
47  * The following example demonstrates how to use the %ImageContentInfo class.
48  *
49  * @code
50  * #include <FApp.h>
51  * #include <FBase.h>
52  * #include <FContent.h>
53  * #include <FSystem.h>
54  *
55  * using namespace Tizen::Content;
56  *
57  * result
58  * MyClass::TestImageContentInfo(void)
59  * {
60  *              ContentManager contentManager;
61  *              result r = contentManager.Construct();
62  *
63  *              ImageContentInfo imageContentInfo;
64  *              r = imageContentInfo.Construct(null);
65  *
66  *              Tizen::Base::String sourcePath = Tizen::App::App::GetInstance()->GetAppRootPath() + L"data/flower.jpg";
67  *              Tizen::Base::String destPath = Tizen::System::Environment::GetMediaPath() + L"Images/flower.jpg";
68  *
69  *              ContentId contentId = contentManager.CreateContent(sourcePath, destPath, false, &imageContentInfo);
70  *              r = GetLastResult();
71  *
72  *              return r;
73  * }
74  * @endcode
75  */
76 class _OSP_EXPORT_ ImageContentInfo
77         : public Tizen::Content::ContentInfo
78 {
79 public:
80         /**
81          * The object is not fully constructed after this constructor is called. @n
82          * For full construction, the Construct() method must be called right after calling this constructor.
83          *
84          * @since               2.0
85          */
86         ImageContentInfo(void);
87
88         /**
89          * This destructor overrides Tizen::Base::Object::~Object().
90          *
91          * @since               2.0
92          */
93         virtual ~ImageContentInfo(void);
94
95         /**
96          * Initializes this instance of %ImageContentInfo with the specified parameter.
97          *
98          * @if OSPCOMPAT
99          * @brief <i> [Compatibility] </i>
100          * @endif
101          * @since                       2.0
102          * @if OSPCOMPAT
103          * @compatibility This method has compatibility issues with OSP compatible applications. @n
104          *                For more information, see @ref CompImageContentInfoConstructPage "here".
105          * @endif
106          *
107          * @return              An error code
108          * @param[in]   pContentPath            The content path @n
109          *                                                                      The path should start with the directory path returned by
110          *                                                                      either Tizen::System::Environment::GetMediaPath() or Tizen::System::Environment::GetExternalStoragePath() @n
111          *                                                                      If the path is @c null,
112          *                                                                      use ContentManager::CreateContent(const Tizen::Base::ByteBuffer&, const Tizen::Base::String&, const ContentInfo*) @n
113          *                                                                      or ContentManager::CreateContent(const Tizen::Base::String&, const Tizen::Base::String&, bool, const ContentInfo*),
114          *                                                                      instead of this method.
115          * @exception   E_SUCCESS                       The method is successful.
116          * @exception   E_FILE_NOT_FOUND        The specified file cannot be found or accessed.
117          * @exception   E_INVALID_ARG           The specified input parameter is invalid.
118          * @exception   E_OUT_OF_MEMORY         The memory is insufficient.
119          * @exception   E_IO                            An I/O error has occurred.
120          * @exception   E_SYSTEM                        An internal error has occurred.
121          * @remarks     If the content has coordinates as metadata, they are automatically set.
122          */
123         result Construct(const Tizen::Base::String* pContentPath);
124
125         /**
126          * @if OSPCOMPAT
127          * @page        CompImageContentInfoConstructPage Compatibility for the file path.
128          * @section     CompImageContentInfoConstructPageIssueSection Issues
129          *                 The content path argument of this method in OSP compatible applications has the following issues: @n
130          *                 <UL><li> The content path should be a path that begins with an allowed path prefix.
131          *                     For example, L"/Media/Images/flower.jpg", L"/Storagecard/Media/Images/flower.jpg". </UL></li>
132          *
133          * @section             CompImageContentInfoConstructPageSolutionSection Resolutions
134          *              This issue has been resolved in Tizen. @n
135          *                 <UL><li> The content path can be a path without a specific allowed path prefix.
136          *                 Applications do not need to know the specific allowed path prefixes.
137          *                 To get the directory path, use the following methods:  </UL></li>
138          *                 - For accessing the media directory, use Tizen::System::Environment::GetMediaPath().
139          *                 - For accessing the external storage, use Tizen::System::Environment::GetExternalStoragePath().
140          *
141          * @endif
142          */
143
144         /**
145          * @if OSPDEPREC
146          * Initializes this instance of %ImageContentInfo with the specified parameters.
147          *
148          * @brief       <i> [Deprecated] </i>
149          * @deprecated   This method is deprecated as there is a problem in managing the user-defined thumbnail and device coordinates. @n
150          *               Instead of using this method, use Construct(const Tizen::Base::String*). @n
151          *               To set the coordinates in the ContentInfo instance, use ContentInfo::SetCoordinates(const Tizen::Locations::Coordinates&).
152          * @since                       2.0
153          *
154          * @return                      An error code
155          * @param[in]           contentPath                                     The content path
156          * @param[in]           thumbnailPath                           The thumbnail path
157          * @param[in]           setGps                                          Set to @c true to save the device's last known coordinates of the ContentInfo instance, @n
158          *                                              else @c false @n
159          *                                                                                              The coordinate information may be incorrect if it is outdated or has never been updated @n
160          *                                              To update the coordinate information or to get the exact value,
161          *                                              use Tizen::Locations::LocationProvider::RequestLocationUpdates() before calling this method.
162          * @exception           E_SUCCESS                                       The method is successful.
163          * @exception           E_FILE_NOT_FOUND                        The specified file cannot be found or accessed.
164          * @exception           E_INVALID_ARG                           The specified input parameter is invalid.
165          * @exception           E_OUT_OF_MEMORY                         The memory is insufficient.
166          * @exception           E_IO                                            An I/O error has occurred.
167          * @remarks
168          *                              - The content path must start with @c '/Media' or @c '/Storagecard/Media'.
169          *                              - The thumbnail path must start with @c '/Home', @c '/Media', or @c '/Storagecard/Media'. @n
170          *                              The permitted format for a thumbnail image is bitmap (bmp).
171          * @endif
172          */
173         virtual result Construct(const Tizen::Base::String& contentPath, const Tizen::Base::String& thumbnailPath = L"", bool setGps = false);
174
175         /**
176          * Gets the width of the image file.
177          *
178          * @since               2.0
179          *
180          * @return              The width of the image file
181          */
182         int GetWidth(void) const;
183
184         /**
185          * Gets the height of the image file.
186          *
187          * @since               2.0
188          *
189          * @return              The height of the image file
190          */
191         int GetHeight(void) const;
192
193         /**
194          * Gets the title of the image file.
195          *
196          * @since               2.0
197          *
198          * @return              The title of the image file, @n
199          *              else @c Unknown if the value is empty
200          */
201         Tizen::Base::String GetTitle(void) const;
202
203         /**
204          * Gets the orientation of the image file.
205          *
206          * @since               2.0
207          *
208          * @return         The orientation of the image file
209          */
210         ImageOrientationType GetOrientation(void) const;
211
212 private:
213
214         /**
215          * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
216          */
217         ImageContentInfo(const ImageContentInfo& rhs);
218
219         /**
220          * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
221          */
222         ImageContentInfo& operator =(const ImageContentInfo& rhs);
223
224 private:
225
226         _ImageContentData* __pImageContentData;
227         _ImageContentInfoImpl* __pImageContentInfoImpl;
228         friend class _ImageContentInfoImpl;
229
230 };  // ImageContentInfo
231
232 }}  // Tizen::Content
233
234 #endif  // _FCNT_IMAGE_CONTENT_INFO_H_