void QSGTextNode::addTextDecorations(Decoration decorations, const QPointF &position, const QColor &color, qreal width, qreal lineThickness, qreal underlinePos, qreal ascent) { QRectF line(position.x(), position.y() - lineThickness / 2.0, width, lineThickness); if (decorations & Underline) { int underlinePosition = qCeil(underlinePos); QRectF underline(line); underline.translate(0.0, underlinePosition); appendChildNode(new QSGSimpleRectNode(underline, color)); } if (decorations & Overline) { QRectF overline(line); overline.translate(0.0, -ascent); appendChildNode(new QSGSimpleRectNode(overline, color)); } if (decorations & StrikeOut) { QRectF strikeOut(line); strikeOut.translate(0.0, ascent / -3.0); appendChildNode(new QSGSimpleRectNode(strikeOut, color)); } }
void builder::node(label_t label, bool add_space) { if (!label || !*label) return; auto text = label->get(); if (label->m_maxlen > 0 && text.length() > label->m_maxlen) { text = text.substr(0, label->m_maxlen) + "..."; } if ((label->m_overline.empty() && m_counters[syntaxtag::o] > 0) || (m_counters[syntaxtag::o] > 0 && label->m_margin > 0)) overline_close(true); if ((label->m_underline.empty() && m_counters[syntaxtag::u] > 0) || (m_counters[syntaxtag::u] > 0 && label->m_margin > 0)) underline_close(true); if (label->m_margin > 0) space(label->m_margin); if (!label->m_overline.empty()) overline(label->m_overline); if (!label->m_underline.empty()) underline(label->m_underline); background(label->m_background); color(label->m_foreground); if (label->m_padding > 0) space(label->m_padding); node(text, label->m_font, add_space); if (label->m_padding > 0) space(label->m_padding); color_close(m_lazy && label->m_margin > 0); background_close(m_lazy && label->m_margin > 0); if (!label->m_underline.empty() || (label->m_margin > 0 && m_counters[syntaxtag::u] > 0)) underline_close(m_lazy && label->m_margin > 0); if (!label->m_overline.empty() || (label->m_margin > 0 && m_counters[syntaxtag::o] > 0)) overline_close(m_lazy && label->m_margin > 0); if (label->m_margin > 0) space(label->m_margin); }
TQFont KateAttribute::font(const TQFont& ref) { TQFont ret = ref; if (itemSet(Weight)) ret.setWeight(weight()); if (itemSet(Italic)) ret.setItalic(italic()); if (itemSet(Underline)) ret.setUnderline(underline()); if (itemSet(Overline)) ret.setOverline(overline()); if (itemSet(StrikeOut)) ret.setStrikeOut(strikeOut()); return ret; }
void builder::node(string str, bool add_space) { string::size_type n, m; string s(str); while (true) { if (s.empty()) { break; } else if ((n = s.find("%{F-}")) == 0) { color_close(!m_lazy); s.erase(0, 5); } else if ((n = s.find("%{F#")) == 0 && (m = s.find("}")) != string::npos) { if (m - n - 4 == 2) color_alpha(s.substr(n + 3, m - 3)); else color(s.substr(n + 3, m - 3)); s.erase(n, m + 1); } else if ((n = s.find("%{B-}")) == 0) { background_close(!m_lazy); s.erase(0, 5); } else if ((n = s.find("%{B#")) == 0 && (m = s.find("}")) != string::npos) { background(s.substr(n + 3, m - 3)); s.erase(n, m + 1); } else if ((n = s.find("%{T-}")) == 0) { font_close(!m_lazy); s.erase(0, 5); } else if ((n = s.find("%{T")) == 0 && (m = s.find("}")) != string::npos) { font(std::atoi(s.substr(n + 3, m - 3).c_str())); s.erase(n, m + 1); } else if ((n = s.find("%{U-}")) == 0) { line_color_close(!m_lazy); s.erase(0, 5); } else if ((n = s.find("%{U#")) == 0 && (m = s.find("}")) != string::npos) { line_color(s.substr(n + 3, m - 3)); s.erase(n, m + 1); } else if ((n = s.find("%{+u}")) == 0) { underline(); s.erase(0, 5); } else if ((n = s.find("%{+o}")) == 0) { overline(); s.erase(0, 5); } else if ((n = s.find("%{-u}")) == 0) { underline_close(true); s.erase(0, 5); } else if ((n = s.find("%{-o}")) == 0) { overline_close(true); s.erase(0, 5); } else if ((n = s.find("%{A}")) == 0) { cmd_close(true); s.erase(0, 4); } else if ((n = s.find("%{")) == 0 && (m = s.find("}")) != string::npos) { append(s.substr(n, m + 1)); s.erase(n, m + 1); } else if ((n = s.find("%{")) > 0) { append(s.substr(0, n)); s.erase(0, n); } else break; } if (!s.empty()) append(s); if (add_space) space(); }