160 lines
4.2 KiB
C
160 lines
4.2 KiB
C
/**
|
||
* File: clip_board.h
|
||
* Author: AWTK Develop Team
|
||
* Brief: clip_board interface
|
||
*
|
||
* Copyright (c) 2018 - 2023 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||
*
|
||
* This program is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
* License file for more details.
|
||
*
|
||
*/
|
||
|
||
/**
|
||
* History:
|
||
* ================================================================
|
||
* 2018-11-21 Li XianJing <xianjimli@hotmail.com> created
|
||
*
|
||
*/
|
||
|
||
#ifndef TK_CLIP_BOARD_H
|
||
#define TK_CLIP_BOARD_H
|
||
|
||
#include "base/types_def.h"
|
||
|
||
BEGIN_C_DECLS
|
||
|
||
struct _clip_board_t;
|
||
typedef struct _clip_board_t clip_board_t;
|
||
|
||
/**
|
||
* @enum clip_board_data_type_t
|
||
* @annotation ["scriptable"]
|
||
* @prefix CLIP_BOARD_DATA_TYPE_
|
||
* 剪切板数据类型定义。
|
||
*/
|
||
typedef enum _clip_board_data_type_t {
|
||
/**
|
||
* @const CLIP_BOARD_DATA_TYPE_NONE
|
||
* 无数据。
|
||
*/
|
||
CLIP_BOARD_DATA_TYPE_NONE,
|
||
|
||
/**
|
||
* @const CLIP_BOARD_DATA_TYPE_TEXT
|
||
* UTF8文本。
|
||
*/
|
||
CLIP_BOARD_DATA_TYPE_TEXT
|
||
} clip_board_data_type_t;
|
||
|
||
typedef ret_t (*clip_board_clear_t)(clip_board_t* cl);
|
||
typedef ret_t (*clip_board_get_data_t)(clip_board_t* cl, clip_board_data_type_t* type,
|
||
const void** data, uint32_t* size);
|
||
typedef ret_t (*clip_board_set_data_t)(clip_board_t* cl, clip_board_data_type_t type,
|
||
const void* data, uint32_t size);
|
||
typedef ret_t (*clip_board_destroy_t)(clip_board_t* cl);
|
||
|
||
typedef struct _clip_board_vtable_t {
|
||
clip_board_clear_t clear;
|
||
clip_board_get_data_t get_data;
|
||
clip_board_set_data_t set_data;
|
||
clip_board_destroy_t destroy;
|
||
} clip_board_vtable_t;
|
||
|
||
/**
|
||
* @class clip_board_t
|
||
* @annotation ["scriptable"]
|
||
* 剪切板接口。
|
||
*/
|
||
struct _clip_board_t {
|
||
const clip_board_vtable_t* vt;
|
||
};
|
||
|
||
/**
|
||
* @method clip_board
|
||
* 获取缺省的剪切板对象。
|
||
* @alias clip_board_instance
|
||
* @annotation ["constructor"]
|
||
*
|
||
* @return {clip_board_t*} 返回缺省剪切板对象。
|
||
*/
|
||
clip_board_t* clip_board(void);
|
||
|
||
/**
|
||
* @method clip_board_set
|
||
* 设置缺省的剪切板对象。
|
||
* @param {clip_board_t*} cl 剪切板对象。
|
||
*
|
||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||
*/
|
||
ret_t clip_board_set(clip_board_t* cl);
|
||
|
||
/**
|
||
* @method clip_board_clear
|
||
* 清空剪切板中的数据。
|
||
* @param {clip_board_t*} cl 剪切板对象。
|
||
*
|
||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||
*/
|
||
ret_t clip_board_clear(clip_board_t* cl);
|
||
|
||
/**
|
||
* @method clip_board_set_data
|
||
* 设置数据到剪切板中。
|
||
* @param {clip_board_t*} cl 剪切板对象。
|
||
* @param {clip_board_data_type_t} type 数据类型。
|
||
* @param {const void*} data 数据。
|
||
* @param {uint32_t} size 数据长度
|
||
*
|
||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||
*/
|
||
ret_t clip_board_set_data(clip_board_t* cl, clip_board_data_type_t type, const void* data,
|
||
uint32_t size);
|
||
|
||
/**
|
||
* @method clip_board_get_data
|
||
* 从剪切板中获取数据。
|
||
* @param {clip_board_t*} cl 剪切板对象。
|
||
* @param {clip_board_data_type_t*} type 返回数据类型(可为NULL)。
|
||
* @param {const void**} data 返回数据(可为NULL)。
|
||
* @param {uint32_t*} size 返回数据长度(可为NULL)。
|
||
*
|
||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||
*/
|
||
ret_t clip_board_get_data(clip_board_t* cl, clip_board_data_type_t* type, const void** data,
|
||
uint32_t* size);
|
||
|
||
/**
|
||
* @method clip_board_destroy
|
||
* 销毁剪切板对象。
|
||
* @param {clip_board_t*} cl 剪切板对象。
|
||
*
|
||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||
*/
|
||
ret_t clip_board_destroy(clip_board_t* cl);
|
||
|
||
/**
|
||
* @method clip_board_set_text
|
||
* 设置文本(UTF8)数据到剪切板。
|
||
* @annotation ["static", "scriptable"]
|
||
* @param {const char*} text 文本。
|
||
*
|
||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||
*/
|
||
ret_t clip_board_set_text(const char* text);
|
||
|
||
/**
|
||
* @method clip_board_get_text
|
||
* 从剪切板中获取文本(UTF8)数据。
|
||
* @annotation ["static", "scriptable"]
|
||
*
|
||
* @return {const char*} 返回文本数据。
|
||
*/
|
||
const char* clip_board_get_text(void);
|
||
|
||
END_C_DECLS
|
||
|
||
#endif /*TK_CLIP_BOARD_H*/
|