SPICE协议----光标通道定义
2014-12-19 16:55
567 查看
1 指针通道定义
SPICE协议定义了一组消息用来控制光标在远程桌面显示区域的形状和位置。光标位置消息和客户端鼠标模式是无关的。SPICE协议还定义了一组消息用来管理在客户端侧的光标形状缓存。客户端必须严格遵守所有的指令。服务器发送SPICE_MSG_CURSOR_INIT消息设置当前指针状态(形状,位置,能见度)和清楚缓存,后续会发送除初始化之外的其他命令。服务器可以发送SPICE_MSG_CURSOR_RESET消息将禁用指针及重置光标缓存。此消息后SPICE_MSG_CURSOR_INIT是有效的。1.1.1服务器—》客户端
enum {SPICE_MSG_CURSOR_INIT = 101,
SPICE_MSG_CURSOR_RESET,
SPICE_MSG_CURSOR_SET,
SPICE_MSG_CURSOR_MOVE,
SPICE_MSG_CURSOR_HIDE,
SPICE_MSG_CURSOR_TRAIL,
SPICE_MSG_CURSOR_INVAL_ONE,
SPICE_MSG_CURSOR_INVAL_ALL,
SPICE_MSG_END_CURSOR
};
1.1.2 光标类型
typedef enumSpiceCursorType {SPICE_CURSOR_TYPE_ALPHA,
//数据包含pre-multiplied ARGB8888象素映射。线跨越<宽度* 4 >
SPICE_CURSOR_TYPE_MONO,
SPICE_CURSOR_TYPE_COLOR4,
SPICE_CURSOR_TYPE_COLOR8,
SPICE_CURSOR_TYPE_COLOR16,
SPICE_CURSOR_TYPE_COLOR24,
SPICE_CURSOR_TYPE_COLOR32,
SPICE_CURSOR_TYPE_ENUM_END
}SpiceCursorType;
1.1.3 SpiceCursorFlags定义
typedef enumSpiceCursorFlags {SPICE_CURSOR_FLAGS_NONE = (1 << 0),
//设置无效
SPICE_CURSOR_FLAGS_CACHE_ME = (1 << 1),
//客户端应该将这个形状添加到缓存
SPICE_CURSOR_FLAGS_FROM_CACHE = (1 <<2),
//客户端应该从光标缓存中获取光标的形状。SpiceCursorHeader结构体中其他字段除了unique都是无效的。
SPICE_CURSOR_FLAGS_MASK = 0x7
} SpiceCursorFlags;
1.1.4 SpiceCursorHeader结构体
typedef structSpiceCursorHeader {uint64_t unique; //对应光标形状的唯一标示,用于在缓存中存储或检索
uint16_t type; //光标类型
uint16_t width; //光标的宽度
uint16_t height; //光标高度
uint16_t hot_spot_x;//光标热点X位置
uint16_t hot_spot_y; //光标热点Y位置
}SpiceCursorHeader;
typedef structSpiceCursor {
uint32_t flags; // SpiceCursorFlags 标示
SpiceCursorHeader header;//光标头
uint32_t data_size;//数据大小
uint8_t *data;//数据实际光标形状数据,
} SpiceCursor;
1.1.5 光标初始化结构体typedef structSpiceMsgCursorInit {
SpicePoint16 position; //鼠标指针的位置相关的显示区域
uint16_t trail_length;
uint16_t trail_frequency; //
uint8_t visible; //可见性 1:可见,0:不可见
SpiceCursor cursor; //当前光标形状
} SpiceMsgCursorInit;
1.1.6 SpiceMsgCursorSet结构体
typedef structSpiceMsgCursorSet {SpicePoint16 position; /鼠标指针的位置相关的显示区域
uint8_t visible; //可见性 1:可见,0:不可见
SpiceCursor cursor; //当前光标形状
}SpiceMsgCursorSet;
1.1.7 SpiceMsgCursorMove结构体
typedef structSpiceMsgCursorMove {SpicePoint16 position; /鼠标指针的位置相关的显示区域
}SpiceMsgCursorMove;
1.1.8 SpiceMsgCursorTrail结构体
typedef structSpiceMsgCursorTrail {uint16_t length;//
uint16_t frequency;//更新频率
}SpiceMsgCursorTrail;
相关文章推荐
- SPICE协议定义----显示通道(1)
- SPICE协议------主通道交互定义
- Spice协议----输入通道定义
- SPICE协议定义----显示通道(1)
- SPICE协议-----基本简介及普通协议定义
- spice协议----播放和录音通道
- HTTP1.1 协议 第十四章定义 头域定义
- keepalived之 Keepalived 原理(定义、VRRP 协议、VRRP 工作机制)
- M1卡协议定义
- Step2:服务器及协议的定义
- SPICE协议marshaller的处理
- SPICE协议之流媒体算法
- EditText 如何定义光标的位置
- c# 定义光标位置
- API:定义客户端/服务器接口协议
- HTTP/1.1协议中共定义了八种方法
- cursor属性(定义光标形状)
- HTTP1.1 协议 第十四章定义 头域定义
- UVC协议USB视频捕获设备定义