aboutsummaryrefslogtreecommitdiff
path: root/src/geminirenderer.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-08 20:27:06 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-08 20:27:06 +0200
commite6e28fd4814e1f513773288710e1bcb3cfad0028 (patch)
tree4c5274fb3dc5f14a3332de456a5d5213c8e7cdaf /src/geminirenderer.cpp
parent51f46dce66ac660507dc7abad5506650bc863d7f (diff)
downloadkristall-e6e28fd4814e1f513773288710e1bcb3cfad0028.tar.gz
Fixes bug with URL escaping, adds experimental text highlighting
Diffstat (limited to 'src/geminirenderer.cpp')
-rw-r--r--src/geminirenderer.cpp44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/geminirenderer.cpp b/src/geminirenderer.cpp
index a178b65..fd475ce 100644
--- a/src/geminirenderer.cpp
+++ b/src/geminirenderer.cpp
@@ -234,9 +234,49 @@ std::unique_ptr<GeminiDocument> GeminiRenderer::render(
{
if(emit_fancy_text)
{
- qDebug() << "implement fancy text emission!";
+ bool rendering_bold = false;
+ bool rendering_underlined = false;
+
+ QTextCharFormat fmt = standard;
+
+ for(int i = 0; i < line.length(); i += 1)
+ {
+ char c = line.at(i);
+ if(c == ' ') {
+ fmt = standard;
+ cursor.insertText(" ");
+ rendering_bold = false;
+ rendering_underlined = false;
+ }
+ else if(c == '*') {
+ if(rendering_bold)
+ cursor.insertText("*", fmt);
+ rendering_bold = not rendering_bold;
+ auto f = fmt.font();
+ f.setBold(rendering_bold);
+ fmt.setFont(f);
+ if(rendering_bold)
+ cursor.insertText("*", fmt);
+ }
+ else if(c == '_') {
+ if(rendering_underlined)
+ cursor.insertText(" ", fmt);
+ rendering_underlined = not rendering_underlined;
+ auto f = fmt.font();
+ fmt.setUnderlineStyle(rendering_underlined ? QTextCharFormat::SingleUnderline : QTextCharFormat::NoUnderline);
+ if(rendering_underlined)
+ cursor.insertText(" ", fmt);
+ }
+ else {
+ cursor.insertText(QString::fromUtf8(&c, 1), fmt);
+ }
+ }
+
+ cursor.insertText("\n", standard);
+ }
+ else {
+ cursor.insertText(line + "\n", standard);
}
- cursor.insertText(line + "\n", standard);
}
}
}