From e6e28fd4814e1f513773288710e1bcb3cfad0028 Mon Sep 17 00:00:00 2001 From: "Felix (xq) Queißner" Date: Mon, 8 Jun 2020 20:27:06 +0200 Subject: Fixes bug with URL escaping, adds experimental text highlighting --- src/geminirenderer.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'src/geminirenderer.cpp') 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 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); } } } -- cgit v1.2.3