diff options
Diffstat (limited to 'plugins/IEView/src/TextToken.cpp')
-rw-r--r-- | plugins/IEView/src/TextToken.cpp | 717 |
1 files changed, 331 insertions, 386 deletions
diff --git a/plugins/IEView/src/TextToken.cpp b/plugins/IEView/src/TextToken.cpp index 7b27e70614..40fb816bde 100644 --- a/plugins/IEView/src/TextToken.cpp +++ b/plugins/IEView/src/TextToken.cpp @@ -127,7 +127,7 @@ void TextToken::setLink(const wchar_t *_link) static int countNoWhitespace(const wchar_t *str)
{
int c;
- for (c=0; *str!='\n' && *str!='\r' && *str!='\t' && *str!=' ' && *str!='\0'; str++, c++);
+ for (c = 0; *str != '\n' && *str != '\r' && *str != '\t' && *str != ' ' && *str != '\0'; str++, c++);
return c;
}
@@ -135,125 +135,38 @@ TextToken* TextToken::tokenizeBBCodes(const wchar_t *text) { return tokenizeBBCodes(text, (int)wcslen(text));
}
-TextToken* TextToken::tokenizeMath(const wchar_t *text) {
- TextToken *firstToken = NULL, *lastToken = NULL, *mathToken = NULL;
- static bool mathModInitialized = false;
- static wchar_t *mathTagName[] = {NULL, NULL};
- static int mathTagLen[] = {0, 0};
- int i;
- if (!mathModInitialized) {
- if (ServiceExists(MATH_GET_PARAMS)) {
- char* mthDelStart = (char *)CallService(MATH_GET_PARAMS, (WPARAM)MATH_PARAM_STARTDELIMITER, 0);
- char* mthDelEnd = (char *)CallService(MATH_GET_PARAMS, (WPARAM)MATH_PARAM_ENDDELIMITER, 0);
- if (mthDelStart!=NULL) {
- mathTagName[0] = mir_a2t(mthDelStart);
- mathTagLen[0] = (int)wcslen(mathTagName[0]);
- }
- if (mthDelEnd!=NULL) {
- mathTagName[1] = mir_a2t(mthDelEnd);
- mathTagLen[1] = (int)wcslen(mathTagName[1]);
- }
- CallService(MTH_FREE_MATH_BUFFER,0, (LPARAM) mthDelStart);
- CallService(MTH_FREE_MATH_BUFFER,0, (LPARAM) mthDelEnd);
- }
- mathModInitialized = true;
- }
- int textLen = 0;
- int l = (int)wcslen(text);
- for (i=0; i<=l;) {
- bool mathFound = false;
- int k = 0, tagDataStart=0, newTokenType = 0, newTokenSize = 0;
- if (mathTagName[0] != NULL && mathTagName[1] != NULL) {
- if (!wcsnicmp(text+i, mathTagName[0], mathTagLen[0])) {
- k = tagDataStart = i + mathTagLen[0];
- for (; k < l; k++) {
- if (!wcsnicmp(text+k, mathTagName[1], mathTagLen[1])) {
- k += mathTagLen[1];
- mathFound = true;
- break;
- }
- }
- }
- }
- if (mathFound) {
- mathToken = new TextToken(MATH, text + tagDataStart, k - mathTagLen[1] - tagDataStart);
- char* mathPath=(char*)CallService(MTH_GET_GIF_UNICODE, 0, (LPARAM) mathToken->getTextW());
- if (mathPath!=NULL) {
- mathToken->setLink(mathPath);
- CallService(MTH_FREE_GIFPATH, 0, (LPARAM) mathPath);
- } else {
- mathToken->setLink("");
- }
- mathToken->setEnd(false);
- newTokenType = MATH;
- newTokenSize = k - i;
- } else {
- if (i==l) {
- newTokenType = END;
- newTokenSize = 1;
- } else {
- newTokenType = TEXT;
- newTokenSize = 1;
- }
- }
- if (newTokenType != TEXT) {
- if (textLen >0 ) {
- TextToken *newToken = new TextToken(TEXT, text+i-textLen, textLen);
- textLen = 0;
- if (lastToken == NULL) {
- firstToken = newToken;
- } else {
- lastToken->setNext(newToken);
- }
- lastToken = newToken;
- }
- if (newTokenType == MATH) {
- if (lastToken == NULL) {
- firstToken = mathToken;
- } else {
- lastToken->setNext(mathToken);
- }
- lastToken = mathToken;
- }
- } else {
- textLen += newTokenSize;
- }
- i += newTokenSize;
- }
- return firstToken;
-}
// TODO: Add the following BBCodes: code
#define BB_TAG_NUM 10
TextToken* TextToken::tokenizeBBCodes(const wchar_t *text, int l) {
- static const wchar_t *bbTagName[] = {L"b", L"i", L"u", L"s", L"img", L"color", L"size", L"bimg", L"url", L"code"};
- static int bbTagNameLen[] = {1, 1, 1, 1, 3, 5, 4, 4, 3, 4};
- static int bbTagArg[] = {0, 0, 0, 0, 0, 1, 1, 0, 1, 0};
- static int bbTagId[] = {BB_B, BB_I, BB_U, BB_S, BB_IMG, BB_COLOR, BB_SIZE, BB_BIMG, BB_URL, BB_CODE};
+ static const wchar_t *bbTagName[] = { L"b", L"i", L"u", L"s", L"img", L"color", L"size", L"bimg", L"url", L"code" };
+ static int bbTagNameLen[] = { 1, 1, 1, 1, 3, 5, 4, 4, 3, 4 };
+ static int bbTagArg[] = { 0, 0, 0, 0, 0, 1, 1, 0, 1, 0 };
+ static int bbTagId[] = { BB_B, BB_I, BB_U, BB_S, BB_IMG, BB_COLOR, BB_SIZE, BB_BIMG, BB_URL, BB_CODE };
static int bbTagEnd[BB_TAG_NUM];
static int bbTagCount[BB_TAG_NUM];
- int i,j;
- TextToken *firstToken = NULL, *lastToken = NULL, * bbToken = NULL;
+ int i, j;
+ TextToken *firstToken = NULL, *lastToken = NULL, *bbToken = NULL;
int textLen = 0;
for (j = 0; j < BB_TAG_NUM; j++) {
bbTagCount[j] = 0;
bbTagEnd[j] = 0;
}
for (i = 0; i <= l;) {
- int k, tagArgStart=0, tagArgEnd=0, tagDataStart=0, newTokenType = 0, newTokenSize = 0;
+ int k, tagArgStart = 0, tagArgEnd = 0, tagDataStart = 0, newTokenType = 0, newTokenSize = 0;
bool bbFound = false;
if (text[i] == '[') {
- if (text[i+1] != '/') {
+ if (text[i + 1] != '/') {
for (j = 0; j < BB_TAG_NUM; j++) {
k = i + 1;
- if (!wcsnicmp(text+k, bbTagName[j], bbTagNameLen[j])) {
+ if (!wcsnicmp(text + k, bbTagName[j], bbTagNameLen[j])) {
tagArgStart = tagArgEnd = 0;
k += bbTagNameLen[j];
if (bbTagArg[j]) {
if (text[k] != '=') continue;
k++;
tagArgStart = k;
- for (; text[k]!='\0'; k++) {
- if (text[k]==']') break;
+ for (; text[k] != '\0'; k++) {
+ if (text[k] == ']') break;
}
tagArgEnd = k;
}
@@ -262,9 +175,9 @@ TextToken* TextToken::tokenizeBBCodes(const wchar_t *text, int l) { tagDataStart = k;
if (k < bbTagEnd[j]) k = bbTagEnd[j];
for (; k < l; k++) {
- if (text[k] == '[' && text[k+1] == '/') {
+ if (text[k] == '[' && text[k + 1] == '/') {
k += 2;
- if (!wcsnicmp(text+k, bbTagName[j], bbTagNameLen[j])) {
+ if (!wcsnicmp(text + k, bbTagName[j], bbTagNameLen[j])) {
k += bbTagNameLen[j];
if (text[k] == ']') {
k++;
@@ -291,7 +204,8 @@ TextToken* TextToken::tokenizeBBCodes(const wchar_t *text, int l) { bbTagCount[j]++;
if (bbTagArg[j]) {
bbToken = new TextToken(BBCODE, text + tagArgStart, tagArgEnd - tagArgStart);
- } else {
+ }
+ else {
bbToken = new TextToken(BBCODE, bbTagName[j], bbTagNameLen[j]);
}
bbToken->setTag(bbTagId[j]);
@@ -315,10 +229,11 @@ TextToken* TextToken::tokenizeBBCodes(const wchar_t *text, int l) { break;
}
}
- } else {
+ }
+ else {
for (j = 0; j < BB_TAG_NUM; j++) {
k = i + 2;
- if (bbTagCount[j]>0 && !wcsnicmp(text+k, bbTagName[j], bbTagNameLen[j])) {
+ if (bbTagCount[j]>0 && !wcsnicmp(text + k, bbTagName[j], bbTagNameLen[j])) {
k += bbTagNameLen[j];
if (text[k] == ']') {
k++;
@@ -338,21 +253,23 @@ TextToken* TextToken::tokenizeBBCodes(const wchar_t *text, int l) { }
}
if (!bbFound) {
- if (i==l) {
+ if (i == l) {
newTokenType = END;
newTokenSize = 1;
- } else {
+ }
+ else {
newTokenType = TEXT;
newTokenSize = 1;
}
}
if (newTokenType != TEXT) {
- if (textLen >0 ) {
- TextToken *newToken = new TextToken(TEXT, text+i-textLen, textLen);
+ if (textLen > 0) {
+ TextToken *newToken = new TextToken(TEXT, text + i - textLen, textLen);
textLen = 0;
if (lastToken == NULL) {
firstToken = newToken;
- } else {
+ }
+ else {
lastToken->setNext(newToken);
}
lastToken = newToken;
@@ -360,12 +277,14 @@ TextToken* TextToken::tokenizeBBCodes(const wchar_t *text, int l) { if (newTokenType == BBCODE) {
if (lastToken == NULL) {
firstToken = bbToken;
- } else {
+ }
+ else {
lastToken->setNext(bbToken);
}
lastToken = bbToken;
}
- } else {
+ }
+ else {
textLen += newTokenSize;
}
i += newTokenSize;
@@ -377,47 +296,54 @@ TextToken* TextToken::tokenizeLinks(const wchar_t *text) { TextToken *firstToken = NULL, *lastToken = NULL;
int textLen = 0;
int l = (int)wcslen(text);
- for (int i=0; i<=l;) {
+ for (int i = 0; i <= l;) {
int newTokenType, newTokenSize;
- int urlLen = Utils::detectURL(text+i);
+ int urlLen = Utils::detectURL(text + i);
if (i == l) {
newTokenType = END;
newTokenSize = 1;
- } else if (urlLen > 0) {
+ }
+ else if (urlLen > 0) {
newTokenType = LINK;
newTokenSize = urlLen;
- } else if (!wcsncmp(text+i, L"www.", 4)) {
+ }
+ else if (!wcsncmp(text + i, L"www.", 4)) {
newTokenType = WWWLINK;
- newTokenSize = countNoWhitespace(text+i);
- } else if (!wcsncmp(text+i, L"mailto:", 7)) {
+ newTokenSize = countNoWhitespace(text + i);
+ }
+ else if (!wcsncmp(text + i, L"mailto:", 7)) {
newTokenType = LINK;
- newTokenSize = countNoWhitespace(text+i);
- } else {
+ newTokenSize = countNoWhitespace(text + i);
+ }
+ else {
newTokenType = TEXT;
newTokenSize = 1;
}
if (newTokenType != TEXT) {
- if (textLen >0 ) {
- TextToken *newToken = new TextToken(TEXT, text+i-textLen, textLen);
+ if (textLen > 0) {
+ TextToken *newToken = new TextToken(TEXT, text + i - textLen, textLen);
textLen = 0;
if (lastToken == NULL) {
firstToken = newToken;
- } else {
+ }
+ else {
lastToken->setNext(newToken);
}
lastToken = newToken;
}
if (newTokenType == WWWLINK || newTokenType == LINK) {
- TextToken *newToken = new TextToken(newTokenType, text+i, newTokenSize);
+ TextToken *newToken = new TextToken(newTokenType, text + i, newTokenSize);
newToken->setLink(newToken->getText());
if (lastToken == NULL) {
firstToken = newToken;
- } else {
+ }
+ else {
lastToken->setNext(newToken);
}
lastToken = newToken;
}
- } else {
+ }
+ else {
textLen += newTokenSize;
}
i += newTokenSize;
@@ -438,29 +364,32 @@ TextToken* TextToken::tokenizeSmileys(MCONTACT hContact, const char *proto, cons sp.flag = SAFL_PATH | SAFL_UNICODE | (isSent ? SAFL_OUTGOING : 0);
sp.wstr = (wchar_t *)text;
sp.hContact = hContact;
- spRes = (SMADD_BATCHPARSERES *) CallService(MS_SMILEYADD_BATCHPARSE, 0, (LPARAM)&sp);
+ spRes = (SMADD_BATCHPARSERES *)CallService(MS_SMILEYADD_BATCHPARSE, 0, (LPARAM)&sp);
int last_pos = 0;
if (spRes != NULL) {
for (int i = 0; i < (int)sp.numSmileys; i++) {
if (spRes[i].filepath != NULL && strlen((char *)spRes[i].filepath) > 0) {
if ((int)spRes[i].startChar - last_pos > 0) {
- TextToken *newToken = new TextToken(TEXT, text+last_pos, spRes[i].startChar-last_pos);
+ TextToken *newToken = new TextToken(TEXT, text + last_pos, spRes[i].startChar - last_pos);
if (lastToken == NULL) {
firstToken = newToken;
- } else {
+ }
+ else {
lastToken->setNext(newToken);
}
lastToken = newToken;
}
- TextToken *newToken = new TextToken(SMILEY, text+spRes[i].startChar, spRes[i].size);
+ TextToken *newToken = new TextToken(SMILEY, text + spRes[i].startChar, spRes[i].size);
if (sp.oflag & SAFL_UNICODE) {
newToken->setLink((wchar_t *)spRes[i].filepath);
- } else {
+ }
+ else {
newToken->setLink((char *)spRes[i].filepath);
}
if (lastToken == NULL) {
firstToken = newToken;
- } else {
+ }
+ else {
lastToken->setNext(newToken);
}
lastToken = newToken;
@@ -470,10 +399,11 @@ TextToken* TextToken::tokenizeSmileys(MCONTACT hContact, const char *proto, cons CallService(MS_SMILEYADD_BATCHFREE, 0, (LPARAM)spRes);
}
if (last_pos < l) {
- TextToken *newToken = new TextToken(TEXT, text+last_pos, l-last_pos);
+ TextToken *newToken = new TextToken(TEXT, text + last_pos, l - last_pos);
if (lastToken == NULL) {
firstToken = newToken;
- } else {
+ }
+ else {
lastToken->setNext(newToken);
}
lastToken = newToken;
@@ -486,7 +416,7 @@ TextToken* TextToken::tokenizeChatFormatting(const wchar_t *text) { int textLen = 0;
int l = (int)wcslen(text);
wchar_t* tokenBuffer = new wchar_t[l + 1];
- for (int i=0; i<=l;) {
+ for (int i = 0; i <= l;) {
int newTokenType = TEXT;
int newTokenSize = 1;
int newTokenTag = 0;
@@ -495,66 +425,68 @@ TextToken* TextToken::tokenizeChatFormatting(const wchar_t *text) { bool endToken = false;
- if (i==l) {
+ if (i == l) {
newTokenType = END;
- } else {
+ }
+ else {
if (text[i] == '%') {
newTokenSize = 2;
switch (text[i + 1]) {
- case '%':
- break;
- case 'B':
- endToken = true;
- case 'b':
- newTokenType = BBCODE;
- newTokenTag = BB_B;
- break;
- case 'U':
- endToken = true;
- case 'u':
- newTokenType = BBCODE;
- newTokenTag = BB_U;
- break;
- case 'I':
- endToken = true;
- case 'i':
- newTokenType = BBCODE;
- newTokenTag = BB_I;
- break;
- case 'C':
- endToken = true;
- case 'c':
- newTokenType = BBCODE;
- newTokenTag = BB_COLOR;
- if (!endToken) {
- newTokenText = text + i + 2;
- newTokenTextLen = 7;
- newTokenSize = 9;
- }
- break;
- case 'F':
- endToken = true;
- case 'f':
- newTokenType = BBCODE;
- newTokenTag = BB_BACKGROUND;
- if (!endToken) {
- newTokenText = text + i + 2;
- newTokenTextLen = 7;
- newTokenSize = 9;
- }
- break;
- default:
- newTokenSize = 1;
+ case '%':
+ break;
+ case 'B':
+ endToken = true;
+ case 'b':
+ newTokenType = BBCODE;
+ newTokenTag = BB_B;
+ break;
+ case 'U':
+ endToken = true;
+ case 'u':
+ newTokenType = BBCODE;
+ newTokenTag = BB_U;
+ break;
+ case 'I':
+ endToken = true;
+ case 'i':
+ newTokenType = BBCODE;
+ newTokenTag = BB_I;
+ break;
+ case 'C':
+ endToken = true;
+ case 'c':
+ newTokenType = BBCODE;
+ newTokenTag = BB_COLOR;
+ if (!endToken) {
+ newTokenText = text + i + 2;
+ newTokenTextLen = 7;
+ newTokenSize = 9;
+ }
+ break;
+ case 'F':
+ endToken = true;
+ case 'f':
+ newTokenType = BBCODE;
+ newTokenTag = BB_BACKGROUND;
+ if (!endToken) {
+ newTokenText = text + i + 2;
+ newTokenTextLen = 7;
+ newTokenSize = 9;
+ }
+ break;
+ default:
+ newTokenSize = 1;
}
}
}
if (newTokenType != TEXT) {
- if (textLen >0 ) {
+ if (textLen > 0) {
TextToken *newToken = new TextToken(TEXT, tokenBuffer, textLen);
textLen = 0;
if (lastToken == NULL) {
firstToken = newToken;
- } else {
+ }
+ else {
lastToken->setNext(newToken);
}
lastToken = newToken;
@@ -565,12 +497,14 @@ TextToken* TextToken::tokenizeChatFormatting(const wchar_t *text) { newToken->setTag(newTokenTag);
if (lastToken == NULL) {
firstToken = newToken;
- } else {
+ }
+ else {
lastToken->setNext(newToken);
}
lastToken = newToken;
}
- } else {
+ }
+ else {
tokenBuffer[textLen] = text[i];
textLen++;
}
@@ -586,46 +520,48 @@ wchar_t *TextToken::htmlEncode(const wchar_t *str) if (str == NULL)
return NULL;
int c = 0;
- for (ptr=str; *ptr!='\0'; ptr++) {
+ for (ptr = str; *ptr != '\0'; ptr++) {
bool wasSpace = false;
- if (*ptr==' ' && wasSpace) {
+ if (*ptr == ' ' && wasSpace) {
wasSpace = true;
c += 6;
- } else {
+ }
+ else {
wasSpace = false;
switch (*ptr) {
- case '\n': c += 4; break;
- case '\r': break;
- case '&': c += 5; break;
- case '>': c += 4; break;
- case '<': c += 4; break;
- case '"': c += 6; break;
- case ' ': wasSpace = true;
- default: c += 1; break;
+ case '\n': c += 4; break;
+ case '\r': break;
+ case '&': c += 5; break;
+ case '>': c += 4; break;
+ case '<': c += 4; break;
+ case '"': c += 6; break;
+ case ' ': wasSpace = true;
+ default: c += 1; break;
}
}
}
- wchar_t *output = new wchar_t[c+1];
- for (out=output, ptr=str; *ptr!='\0'; ptr++) {
+ wchar_t *output = new wchar_t[c + 1];
+ for (out = output, ptr = str; *ptr != '\0'; ptr++) {
bool wasSpace = false;
- if (*ptr==' ' && wasSpace) {
+ if (*ptr == ' ' && wasSpace) {
wcscpy(out, L" ");
out += 6;
- } else {
+ }
+ else {
wasSpace = false;
switch (*ptr) {
- case '\n': wcscpy(out, L"<br>"); out += 4; break;
- case '\r': break;
- case '&': wcscpy(out, L"&"); out += 5; break;
- case '>': wcscpy(out, L">"); out += 4; break;
- case '<': wcscpy(out, L"<"); out += 4; break;
- case '"': wcscpy(out, L"""); out += 6; break;
- case ' ': wasSpace = true;
- default: *out = *ptr; out += 1; break;
+ case '\n': wcscpy(out, L"<br>"); out += 4; break;
+ case '\r': break;
+ case '&': wcscpy(out, L"&"); out += 5; break;
+ case '>': wcscpy(out, L">"); out += 4; break;
+ case '<': wcscpy(out, L"<"); out += 4; break;
+ case '"': wcscpy(out, L"""); out += 6; break;
+ case ' ': wasSpace = true;
+ default: *out = *ptr; out += 1; break;
}
}
}
- *out = '\0';
+ *out = '\0';
return output;
}
@@ -633,190 +569,199 @@ void TextToken::toString(wchar_t **str, int *sizeAlloced) {
wchar_t *eText = NULL, *eLink = NULL;
switch (type) {
- case TEXT:
- eText = htmlEncode(wtext);
- Utils::appendText(str, sizeAlloced, L"%s", eText);
- break;
- case WWWLINK:
- case LINK:
- {
- eText = htmlEncode(wtext);
- eLink = htmlEncode(wlink);
- const wchar_t *linkPrefix = type == WWWLINK ? L"http://" : L"";
- if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_EMBED)) {
- wchar_t *match = wcsstr(wlink, L"youtube.com");
- if (match != NULL) {
- match = wcsstr(match + 11, L"v=");
- if (match != NULL) {
- match += 2;
- wchar_t *match2 = wcsstr(match, L"&");
- int len = match2 != NULL ? match2 - match : (int)wcslen(match);
- match = mir_wstrdup(match);
- match[len] = 0;
- int width ;
- int height;
- int Embedsize = Options::getEmbedsize();
- switch (Embedsize){
- case 0:
- width = 320;
- height = 205;
- break;
- case 1:
- width = 480;
- height = 385;
- break;
- case 2:
- width = 560;
- height = 349;
- break;
- case 3:
- width = 640;
- height = 390;
- break;
-
- };
-
- Utils::appendText(str, sizeAlloced, L"<div><object width=\"%d\" height=\"%d\">\
- <param name=\"movie\" value=\"http://www.youtube.com/v/%s&feature=player_embedded&version=3\"/>\
- <param name=\"allowFullScreen\" value=\"true\"/>\
- <param name=\"allowScriptAccess\" value=\"true\"/>\
- <embed src=\"http://www.youtube.com/v/%s&feature=player_embedded&version=3\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" allowScriptAccess=\"always\" width=\"%d\" height=\"%d\"/>\
- </object></div>", width, height, match, match, width, height);
- mir_free(match);
- break;
- }
- }
+ case TEXT:
+ eText = htmlEncode(wtext);
+ Utils::appendText(str, sizeAlloced, L"%s", eText);
+ break;
+ case WWWLINK:
+ case LINK:
+ {
+ eText = htmlEncode(wtext);
+ eLink = htmlEncode(wlink);
+ const wchar_t *linkPrefix = type == WWWLINK ? L"http://" : L"";
+ if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_EMBED)) {
+ wchar_t *match = wcsstr(wlink, L"youtube.com");
+ if (match != NULL) {
+ match = wcsstr(match + 11, L"v=");
+ if (match != NULL) {
+ match += 2;
+ wchar_t *match2 = wcsstr(match, L"&");
+ int len = match2 != NULL ? match2 - match : (int)wcslen(match);
+ match = mir_wstrdup(match);
+ match[len] = 0;
+ int width;
+ int height;
+ int Embedsize = Options::getEmbedsize();
+ switch (Embedsize){
+ case 0:
+ width = 320;
+ height = 205;
+ break;
+ case 1:
+ width = 480;
+ height = 385;
+ break;
+ case 2:
+ width = 560;
+ height = 349;
+ break;
+ case 3:
+ width = 640;
+ height = 390;
+ break;
+
+ };
+
+ Utils::appendText(str, sizeAlloced, L"<div><object width=\"%d\" height=\"%d\">\
+ <param name=\"movie\" value=\"http://www.youtube.com/v/%s&feature=player_embedded&version=3\"/>\
+ <param name=\"allowFullScreen\" value=\"true\"/>\
+ <param name=\"allowScriptAccess\" value=\"true\"/>\
+ <embed src=\"http://www.youtube.com/v/%s&feature=player_embedded&version=3\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" allowScriptAccess=\"always\" width=\"%d\" height=\"%d\"/>\
+ </object></div>", width, height, match, match, width, height);
+ mir_free(match);
+ break;
}
- Utils::appendText(str, sizeAlloced, L"<a class=\"link\" target=\"_self\" href=\"%s%s\">%s</a>", linkPrefix, eLink, eText);
- }
- break;
- case SMILEY:
- eText = htmlEncode(wtext);
- if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_FLASH) && (wcsstr(wlink, L".swf")!=NULL)) {
- Utils::appendText(str, sizeAlloced,
- L"<span title=\"%s\" class=\"img\"><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" \
- codebase=\"http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0\" >\
- <param NAME=\"movie\" VALUE=\"%s\"><param NAME=\"quality\" VALUE=\"high\"><PARAM NAME=\"loop\" VALUE=\"true\"></object></span><span style=\"position:absolute; visibility:hidden;\">%s</span>",
- eText, wlink, eText);
- } else if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_PNGHACK) && (wcsstr(wlink, L".png")!=NULL)) {
- Utils::appendText(str, sizeAlloced, L"<img class=\"img\" style=\"height:1px;width:1px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%s',sizingMethod='image');\" title=\"%s\" alt=\"%s\"/><span style=\"position:absolute; visibility:hidden;\">%s</span>", wlink, eText, eText, eText);
- } else {
- Utils::appendText(str, sizeAlloced, L"<img class=\"img\" src=\"file://%s\" title=\"%s\" alt=\"%s\" /><span style=\"position:absolute; visibility:hidden;\">%s</span>", wlink, eText, eText, eText);
}
- break;
- case MATH:
- eText = htmlEncode(wtext);
- if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_PNGHACK) && (wcsstr(wlink, L".png")!=NULL)) {
- Utils::appendText(str, sizeAlloced, L"<img class=\"img\" style=\"height:1px;width:1px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%s',sizingMethod='image');\" alt=\"%s\" /><span style=\"position:absolute; visibility:hidden;\">%s</span>",wlink , eText, eText);
- } else {
- Utils::appendText(str, sizeAlloced, L"<img class=\"img\" src=\"file://%s\" alt=\"%s\" /><span style=\"position:absolute; visibility:hidden;\">%s</span>", wlink, eText, eText);
- }
- break;
- case BBCODE:
- if (!end) {
- switch (tag) {
- case BB_B:
- //Utils::appendText(str, sizeAlloced, L"<span style=\"font-weight: bold;\">");
- Utils::appendText(str, sizeAlloced, L"<b>");
- break;
- case BB_I:
- //Utils::appendText(str, sizeAlloced, L"<span style=\"font-style: italic;\">");
- Utils::appendText(str, sizeAlloced, L"<i>");
- break;
- case BB_U:
- //Utils::appendText(str, sizeAlloced, L"<span style=\"text-decoration: underline;\">");
- Utils::appendText(str, sizeAlloced, L"<u>");
- break;
- case BB_S:
- //Utils::appendText(str, sizeAlloced, L"<span style=\"font-style: italic;\">");
- Utils::appendText(str, sizeAlloced, L"<s>");
- break;
- case BB_CODE:
- //Utils::appendText(str, sizeAlloced, L"<span style=\"font-style: italic;\">");
- Utils::appendText(str, sizeAlloced, L"<pre class=\"code\">");
- break;
- case BB_IMG:
- eText = htmlEncode(wtext);
- if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_FLASH) && eText != NULL && (wcsstr(eText, L".swf")!=NULL)) {
- Utils::appendText(str, sizeAlloced,
- L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" \
- codebase=\"http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0\" width=\"100%%\" >\
- <param NAME=\"movie\" VALUE=\"%s\"><param NAME=\"quality\" VALUE=\"high\"><PARAM NAME=\"loop\" VALUE=\"true\"></object></div>",
- eText);
- } else if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_PNGHACK) && eText != NULL && (wcsstr(eText, L".png")!=NULL)) {
- Utils::appendText(str, sizeAlloced, L"<img class=\"img\" style=\"height:1px;width:1px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%s',sizingMethod='image');\" />", eText);
- } else {
- if (eText != NULL && wcsncmp(eText, L"http://", 7)) {
- Utils::appendText(str, sizeAlloced, L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><img class=\"img\" style=\"width: expression((maxw = this.parentNode.offsetWidth ) > this.width ? 'auto' : maxw);\" src=\"file://%s\" /></div>", eText);
- } else {
- Utils::appendText(str, sizeAlloced, L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><img class=\"img\" style=\"width: expression((maxw = this.parentNode.offsetWidth ) > this.width ? 'auto' : maxw);\" src=\"%s\" /></div>", eText);
- }
- }
- break;
- case BB_BIMG:
- eText = htmlEncode(mir_ptr<wchar_t>(Utils::toAbsolute(wtext)));
-
- if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_FLASH) && (wcsstr(eText, L".swf")!=NULL)) {
- Utils::appendText(str, sizeAlloced,
- L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" \
- codebase=\"http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0\" width=\"100%%\" >\
- <param NAME=\"movie\" VALUE=\"%s\"><param NAME=\"quality\" VALUE=\"high\"><PARAM NAME=\"loop\" VALUE=\"true\"></object></div>",
- eText);
- } else if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_PNGHACK) && (wcsstr(eText, L".png")!=NULL)) {
- Utils::appendText(str, sizeAlloced, L"<img class=\"img\" style=\"height:1px;width:1px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%s',sizingMethod='image');\" />", eText);
- } else {
+ }
+ Utils::appendText(str, sizeAlloced, L"<a class=\"link\" target=\"_self\" href=\"%s%s\">%s</a>", linkPrefix, eLink, eText);
+ }
+ break;
+ case SMILEY:
+ eText = htmlEncode(wtext);
+ if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_FLASH) && (wcsstr(wlink, L".swf") != NULL)) {
+ Utils::appendText(str, sizeAlloced,
+ L"<span title=\"%s\" class=\"img\"><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" \
+ codebase=\"http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0\" >\
+ <param NAME=\"movie\" VALUE=\"%s\"><param NAME=\"quality\" VALUE=\"high\"><PARAM NAME=\"loop\" VALUE=\"true\"></object></span><span style=\"position:absolute; visibility:hidden;\">%s</span>",
+ eText, wlink, eText);
+ }
+ else if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_PNGHACK) && (wcsstr(wlink, L".png") != NULL)) {
+ Utils::appendText(str, sizeAlloced, L"<img class=\"img\" style=\"height:1px;width:1px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%s',sizingMethod='image');\" title=\"%s\" alt=\"%s\"/><span style=\"position:absolute; visibility:hidden;\">%s</span>", wlink, eText, eText, eText);
+ }
+ else {
+ Utils::appendText(str, sizeAlloced, L"<img class=\"img\" src=\"file://%s\" title=\"%s\" alt=\"%s\" /><span style=\"position:absolute; visibility:hidden;\">%s</span>", wlink, eText, eText, eText);
+ }
+ break;
+ case MATH:
+ eText = htmlEncode(wtext);
+ if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_PNGHACK) && (wcsstr(wlink, L".png") != NULL)) {
+ Utils::appendText(str, sizeAlloced, L"<img class=\"img\" style=\"height:1px;width:1px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%s',sizingMethod='image');\" alt=\"%s\" /><span style=\"position:absolute; visibility:hidden;\">%s</span>", wlink, eText, eText);
+ }
+ else {
+ Utils::appendText(str, sizeAlloced, L"<img class=\"img\" src=\"file://%s\" alt=\"%s\" /><span style=\"position:absolute; visibility:hidden;\">%s</span>", wlink, eText, eText);
+ }
+ break;
+ case BBCODE:
+ if (!end) {
+ switch (tag) {
+ case BB_B:
+ //Utils::appendText(str, sizeAlloced, L"<span style=\"font-weight: bold;\">");
+ Utils::appendText(str, sizeAlloced, L"<b>");
+ break;
+ case BB_I:
+ //Utils::appendText(str, sizeAlloced, L"<span style=\"font-style: italic;\">");
+ Utils::appendText(str, sizeAlloced, L"<i>");
+ break;
+ case BB_U:
+ //Utils::appendText(str, sizeAlloced, L"<span style=\"text-decoration: underline;\">");
+ Utils::appendText(str, sizeAlloced, L"<u>");
+ break;
+ case BB_S:
+ //Utils::appendText(str, sizeAlloced, L"<span style=\"font-style: italic;\">");
+ Utils::appendText(str, sizeAlloced, L"<s>");
+ break;
+ case BB_CODE:
+ //Utils::appendText(str, sizeAlloced, L"<span style=\"font-style: italic;\">");
+ Utils::appendText(str, sizeAlloced, L"<pre class=\"code\">");
+ break;
+ case BB_IMG:
+ eText = htmlEncode(wtext);
+ if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_FLASH) && eText != NULL && (wcsstr(eText, L".swf") != NULL)) {
+ Utils::appendText(str, sizeAlloced,
+ L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" \
+ codebase=\"http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0\" width=\"100%%\" >\
+ <param NAME=\"movie\" VALUE=\"%s\"><param NAME=\"quality\" VALUE=\"high\"><PARAM NAME=\"loop\" VALUE=\"true\"></object></div>",
+ eText);
+ }
+ else if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_PNGHACK) && eText != NULL && (wcsstr(eText, L".png") != NULL)) {
+ Utils::appendText(str, sizeAlloced, L"<img class=\"img\" style=\"height:1px;width:1px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%s',sizingMethod='image');\" />", eText);
+ }
+ else {
+ if (eText != NULL && wcsncmp(eText, L"http://", 7)) {
Utils::appendText(str, sizeAlloced, L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><img class=\"img\" style=\"width: expression((maxw = this.parentNode.offsetWidth ) > this.width ? 'auto' : maxw);\" src=\"file://%s\" /></div>", eText);
}
- break;
- case BB_URL:
- eText = htmlEncode(wtext);
- eLink = htmlEncode(wlink);
- Utils::appendText(str, sizeAlloced, L"<a href =\"%s\">%s</a>", eLink, eText);
- break;
- case BB_COLOR:
- eText = htmlEncode(wtext);
- //Utils::appendText(str, sizeAlloced, L"<span style=\"color: %s;\">", eText);
- Utils::appendText(str, sizeAlloced, L"<font color =\"%s\">", eText);
- break;
- case BB_BACKGROUND:
- eText = htmlEncode(wtext);
- Utils::appendText(str, sizeAlloced, L"<span style=\"background: %s;\">", eText);
- break;
- case BB_SIZE:
- eText = htmlEncode(wtext);
- Utils::appendText(str, sizeAlloced, L"<span style=\"font-size: %s;\">", eText);
- break;
+ else {
+ Utils::appendText(str, sizeAlloced, L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><img class=\"img\" style=\"width: expression((maxw = this.parentNode.offsetWidth ) > this.width ? 'auto' : maxw);\" src=\"%s\" /></div>", eText);
+ }
}
- } else {
- switch (tag) {
- case BB_B:
- Utils::appendText(str, sizeAlloced, L"</b>");
- break;
- case BB_I:
- Utils::appendText(str, sizeAlloced, L"</i>");
- break;
- case BB_U:
- Utils::appendText(str, sizeAlloced, L"</u>");
- break;
- case BB_S:
- Utils::appendText(str, sizeAlloced, L"</s>");
- break;
- case BB_CODE:
- Utils::appendText(str, sizeAlloced, L"</pre>");
- break;
- case BB_COLOR:
- Utils::appendText(str, sizeAlloced, L"</font>");
- break;
- case BB_SIZE:
- Utils::appendText(str, sizeAlloced, L"</span>");
- break;
- case BB_BACKGROUND:
- Utils::appendText(str, sizeAlloced, L"</span>");
- break;
+ break;
+ case BB_BIMG:
+ eText = htmlEncode(mir_ptr<wchar_t>(Utils::toAbsolute(wtext)));
+
+ if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_FLASH) && (wcsstr(eText, L".swf") != NULL)) {
+ Utils::appendText(str, sizeAlloced,
+ L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" \
+ codebase=\"http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0\" width=\"100%%\" >\
+ <param NAME=\"movie\" VALUE=\"%s\"><param NAME=\"quality\" VALUE=\"high\"><PARAM NAME=\"loop\" VALUE=\"true\"></object></div>",
+ eText);
+ }
+ else if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_PNGHACK) && (wcsstr(eText, L".png") != NULL)) {
+ Utils::appendText(str, sizeAlloced, L"<img class=\"img\" style=\"height:1px;width:1px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%s',sizingMethod='image');\" />", eText);
+ }
+ else {
+ Utils::appendText(str, sizeAlloced, L"<div style=\"width: 100%%; border: 0; overflow: hidden;\"><img class=\"img\" style=\"width: expression((maxw = this.parentNode.offsetWidth ) > this.width ? 'auto' : maxw);\" src=\"file://%s\" /></div>", eText);
}
+ break;
+ case BB_URL:
+ eText = htmlEncode(wtext);
+ eLink = htmlEncode(wlink);
+ Utils::appendText(str, sizeAlloced, L"<a href =\"%s\">%s</a>", eLink, eText);
+ break;
+ case BB_COLOR:
+ eText = htmlEncode(wtext);
+ //Utils::appendText(str, sizeAlloced, L"<span style=\"color: %s;\">", eText);
+ Utils::appendText(str, sizeAlloced, L"<font color =\"%s\">", eText);
+ break;
+ case BB_BACKGROUND:
+ eText = htmlEncode(wtext);
+ Utils::appendText(str, sizeAlloced, L"<span style=\"background: %s;\">", eText);
+ break;
+ case BB_SIZE:
+ eText = htmlEncode(wtext);
+ Utils::appendText(str, sizeAlloced, L"<span style=\"font-size: %s;\">", eText);
+ break;
+ }
+ }
+ else {
+ switch (tag) {
+ case BB_B:
+ Utils::appendText(str, sizeAlloced, L"</b>");
+ break;
+ case BB_I:
+ Utils::appendText(str, sizeAlloced, L"</i>");
+ break;
+ case BB_U:
+ Utils::appendText(str, sizeAlloced, L"</u>");
+ break;
+ case BB_S:
+ Utils::appendText(str, sizeAlloced, L"</s>");
+ break;
+ case BB_CODE:
+ Utils::appendText(str, sizeAlloced, L"</pre>");
+ break;
+ case BB_COLOR:
+ Utils::appendText(str, sizeAlloced, L"</font>");
+ break;
+ case BB_SIZE:
+ Utils::appendText(str, sizeAlloced, L"</span>");
+ break;
+ case BB_BACKGROUND:
+ Utils::appendText(str, sizeAlloced, L"</span>");
+ break;
}
- break;
+ }
+ break;
}
- if (eText!=NULL) delete eText;
- if (eLink!=NULL) delete eLink;
+ if (eText != NULL) delete eText;
+ if (eLink != NULL) delete eLink;
}
|