aboutsummaryrefslogtreecommitdiff
path: root/src/renderers
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-02-13 14:27:46 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-02-13 12:32:26 +0100
commitaeaa90c126b7f56cbbcf6b4ffe2f53db58292a33 (patch)
tree32d33238c04fadeaed04bf4608cf42abb4b23eab /src/renderers
parent19ac43503568ebc7fe4721f84292a11bbf7c2c2c (diff)
downloadkristall-aeaa90c126b7f56cbbcf6b4ffe2f53db58292a33.tar.gz
Margins are now split into seperate horizontal/vertical options
Diffstat (limited to 'src/renderers')
-rw-r--r--src/renderers/geminirenderer.cpp3
-rw-r--r--src/renderers/gophermaprenderer.cpp2
-rw-r--r--src/renderers/markdownrenderer.cpp4
-rw-r--r--src/renderers/plaintextrenderer.cpp2
-rw-r--r--src/renderers/renderhelpers.cpp16
-rw-r--r--src/renderers/renderhelpers.hpp6
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