diff options
| author | Mike Skec <skec@protonmail.ch> | 2021-02-13 14:27:46 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2021-02-13 12:32:26 +0100 |
| commit | aeaa90c126b7f56cbbcf6b4ffe2f53db58292a33 (patch) | |
| tree | 32d33238c04fadeaed04bf4608cf42abb4b23eab /src/renderers | |
| parent | 19ac43503568ebc7fe4721f84292a11bbf7c2c2c (diff) | |
| download | kristall-aeaa90c126b7f56cbbcf6b4ffe2f53db58292a33.tar.gz | |
Margins are now split into seperate horizontal/vertical options
Diffstat (limited to 'src/renderers')
| -rw-r--r-- | src/renderers/geminirenderer.cpp | 3 | ||||
| -rw-r--r-- | src/renderers/gophermaprenderer.cpp | 2 | ||||
| -rw-r--r-- | src/renderers/markdownrenderer.cpp | 4 | ||||
| -rw-r--r-- | src/renderers/plaintextrenderer.cpp | 2 | ||||
| -rw-r--r-- | src/renderers/renderhelpers.cpp | 16 | ||||
| -rw-r--r-- | src/renderers/renderhelpers.hpp | 6 |
6 files changed, 27 insertions, 6 deletions
diff --git a/src/renderers/geminirenderer.cpp b/src/renderers/geminirenderer.cpp index 721a969..5f82bb8 100644 --- a/src/renderers/geminirenderer.cpp +++ b/src/renderers/geminirenderer.cpp @@ -1,4 +1,5 @@ #include "geminirenderer.hpp" +#include "renderhelpers.hpp" #include <QTextList> #include <QTextBlock> @@ -37,7 +38,7 @@ std::unique_ptr<GeminiDocument> GeminiRenderer::render( TextStyleInstance text_style { themed_style }; std::unique_ptr<GeminiDocument> result = std::make_unique<GeminiDocument>(); - result->setDocumentMargin(themed_style.margin); + renderhelpers::setPageMargins(result.get(), themed_style.margin_h, themed_style.margin_v); result->setIndentWidth(20); bool emit_fancy_text = kristall::options.enable_text_decoration; diff --git a/src/renderers/gophermaprenderer.cpp b/src/renderers/gophermaprenderer.cpp index cffb2e1..6e6deb1 100644 --- a/src/renderers/gophermaprenderer.cpp +++ b/src/renderers/gophermaprenderer.cpp @@ -30,7 +30,7 @@ std::unique_ptr<QTextDocument> GophermapRenderer::render(const QByteArray &input bool emit_text_only = (kristall::options.gophermap_display == GenericSettings::PlainText); std::unique_ptr<QTextDocument> result = std::make_unique<QTextDocument>(); - result->setDocumentMargin(themed_style.margin); + renderhelpers::setPageMargins(result.get(), themed_style.margin_h, themed_style.margin_v); if(not emit_text_only) { diff --git a/src/renderers/markdownrenderer.cpp b/src/renderers/markdownrenderer.cpp index 308f8a2..2b8657d 100644 --- a/src/renderers/markdownrenderer.cpp +++ b/src/renderers/markdownrenderer.cpp @@ -2,6 +2,8 @@ #include "textstyleinstance.hpp" +#include "renderhelpers.hpp" + #include <cmark.h> #include <cassert> @@ -316,7 +318,7 @@ std::unique_ptr<QTextDocument> MarkdownRenderer::render( return nullptr; auto doc = std::make_unique<QTextDocument>(); - doc->setDocumentMargin(style.margin); + renderhelpers::setPageMargins(doc.get(), style.margin_h, style.margin_v); doc->setIndentWidth(20); outline.beginBuild(); diff --git a/src/renderers/plaintextrenderer.cpp b/src/renderers/plaintextrenderer.cpp index 73a7abf..b183818 100644 --- a/src/renderers/plaintextrenderer.cpp +++ b/src/renderers/plaintextrenderer.cpp @@ -14,7 +14,7 @@ std::unique_ptr<QTextDocument> PlainTextRenderer::render(const QByteArray &input standard.setForeground(style.preformatted_color); std::unique_ptr<QTextDocument> result = std::make_unique<QTextDocument>(); - result->setDocumentMargin(style.margin); + renderhelpers::setPageMargins(result.get(), style.margin_h, style.margin_v); QTextCursor cursor { result.get() }; RenderEscapeCodes(input, standard, cursor); diff --git a/src/renderers/renderhelpers.cpp b/src/renderers/renderhelpers.cpp index 298dc9d..6c5f2ef 100644 --- a/src/renderers/renderhelpers.cpp +++ b/src/renderers/renderhelpers.cpp @@ -2,7 +2,7 @@ * @TODO I'm hardcoding this to ANSI for now, as it's the most common. * Ideally we should have configurable control characters for various * types of terminals that could be emulated via a standard termcap file. - * @NOTE ANSI escape sequence reference: + * @NOTE ANSI escape sequence reference: * https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences * Note that escape sequences for other terminal types are a thing, and * currently aren't implemented yet as mentioned in the TODO above, eg: @@ -14,6 +14,8 @@ #include <QByteArray> #include <QString> #include <QTextCursor> +#include <QTextFrame> +#include <QTextFrameFormat> #include <string> #include <iostream> @@ -79,7 +81,7 @@ void parseSGR( if (args.empty()) return; for (auto it = args.cbegin(); it != args.cend(); ++it) { - /// @TODO A whole bunch of unimplemented SGR codes are unimplemented + /// @TODO A whole bunch of unimplemented SGR codes are unimplemented /// yet (eg: blink or font switching) enum { Reset = 0, Bold, Light, Italic, Underline, @@ -347,3 +349,13 @@ void RenderEscapeCodes(const QByteArray &input, const QTextCharFormat& format, Q } } +void renderhelpers::setPageMargins(QTextDocument *doc, int mh, int mv) +{ + QTextFrame *root = doc->rootFrame(); + QTextFrameFormat fmt = root->frameFormat(); + fmt.setLeftMargin(mh); + fmt.setRightMargin(mh); + fmt.setTopMargin(mv); + fmt.setBottomMargin(mv); + root->setFrameFormat(fmt); +} diff --git a/src/renderers/renderhelpers.hpp b/src/renderers/renderhelpers.hpp index c2c81d8..c5273c2 100644 --- a/src/renderers/renderhelpers.hpp +++ b/src/renderers/renderhelpers.hpp @@ -3,7 +3,13 @@ #include <QByteArray> #include <QTextCursor> +#include <QTextDocument> void RenderEscapeCodes(const QByteArray &input, const QTextCharFormat& format, QTextCursor& cursor); +namespace renderhelpers +{ + void setPageMargins(QTextDocument *doc, int mh, int mv); +} + #endif |
