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.
18 * @file FAppAppResource.h
19 * @brief This is the header file for the %AppResource class.
21 * This header file contains the declarations of the %AppResource class.
24 #ifndef _FAPP_APP_RESOURCE_H_
25 #define _FAPP_APP_RESOURCE_H_
27 #include <FBaseObject.h>
28 #include <FBaseString.h>
29 #include <FAppTypes.h>
30 #include <FGrpBitmapCommon.h>
32 namespace Tizen { namespace Graphics { class Bitmap; } }
34 namespace Tizen { namespace App
39 * @brief This class provides convenient methods to load application resources at run time.
43 * @final This class is not intended for extension.
45 * The %AppResource class provides convenient methods to load application resources at run time: @n
46 * - Use AppResource::GetString() to get handle and display localized strings.
47 * - Use AppResource::GetBitmapN() to obtain a bitmap image that matches the screen density.
48 * - If the matching image does not exist, the image of the baseline density folder, ScreenDensity-High is used.
50 * The instance of this class can be obtained through App::GetAppResource().
52 * The following example demonstrates how to use the %AppResource class to get strings.
57 using namespace Tizen::App;
60 MyClass::StringResourceSample(void)
63 AppResource *pAppResource = App::GetInstance()->GetAppResource();
66 pAppResource->GetString(L"IDS_HELLO", hello);
73 * The following example demonstrates how to use the %AppResource class to retrieve bitmaps.
77 using namespace Tizen::App;
78 using namespace Tizen::Graphics;
81 MyClass::BitmapResourceSample(void)
83 AppResource *pAppResource = App::GetInstance()->GetAppResource();
84 Bitmap* pBitmap = null;
88 pBitmap = pAppResource->GetBitmapN(L"Tizen.png", BITMAP_PIXEL_FORMAT_ARGB8888);
94 class _OSP_EXPORT_ AppResource
95 : public Tizen::Base::Object
99 * Gets the string at the specified resource ID.
103 * @return An error code
104 * @param[in] resourceId The resource ID of type Tizen::Base::String that describes the resource
105 * @param[out] loadedString The string obtained from the loaded application resource
106 * @exception E_SUCCESS The method is successful.
107 * @exception E_FAILURE The argument passed is not found.
108 * @exception E_INVALID_ARG The argument passed to a method contains an invalid resource ID.
110 result GetString(const Tizen::Base::String& resourceId, Tizen::Base::String& loadedString) const;
113 * Gets the bitmap at the specified path. @n
114 * The %GetBitmapN() method interprets the given resource path and reads the best matching image file for the current device resolution. @n
115 * To load the bitmap image from a file, give the name of the file as the input parameter and not the file path (For example: "img.png").
116 * Then, the system will first look for the image file in the folder specific to the current device resolution, such as
117 * '720x1280' and if the file does not exist, it will then search the folder that corresponds to the current screen density,
118 * such as 'screen-density-xhigh'. After searching the density folder, all the other density folders are searched in the order high to low.
119 * If the requested image file is found in a density-specific folder that is different from the current screen density, the bitmap returned from this method is pre-scaled.
120 * But in case of requested image file is saved as ".#.png" (For example : "img.#.png"), then a bitmap instance which is value of returned pointer is not pre-scaled.
121 * So, it is recommended to use ".#.png" as extension (For example : "ninePatchImg.#.png") for nine-patch image file.
122 * Currently supported image formats are: JPEG, GIF, PNG, BMP, TIFF, and WBMP.
123 * For more information on the features, see <a href="../org.tizen.native.appprogramming/html/multiple_screen/autoscale_resource_fallback.htm">Resource Fallback and Prescaling.</a>
127 * @return A pointer to the Bitmap instance generated from the specified file
128 * @param[in] imagePath The relative path starting from the directory @b "res/screen-density-XXX/" or @b "res/AxB", @n
129 * where A and B represent the screen width and height of the supported device models, respectively.
130 * @param[in] pixelFormat The pixel format of the resulting bitmap
131 * @exception E_SUCCESS The method is successful.
132 * @exception E_INVALID_ARG A specified input parameter is invalid.
133 * @exception E_UNSUPPORTED_FORMAT The image file format or specified pixel format is not supported.
134 * @exception E_FILE_NOT_FOUND The specified file cannot be found.
135 * @exception E_SYSTEM A system error has occurred.
137 * - The specific error code can be accessed using the GetLastResult() method.
138 * - There is a high probability for an occurrence of an out-of-memory exception. If possible, check whether the exception is E_OUT_OF_MEMORY or not. For more information on how to handle the out-of-memory exception, refer <a href="../org.tizen.native.appprogramming/html/basics_tizen_programming/exception_check.htm">here</a>.
140 Tizen::Graphics::Bitmap* GetBitmapN(const Tizen::Base::String& imagePath, Tizen::Graphics::BitmapPixelFormat pixelFormat) const;
143 * Gets the bitmap at the specified path. @n
144 * The %GetBitmapN() method interprets the given resource path and reads the best matching image file for the current device resolution. @n
145 * To load the bitmap image from a file, give the name of the file as the input parameter and not the file path (For example: "img.png").
146 * Then, the system will first look for the image file in the folder specific to the current device resolution, such as
147 * '720x1280' and if the file does not exist, it will then search the folder that corresponds to the current screen density,
148 * such as 'screen-density-xhigh'. After searching the density folder, all the other density folders are searched in the order high to low.
149 * If the requested image file is found in a density-specific folder that is different from the current screen density, the bitmap returned from this method is pre-scaled.
150 * But in case of requested image file is saved as ".#.png" (For example : "img.#.png"), then a bitmap instance which is value of returned pointer is not pre-scaled.
151 * So, it is recommended to use ".#.png" as extension (For example : "ninePatchImg.#.png") for nine-patch image file.
152 * Currently supported image formats are: JPEG, GIF, PNG, BMP, TIFF, and WBMP.
153 * For more information on the features, see <a href="../org.tizen.native.appprogramming/html/multiple_screen/autoscale_resource_fallback.htm">Resource Fallback and Prescaling.</a>
157 * @return A pointer to the Tizen::Graphics::Bitmap instance generated from the specified file
158 * @param[in] imagePath The relative path starting from the density directory @b "res/screen-density-XXX/" or @b "res/AxB", @n
159 * where A and B represent the width and height of the screen of the supported device models, respectively
160 * @exception E_SUCCESS The method is successful.
161 * @exception E_INVALID_ARG The specified input parameter is invalid.
162 * @exception E_UNSUPPORTED_FORMAT The image file format is not supported.
163 * @exception E_FILE_NOT_FOUND The specified file cannot be found.
164 * @exception E_SYSTEM A system error has occurred.
166 * - The specific error code can be accessed using the GetLastResult() method.
167 * - There is a high probability for an occurrence of an out-of-memory exception. If possible, check whether the exception is E_OUT_OF_MEMORY or not. For more information on how to handle the out-of-memory exception, refer <a href="../org.tizen.native.appprogramming/html/basics_tizen_programming/exception_check.htm">here</a>.
169 Tizen::Graphics::Bitmap* GetBitmapN(const Tizen::Base::String& imagePath) const;
172 * Gets the %AppResource instance pointer.
176 * @return A pointer to the %AppResource instance, @n
177 * else @c null if it fails
179 static AppResource* GetInstance(void);
182 * Gets the resource instance of the specified resource path.
184 * @return A pointer to the %AppResource instance, @n
185 * else @c null if it fails
186 * @param[in] resourcePath The relative path starting from the resource directory path of the current application
187 * @exception E_SUCCESS The method is successful.
188 * @exception E_FILE_NOT_FOUND The specified resource path does not exist.
189 * @exception E_INVALID_ARG The length of the specified path is @c 0 or exceeds system limitations.
190 * @exception E_SYSTEM Initializing string and bitmap resource is failed due to system error.
191 * @remarks The specific error code can be accessed using the GetLastResult() method.
193 static AppResource* LoadAppResource(const Tizen::Base::String& resourcePath);
196 * Gets the application resource instance of the specified @c appId.
200 * @privlevel platform
201 * @privilege %http://tizen.org/privilege/appsetting
203 * @return A pointer to the %AppResource instance, @n
204 * else @c null if it fails
205 * @param[in] appId The AppId of the installed application
206 * @exception E_SUCCESS The method is successful.
207 * @exception E_DATA_NOT_FOUND The instance of specified @c appId does not provide the string resource.
208 * @exception E_OUT_OF_MEMORY The memory is insufficient.
209 * @exception E_APP_NOT_INSTALLED The specified @c appId is not found in the list of installed applications.
210 * @exception E_SYSTEM Initializing string and bitmap resource has failed due to a system error.
211 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
212 * @remarks The specific error code can be accessed using the GetLastResult() method.
214 static AppResource* GetInstanceByAppId(const AppId& appId);
217 * Releases the application resource instance of the specified @c appId.
221 * @privlevel platform
222 * @privilege %http://tizen.org/privilege/appsetting
224 * @return An error code
225 * @param[in] appId The AppId of the installed application
226 * @exception E_SUCCESS The method is successful.
227 * @exception E_OBJ_NOT_FOUND The application resource instance of the specified @c appId is not found.
228 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
229 * @remarks Individual instances are managed by the platform. @n
230 * It is recommended to release instances to reduce memory usage.
232 static result ReleaseInstanceByAppId(const AppId& appId);
236 * This default constructor is intentionally declared as private to implement the %Singleton semantic.
243 * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
247 AppResource(const AppResource& rhs);
250 * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
254 AppResource& operator =(const AppResource& rhs);
257 * This destructor is intentionally declared as private to implement the %Singleton semantic.
261 virtual ~AppResource(void);
264 friend class _AppResourceImpl;
265 class _AppResourceImpl* __pAppResourceImpl;