diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-08 20:27:06 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-08 20:27:06 +0200 |
| commit | e6e28fd4814e1f513773288710e1bcb3cfad0028 (patch) | |
| tree | 4c5274fb3dc5f14a3332de456a5d5213c8e7cdaf /src/geminirenderer.cpp | |
| parent | 51f46dce66ac660507dc7abad5506650bc863d7f (diff) | |
| download | kristall-e6e28fd4814e1f513773288710e1bcb3cfad0028.tar.gz | |
Fixes bug with URL escaping, adds experimental text highlighting
Diffstat (limited to 'src/geminirenderer.cpp')
| -rw-r--r-- | src/geminirenderer.cpp | 44 |
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); } } } |
