Text.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 文字串处理
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-8-31
  6. ------------------------------------------------------------------------------------------
  7. *****************************************************************************************/
  8. #ifndef TEXT_H
  9. #define TEXT_H
  10. //字符串控制码的内部编码
  11. enum KTEXT_CTRL_CODE
  12. {
  13. KTC_INVALID = 0,
  14. KTC_ENTER = 0x0a,
  15. KTC_COLOR = 0x02, //后面跟随三个BYTE数据分别为RGB三色分量
  16. KTC_COLOR_RESTORE = 0x03, //回复到原来设置的颜色
  17. KTC_BORDER_COLOR = 0x04, //设置边缘色,后面跟随三个BYTE数据分别为RGB三色分量
  18. KTC_BORDER_RESTORE = 0x05, //设置边缘色还原
  19. KTC_INLINE_PIC = 0x06, //嵌入式图片[wxb 2003-6-19]
  20. KTC_TAB = 0x09, //tab
  21. KTC_SPACE = 0x20, //空格
  22. KTC_TAIL = 0xFF, //字符串结束
  23. };
  24. struct KTP_CTRL
  25. {
  26. unsigned char cCtrl; //此成员取值为Text.h中梅举KTEXT_CTRL_CODE中的一个值
  27. union
  28. {
  29.     struct
  30.     {
  31.     unsigned char cParam0; //此及以下两个成员的取值与含义依据cCtrl的取值而定
  32.     unsigned char cParam1;
  33.     unsigned char cParam2;
  34.     };
  35.     unsigned short wParam;
  36.    };
  37. };
  38. #define MAX_SYSTEM_INLINE_PICTURES 4096 //系统预留的嵌入式图片个数
  39. struct IInlinePicEngineSink
  40. {
  41. //获取指定嵌入图片的大小
  42. virtual long GetPicSize(unsigned short wIndex, int& cx, int& cy) = 0;
  43. //绘制指定图片
  44. virtual long DrawPic(unsigned short wIndex, int x, int y) = 0;
  45. //动态加载图片,获取一个WORD,即图片的索引
  46. virtual long AddCustomInlinePic(unsigned short& wIndex, const char* szSprPathName) = 0;
  47. //动态卸载图片
  48. virtual long RemoveCustomInlinePic(unsigned short wIndex) = 0;
  49. };
  50. #ifndef ENGINE_EXPORTS
  51. //接口 IInlinePicEngineSink 由应用层实现并挂接进 Engine 模块 [wxb 2003-6-19]
  52. //相关挂接函数:
  53. // AdviseEngine(IInlinePicEngineSink*);
  54. // UnAdviseEngine(IInlinePicEngineSink*);
  55. extern "C"
  56. {
  57. //获取本行的下个显示字符
  58. const char* TGetSecondVisibleCharacterThisLine(const char* pCharacter, int nPos, int nLen);
  59. //检测某个字符是否为不许放置行首的字符,不是限制字符则返回0,否则返回字符占的子节数
  60. int TIsCharacterNotAlowAtLineHead(const char* pCharacter);
  61. //如果原字符串长度(包括结尾符)超过限定的长度,则截短它并加上..后缀
  62. const char* TGetLimitLenString(const char* pOrigString, int nOrigLen, char* pLimitLenString, int nLimitLen);
  63. //如果原(包含控制符)字符串长度(包括结尾符)超过限定的长度,则截短它并加上..后缀
  64. const char* TGetLimitLenEncodedString(const char* pOrigString, int nOrigLen, int nFontSize,
  65. int nWrapCharaNum, char* pLimitLenString, int& nShortLen, int nLineLimit, int bPicPackInSingleLine = false);
  66. //寻找分割字符串的合适位置
  67. int TSplitString(const char* pString, int nDesirePos, int bLess);
  68. //在编码字串寻找分割字符串的合适位置
  69. int TSplitEncodedString(const char* pString, int nCount, int nDesirePos, int bLess);
  70. //获得指定行的开始位置
  71. int TGetEncodeStringLineHeadPos(const char* pBuffer, int nCount, int nLine, int nWrapCharaNum, int nFontSize, int bPicPackInSingleLine = false);
  72. //对文本串中的控制标记进行转换,去除无效字符,缩短文本串存储长度
  73. int TEncodeText(char* pBuffer, int nCount);
  74. //对文本串中的控制标记进行转换,去除无效字符,缩短文本串存储长度
  75. int TFilterEncodedText(char* pBuffer, int nCount);
  76. //去除编码文本中的控制符号
  77. int TRemoveCtrlInEncodedText(char* pBuffer, int nCount);
  78. //获取编码文本的行数与最大行宽
  79. int TGetEncodedTextLineCount(const char* pBuffer, int nCount, int nWrapCharaNum, int& nMaxLineLen, int nFontSize, int nSkipLine = 0, int nLineLimit = 0, int bPicSingleLine = false);
  80. //对已经编码的文本,从指定位置开始查找指定的控制符号的位置,返回-1表示未找到
  81. int TFindSpecialCtrlInEncodedText(const char* pBuffer, int nCount, int nStartPos, char cControl);
  82. //对已经编码的文本,去除指定类型的控制符
  83. int TClearSpecialCtrlInEncodedText(char* pBuffer, int nCount, char cControl);
  84. //对已经编码的文本,指定输出长度的在缓冲区中位置
  85. int TGetEncodedTextOutputLenPos(const char* pBuffer, int nCount, int& nLen, bool bLess, int nFontSize);
  86. //对已经编码的文本,指定的前段缓冲区中控制符,对后面的输出产生效果影响
  87. int TGetEncodedTextEffectCtrls(const char* pBuffer, int nSkipCount, KTP_CTRL& Ctrl0, KTP_CTRL& Ctrl1);
  88. long AdviseEngine(IInlinePicEngineSink*);
  89. long UnAdviseEngine(IInlinePicEngineSink*);
  90. }
  91. #endif
  92. #endif