1 /**************************************************************************
5 Copyright 2014 Samsung Electronics co., Ltd. All Rights Reserved.
7 Contact: SooChan Lim <sc1.lim@samsung.com>, Sangjin Lee <lsj119@samsung.com>
8 Inpyo Kang <mantiger@samsung.com>, Dongyeon Kim <dy5.kim@samsung.com>
9 Boram Park <boram1288.park@samsung.com>, Changyeon Lee <cyeon.lee@samsung.com>
11 Permission is hereby granted, free of charge, to any person obtaining a
12 copy of this software and associated documentation files (the
13 "Software"), to deal in the Software without restriction, including
14 without limitation the rights to use, copy, modify, merge, publish,
15 distribute, sub license, and/or sell copies of the Software, and to
16 permit persons to whom the Software is furnished to do so, subject to
17 the following conditions:
19 The above copyright notice and this permission notice (including the
20 next paragraph) shall be included in all copies or substantial portions
23 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
26 IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
27 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
28 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
29 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 **************************************************************************/
33 #ifndef _TBM_SURFACE_H_
34 #define _TBM_SURFACE_H_
37 * @addtogroup CAPI_UI_TBM_SURFACE_MODULE
50 * @brief Enumeration for tbm_surface error type.
51 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
54 TBM_SURFACE_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */
55 TBM_SURFACE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
56 TBM_SURFACE_ERROR_INVALID_OPERATION = TIZEN_ERROR_INVALID_OPERATION, /**< Invalid Operation */
57 } tbm_surface_error_e;
60 * @brief Definition for the max number of TBM surface plane.
61 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
63 #define TBM_SURF_PLANE_MAX 4
65 /* option to map the tbm_surface */
67 * @brief Definition for the access option to read.
68 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
70 #define TBM_SURF_OPTION_READ (1 << 0)
72 * @brief Definition for the access option to write.
73 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
75 #define TBM_SURF_OPTION_WRITE (1 << 1)
78 * @brief Definition for the TBM plane struct.
79 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
81 typedef struct _tbm_surface_plane {
82 unsigned char *ptr; /**< Plane pointer */
83 uint32_t size; /**< Plane size */
84 uint32_t offset; /**< Plane offset */
85 uint32_t stride; /**< Plane stride */
87 void *reserved1; /**< Reserved pointer1 */
88 void *reserved2; /**< Reserved pointer2 */
89 void *reserved3; /**< Reserved pointer3 */
90 } tbm_surface_plane_s;
93 * @brief Definition for the TBM surface information struct.
94 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
96 typedef struct _tbm_surface_info {
97 uint32_t width; /**< TBM surface width */
98 uint32_t height; /**< TBM surface height */
99 tbm_format format; /**< TBM surface format*/
100 uint32_t bpp; /**< TBM surface bbp */
101 uint32_t size; /**< TBM surface size */
103 uint32_t num_planes; /**< The number of planes */
104 tbm_surface_plane_s planes[TBM_SURF_PLANE_MAX]; /**< Array of planes */
106 void *reserved4; /**< Reserved pointer4 */
107 void *reserved5; /**< Reserved pointer5 */
108 void *reserved6; /**< Reserved pointer6 */
109 } tbm_surface_info_s;
111 #define __tbm_fourcc_code(a, b, c, d) ((uint32_t)(a) | ((uint32_t)(b) << 8) | \
112 ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
116 * @brief Definition for the TBM surface format C8 ([7:0] C).
117 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
119 #define TBM_FORMAT_C8 __tbm_fourcc_code('C', '8', ' ', ' ')
123 * @brief Definition for the TBM surface format RGB322 ([7:0] R:G:B 3:3:2).
124 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
126 #define TBM_FORMAT_RGB332 __tbm_fourcc_code('R', 'G', 'B', '8')
128 * @brief Definition for the TBM surface format RGB233 ([7:0] B:G:R 2:3:3).
129 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
131 #define TBM_FORMAT_BGR233 __tbm_fourcc_code('B', 'G', 'R', '8')
135 * @brief Definition for the TBM surface format XRGB4444 ([15:0] x:R:G:B 4:4:4:4 little endian).
136 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
138 #define TBM_FORMAT_XRGB4444 __tbm_fourcc_code('X', 'R', '1', '2')
140 * @brief Definition for the TBM surface format XBRG4444 ([15:0] x:B:G:R 4:4:4:4 little endian).
141 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
143 #define TBM_FORMAT_XBGR4444 __tbm_fourcc_code('X', 'B', '1', '2')
145 * @brief Definition for the TBM surface format RGBX4444 ([15:0] R:G:B:x 4:4:4:4 little endian).
146 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
148 #define TBM_FORMAT_RGBX4444 __tbm_fourcc_code('R', 'X', '1', '2')
150 * @brief Definition for the TBM surface format BGRX4444 ([15:0] B:G:R:x 4:4:4:4 little endian).
151 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
153 #define TBM_FORMAT_BGRX4444 __tbm_fourcc_code('B', 'X', '1', '2')
156 * @brief Definition for the TBM surface format ARGB4444 ([15:0] A:R:G:B 4:4:4:4 little endian).
157 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
159 #define TBM_FORMAT_ARGB4444 __tbm_fourcc_code('A', 'R', '1', '2')
161 * @brief Definition for the TBM surface format ABGR4444 ([15:0] A:B:G:R 4:4:4:4 little endian).
162 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
164 #define TBM_FORMAT_ABGR4444 __tbm_fourcc_code('A', 'B', '1', '2')
166 * @brief Definition for the TBM surface format RGBA4444 ([15:0] R:G:B:A 4:4:4:4 little endian).
167 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
169 #define TBM_FORMAT_RGBA4444 __tbm_fourcc_code('R', 'A', '1', '2')
171 * @brief Definition for the TBM surface format BGRA4444 ([15:0] B:G:R:A 4:4:4:4 little endian).
172 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
174 #define TBM_FORMAT_BGRA4444 __tbm_fourcc_code('B', 'A', '1', '2')
177 * @brief Definition for the TBM surface format XRGB1555 ([15:0] x:R:G:B 1:5:5:5 little endian).
178 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
180 #define TBM_FORMAT_XRGB1555 __tbm_fourcc_code('X', 'R', '1', '5')
182 * @brief Definition for the TBM surface format XBGR1555 ([15:0] x:B:G:R 1:5:5:5 little endian).
183 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
185 #define TBM_FORMAT_XBGR1555 __tbm_fourcc_code('X', 'B', '1', '5')
187 * @brief Definition for the TBM surface format RGBX5551 ([15:0] R:G:B:x 5:5:5:1 little endian).
188 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
190 #define TBM_FORMAT_RGBX5551 __tbm_fourcc_code('R', 'X', '1', '5')
192 * @brief Definition for the TBM surface format BGRX5551 ([15:0] B:G:R:x 5:5:5:1 little endian).
193 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
195 #define TBM_FORMAT_BGRX5551 __tbm_fourcc_code('B', 'X', '1', '5')
198 * @brief Definition for the TBM surface format ARGB1555 ([15:0] A:R:G:B 1:5:5:5 little endian).
199 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
201 #define TBM_FORMAT_ARGB1555 __tbm_fourcc_code('A', 'R', '1', '5')
203 * @brief Definition for the TBM surface format ABGR1555 ([15:0] A:B:G:R 1:5:5:5 little endian).
204 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
206 #define TBM_FORMAT_ABGR1555 __tbm_fourcc_code('A', 'B', '1', '5')
208 * @brief Definition for the TBM surface format RGBA5551 ([15:0] R:G:B:A 5:5:5:1 little endian).
209 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
211 #define TBM_FORMAT_RGBA5551 __tbm_fourcc_code('R', 'A', '1', '5')
213 * @brief Definition for the TBM surface format BGRA5551 ([15:0] B:G:R:A 5:5:5:1 little endian).
214 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
216 #define TBM_FORMAT_BGRA5551 __tbm_fourcc_code('B', 'A', '1', '5')
219 * @brief Definition for the TBM surface format RGB565 ([15:0] R:G:B 5:6:5 little endian).
220 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
222 #define TBM_FORMAT_RGB565 __tbm_fourcc_code('R', 'G', '1', '6')
224 * @brief Definition for the TBM surface format BGR565 ([15:0] B:G:R 5:6:5 little endian).
225 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
227 #define TBM_FORMAT_BGR565 __tbm_fourcc_code('B', 'G', '1', '6')
231 * @brief Definition for the TBM surface format RGB888 ([23:0] R:G:B little endian).
232 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
234 #define TBM_FORMAT_RGB888 __tbm_fourcc_code('R', 'G', '2', '4')
236 * @brief Definition for the TBM surface format BGR888 ([23:0] B:G:R little endian).
237 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
239 #define TBM_FORMAT_BGR888 __tbm_fourcc_code('B', 'G', '2', '4')
243 * @brief Definition for the TBM surface format XRGB8888 ([31:0] x:R:G:B 8:8:8:8 little endian).
244 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
246 #define TBM_FORMAT_XRGB8888 __tbm_fourcc_code('X', 'R', '2', '4')
248 * @brief Definition for the TBM surface format XBGR8888 ([31:0] x:B:G:R 8:8:8:8 little endian).
249 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
251 #define TBM_FORMAT_XBGR8888 __tbm_fourcc_code('X', 'B', '2', '4')
253 * @brief Definition for the TBM surface format RGBX8888 ([31:0] R:G:B:x 8:8:8:8 little endian).
254 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
256 #define TBM_FORMAT_RGBX8888 __tbm_fourcc_code('R', 'X', '2', '4')
258 * @brief Definition for the TBM surface format BGRX8888 ([31:0] B:G:R:x 8:8:8:8 little endian).
259 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
261 #define TBM_FORMAT_BGRX8888 __tbm_fourcc_code('B', 'X', '2', '4')
264 * @brief Definition for the TBM surface format ARGB8888 ([31:0] A:R:G:B 8:8:8:8 little endian).
265 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
267 #define TBM_FORMAT_ARGB8888 __tbm_fourcc_code('A', 'R', '2', '4')
269 * @brief Definition for the TBM surface format ABGR8888 ([31:0] [31:0] A:B:G:R 8:8:8:8 little endian).
270 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
272 #define TBM_FORMAT_ABGR8888 __tbm_fourcc_code('A', 'B', '2', '4')
274 * @brief Definition for the TBM surface format RGBA8888 ([31:0] R:G:B:A 8:8:8:8 little endian).
275 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
277 #define TBM_FORMAT_RGBA8888 __tbm_fourcc_code('R', 'A', '2', '4')
279 * @brief Definition for the TBM surface format BGRA8888 ([31:0] B:G:R:A 8:8:8:8 little endian).
280 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
282 #define TBM_FORMAT_BGRA8888 __tbm_fourcc_code('B', 'A', '2', '4')
285 * @brief Definition for the TBM surface format XRGB2101010 ([31:0] x:R:G:B 2:10:10:10 little endian).
286 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
288 #define TBM_FORMAT_XRGB2101010 __tbm_fourcc_code('X', 'R', '3', '0')
290 * @brief Definition for the TBM surface format XBGR2101010 ([31:0] x:B:G:R 2:10:10:10 little endian).
291 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
293 #define TBM_FORMAT_XBGR2101010 __tbm_fourcc_code('X', 'B', '3', '0')
295 * @brief Definition for the TBM surface format RGBX1010102 ([31:0] R:G:B:x 10:10:10:2 little endian).
296 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
298 #define TBM_FORMAT_RGBX1010102 __tbm_fourcc_code('R', 'X', '3', '0')
300 * @brief Definition for the TBM surface format BGRX1010102 ([31:0] B:G:R:x 10:10:10:2 little endian).
301 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
303 #define TBM_FORMAT_BGRX1010102 __tbm_fourcc_code('B', 'X', '3', '0')
306 * @brief Definition for the TBM surface format ARGB2101010 ([31:0] A:R:G:B 2:10:10:10 little endian).
307 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
309 #define TBM_FORMAT_ARGB2101010 __tbm_fourcc_code('A', 'R', '3', '0')
311 * @brief Definition for the TBM surface format ABGR2101010 ([31:0] A:B:G:R 2:10:10:10 little endian).
312 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
314 #define TBM_FORMAT_ABGR2101010 __tbm_fourcc_code('A', 'B', '3', '0')
316 * @brief Definition for the TBM surface format RGBA1010102 ([31:0] R:G:B:A 10:10:10:2 little endian).
317 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
319 #define TBM_FORMAT_RGBA1010102 __tbm_fourcc_code('R', 'A', '3', '0')
321 * @brief Definition for the TBM surface format BGRA1010102 ([31:0] B:G:R:A 10:10:10:2 little endian).
322 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
324 #define TBM_FORMAT_BGRA1010102 __tbm_fourcc_code('B', 'A', '3', '0') /* */
328 * @brief Definition for the TBM surface format YUYV ([31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian).
329 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
331 #define TBM_FORMAT_YUYV __tbm_fourcc_code('Y', 'U', 'Y', 'V')
333 * @brief Definition for the TBM surface format YVYU ([31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian).
334 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
336 #define TBM_FORMAT_YVYU __tbm_fourcc_code('Y', 'V', 'Y', 'U') /* */
338 * @brief Definition for the TBM surface format UYVY ([31:0] Y1:Cr0:Y0:Cb0 8:8:8:8 little endian).
339 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
341 #define TBM_FORMAT_UYVY __tbm_fourcc_code('U', 'Y', 'V', 'Y')
343 * @brief Definition for the TBM surface format VYUY ([31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian).
344 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
346 #define TBM_FORMAT_VYUY __tbm_fourcc_code('V', 'Y', 'U', 'Y')
349 * @brief Definition for the TBM surface format AYUV ([31:0] A:Y:Cb:Cr 8:8:8:8 little endian).
350 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
352 #define TBM_FORMAT_AYUV __tbm_fourcc_code('A', 'Y', 'U', 'V')
356 * index 0 = Y plane, [7:0] Y
357 * index 1 = Cr:Cb plane, [15:0] Cr:Cb little endian
359 * index 1 = Cb:Cr plane, [15:0] Cb:Cr little endian
362 * @brief Definition for the TBM surface format NV12 (2x2 subsampled Cr:Cb plane).
363 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
365 #define TBM_FORMAT_NV12 __tbm_fourcc_code('N', 'V', '1', '2')
367 * @brief Definition for the TBM surface format NV21 (2x2 subsampled Cb:Cr plane).
368 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
370 #define TBM_FORMAT_NV21 __tbm_fourcc_code('N', 'V', '2', '1') /* */
372 * @brief Definition for the TBM surface format NV16 (2x1 subsampled Cr:Cb plane).
373 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
375 #define TBM_FORMAT_NV16 __tbm_fourcc_code('N', 'V', '1', '6')
377 * @brief Definition for the TBM surface format NV61 (2x1 subsampled Cb:Cr plane).
378 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
380 #define TBM_FORMAT_NV61 __tbm_fourcc_code('N', 'V', '6', '1')
384 * index 0: Y plane, [7:0] Y
385 * index 1: Cb plane, [7:0] Cb
386 * index 2: Cr plane, [7:0] Cr
388 * index 1: Cr plane, [7:0] Cr
389 * index 2: Cb plane, [7:0] Cb
392 * @brief Definition for the TBM surface format YUV410 (4x4 subsampled Cb (1) and Cr (2) planes).
394 #define TBM_FORMAT_YUV410 __tbm_fourcc_code('Y', 'U', 'V', '9')
396 * @brief Definition for the TBM surface format YVU410 (4x4 subsampled Cr (1) and Cb (2) planes).
397 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
399 #define TBM_FORMAT_YVU410 __tbm_fourcc_code('Y', 'V', 'U', '9')
401 * @brief Definition for the TBM surface format YUV411 (4x1 subsampled Cb (1) and Cr (2) planes).
402 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
404 #define TBM_FORMAT_YUV411 __tbm_fourcc_code('Y', 'U', '1', '1')
406 * @brief Definition for the TBM surface format YVU411 (4x1 subsampled Cr (1) and Cb (2) planes).
407 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
409 #define TBM_FORMAT_YVU411 __tbm_fourcc_code('Y', 'V', '1', '1')
411 * @brief Definition for the TBM surface format YUV420 (2x2 subsampled Cb (1) and Cr (2) planes).
412 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
414 #define TBM_FORMAT_YUV420 __tbm_fourcc_code('Y', 'U', '1', '2')
416 * @brief Definition for the TBM surface format YVU420 (2x2 subsampled Cr (1) and Cb (2) planes).
417 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
419 #define TBM_FORMAT_YVU420 __tbm_fourcc_code('Y', 'V', '1', '2')
421 * @brief Definition for the TBM surface format YUV422 (2x1 subsampled Cb (1) and Cr (2) planes).
422 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
424 #define TBM_FORMAT_YUV422 __tbm_fourcc_code('Y', 'U', '1', '6')
426 * @brief Definition for the TBM surface format YVU422 (2x1 subsampled Cr (1) and Cb (2) planes).
427 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
429 #define TBM_FORMAT_YVU422 __tbm_fourcc_code('Y', 'V', '1', '6')
431 * @brief Definition for the TBM surface format YUV444 (non-subsampled Cb (1) and Cr (2) planes).
432 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
434 #define TBM_FORMAT_YUV444 __tbm_fourcc_code('Y', 'U', '2', '4')
436 * @brief Definition for the TBM surface format YVU444 (non-subsampled Cr (1) and Cb (2) planes).
437 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
439 #define TBM_FORMAT_YVU444 __tbm_fourcc_code('Y', 'V', '2', '4')
443 * @brief Definition for the TBM surface format NV12MT (tiled '64x32' & multi-plane version of NV12).
446 #define TBM_FORMAT_NV12MT __tbm_fourcc_code('T', 'M', '1', '2')
453 * @brief Queries surface format list and number of format supported by the system.
454 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
456 * @remarks You must release the formats using free().
458 * @param[out] formats The format array which the system can support \n
459 * This pointer has to be freed by user.
460 * @param[out] num The number of formats
462 * @return #TBM_SURFACE_ERROR_NONE if this function succeeds,
463 * otherwise an error status value
465 * @retval #TBM_SURFACE_ERROR_NONE Success
466 * @retval #TBM_SURFACE_ERROR_INVALID_OPERATION Invalid operation
470 #include <tbm_surface.h>
475 tbm_surface_error_e tse;
477 tse = tbm_surface_query_formats (&formats, &format_num))
479 for( i = 0 ; i < format_num ; i++)
481 if (formats[i] == TBM_FORMAT_RGB332)
488 int tbm_surface_query_formats(uint32_t **formats, uint32_t *num);
491 * @brief Creates the tbm_surface.
492 * @details This function creates the tbm_surface with the given width, height, and format.
494 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
496 * @remark The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
498 * @param[in] width The width of surface
499 * @param[in] height The height of surface
500 * @param[in] format The format of surface
502 * @return #tbm_surface_h on success,
505 * @retval #tbm_surface_h The TBM surface handle
507 * @exception #TBM_SURFACE_ERROR_NONE Success
508 * @exception #TBM_SURFACE_ERROR_INVALID_PARAMETER Invalid parameter
509 * @exception #TBM_SURFACE_ERROR_INVALID_OPERATION Invalid operation
511 * @see tbm_surface_destroy()
515 #include <tbm_surface.h>
517 tbm_surface_h surface;
519 surface = tbm_surface_create (128, 128, TBM_FORMAT_RGB332);
523 tbm_surface_destroy (surface);
526 tbm_surface_h tbm_surface_create(int width, int height, tbm_format format);
529 * @brief Destroys the tbm_surface.
530 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
532 * @param[in] surface The #tbm_surface_h
534 * @return #TBM_SURFACE_ERROR_NONE on success,
535 * otherwise an error status value
537 * @retval #TBM_SURFACE_ERROR_NONE Success
538 * @retval #TBM_SURFACE_ERROR_INVALID_PARAMETER Invalid parameter
540 * @see tbm_surface_create()
544 #include <tbm_surface.h>
546 tbm_surface_h surface;
548 surface = tbm_surface_create (128, 128, TBM_FORMAT_RGB332);
552 tbm_surface_destroy (surface);
555 int tbm_surface_destroy(tbm_surface_h surface);
558 * @brief Maps the tbm_surface according to the access option.
559 * @details After mapping tbm_surface, the information of tbm_surface is assigned in #tbm_surface_info_s struct. \n
560 * The information of tbm_surface has width, height, format, bpp, size, number of planes and information of planes. \n
561 * The information of planes has stride, offset, size and pointer of plane. \n
562 * #TBM_SURF_OPTION_READ indicates access option to read. \n
563 * #TBM_SURF_OPTION_WRITE indicates access option to write.
565 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
567 * @param[in] surface The #tbm_surface_h
568 * @param[in] opt The option to access the tbm_surface
569 * @param[out] info The information of the tbm_surface
571 * @return #TBM_SURFACE_ERROR_NONE on success,
572 * otherwise an error status value
574 * @retval #TBM_SURFACE_ERROR_NONE Success
575 * @retval #TBM_SURFACE_ERROR_INVALID_PARAMETER Invalid parameter
576 * @retval #TBM_SURFACE_ERROR_INVALID_OPERATION Invalid operation
578 * @see tbm_surface_unmap();
582 #include <tbm_surface.h>
584 tbm_surface_h surface;
585 tbm_surface_info_s info;
588 surface = tbm_surface_create (128, 128, TBM_FORMAT_RGB332);
589 ret = tbm_surface_map (surface, TBM_SURF_OPTION_WRITE|TBM_SURF_OPTION_READ, &info);
593 tbm_surface_unmap (surface);
594 tbm_surface_destroy (surface);
597 int tbm_surface_map(tbm_surface_h surface, int opt, tbm_surface_info_s *info);
600 * @brief Unmaps the tbm_surface.
601 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
603 * @param[in] surface The #tbm_surface_h
605 * @return #TBM_SURFACE_ERROR_NONE on success,
606 * otherwise an error status value
608 * @retval #TBM_SURFACE_ERROR_NONE Success
609 * @retval #TBM_SURFACE_ERROR_INVALID_PARAMETER Invalid parameter
611 * @see tbm_surface_map()
615 #include <tbm_surface.h>
617 tbm_surface_h surface;
618 tbm_surface_info_s info;
621 surface = tbm_surface_create (128, 128, TBM_FORMAT_RGB332);
622 ret = tbm_surface_map (surface, TBM_SURF_OPTION_WRITE|TBM_SURF_OPTION_READ, &info);
626 tbm_surface_unmap (surface);
627 tbm_surface_destroy (surface);
630 int tbm_surface_unmap(tbm_surface_h surface);
633 * @brief Gets the information of the tbm_surface.
634 * @details The information of tbm_surface is assigned in #tbm_surface_info_s struct. \n
635 * The information of tbm_surface has width, height, format, bpp, size, number of planes and information of planes. \n
636 * The information of planes has stride, offset, size and pointer of plane.
638 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
640 * @param[in] surface The #tbm_surface_h
641 * @param[out] info The information of the tbm_surface
643 * @return #TBM_SURFACE_ERROR_NONE on success,
644 * otherwise an error status value
646 * @retval #TBM_SURFACE_ERROR_NONE Success
647 * @retval #TBM_SURFACE_ERROR_INVALID_PARAMETER Invalid parameter
648 * @retval #TBM_SURFACE_ERROR_INVALID_OPERATION Invalid operation
650 * @see tbm_surface_map()
654 #include <tbm_surface.h>
656 tbm_surface_h surface;
657 tbm_surface_info_s info;
660 surface = tbm_surface_create (128, 128, TBM_FORMAT_RGB332);
661 ret = tbm_surface_get_info (surface, &info);
665 tbm_surface_destroy (surface);
668 int tbm_surface_get_info(tbm_surface_h surface, tbm_surface_info_s *info);
671 * @brief Gets the width of the tbm_surface.
672 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
674 * @param[in] surface The #tbm_surface_h
676 * @return The width of the tbm_surface on success,
677 * otherwise an error status value
679 * @retval #TBM_SURFACE_ERROR_INVALID_PARAMETER Invalid parameter
683 #include <tbm_surface.h>
685 tbm_surface_h surface;
688 surface = tbm_surface_create (128, 128, TBM_FORMAT_RGB332);
692 width = tbm_surface_get_width (surface);
696 tbm_surface_destroy (surface);
699 int tbm_surface_get_width(tbm_surface_h surface);
702 * @brief Gets the height of the tbm_surface.
703 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
705 * @param[in] surface The #tbm_surface_h
707 * @return The height of the tbm_surface if this function succeeds,
708 * otherwise an error status value
710 * @retval #TBM_SURFACE_ERROR_INVALID_PARAMETER Invalid parameter
714 #include <tbm_surface.h>
716 tbm_surface_h surface;
719 surface = tbm_surface_create (128, 128, TBM_FORMAT_RGB332);
723 height = tbm_surface_get_height (surface);
727 tbm_surface_destroy (surface);
730 int tbm_surface_get_height(tbm_surface_h surface);
733 * @brief Gets the format of the tbm_surface.
734 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
736 * @remark The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
738 * @param[in] surface The #tbm_surface_h
740 * @return The format of the tbm_surface on success,
741 * otherwise @c 0 on failure
743 * @retval #tbm_format The format of surface
745 * @exception #TBM_SURFACE_ERROR_NONE Success
746 * @exception #TBM_SURFACE_ERROR_INVALID_PARAMETER Invalid parameter
750 #include <tbm_surface.h>
752 tbm_surface_s surface;
755 surface = tbm_surface_create (128, 128, TBM_FORMAT_RGB332);
759 format = tbm_surface_get_format (surface);
763 tbm_surface_destroy (surface);
766 tbm_format tbm_surface_get_format(tbm_surface_h surface);
774 #endif /* _TBM_SURFACE_H_ */