diff options
| author | Mike Skec <skec@protonmail.ch> | 2021-03-07 17:05:10 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2021-03-07 11:25:59 +0100 |
| commit | bde8f18a167460c1b31f4bef2f4adc6ff20e13d2 (patch) | |
| tree | 6d0623736e03040ed41f1fdc3b852c246e3fa5a3 /src | |
| parent | 86827739da2bbace3cd2fd92765fb6451a7edaae (diff) | |
| download | kristall-bde8f18a167460c1b31f4bef2f4adc6ff20e13d2.tar.gz | |
Add multi-line ansi escape sequences
Diffstat (limited to 'src')
| -rw-r--r-- | src/renderers/geminirenderer.cpp | 5 | ||||
| -rw-r--r-- | src/renderers/gophermaprenderer.cpp | 4 | ||||
| -rw-r--r-- | src/renderers/plaintextrenderer.cpp | 3 | ||||
| -rw-r--r-- | src/renderers/renderhelpers.cpp | 7 | ||||
| -rw-r--r-- | src/renderers/renderhelpers.hpp | 2 |
5 files changed, 13 insertions, 8 deletions
diff --git a/src/renderers/geminirenderer.cpp b/src/renderers/geminirenderer.cpp index b1edfc2..f3e9f16 100644 --- a/src/renderers/geminirenderer.cpp +++ b/src/renderers/geminirenderer.cpp @@ -52,6 +52,8 @@ std::unique_ptr<GeminiDocument> GeminiRenderer::render( bool centre_first_h1 = themed_style.centre_h1; + QTextCharFormat preformatted_fmt = text_style.preformatted; + outline.beginBuild(); int anchor_id = 0; @@ -88,7 +90,7 @@ std::unique_ptr<GeminiDocument> GeminiRenderer::render( if (RENDER_ESCAPES) { - renderhelpers::renderEscapeCodes(line, text_style.preformatted, cursor); + renderhelpers::renderEscapeCodes(line, preformatted_fmt, text_style.preformatted, cursor); cursor.insertText("\n", text_style.preformatted); } else @@ -298,6 +300,7 @@ std::unique_ptr<GeminiDocument> GeminiRenderer::render( else if (line.startsWith("```")) { verbatim = true; + preformatted_fmt = text_style.preformatted; } else { diff --git a/src/renderers/gophermaprenderer.cpp b/src/renderers/gophermaprenderer.cpp index 43017fa..66da3c1 100644 --- a/src/renderers/gophermaprenderer.cpp +++ b/src/renderers/gophermaprenderer.cpp @@ -60,6 +60,8 @@ std::unique_ptr<QTextDocument> GophermapRenderer::render(const QByteArray &input QTextBlockFormat non_list_format = cursor.blockFormat(); + QTextCharFormat text_fmt = standard; + char last_type = '1'; QList<QByteArray> lines = input.split('\n'); @@ -149,7 +151,7 @@ std::unique_ptr<QTextDocument> GophermapRenderer::render(const QByteArray &input if (type == 'i') { const QString escapeRenderInput = title + "\n"; - renderhelpers::renderEscapeCodes(escapeRenderInput.toUtf8(), standard, cursor); + renderhelpers::renderEscapeCodes(escapeRenderInput.toUtf8(), text_fmt, standard, cursor); } else { diff --git a/src/renderers/plaintextrenderer.cpp b/src/renderers/plaintextrenderer.cpp index 9592147..d12ec26 100644 --- a/src/renderers/plaintextrenderer.cpp +++ b/src/renderers/plaintextrenderer.cpp @@ -17,7 +17,8 @@ std::unique_ptr<QTextDocument> PlainTextRenderer::render(const QByteArray &input renderhelpers::setPageMargins(result.get(), style.margin_h, style.margin_v); QTextCursor cursor { result.get() }; - renderhelpers::renderEscapeCodes(input, standard, cursor); + QTextCharFormat text_fmt = standard; + renderhelpers::renderEscapeCodes(input, text_fmt, standard, cursor); return result; } diff --git a/src/renderers/renderhelpers.cpp b/src/renderers/renderhelpers.cpp index 442d18f..9e44fa8 100644 --- a/src/renderers/renderhelpers.cpp +++ b/src/renderers/renderhelpers.cpp @@ -338,9 +338,8 @@ static QString cleanLineEndings(QString &input) } void renderhelpers::renderEscapeCodes(const QByteArray &input, - const QTextCharFormat& format, QTextCursor& cursor) + QTextCharFormat& format, const QTextCharFormat& defaultFormat, QTextCursor& cursor) { - auto textFormat = format; const auto tokens = input.split(escapeString); QString inputString = QString::fromUtf8(input); cleanLineEndings(inputString); @@ -354,12 +353,12 @@ void renderhelpers::renderEscapeCodes(const QByteArray &input, if (escSequence == "[") { it++; - parseCSI(input, it, textFormat, format, cursor); + parseCSI(input, it, format, defaultFormat, cursor); } } else { - cursor.insertText(currentCharacter, textFormat); + cursor.insertText(currentCharacter, format); } } } diff --git a/src/renderers/renderhelpers.hpp b/src/renderers/renderhelpers.hpp index 521ba92..6dce4fa 100644 --- a/src/renderers/renderhelpers.hpp +++ b/src/renderers/renderhelpers.hpp @@ -7,7 +7,7 @@ namespace renderhelpers { - void renderEscapeCodes(const QByteArray &input, const QTextCharFormat& format, QTextCursor& cursor); + void renderEscapeCodes(const QByteArray &input, QTextCharFormat& format, const QTextCharFormat& defaultFormat, QTextCursor& cursor); void setPageMargins(QTextDocument *doc, int mh, int mv); } |
