21 #include "plaintextmarkupbuilder.h" 42 QString getRomanString(
int itemNumber);
66 QString PlainTextMarkupBuilderPrivate::getRomanString(
int item)
74 auto romanSymbols = QStringLiteral(
"iiivixxxlxcccdcmmmm");
75 int c[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
77 for (
auto i = 12; i >= 0; n %= c[i], i--) {
80 auto startDigit = i + (i + 3) / 4;
97 romanNumeral.
append(romanSymbols.mid(startDigit, numDigits));
100 result = romanNumeral;
102 result = QStringLiteral(
"?");
115 letterString.
prepend(QStringLiteral(
"%1").arg(
116 (itemNumber % LETTERSINALPHABET) + DIGITSOFFSET,
118 LETTERSINALPHABET + DIGITSOFFSET));
119 if ((itemNumber >= LETTERSINALPHABET)) {
120 itemNumber = itemNumber / LETTERSINALPHABET;
133 refs.
append(QStringLiteral(
"\n--------\n"));
138 QStringLiteral(
"[%1] %2\n").arg(index++).arg(m_urls.
takeFirst()));
144 PlainTextMarkupBuilder::PlainTextMarkupBuilder()
149 PlainTextMarkupBuilder::~PlainTextMarkupBuilder() {
delete d_ptr; }
204 if (!d->m_urls.contains(href)) {
206 d->m_urls.append(href);
208 d->activeLink = href;
215 QStringLiteral(
"[%1]").arg(d->m_urls.indexOf(d->activeLink) + 1));
235 d->m_text.append(QStringLiteral(
"--------------------\n"));
242 if (!d->m_urls.contains(reference))
243 d->m_urls.append(reference);
244 return d->m_urls.indexOf(reference) + 1;
256 d->m_text.append(QStringLiteral(
"[%1]").arg(ref));
262 d->currentListItemStyles.append(style);
263 d->currentListItemNumbers.append(0);
269 if (!d->currentListItemNumbers.isEmpty()) {
270 d->currentListItemStyles.removeLast();
271 d->currentListItemNumbers.removeLast();
278 for (
auto i = 0; i < d->currentListItemNumbers.size(); i++) {
279 d->m_text.append(QStringLiteral(
" "));
282 auto itemNumber = d->currentListItemNumbers.last();
284 switch (d->currentListItemStyles.last()) {
286 d->m_text.append(QStringLiteral(
" * "));
289 d->m_text.append(QStringLiteral(
" o "));
292 d->m_text.append(QStringLiteral(
" - "));
295 d->m_text.append(QStringLiteral(
" %1. ").arg(itemNumber + 1));
299 QStringLiteral(
" %1. ").arg(d->getLetterString(itemNumber)));
303 QStringLiteral(
" %1. ").arg(d->getLetterString(itemNumber).toUpper()));
307 QStringLiteral(
" %1. ").arg(d->getRomanString(itemNumber + 1)));
310 d->m_text.append(QStringLiteral(
" %1. ").arg(
311 d->getRomanString(itemNumber + 1).toUpper()));
321 d->currentListItemNumbers.last() = d->currentListItemNumbers.last() + 1;
328 d->m_text.append(QStringLiteral(
"^{"));
340 d->m_text.append(QStringLiteral(
"_{"));
352 d->m_text.append(text);
358 d->m_text.append(text);
364 auto ret = d->m_text;
365 ret.append(d->getReferences());
390 qreal bottom, qreal left,
403 Q_UNUSED(cellpadding);
404 Q_UNUSED(cellspacing);
417 int colSpan,
int rowSpan)
void endBackground() override
void beginStrikeout() override
void beginHeader(int level) override
void beginStrong() override
void beginForeground(const QBrush &brush) override
QString & append(QChar ch)
void beginEmph() override
void beginTableCell(const QString &width, int colSpan, int rowSpan) override
void appendLiteralText(const QString &text) override
void beginFontPointSize(int size) override
The Cutelee namespace holds all public Cutelee API.
QString & prepend(QChar ch)
void endFontPointSize() override
void endStrong() override
void beginBackground(const QBrush &brush) override
void beginTableRow() override
void beginSubscript() override
Creates a simple marked up plain text document.
void beginUnderline() override
void beginSuperscript() override
void insertHorizontalRule(int width=-1) override
void endTableRow() override
void appendRawText(const QString &text) override
void endTableHeaderCell() override
bool isEmpty() const const
void beginList(QTextListFormat::Style style) override
void endSuperscript() override
void endFontFamily() override
void beginParagraph(Qt::Alignment a=Qt::AlignLeft, qreal top=0.0, qreal bottom=0.0, qreal left=0.0, qreal right=0.0) override
void endListItem() override
void endAnchor() override
void beginListItem() override
void beginFontFamily(const QString &family) override
void beginTableHeaderCell(const QString &width, int colSpan, int rowSpan) override
void endTableCell() override
int addReference(const QString &reference)
void endStrikeout() override
void insertImage(const QString &src, qreal width, qreal height) override
void endUnderline() override
void beginAnchor(const QString &href={}, const QString &name={}) override
QString getLetterString(int itemNumber)
void endSubscript() override
void endHeader(int level) override
void endParagraph() override
void beginTable(qreal cellpadding, qreal cellspacing, const QString &width) override
void addNewline() override
void endForeground() override
QString getResult() override