osecvs 视频会议系统设计(一):白板数据传输

从事多年网络开发,都是在第一战线难得闲下来回头整理开发资料,现在将以往的视频会议及即时通讯系统项目每个功能和步骤详细介绍一下,借此达到抛砖引玉的效果,多认识一些这方面的牛人和学习者大家共勉。

 

 

1、 白板数据传输协议

该协议是在会议的过程中,客户端将生成的白板数据发送到白板服务端,有白板服务端统一管理, 白板服务端在转发白板数据的同时,会处理并保存白板数据。这样,后面的用户进入会议室时,白板服务器就会将保存的白板数据发送给该用户。

 

 

白板数据控制协议

该协议是作为白板传输协议的子协议,是在实时操作白板的时候进行的控制协议,会议过程中对于客户端的操作,白板服务端会实时转发该协议到当前的会议人员,同时处理并保存白板数据,为后面登录的人员提供完整的白板数据。

(1)发送电子白板数据

功能描述

发送电子白板数据

命令定义

WB_CMD_VIEWDATA     0X01

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

白板ID

dwViewID

DWORD

4

 

数据长度

wViewDataLen

WORD

2

 

数据

Data

BYTE

wViewDataLen

 

备注

该协议中的数据包含有白板数据对象的控制协议(见3

 

(2)新建一个电子白板

功能描述

新建一个电子白板

命令定义

WB_CMD_CREATEVIEW      0X02

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

白板ID

dwViewID

DWORD

4

 

白板大小

szView

SIZE

 

 

白板页数

bPages

BYTE

1

 

文件个数

bFileCount

BYTE

1

 

是否是临时文档

bTemp

BYTE

1

 

文档压缩标志

bFileFlag

BYTE

1

WB_FLAG_UNCOMPRESS:未压缩,WB_FLAG_COMPRESS为压缩格式

白板名称长度

bViewNameLen

BYTE

1

 

文件服务器IP地址列表长度

bIpListLen

BYTE

1

 

文件在服务器存放路径长度

bFilePathLen

BYTE

1

 

白板名称

szName

CHAR

bViewNameLen

 

IP地址列表

szIpList

CHAR

bIpListLen

 

文件存放路径

szSrvPath

CHAR

bFilePathLen

 

备注

 

 

(3)关闭一个电子白板

功能描述

关闭一个电子白板

命令定义

WB_CMD_DELETEVIEW     0X03

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

白板ID

dwViewID

DWORD

4

 

备注

 

 

(4)激活一个电子白板

功能描述

激活一个电子白板

命令定义

WB_CMD_ACTIVEVIEW      0X04

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

白板ID

dwViewID

DWORD

4

 

备注

 

 

(5)改变显示比例

功能描述

改变显示比例

命令定义

WB_CMD_SCALEVIEW       0X05

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

比例分子

wScaleNum

WORD

2

 

比例分母

wScaleDen

WORD

2

 

备注

 

 

(6)设置白板的当前显示页

功能描述

设置白板的当前显示页

命令定义

WB_CMD_VIEWPAGE      0X06

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

白板ID

dwViewID

DWORD

4

 

页码

bPageIndex

BYTE

1

 

备注

 

 

2、 白板数据对象控制协议

白板数据对象控制协议主要是管理白板对象,以及白板对象的描述控制,该协议是附属于白板控制协议中的白板数据下,其中主要对象类型定义如下:

功能描述

数据类型定义

空对象

WB_OBJ_EMPTY          0x00

直线

WB_OBJ_LINE           0x01

箭头

WB_OBJ_ARROW          0x02

空心矩形

WB_OBJ_RECT           0x03

实心矩形

WB_OBJ_RECTFILL       0x04

空心圆角矩形

WB_OBJ_ROUNDRECT      0x05

实心圆角矩形

WB_OBJ_ROUNDRECTFILL  0x06

空心椭圆

WB_OBJ_ELLIPSE        0x07

实心椭圆

WB_OBJ_ELLIPSEFILL    0x08

多边形

WB_OBJ_POLY           0x09

文字

WB_OBJ_TEXT           0x0A

钢笔

WB_OBJ_PEN            0x0B

铅笔

WB_OBJ_PENCIL         0x0C

图标

WB_OBJ_ICON           0x0D

 

填充模式定义:

typedef enum

{

     WB_FILLMODE_SOLID = 0,

     WB_FILLMODE_BDIAGONAL,

     WB_FILLMODE_CROSS,

     WB_FILLMODE_DIAGCROSS,

     WB_FILLMODE_FDIAGONAL,

     WB_FILLMODE_HORIZONTAL,

     WB_FILLMODE_VERTICAL       

}WB_FillMode;

 

线型定义

typedef enum

{

     WB_LINESTYLE_SOLID=0x0,

     WB_LINESTYLE_DASH,

     WB_LINESTYLE_DOT,

     WB_LINESTYLE_DASHDOT,

     WB_LINESTYLE_DASHDOTDOT    

}WB_LineStyle;

 

(1)创建绘图对象

功能描述

创建绘图对象

命令定义

WB_DATATYPE_CREATEOBJ      0X01

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

创建的对象个数

unObjCount

UINT

4

 

对象信息总长度

wDataLen

WORD

2

 

对象信息

ObjInfo

WB_DATA_OBJINFO

wDataLen

对象信息的数据

备注

该协议中的对象信息是包括具体的对象信息数据,以及对象所在的页面,对象信息的数据结构下面有说明,同时在对象信息结构中的具体对象信息也依次定义了,请参考下面的结构。

 对象信息的数据结构定义如下:

typedef struct

{

BYTE  bPageIndex; //当前页

BYTE  bObjType;   //对象类型

DWORDdwObjID;     //对象ID

WORD  wObjInfoLen; //对象信息长度

  //后接具体对象信息

}WB_DATA_OBJINFO;

 

具体对象信息定义:

(a)实心矩形、实心圆角矩形、实心椭圆对象信息

typedef struct

{

    COLORREF  color;    //RGB颜色

    BYTE      bFillMode; //填充模式

    POINT     ptLT;     //左上角坐标

    POINT     ptRB;     //右下角坐标

}WB_OBJINFO_RECTFILL,WB_OBJINFO_ROUNDRECTFILL,WB_OBJINFO_ELLIPSEFILL;

 

(b)直线、箭头、空心矩形、空心圆角矩形、空心椭圆对象信息

  typedef struct

{

    COLORREF color;      //RGB颜色

    BYTE     bLineStyle; //线型

    BYTE     bLineWidth; //线宽

    POINT    ptLT;      //左上角坐标

    POINT    ptRB;      //右下角坐标

}WB_OBJINFO_LINE,WB_OBJINFO_ARROW,WB_OBJINFO_RECT,WB_OBJINFO_ROUNDRECT,WB_OBJINFO_ELLIPSE;

 

(c)钢笔、铅笔、多边形对象信息

typedef struct

{

COLORREF color;     //RGB颜色

BYTE     bLineStyle;//线型

BYTE     bLineWidth;//线宽

UINT     nPtCount; //顶点个数

//顶点坐标列表 长度=Sizeof(POINT)*nPtCount

}WB_OBJINFO_PEN,WB_OBJINFO_PENCIL,WB_OBJINFO_POLY;

 

(d)文字对象信息

   typedefstruct

   {

       COLORREFcolor;  //RGB颜色

       LOGFONT  logFont;//字体

       WORD     wStringLen;//文字长度

       POINT    ptLT;  //左上角坐标

       POINT    ptRB;  //右下角坐标

       //文字数据,长度=wStringLen

   }WB_OBJINFO_TEXT;

 

(e)图标对象信息

  typedef struct

  {

      UINT    nIconID;//图标ID

      POINT   ptLT;   //左上角坐标

  }WB_OBJINFO_ICON;

 

(2)删除绘图对象

功能描述

删除绘图对象

命令定义

WB_DATATYPE_DELETEOBJ      0X02

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

删除对象所在的页码

bPageIndex

BYTE

1

 

删除的对象个数

wObjCount

WORD

2

 

删除对象ID列表

ObjIDList

DWORD

4* wobjCount

 

备注

 

 

(3)移动绘图对象

功能描述

移动绘图对象

命令定义

WB_DATATYPE_MOVEOBJ      0X03

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

移动对象所在的页码

bPageIndex

BYTE

1

 

移动大小

sz

SIZE

 

 

移动的对象个数

wObjCount

WORD

2

 

移动对象ID列表

ObjIDList

DWORD

4* wobjCount

 

备注

 

 

(4)移动绘图对象的某个控制点

功能描述

移动绘图对象的某个控制点

命令定义

WB_DATATYPE_MOVEOBJPOINT      0X04

结构定义

功能

名称

类型

长度

备注

命令

bCommand

BYTE

1

 

移动对象所在的页码

bPageIndex

BYTE

1

 

移动对象ID

dwObjID

DWORD

4

 

移动的点索引

wPtIndex

WORD

2

 

移动大小

sz

SIZE

 

 

备注

 

 联系方式
QQ:1152597562

即时通讯源代码, im源码, im源代码 即时通讯全套源码,oseicq源码,QQ源代码,旺旺源代码,msn源代码,歪歪源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值