630 lines
21 KiB
C
630 lines
21 KiB
C
#ifndef _ECORE_BUFFER_H_
|
|
# define _ECORE_BUFFER_H_
|
|
|
|
#ifdef EAPI
|
|
# undef EAPI
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
# ifdef EFL_ECORE_BUFFER_BUILD
|
|
# ifdef DLL_EXPORT
|
|
# define EAPI __declspec(dllexport)
|
|
# else
|
|
# define EAPI
|
|
# endif /* ! DLL_EXPORT */
|
|
# else
|
|
# define EAPI __declspec(dllimport)
|
|
# endif /* ! EFL_ECORE_BUFFER_BUILD */
|
|
#else
|
|
# ifdef __GNUC__
|
|
# if __GNUC__ >= 4
|
|
# define EAPI __attribute__ ((visibility("default")))
|
|
# else
|
|
# define EAPI
|
|
# endif
|
|
# else
|
|
# define EAPI
|
|
# endif
|
|
#endif /* ! _WIN32 */
|
|
|
|
/**
|
|
* @defgroup Ecore_Buffer_Group Ecore_Buffer - Graphics buffer functions
|
|
* @ingroup Ecore
|
|
*
|
|
* The Ecore Buffer is an abstraction of graphic buffer.
|
|
*
|
|
* This library also provides simple mechanisms for sharing graphic buffer bet-
|
|
* ween processes using wayland socket. Ecore Buffer Queue is for this
|
|
* function, and it consists of two main object,
|
|
* The Ecore_Buffer_Consumer and the Ecore_Buffer_Provider.
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define __ecore_buffer_fourcc_code(a,b,c,d) ((unsigned int)(a) | ((unsigned int)(b) << 8) | \
|
|
((unsigned int)(c) << 16) | ((unsigned int)(d) << 24))
|
|
|
|
/* color index */
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format C8 ([7:0] C).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_C8 __ecore_buffer_fourcc_code('C', '8', ' ', ' ')
|
|
/* 8 bpp RGB */
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGB332 ([7:0] R:G:B 3:3:2).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGB332 __ecore_buffer_fourcc_code('R', 'G', 'B', '8')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGB233 ([7:0] B:G:R 2:3:3).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGR233 __ecore_buffer_fourcc_code('B', 'G', 'R', '8')
|
|
/* 16 bpp RGB */
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format XRGB4444 ([15:0] x:R:G:B 4:4:4:4 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_XRGB4444 __ecore_buffer_fourcc_code('X', 'R', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format XBRG4444 ([15:0] x:B:G:R 4:4:4:4 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_XBGR4444 __ecore_buffer_fourcc_code('X', 'B', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGBX4444 ([15:0] R:G:B:x 4:4:4:4 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGBX4444 __ecore_buffer_fourcc_code('R', 'X', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGRX4444 ([15:0] B:G:R:x 4:4:4:4 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGRX4444 __ecore_buffer_fourcc_code('B', 'X', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format ARGB4444 ([15:0] A:R:G:B 4:4:4:4 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_ARGB4444 __ecore_buffer_fourcc_code('A', 'R', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format ABGR4444 ([15:0] A:B:G:R 4:4:4:4 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_ABGR4444 __ecore_buffer_fourcc_code('A', 'B', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGBA4444 ([15:0] R:G:B:A 4:4:4:4 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGBA4444 __ecore_buffer_fourcc_code('R', 'A', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGRA4444 ([15:0] B:G:R:A 4:4:4:4 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGRA4444 __ecore_buffer_fourcc_code('B', 'A', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format XRGB1555 ([15:0] x:R:G:B 1:5:5:5 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_XRGB1555 __ecore_buffer_fourcc_code('X', 'R', '1', '5')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format XBGR1555 ([15:0] x:B:G:R 1:5:5:5 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_XBGR1555 __ecore_buffer_fourcc_code('X', 'B', '1', '5')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGBX5551 ([15:0] R:G:B:x 5:5:5:1 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGBX5551 __ecore_buffer_fourcc_code('R', 'X', '1', '5')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGRX5551 ([15:0] B:G:R:x 5:5:5:1 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGRX5551 __ecore_buffer_fourcc_code('B', 'X', '1', '5')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format ARGB1555 ([15:0] A:R:G:B 1:5:5:5 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_ARGB1555 __ecore_buffer_fourcc_code('A', 'R', '1', '5')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format ABGR1555 ([15:0] A:B:G:R 1:5:5:5 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_ABGR1555 __ecore_buffer_fourcc_code('A', 'B', '1', '5')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGBA5551 ([15:0] R:G:B:A 5:5:5:1 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGBA5551 __ecore_buffer_fourcc_code('R', 'A', '1', '5')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGRA5551 ([15:0] B:G:R:A 5:5:5:1 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGRA5551 __ecore_buffer_fourcc_code('B', 'A', '1', '5')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGB565 ([15:0] R:G:B 5:6:5 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGB565 __ecore_buffer_fourcc_code('R', 'G', '1', '6')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGR565 ([15:0] B:G:R 5:6:5 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGR565 __ecore_buffer_fourcc_code('B', 'G', '1', '6')
|
|
/* 24 bpp RGB */
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGB888 ([23:0] R:G:B little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGB888 __ecore_buffer_fourcc_code('R', 'G', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGR888 ([23:0] B:G:R little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGR888 __ecore_buffer_fourcc_code('B', 'G', '2', '4')
|
|
/* 32 bpp RGB */
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format XRGB8888 ([31:0] x:R:G:B 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_XRGB8888 __ecore_buffer_fourcc_code('X', 'R', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format XBGR8888 ([31:0] x:B:G:R 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_XBGR8888 __ecore_buffer_fourcc_code('X', 'B', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGBX8888 ([31:0] R:G:B:x 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGBX8888 __ecore_buffer_fourcc_code('R', 'X', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGRX8888 ([31:0] B:G:R:x 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGRX8888 __ecore_buffer_fourcc_code('B', 'X', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format ARGB8888 ([31:0] A:R:G:B 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_ARGB8888 __ecore_buffer_fourcc_code('A', 'R', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format ABGR8888 ([31:0] [31:0] A:B:G:R 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_ABGR8888 __ecore_buffer_fourcc_code('A', 'B', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGBA8888 ([31:0] R:G:B:A 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGBA8888 __ecore_buffer_fourcc_code('R', 'A', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGRA8888 ([31:0] B:G:R:A 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGRA8888 __ecore_buffer_fourcc_code('B', 'A', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format XRGB2101010 ([31:0] x:R:G:B 2:10:10:10 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_XRGB2101010 __ecore_buffer_fourcc_code('X', 'R', '3', '0')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format XBGR2101010 ([31:0] x:B:G:R 2:10:10:10 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_XBGR2101010 __ecore_buffer_fourcc_code('X', 'B', '3', '0')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGBX1010102 ([31:0] R:G:B:x 10:10:10:2 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGBX1010102 __ecore_buffer_fourcc_code('R', 'X', '3', '0')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGRX1010102 ([31:0] B:G:R:x 10:10:10:2 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGRX1010102 __ecore_buffer_fourcc_code('B', 'X', '3', '0')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format ARGB2101010 ([31:0] A:R:G:B 2:10:10:10 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_ARGB2101010 __ecore_buffer_fourcc_code('A', 'R', '3', '0')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format ABGR2101010 ([31:0] A:B:G:R 2:10:10:10 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_ABGR2101010 __ecore_buffer_fourcc_code('A', 'B', '3', '0')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format RGBA1010102 ([31:0] R:G:B:A 10:10:10:2 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_RGBA1010102 __ecore_buffer_fourcc_code('R', 'A', '3', '0')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format BGRA1010102 ([31:0] B:G:R:A 10:10:10:2 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_BGRA1010102 __ecore_buffer_fourcc_code('B', 'A', '3', '0')
|
|
/* packed YCbCr */
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YUYV ([31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YUYV __ecore_buffer_fourcc_code('Y', 'U', 'Y', 'V')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YVYU ([31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YVYU __ecore_buffer_fourcc_code('Y', 'V', 'Y', 'U')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format UYVY ([31:0] Y1:Cr0:Y0:Cb0 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_UYVY __ecore_buffer_fourcc_code('U', 'Y', 'V', 'Y')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format VYUY ([31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_VYUY __ecore_buffer_fourcc_code('V', 'Y', 'U', 'Y')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format AYUV ([31:0] A:Y:Cb:Cr 8:8:8:8 little endian).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_AYUV __ecore_buffer_fourcc_code('A', 'Y', 'U', 'V')
|
|
/*
|
|
* 2 plane YCbCr
|
|
* index 0 = Y plane, [7:0] Y
|
|
* index 1 = Cr:Cb plane, [15:0] Cr:Cb little endian
|
|
* or
|
|
* index 1 = Cb:Cr plane, [15:0] Cb:Cr little endian
|
|
*/
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format NV12 (2x2 subsampled Cr:Cb plane).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_NV12 __ecore_buffer_fourcc_code('N', 'V', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format NV21 (2x2 subsampled Cb:Cr plane).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_NV21 __ecore_buffer_fourcc_code('N', 'V', '2', '1')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format NV16 (2x1 subsampled Cr:Cb plane).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_NV16 __ecore_buffer_fourcc_code('N', 'V', '1', '6')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format NV61 (2x1 subsampled Cb:Cr plane).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_NV61 __ecore_buffer_fourcc_code('N', 'V', '6', '1')
|
|
/*
|
|
* 3 plane YCbCr
|
|
* index 0: Y plane, [7:0] Y
|
|
* index 1: Cb plane, [7:0] Cb
|
|
* index 2: Cr plane, [7:0] Cr
|
|
* or
|
|
* index 1: Cr plane, [7:0] Cr
|
|
* index 2: Cb plane, [7:0] Cb
|
|
*/
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YUV410 (4x4 subsampled Cb (1) and Cr (2) planes).
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YUV410 __ecore_buffer_fourcc_code('Y', 'U', 'V', '9')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YVU410 (4x4 subsampled Cr (1) and Cb (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YVU410 __ecore_buffer_fourcc_code('Y', 'V', 'U', '9')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YUV411 (4x1 subsampled Cb (1) and Cr (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YUV411 __ecore_buffer_fourcc_code('Y', 'U', '1', '1')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YVU411 (4x1 subsampled Cr (1) and Cb (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YVU411 __ecore_buffer_fourcc_code('Y', 'V', '1', '1')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YUV420 (2x2 subsampled Cb (1) and Cr (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YUV420 __ecore_buffer_fourcc_code('Y', 'U', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YVU420 (2x2 subsampled Cr (1) and Cb (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YVU420 __ecore_buffer_fourcc_code('Y', 'V', '1', '2')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YUV422 (2x1 subsampled Cb (1) and Cr (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YUV422 __ecore_buffer_fourcc_code('Y', 'U', '1', '6')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YVU422 (2x1 subsampled Cr (1) and Cb (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YVU422 __ecore_buffer_fourcc_code('Y', 'V', '1', '6')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YUV444 (non-subsampled Cb (1) and Cr (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YUV444 __ecore_buffer_fourcc_code('Y', 'U', '2', '4')
|
|
/**
|
|
* @brief Definition for the Ecore_Buffer format YVU444 (non-subsampled Cr (1) and Cb (2) planes).
|
|
* @since 1.15
|
|
*/
|
|
#define ECORE_BUFFER_FORMAT_YVU444 __ecore_buffer_fourcc_code('Y', 'V', '2', '4')
|
|
|
|
/**
|
|
* @defgroup Ecore_Buffer_Lib_Group Ecore Buffer Library Functions
|
|
* @ingroup Ecore_Buffer_Group
|
|
*
|
|
* Utility functions that set up and shut down the Ecore Buffer library.
|
|
* This group of functions is applied to an Ecore_Buffer object.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @typedef Ecore_Buffer
|
|
* An object representing a graphic buffer.
|
|
* @since 1.15
|
|
*/
|
|
typedef struct _Ecore_Buffer Ecore_Buffer;
|
|
/**
|
|
* @typedef Ecore_Buffer_Backend
|
|
* The interfaces for backend of buffer.
|
|
* @since 1.15
|
|
*/
|
|
typedef struct _Ecore_Buffer_Backend Ecore_Buffer_Backend;
|
|
/**
|
|
* @typedef Ecore_Export_Type
|
|
* Types for export buffer.
|
|
* @since 1.15
|
|
*/
|
|
typedef enum _Ecore_Export_Type Ecore_Export_Type;
|
|
/**
|
|
* @typedef Ecore_Buffer_Format
|
|
* The format of Ecore_Buffer.
|
|
* @since 1.15
|
|
*/
|
|
typedef unsigned int Ecore_Buffer_Format;
|
|
/**
|
|
* @typedef Ecore_Buffer_Pixmap
|
|
* An Id of Pixmap.
|
|
* @since 1.15
|
|
*/
|
|
typedef unsigned long Ecore_Pixmap;
|
|
/**
|
|
* @typedef Ecore_Buffer_Module_Data
|
|
* The data of module.
|
|
* @since 1.15
|
|
*/
|
|
typedef void* Ecore_Buffer_Module_Data;
|
|
/**
|
|
* @typedef Ecore_Buffer_Data
|
|
* The data of Ecore_Buffer.
|
|
* @since 1.15
|
|
*/
|
|
typedef void* Ecore_Buffer_Data;
|
|
/**
|
|
* @typedef Ecore_Buffer_Cb
|
|
* Called whenever Ecore_Buffer is freed.
|
|
* @since 1.15
|
|
*/
|
|
typedef void (*Ecore_Buffer_Cb)(Ecore_Buffer* buf, void* data);
|
|
|
|
/**
|
|
* @enum _Ecore_Export_Type
|
|
* Types for export buffer.
|
|
* @since 1.15
|
|
*/
|
|
enum _Ecore_Export_Type
|
|
{
|
|
EXPORT_TYPE_INVALID,
|
|
EXPORT_TYPE_ID,
|
|
EXPORT_TYPE_FD
|
|
};
|
|
|
|
/**
|
|
* @struct _Ecore_Buffer_Backend
|
|
* @brief Structure used when initializing Ecore Buffer Backend. This structure
|
|
* is mainly used by modules implementing the Ecore Buffer Backend interface.
|
|
* @since 1.15
|
|
*/
|
|
struct _Ecore_Buffer_Backend
|
|
{
|
|
const char *name; /**< The name of backend */
|
|
|
|
Ecore_Buffer_Module_Data (*init)(const char *context, const char *options); /**< Initialize the backend */
|
|
void (*shutdown)(Ecore_Buffer_Module_Data bmdata); /**< Shut down the backend */
|
|
Ecore_Buffer_Data (*buffer_alloc)(Ecore_Buffer_Module_Data bmdata,
|
|
int width, int height,
|
|
Ecore_Buffer_Format format,
|
|
unsigned int flags); /**< Newly allocate memory for buffer */
|
|
void (*buffer_free)(Ecore_Buffer_Module_Data bmdata,
|
|
Ecore_Buffer_Data bdata); /**< Free allocated memory */
|
|
Ecore_Export_Type (*buffer_export)(Ecore_Buffer_Module_Data bmdata,
|
|
Ecore_Buffer_Data bdata, int *id); /**< Get the id or fd of Ecore_Buffer for exporting it */
|
|
Ecore_Buffer_Data (*buffer_import)(Ecore_Buffer_Module_Data bmdata,
|
|
int w, int h,
|
|
Ecore_Buffer_Format format,
|
|
Ecore_Export_Type type,
|
|
int export_id,
|
|
unsigned int flags); /**< Import and create Ecore_Buffer from id or fd */
|
|
void *(*data_get)(Ecore_Buffer_Module_Data bmdata,
|
|
Ecore_Buffer_Data bdata);
|
|
Ecore_Pixmap (*pixmap_get)(Ecore_Buffer_Module_Data bmdata,
|
|
Ecore_Buffer_Data bdata); /**< Get the pixmap handle */
|
|
void *(*tbm_surface_get)(Ecore_Buffer_Module_Data bmdata,
|
|
Ecore_Buffer_Data bdata); /**< Get the tbm_surface_h handle */
|
|
};
|
|
|
|
/**
|
|
* @brief Initialize the Ecore_Buffer system.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
|
|
*
|
|
* @see ecore_buffer_shutdown()
|
|
*/
|
|
EAPI Eina_Bool ecore_buffer_init(void);
|
|
/**
|
|
* @brief Shut down the Ecore_Buffer system.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
|
|
*
|
|
* @see ecore_buffer_init()
|
|
*/
|
|
EAPI Eina_Bool ecore_buffer_shutdown(void);
|
|
/**
|
|
* @brief Registers the given buffer backend.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] be The backend
|
|
*
|
|
* @return @c EINA_TRUE if backend has been correctly registered, @c EINA_FALSE otherwise.
|
|
*/
|
|
EAPI Eina_Bool ecore_buffer_register(Ecore_Buffer_Backend *be);
|
|
/**
|
|
* @brief Unregisters the given buffer backend.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] be The backend
|
|
*/
|
|
EAPI void ecore_buffer_unregister(Ecore_Buffer_Backend *be);
|
|
/**
|
|
* @brief Creates a new Ecore_Buffer given type
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] engine the name of backend
|
|
* @param[in] width width for Ecore_Buffer
|
|
* @param[in] height height for Ecore_Buffer
|
|
* @param[in] format format for Ecore_Buffer
|
|
* @param[in] flags flags for Ecore_Buffer
|
|
*
|
|
* @return Newly allocated Ecore_Buffer instance, NULL otherwise.
|
|
*/
|
|
EAPI Ecore_Buffer *ecore_buffer_new(const char *engine, unsigned int width, unsigned int height, Ecore_Buffer_Format format, unsigned int flags);
|
|
/**
|
|
* @brief Free the given Ecore_Buffer.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] buf The Ecore_Buffer to free
|
|
*/
|
|
EAPI void ecore_buffer_free(Ecore_Buffer *buf);
|
|
/**
|
|
* @brief Set a callback for Ecore_Buffer free events.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] buf The Ecore_Buffer to set callbacks on
|
|
* @param[in] func The function to call
|
|
* @param[in] data A pointer to the user data to store.
|
|
*
|
|
* A call to this function will set a callback on an Ecore_Buffer, causing
|
|
* @p func to be called whenever @p buf is freed.
|
|
*
|
|
* @see ecore_buffer_free_callback_remove()
|
|
*/
|
|
EAPI void ecore_buffer_free_callback_add(Ecore_Buffer *buf, Ecore_Buffer_Cb func, void *data);
|
|
/**
|
|
* @brief Remove a callback for Ecore_Buffer free events.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] buf The Ecore_Buffer to remove callbacks on
|
|
* @param[in] func The function to remove
|
|
* @param[in] data A pointer to the user data to remove
|
|
*
|
|
* @see ecore_buffer_free_callback_add()
|
|
*/
|
|
EAPI void ecore_buffer_free_callback_remove(Ecore_Buffer *buf, Ecore_Buffer_Cb func, void *data);
|
|
/**
|
|
* @brief Get a pointer to the raw data of the given Ecore_Buffer.
|
|
*
|
|
* @param[in] buf The Ecore_Buffer.
|
|
*
|
|
* @return The pointer of raw data.
|
|
*/
|
|
EAPI void *ecore_buffer_data_get(Ecore_Buffer *buf);
|
|
/**
|
|
* @brief Return the Pixmap of given Ecore_Buffer.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] buf The Ecore_Buffer
|
|
*
|
|
* @return The Pixmap instance, 0 otherwise.
|
|
*/
|
|
EAPI Ecore_Pixmap ecore_buffer_pixmap_get(Ecore_Buffer *buf);
|
|
/**
|
|
* @brief Return the tbm surface handle of given Ecore_Buffer.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] buf The Ecore_Buffer
|
|
*
|
|
* @return The tbm surface handle, NULL otherwise.
|
|
*
|
|
* The tbm surface handle will be used for the API of libtbm.
|
|
* The API is described in tbm_surface.h in libtbm.
|
|
*/
|
|
EAPI void *ecore_buffer_tbm_surface_get(Ecore_Buffer *buf);
|
|
/**
|
|
* @brief Return size of given Ecore_Buffer.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] buf The Ecore_Buffer
|
|
* @param[out] width where to return the width value. May be @c NULL.
|
|
* @param[out] height where to return the height value. May be @c NULL.
|
|
*
|
|
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
|
|
*/
|
|
EAPI Eina_Bool ecore_buffer_size_get(Ecore_Buffer *buf, unsigned int *width, unsigned int *height);
|
|
/**
|
|
* @brief Return format of given Ecore_Buffer.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] buf The Ecore_Buffer
|
|
*
|
|
* @return The format of given Ecore_Buffer.
|
|
*
|
|
* return value can be one of those pre-defined value such as ECORE_BUFFER_FORMAT_XRGB8888.
|
|
*/
|
|
EAPI Ecore_Buffer_Format ecore_buffer_format_get(Ecore_Buffer *buf);
|
|
/**
|
|
* @brief Return flags of given Ecore_Buffer.
|
|
*
|
|
* @since 1.15
|
|
*
|
|
* @param[in] buf The Ecore_Buffer
|
|
*
|
|
* @return The flags of given Ecore_Buffer.
|
|
*
|
|
* NOTE: Not Defined yet.
|
|
*/
|
|
EAPI unsigned int ecore_buffer_flags_get(Ecore_Buffer *buf);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|