aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-03-07 17:05:10 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-03-07 11:25:59 +0100
commitbde8f18a167460c1b31f4bef2f4adc6ff20e13d2 (patch)
tree6d0623736e03040ed41f1fdc3b852c246e3fa5a3 /src
parent86827739da2bbace3cd2fd92765fb6451a7edaae (diff)
downloadkristall-bde8f18a167460c1b31f4bef2f4adc6ff20e13d2.tar.gz
Add multi-line ansi escape sequences
Diffstat (limited to 'src')
-rw-r--r--src/renderers/geminirenderer.cpp5
-rw-r--r--src/renderers/gophermaprenderer.cpp4
-rw-r--r--src/renderers/plaintextrenderer.cpp3
-rw-r--r--src/renderers/renderhelpers.cpp7
-rw-r--r--src/renderers/renderhelpers.hpp2
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);
}