void Text::spatiumChanged(qreal oldVal, qreal newVal) { Element::spatiumChanged(oldVal, newVal); if (!sizeIsSpatiumDependent() || styled()) return; qreal v = newVal / oldVal; QTextCursor c(_doc); QTextBlock cb = _doc->begin(); while (cb.isValid()) { QTextBlock::iterator i(cb.begin()); for (; !i.atEnd(); ++i) { QTextFragment f = i.fragment(); if (f.isValid()) { int pos = f.position(); int len = f.length(); c.setPosition(pos, QTextCursor::MoveAnchor); c.setPosition(pos + len, QTextCursor::KeepAnchor); QTextCharFormat cf = c.charFormat(); QFont font = cf.font(); font.setPointSizeF(font.pointSizeF() * v); cf.setFont(font); c.setCharFormat(cf); } } cb = cb.next(); } }
void Text::spatiumChanged(qreal oldVal, qreal newVal) { Element::spatiumChanged(oldVal, newVal); #if 0 qDebug("Text::spatiumChanged %d -- %s %s %p %f\n", sizeIsSpatiumDependent(), name(), parent() ? parent()->name() : "?", this, newVal); #endif if (!sizeIsSpatiumDependent() || styled()) return; qreal v = newVal / oldVal; QTextCursor c(_doc); c.movePosition(QTextCursor::Start); for (;;) { c.select(QTextCursor::BlockUnderCursor); QTextCharFormat cf = c.charFormat(); QFont font = cf.font(); font.setPointSizeF(font.pointSizeF() * v); cf.setFont(font); c.setCharFormat(cf); if (!c.movePosition(QTextCursor::NextBlock)) break; } }