📄 rtf.c
字号:
if (reverse) size += 15; if (bold || uline || incolor || inbg || reverse) size++; bold = uline = incolor = inbg = reverse = 0; size +=6; continue; } } else if (*buf == '\n') { if (bold) size += 3; if (uline) size += 7; if (incolor && !reverse) size += 4; if (inbg && !reverse) size += 11; if (reverse) size += 15; if (bold || uline || incolor || inbg || reverse) size++; bold = uline = incolor = inbg = reverse = 0; size +=6; continue; } else if (*buf == '\2') { if (bold) size += 4; else size += 3; bold = !bold; continue; } else if (*buf == '\3' && reverse) { if (*(buf+1) && isdigit(*(buf+1))) { ++buf; if (*(buf+1) && isdigit(*(buf+1))) ++buf; if (*(buf+1) && *(buf+1) == ',') { if (*(buf+2) && isdigit(*(buf+2))) { buf+=2; if (*(buf+1) && isdigit(*(buf+1))) ++buf; } } } continue; } else if (*buf == '\3' && !reverse) { size += 3; if (*(buf+1) && !isdigit(*(buf+1))) { incolor = 0; size++; if (inbg) { inbg = 0; size += 11; } } else if (*(buf+1)) { unsigned char color[3]; int number; color[0] = *(++buf); color[1] = 0; if (*(buf+1) && isdigit(*(buf+1))) color[1] = *(++buf); color[2] = 0; number = atoi(color); if (number == 99 || number == 1) size += 2; else if (number == 0) size++; else { number %= 16; _itoa(number, color, 10); size += strlen(color); } color[2] = 0; number = atoi(color); if (*(buf+1) && *(buf+1) == ',') { if (*(buf+2) && isdigit(*(buf+2))) { size += 10; buf++; color[0] = *(++buf); color[1] = 0; if (*(buf+1) && isdigit(*(buf+1))) color[1] = *(++buf); color[2] = 0; number = atoi(color); if (number == 1) size += 2; else if (number == 0 || number == 99) size++; else { number %= 16; _itoa(number, color, 10); size += strlen(color); } inbg = 1; } } incolor = 1; } size++; continue; } else if (*buf == '\17') { if (bold) size += 3; if (uline) size += 7; if (incolor && !reverse) size += 4; if (inbg && !reverse) size += 11; if (reverse) size += 15; if (bold || uline || incolor || inbg || reverse) size++; bold = uline = incolor = inbg = reverse = 0; continue; } else if (*buf == '\26') { if (reverse) size += 16; else size += 17; reverse = !reverse; continue; } else if (*buf == '\37') { if (uline) size += 8; else size += 4; uline = !uline; continue; } size++; } size += strlen("{\\rtf1\\ansi\\ansicpg1252\\deff0{\\fonttbl{\\f0\\fmodern\\fprq1\\" "fcharset0 Fixedsys;}}\r\n" MIRC_COLORS "\\viewkind4\\uc1\\pard\\lang1033\\f0\\fs20")+1; return (size);}/* Converts a string containing IRC codes to RTF * Parameters: * buffer - The input buffer containing IRC codes * string - The output buffer in RTF */void IRCToRTF(unsigned char *buffer, unsigned char *string) { unsigned char *tmp; int i = 0; short bold = 0, uline = 0, incolor = 0, inbg = 0, reverse = 0; sprintf(string, "{\\rtf1\\ansi\\ansicpg1252\\deff0{\\fonttbl{\\f0\\fmodern\\fprq1\\" "fcharset0 Fixedsys;}}\r\n" MIRC_COLORS "\\viewkind4\\uc1\\pard\\lang1033\\f0\\fs20"); i = strlen(string); for (tmp = buffer; *tmp; tmp++) { if (*tmp == '{') { strcat(string, "\\{"); i+=2; continue; } else if (*tmp == '}') { strcat(string, "\\}"); i+=2; continue; } else if (*tmp == '\\') { strcat(string, "\\\\"); i+=2; continue; } else if (*tmp == '\r') { if (*(tmp+1) && *(tmp+1) == '\n') { tmp++; if (bold) { strcat(string, "\\b0 "); i+=3; } if (uline) { strcat(string, "\\ulnone"); i+=7; } if (incolor && !reverse) { strcat(string, "\\cf0"); i+=4; } if (inbg && !reverse) { strcat(string, "\\highlight0"); i +=11; } if (reverse) { strcat(string, "\\cf0\\highlight0"); i += 15; } if (bold || uline || incolor || inbg || reverse) string[i++] = ' '; bold = uline = incolor = inbg = reverse = 0; strcat(string, "\\par\r\n"); i +=6; } else string[i++]='\r'; continue; } else if (*tmp == '\n') { if (bold) { strcat(string, "\\b0 "); i+=3; } if (uline) { strcat(string, "\\ulnone"); i+=7; } if (incolor && !reverse) { strcat(string, "\\cf0"); i+=4; } if (inbg && !reverse) { strcat(string, "\\highlight0"); i +=11; } if (reverse) { strcat(string, "\\cf0\\highlight0"); i += 15; } if (bold || uline || incolor || inbg || reverse) string[i++] = ' '; bold = uline = incolor = inbg = reverse = 0; strcat(string, "\\par\r\n"); i +=6; continue; } else if (*tmp == '\2') { if (bold) { strcat(string, "\\b0 "); i+=4; } else { strcat(string, "\\b "); i+=3; } bold = !bold; continue; } else if (*tmp == '\3' && reverse) { if (*(tmp+1) && isdigit(*(tmp+1))) { ++tmp; if (*(tmp+1) && isdigit(*(tmp+1))) ++tmp; if (*(tmp+1) && *(tmp+1) == ',') { if (*(tmp+2) && isdigit(*(tmp+2))) { tmp+=2; if (*(tmp+1) && isdigit(*(tmp+1))) ++tmp; } } } continue; } else if (*tmp == '\3' && !reverse) { strcat(string, "\\cf"); i += 3; if (*(tmp+1) && !isdigit(*(tmp+1))) { incolor = 0; string[i++] = '0'; if (inbg) { inbg = 0; strcat(string, "\\highlight0"); i += 11; } } else if (*(tmp+1)) { unsigned char color[3]; int number; color[0] = *(++tmp); color[1] = 0; if (*(tmp+1) && isdigit(*(tmp+1))) color[1] = *(++tmp); color[2] = 0; number = atoi(color); if (number == 99 || number == 1) { strcat(string, "16"); i += 2; } else if (number == 0) { strcat(string, "1"); i++; } else { number %= 16; _itoa(number, color, 10); strcat(string, color); i += strlen(color); } if (*(tmp+1) && *(tmp+1) == ',') { if (*(tmp+2) && isdigit(*(tmp+2))) { strcat(string, "\\highlight"); i += 10; tmp++; color[0] = *(++tmp); color[1] = 0; if (*(tmp+1) && isdigit(*(tmp+1))) color[1] = *(++tmp); color[2] = 0; number = atoi(color); if (number == 1) { strcat(string, "16"); i += 2; } else if (number == 0 || number == 99) string[i++] = '1'; else { number %= 16; _itoa(number, color, 10); strcat(string,color); i += strlen(color); } inbg = 1; } } incolor=1; } string[i++] = ' '; continue; } else if (*tmp == '\17') { if (uline) { strcat(string, "\\ulnone"); i += 7; } if (bold) { strcat(string, "\\b0"); i += 3; } if (incolor && !reverse) { strcat(string, "\\cf0"); i += 4; } if (inbg && !reverse) { strcat(string, "\\highlight0"); i += 11; } if (reverse) { strcat(string, "\\cf0\\highlight0"); i += 15; } if (uline || bold || incolor || inbg || reverse) string[i++] = ' '; uline = bold = incolor = inbg = reverse = 0; continue; } else if (*tmp == '\26') { if (reverse) { strcat(string, "\\cf0\\highlight0 "); i += 16; } else { strcat(string, "\\cf1\\highlight16 "); i += 17; } reverse = !reverse; continue; } else if (*tmp == '\37') { if (uline) { strcat(string, "\\ulnone "); i += 8; } else { strcat(string, "\\ul "); i += 4; } uline = !uline; continue; } string[i++] = *tmp; } strcat(string, "}"); return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -