mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 04:57:00 -04:00
Fixed: keys without save_value caused reader to loop
Fixed: first line of multi line text value could cause warnings about whitespace Fixed some copy/paste errors in choice style reading; Text viewer correctly uses mask for first line git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@604 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -278,9 +278,9 @@ IMPLEMENT_REFLECTION_ENUM(ChoiceRenderStyle) {
|
||||
VALUE_N("checklist", RENDER_TEXT_CHECKLIST);
|
||||
VALUE_N("image checklist", RENDER_IMAGE_CHECKLIST);
|
||||
VALUE_N("both checklist", RENDER_BOTH_CHECKLIST);
|
||||
VALUE_N("text list", RENDER_IMAGE_LIST);
|
||||
VALUE_N("text list", RENDER_TEXT_LIST);
|
||||
VALUE_N("image list", RENDER_IMAGE_LIST);
|
||||
VALUE_N("both list", RENDER_IMAGE_LIST);
|
||||
VALUE_N("both list", RENDER_BOTH_LIST);
|
||||
}
|
||||
|
||||
IMPLEMENT_REFLECTION(ChoiceStyle) {
|
||||
|
||||
@@ -119,8 +119,8 @@ enum ChoiceRenderStyle
|
||||
, RENDER_HIDDEN = 0x20 // don't render anything, only have a menu
|
||||
, RENDER_CHECKLIST = 0x100 // render as a checklist, intended for multiple choice
|
||||
, RENDER_LIST = 0x200 // render as a list of images/text, intended for multiple choice
|
||||
, RENDER_BOTH = RENDER_TEXT | RENDER_IMAGE
|
||||
, RENDER_HIDDEN_IMAGE = RENDER_HIDDEN | RENDER_IMAGE
|
||||
, RENDER_BOTH = RENDER_TEXT | RENDER_IMAGE
|
||||
, RENDER_HIDDEN_IMAGE = RENDER_HIDDEN | RENDER_IMAGE
|
||||
, RENDER_TEXT_CHECKLIST = RENDER_CHECKLIST | RENDER_TEXT
|
||||
, RENDER_IMAGE_CHECKLIST = RENDER_CHECKLIST | RENDER_IMAGE
|
||||
, RENDER_BOTH_CHECKLIST = RENDER_CHECKLIST | RENDER_BOTH
|
||||
|
||||
@@ -138,7 +138,7 @@ bool TextValue::update(Context& ctx) {
|
||||
}
|
||||
|
||||
IMPLEMENT_REFLECTION_NAMELESS(TextValue) {
|
||||
if (fieldP->save_value || tag.scripting()) REFLECT_NAMELESS(value);
|
||||
if (fieldP->save_value || tag.scripting() || tag.reading()) REFLECT_NAMELESS(value);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------- : FakeTextValue
|
||||
|
||||
@@ -26,7 +26,7 @@ DECLARE_DYNAMIC_ARG(SymbolFont*, symbol_font_for_reading);
|
||||
IMPLEMENT_DYNAMIC_ARG(SymbolFont*, symbol_font_for_reading, nullptr);
|
||||
|
||||
SymbolFont::SymbolFont()
|
||||
: img_size(12), min_size(1)
|
||||
: img_size(12)
|
||||
, spacing(1,1)
|
||||
, scale_text(false)
|
||||
, text_margin_left(0), text_margin_right(0)
|
||||
@@ -51,7 +51,6 @@ IMPLEMENT_REFLECTION(SymbolFont) {
|
||||
REFLECT_ALIAS(300, "text align", "text alignment");
|
||||
|
||||
REFLECT_N("image font size", img_size);
|
||||
REFLECT_N("scale down to", min_size);
|
||||
REFLECT_N("horizontal space", spacing.width);
|
||||
REFLECT_N("vertical space", spacing.height);
|
||||
WITH_DYNAMIC_ARG(symbol_font_for_reading, this);
|
||||
|
||||
@@ -77,8 +77,7 @@ class SymbolFont : public Packaged {
|
||||
String insertSymbolCode(int menu_id) const;
|
||||
|
||||
private:
|
||||
UInt img_size; ///< Font size that the images use
|
||||
UInt min_size; ///< Minimum font size
|
||||
double img_size; ///< Font size that the images use
|
||||
RealSize spacing; ///< Spacing between sybmols (for the default font size)
|
||||
// writing text
|
||||
bool scale_text; ///< Should text be scaled down to fit in a symbol?
|
||||
|
||||
@@ -414,6 +414,11 @@ bool TextViewer::prepareLinesScale(RotatedDC& dc, const vector<CharInfo>& chars,
|
||||
line.top = style.padding_top;
|
||||
// size of the line so far
|
||||
RealSize line_size(lineLeft(dc, style, 0), 0);
|
||||
while (line.top < style.height && line_size.width + 1 >= style.width - style.padding_right) {
|
||||
// nothing fits on this line, move down one pixel
|
||||
line.top += 1;
|
||||
line_size.width = lineLeft(dc, style, line.top);
|
||||
}
|
||||
line.positions.push_back(line_size.width);
|
||||
// The word we are currently reading
|
||||
RealSize word_size;
|
||||
@@ -513,7 +518,7 @@ bool TextViewer::prepareLinesScale(RotatedDC& dc, const vector<CharInfo>& chars,
|
||||
while (line.top < style.height && line_size.width + 1 >= style.width - style.padding_right) {
|
||||
// nothing fits on this line, move down one pixel
|
||||
line.top += 1;
|
||||
line_size = RealSize(lineLeft(dc, style, line.top), 0);
|
||||
line_size.width = lineLeft(dc, style, line.top);
|
||||
}
|
||||
line.positions.push_back(line_size.width); // start position
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ const String& Reader::getValue() {
|
||||
previous_value.clear();
|
||||
bool first = true;
|
||||
// read all lines that are indented enough
|
||||
readLine();
|
||||
readLine(true);
|
||||
previous_line_number = line_number;
|
||||
while (indent >= expected_indent && !input->Eof()) {
|
||||
if (!first) previous_value += _('\n');
|
||||
|
||||
Reference in New Issue
Block a user