⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q3richtext_p.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{    fm = QFontMetrics(fn);    leftBearing = fm.minLeftBearing();    rightBearing = fm.minRightBearing();    hei = fm.lineSpacing();    asc = fm.ascent() + (fm.leading()+1)/2;    dsc = fm.descent();    memset(widths, 0, 256);    generateKey();}QPainter* Q3TextFormat::pntr = 0;QFontMetrics* Q3TextFormat::pntr_fm = 0;int Q3TextFormat::pntr_ldg=-1;int Q3TextFormat::pntr_asc=-1;int Q3TextFormat::pntr_hei=-1;int Q3TextFormat::pntr_dsc=-1;void Q3TextFormat::setPainter(QPainter *p){    pntr = p;}QPainter*  Q3TextFormat::painter(){    return pntr;}void Q3TextFormat::applyFont(const QFont &f){    QFontMetrics fm(pntr->fontMetrics());    if (!pntr_fm || pntr->font() != f) {        pntr->setFont(f);        delete pntr_fm;        pntr_fm = new QFontMetrics(pntr->fontMetrics());        pntr_ldg = pntr_fm->leading();        pntr_asc = pntr_fm->ascent()+(pntr_ldg+1)/2;        pntr_hei = pntr_fm->lineSpacing();        pntr_dsc = -1;    }}int Q3TextFormat::minLeftBearing() const{    if (!pntr || !pntr->isActive())        return leftBearing;    applyFont(fn);    return pntr_fm->minLeftBearing();}int Q3TextFormat::minRightBearing() const{    if (!pntr || !pntr->isActive())        return rightBearing;    applyFont(fn);    return pntr_fm->minRightBearing();}int Q3TextFormat::height() const{    if (!pntr || !pntr->isActive())        return hei;    applyFont(fn);    return pntr_hei;}int Q3TextFormat::ascent() const{    if (!pntr || !pntr->isActive())        return asc;    applyFont(fn);    return pntr_asc;}int Q3TextFormat::descent() const{    if (!pntr || !pntr->isActive())        return dsc;    applyFont(fn);    if (pntr_dsc < 0)        pntr_dsc = pntr_fm->descent();    return pntr_dsc;}int Q3TextFormat::leading() const{    if (!pntr || !pntr->isActive())        return fm.leading();    applyFont(fn);    return pntr_ldg;}void Q3TextFormat::generateKey(){    k = getKey(fn, col, isMisspelled(), vAlign());}QString Q3TextFormat::getKey(const QFont &fn, const QColor &col, bool misspelled, VerticalAlignment a){    QString k = fn.key();    k += QLatin1Char('/');    k += QString::number((uint)col.rgb());    k += QLatin1Char('/');    k += QString::number((int)misspelled);    k += QLatin1Char('/');    k += QString::number((int)a);    return k;}QString Q3TextString::toString(const QVector<Q3TextStringChar> &data){    QString s;    int l = data.size();    s.setUnicode(0, l);    const Q3TextStringChar *c = data.data();    QChar *uc = (QChar *)s.unicode();    while (l--)        *(uc++) = (c++)->c;    return s;}void Q3TextParagraph::setSelection(int id, int start, int end){    QMap<int, Q3TextParagraphSelection>::ConstIterator it = selections().constFind(id);    if (it != mSelections->constEnd()) {        if (start == (*it).start && end == (*it).end)            return;    }    Q3TextParagraphSelection sel;    sel.start = start;    sel.end = end;    (*mSelections)[id] = sel;    setChanged(true, true);}void Q3TextParagraph::removeSelection(int id){    if (!hasSelection(id))        return;    if (mSelections)        mSelections->remove(id);    setChanged(true, true);}int Q3TextParagraph::selectionStart(int id) const{    if (!mSelections)        return -1;    QMap<int, Q3TextParagraphSelection>::ConstIterator it = mSelections->constFind(id);    if (it == mSelections->constEnd())        return -1;    return (*it).start;}int Q3TextParagraph::selectionEnd(int id) const{    if (!mSelections)        return -1;    QMap<int, Q3TextParagraphSelection>::ConstIterator it = mSelections->constFind(id);    if (it == mSelections->constEnd())        return -1;    return (*it).end;}bool Q3TextParagraph::hasSelection(int id) const{    return mSelections ? mSelections->contains(id) : false;}bool Q3TextParagraph::fullSelected(int id) const{    if (!mSelections)        return false;    QMap<int, Q3TextParagraphSelection>::ConstIterator it = mSelections->constFind(id);    if (it == mSelections->constEnd())        return false;    return (*it).start == 0 && (*it).end == str->length() - 1;}int Q3TextParagraph::lineY(int l) const{    if (l > (int)lineStarts.count() - 1) {        qWarning("Q3TextParagraph::lineY: line %d out of range!", l);        return 0;    }    if (!isValid())        ((Q3TextParagraph*)this)->format();    QMap<int, QTextLineStart*>::ConstIterator it = lineStarts.begin();    while (l-- > 0)        ++it;    return (*it)->y;}int Q3TextParagraph::lineBaseLine(int l) const{    if (l > (int)lineStarts.count() - 1) {        qWarning("Q3TextParagraph::lineBaseLine: line %d out of range!", l);        return 10;    }    if (!isValid())        ((Q3TextParagraph*)this)->format();    QMap<int, QTextLineStart*>::ConstIterator it = lineStarts.begin();    while (l-- > 0)        ++it;    return (*it)->baseLine;}int Q3TextParagraph::lineHeight(int l) const{    if (l > (int)lineStarts.count() - 1) {        qWarning("Q3TextParagraph::lineHeight: line %d out of range!", l);        return 15;    }    if (!isValid())        ((Q3TextParagraph*)this)->format();    QMap<int, QTextLineStart*>::ConstIterator it = lineStarts.begin();    while (l-- > 0)        ++it;    return (*it)->h;}void Q3TextParagraph::lineInfo(int l, int &y, int &h, int &bl) const{    if (l > (int)lineStarts.count() - 1) {        qWarning("Q3TextParagraph::lineInfo: line %d out of range!", l);        qDebug("%d %d", (int)lineStarts.count() - 1, l);        y = 0;        h = 15;        bl = 10;        return;    }    if (!isValid())        ((Q3TextParagraph*)this)->format();    QMap<int, QTextLineStart*>::ConstIterator it = lineStarts.begin();    while (l-- > 0)        ++it;    y = (*it)->y;    h = (*it)->h;    bl = (*it)->baseLine;}void Q3TextParagraph::setAlignment(int a){    if (a == (int)align)        return;    align = a;    invalidate(0);}Q3TextFormatter *Q3TextParagraph::formatter() const{    if (hasdoc)        return document()->formatter();    if (pseudoDocument()->pFormatter)        return pseudoDocument()->pFormatter;    return (((Q3TextParagraph*)this)->pseudoDocument()->pFormatter = new Q3TextFormatterBreakWords);}void Q3TextParagraph::setTabArray(int *a){    delete [] tArray;    tArray = a;}void Q3TextParagraph::setTabStops(int tw){    if (hasdoc)        document()->setTabStops(tw);    else        tabStopWidth = tw;}QMap<int, Q3TextParagraphSelection> &Q3TextParagraph::selections() const{    if (!mSelections)        ((Q3TextParagraph *)this)->mSelections = new QMap<int, Q3TextParagraphSelection>;    return *mSelections;}#ifndef QT_NO_TEXTCUSTOMITEMQList<Q3TextCustomItem *> &Q3TextParagraph::floatingItems() const{    if (!mFloatingItems)        ((Q3TextParagraph *)this)->mFloatingItems = new QList<Q3TextCustomItem *>;    return *mFloatingItems;}#endifQ3TextStringChar::~Q3TextStringChar(){    if (format())        format()->removeRef();    if (type) // not Regular        delete p.custom;}Q3TextParagraphPseudoDocument::Q3TextParagraphPseudoDocument():pFormatter(0),commandHistory(0), minw(0),wused(0),collection(){}Q3TextParagraphPseudoDocument::~Q3TextParagraphPseudoDocument(){ delete pFormatter; delete commandHistory; }#endif //QT_NO_RICHTEXT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -