Files
        @ 1045ad7b736a
    
        
              Branch filter: 
        
    Location: libtransport.git/backends/libcommuni/backports.h - annotation
        
            
            1045ad7b736a
            1.6 KiB
            text/plain
        
        
    
    Merge branch 'master' into swiften3
    ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866 ca9abbfa9866  | #include <QtCore>
#include <iostream>
#include <IrcCommand>
#include <IrcMessage>
namespace CommuniBackport {
bool parseColors(const QString& message, int pos, int* len, int* fg = 0, int* bg = 0)
{
    // fg(,bg)
    *len = 0;
    if (fg)
        *fg = -1;
    if (bg)
        *bg = -1;
    QRegExp rx(QLatin1String("(\\d{1,2})(?:,(\\d{1,2}))?"));
    int idx = rx.indexIn(message, pos);
    if (idx == pos) {
        *len = rx.matchedLength();
        if (fg)
            *fg = rx.cap(1).toInt();
        if (bg) {
            bool ok = false;
            int tmp = rx.cap(2).toInt(&ok);
            if (ok)
                *bg = tmp;
        }
    }
    return *len > 0;
}
/*!
Converts \a text to plain text. This function parses the text and
strips away IRC-style formatting like colors, bold and underline.
\sa toHtml()
*/
void toPlainText(QString& processed)
{
    int pos = 0;
    int len = 0;
    while (pos < processed.size()) {
        switch (processed.at(pos).unicode()) {
            case '\x02': // bold
            case '\x0f': // none
            case '\x13': // strike-through
            case '\x15': // underline
            case '\x16': // inverse
            case '\x1d': // italic
            case '\x1f': // underline
                processed.remove(pos, 1);
                break;
            case '\x03': // color
                if (parseColors(processed, pos + 1, &len))
                    processed.remove(pos, len + 1);
                else
                    processed.remove(pos, 1);
                break;
            default:
                ++pos;
                break;
        }
    }
}
}
 |