From 1dbdbd57860835b7463cc4dd4dd10d568b9ed22c Mon Sep 17 00:00:00 2001 From: twanvl Date: Sun, 9 Sep 2007 18:12:55 +0000 Subject: [PATCH] with paragraph_height text now resizes if a single paragraph becomes full; Fixed issue with reader looping when save_value=false; Package manager will not contain packages that failed to load git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@681 0fc631ac-6414-0410-93d0-97cfa31319b6 --- src/data/field/choice.cpp | 2 +- src/data/field/color.cpp | 2 +- src/data/field/image.cpp | 2 +- src/data/field/symbol.cpp | 2 +- src/render/text/viewer.cpp | 18 ++++++++++++++++-- src/util/io/package_manager.hpp | 3 ++- 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/data/field/choice.cpp b/src/data/field/choice.cpp index a2f9051c..9d15894d 100644 --- a/src/data/field/choice.cpp +++ b/src/data/field/choice.cpp @@ -319,5 +319,5 @@ bool ChoiceValue::update(Context& ctx) { } IMPLEMENT_REFLECTION_NAMELESS(ChoiceValue) { - if (fieldP->save_value || tag.scripting()) REFLECT_NAMELESS(value); + if (fieldP->save_value || tag.scripting() || tag.reading()) REFLECT_NAMELESS(value); } diff --git a/src/data/field/color.cpp b/src/data/field/color.cpp index 3bbdcb40..62104940 100644 --- a/src/data/field/color.cpp +++ b/src/data/field/color.cpp @@ -98,5 +98,5 @@ bool ColorValue::update(Context& ctx) { } IMPLEMENT_REFLECTION_NAMELESS(ColorValue) { - if (fieldP->save_value || tag.scripting()) REFLECT_NAMELESS(value); + if (fieldP->save_value || tag.scripting() || tag.reading()) REFLECT_NAMELESS(value); } diff --git a/src/data/field/image.cpp b/src/data/field/image.cpp index 96cac36a..98387b85 100644 --- a/src/data/field/image.cpp +++ b/src/data/field/image.cpp @@ -44,5 +44,5 @@ String ImageValue::toString() const { } IMPLEMENT_REFLECTION_NAMELESS(ImageValue) { - if (fieldP->save_value || tag.scripting()) REFLECT_NAMELESS(filename); + if (fieldP->save_value || tag.scripting() || tag.reading()) REFLECT_NAMELESS(filename); } diff --git a/src/data/field/symbol.cpp b/src/data/field/symbol.cpp index 7984fef9..c8d8d3f4 100644 --- a/src/data/field/symbol.cpp +++ b/src/data/field/symbol.cpp @@ -55,5 +55,5 @@ String SymbolValue::toString() const { } IMPLEMENT_REFLECTION_NAMELESS(SymbolValue) { - if (fieldP->save_value || tag.scripting()) REFLECT_NAMELESS(filename); + if (fieldP->save_value || tag.scripting() || tag.reading()) REFLECT_NAMELESS(filename); } diff --git a/src/render/text/viewer.cpp b/src/render/text/viewer.cpp index 930e541c..e1ba122a 100644 --- a/src/render/text/viewer.cpp +++ b/src/render/text/viewer.cpp @@ -622,8 +622,22 @@ bool TextViewer::prepareLinesScale(RotatedDC& dc, const vector& chars, line.end_or_soft = max(line.start, min(line.end_or_soft, line.end())); lines.push_back(line); // does it fit vertically? - return lines.empty() || - lines.back().bottom() <= dc.getInternalSize().height - style.padding_bottom; + if (style.paragraph_height > 0) { + // height = max(paragraph_height) * paragraph_count + double max_height = 0; + // per paragraph alignment + size_t start = 0; + for (size_t last = 0 ; last < lines.size() ; ++last) { + if (lines[last].break_after != BREAK_SOFT || last == lines.size()) { + max_height = max(max_height, lines[last].bottom() - lines[start].top); + start = last + 1; + } + } + // how many paragraphs would fit? + int n = floor(0.5 + (dc.getInternalSize().height - style.padding_bottom) / style.paragraph_height); + lines.back().top = max_height * n - lines.back().line_height; + } + return lines.back().bottom() <= dc.getInternalSize().height - style.padding_bottom; } double TextViewer::lineLeft(RotatedDC& dc, const TextStyle& style, double y) const { diff --git a/src/util/io/package_manager.hpp b/src/util/io/package_manager.hpp index 7ce7521f..a66a6b67 100644 --- a/src/util/io/package_manager.hpp +++ b/src/util/io/package_manager.hpp @@ -50,8 +50,9 @@ class PackageManager { return typedP; } else { // not loaded, or loaded with wrong type (i.e. with just_header) - p = typedP = new_intrusive(); + typedP = new_intrusive(); typedP->open(filename); + p = typedP; return typedP; } }