add horizontal indent in first line of paragraph in case Extra Paragraph Spacing is OFF

This commit is contained in:
Jonas Diemer 2025-12-15 19:33:47 +01:00
parent c262f222de
commit 2612509d57
3 changed files with 11 additions and 3 deletions

View File

@ -122,7 +122,10 @@ void ParsedText::layoutAndExtractLines(const GfxRenderer& renderer, const int fo
} }
// Calculate spacing // Calculate spacing
const int spareSpace = pageWidth - lineWordWidthSum; int spareSpace = pageWidth - lineWordWidthSum;
if (!extraParagraphSpacing && wordWidthIndex ==0) {
spareSpace -= 3*spaceWidth;
}
int spacing = spaceWidth; int spacing = spaceWidth;
const bool isLastLine = lineBreak == totalWordCount; const bool isLastLine = lineBreak == totalWordCount;
@ -132,6 +135,9 @@ void ParsedText::layoutAndExtractLines(const GfxRenderer& renderer, const int fo
// Calculate initial x position // Calculate initial x position
uint16_t xpos = 0; uint16_t xpos = 0;
if (!extraParagraphSpacing && wordWidthIndex ==0) {
xpos = 3*spaceWidth;
}
if (style == TextBlock::RIGHT_ALIGN) { if (style == TextBlock::RIGHT_ALIGN) {
xpos = spareSpace - (lineWordCount - 1) * spaceWidth; xpos = spareSpace - (lineWordCount - 1) * spaceWidth;
} else if (style == TextBlock::CENTER_ALIGN) { } else if (style == TextBlock::CENTER_ALIGN) {

View File

@ -16,9 +16,11 @@ class ParsedText {
std::list<std::string> words; std::list<std::string> words;
std::list<EpdFontStyle> wordStyles; std::list<EpdFontStyle> wordStyles;
TextBlock::BLOCK_STYLE style; TextBlock::BLOCK_STYLE style;
bool extraParagraphSpacing;
public: public:
explicit ParsedText(const TextBlock::BLOCK_STYLE style) : style(style) {} explicit ParsedText(const TextBlock::BLOCK_STYLE style, const bool extraParagraphSpacing)
: style(style), extraParagraphSpacing(extraParagraphSpacing) {}
~ParsedText() = default; ~ParsedText() = default;
void addWord(std::string word, EpdFontStyle fontStyle); void addWord(std::string word, EpdFontStyle fontStyle);

View File

@ -48,7 +48,7 @@ void ChapterHtmlSlimParser::startNewTextBlock(const TextBlock::BLOCK_STYLE style
makePages(); makePages();
} }
currentTextBlock.reset(new ParsedText(style)); currentTextBlock.reset(new ParsedText(style, extraParagraphSpacing));
} }
void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* name, const XML_Char** atts) { void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* name, const XML_Char** atts) {