|
楼主 |
发表于 2024-5-22 11:21:40
|
显示全部楼层
本帖最后由 jarlyyn 于 2024-5-22 11:25 AM 编辑
关于行信息。
由于我的库的设计目标是跨客户端使用的,所以我必须把行信息抽出来做一个独立于客户端的存在
具体的信息具体如下
行信息标准
- 一个行代表一串带样式的文字
- 行信息来源应该为Mud客户端匹配的一行服务器文字
- 正常情况下,行信息不应该包含换行符号
- 行的内容包括 Text(行正文)和Words(词列表)
- Words词列表指将原始服务器文字,按样式不同(而非ansi指令)进行分割,按原始顺序排序
- Text行正文等于所有Words中的词的正文的拼接
- 每个Word词包含如下属性:Text文本,Color色彩,Backgroud背景,Bold加粗,Underlined下划线,Blinking闪烁,Inverse反色
- Word词的Text指一段样式对应的文本。
- Word词的Color和Backgroud都是字符串,分为标准色和RGB色
- 标准色为''[默认],'Black'[黑色],'Red'[红色],'Green'[绿色],'Yellow'[黄色],'Blue'[蓝色],'Magenta'[紫色],'Cyan'[青色],'White'[白色],'BrightBlack'[浅黑],'BrightRed'[浅红],'BrightGreen'[浅绿],'BrightYellow'[浅黄],'BrightBlue'[浅蓝],'BrightMagenta'[浅紫],'BrightCyan'[浅青],'BrightWhite'[浅白]
- 标准色一般根据客户端实现来取值,如有冲突,按上一条的顺序进行优先匹配。色彩和背景色的默认一般指客户端设置的不同的颜色
- RGB色为以#开头,6位大写16进制数,如'#CCCCCC'
- Bold加粗指ansi控制符1的效果,具体取决于客户端实现,值为布尔值
- Underline下划线指ansi控制符4的效果,具体取决于客户端实现,值为布尔值
- Blink闪烁指ansi控制符5,6或3的效果,具体取决于客户端实现,值为布尔值
- Inverse反色指ansi控制符7的效果,具体取决于客户端实现,值为布尔值
行信息短描述
行信息短描述是一种将带样式的行信息格式化为紧凑,易识别,易保存,易维护,能直接比较的格式. 范例如下 - #0AA0标准色文字#1CCCCCCCCCCCC1纯RGB色加粗文字#1CCCCCC*A5RGB色标准背景闪烁加粗文字#1*ACCCCCCE标准色RGB背景加粗下划线闪烁反色文字
复制代码
具体格式如下 - 短描述分为样式和正文部分,样式部分在正文部分之前
- 样式部分以#号开始,正文中所有的#都转义为##
- 短描述样式部分为#开头,后接版本数0或1
- #0为标准色模式样式,格式为#0AA0,第3为字母A开始的色彩序号,第4为字母A开始的背景色序号,第5位为16进制数表示的样式
- #1为RGB模式样式,格式为#1CCCCCCCCCCCCC0,#1*ACCCCCC0,#1CCCCCC*A0 格式。第三位开始为色彩表号,*开头表示后一位为字母A开始的色彩序号,否者之后6位为大写16进制色彩。最后一位为16进制数表示的样式
- 16进制数表示的样式为2进制标志位,其中Bold为1位,Underline为2位,Blinking为4位,Inverse为8位
- 多个词的短描述可以直接作为字符串拼接,以#作为标志分割
具体来说大体可以这么认为
- 行信息就是把mushclient的getStyleInfo有用的部分,一个个取出来,放在一个table里,每个style一个Word放在Words里。
- Word有Text对应原本的文字,有Bold,Underlined,Blink,Inverse对应本来的stlye
- 由于table无法直接比较和保存,提供了一个短描述功能,将带样式的字符串专成能比较易读写的字符串格式。方便处理。
具体参考:https://github.com/hellclient-sc ... /src/hclua/lib/line
|
|