mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-13 05:57:00 -04:00
implemented "direction:vertical" support, also for symbols
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@269 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -297,7 +297,10 @@ void SymbolFont::getCharInfo(RotatedDC& dc, Context& ctx, double font_size, cons
|
|||||||
FOR_EACH_CONST(sym, text) {
|
FOR_EACH_CONST(sym, text) {
|
||||||
size_t count = sym.text.size();
|
size_t count = sym.text.size();
|
||||||
RealSize size = dc.trInvS(symbolSize(ctx, dc.trS(font_size), sym));
|
RealSize size = dc.trInvS(symbolSize(ctx, dc.trS(font_size), sym));
|
||||||
out.insert(out.end(), count, RealSize(size.width / count, size.height)); // divide into count parts
|
size.width /= count; // divide into count parts
|
||||||
|
for (size_t i = 0 ; i < count ; ++i) {
|
||||||
|
out.push_back(CharInfo(size, i == count - 1 ? BREAK_MAYBE : BREAK_NO));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ class CardsPrintout : wxPrintout {
|
|||||||
PageLayout layout;
|
PageLayout layout;
|
||||||
|
|
||||||
/// Draw a card, that is card_nr on this page, find the postion by asking the layout
|
/// Draw a card, that is card_nr on this page, find the postion by asking the layout
|
||||||
void drawCard(DC& dc, const CardP& card, UInt card_nr);
|
void drawCard(DC& dc, const CardP& card, size_t card_nr);
|
||||||
/// Draw a card at the specified coordinates
|
/// Draw a card at the specified coordinates
|
||||||
void drawCard(DC& dc, const CardP& card, double x, double y, int rotation = 0);
|
void drawCard(DC& dc, const CardP& card, double x, double y, int rotation = 0);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,7 +31,8 @@ enum DrawWhat
|
|||||||
|
|
||||||
/// Information on a linebreak
|
/// Information on a linebreak
|
||||||
enum LineBreak
|
enum LineBreak
|
||||||
{ BREAK_NO // no line break
|
{ BREAK_NO // no line break ever
|
||||||
|
, BREAK_MAYBE // break here when in "direction:vertical" mode
|
||||||
, BREAK_SOFT // optional line break (' ')
|
, BREAK_SOFT // optional line break (' ')
|
||||||
, BREAK_HARD // always a line break ('\n')
|
, BREAK_HARD // always a line break ('\n')
|
||||||
, BREAK_LINE // line break with a separator line (<line>)
|
, BREAK_LINE // line break with a separator line (<line>)
|
||||||
@@ -42,7 +43,7 @@ struct CharInfo {
|
|||||||
RealSize size;
|
RealSize size;
|
||||||
LineBreak break_after;
|
LineBreak break_after;
|
||||||
|
|
||||||
inline CharInfo(RealSize size, LineBreak break_after = BREAK_NO) : size(size), break_after(break_after) {}
|
inline CharInfo(RealSize size, LineBreak break_after) : size(size), break_after(break_after) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A section of text that can be rendered using a TextViewer
|
/// A section of text that can be rendered using a TextViewer
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ void FontTextElement::getCharInfo(RotatedDC& dc, double scale, vector<CharInfo>&
|
|||||||
RealSize s = dc.GetTextExtent(content.substr(start - this->start, i - start + 1));
|
RealSize s = dc.GetTextExtent(content.substr(start - this->start, i - start + 1));
|
||||||
out.push_back(CharInfo(RealSize(s.width - prev_width, s.height),
|
out.push_back(CharInfo(RealSize(s.width - prev_width, s.height),
|
||||||
c == _('\n') ? break_style :
|
c == _('\n') ? break_style :
|
||||||
c == _(' ') ? BREAK_SOFT : BREAK_NO
|
c == _(' ') ? BREAK_SOFT : BREAK_MAYBE
|
||||||
));
|
));
|
||||||
prev_width = s.width;
|
prev_width = s.width;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -410,6 +410,11 @@ bool TextViewer::prepareLinesScale(RotatedDC& dc, const vector<CharInfo>& chars,
|
|||||||
} else if (c.break_after == BREAK_SOFT && style.field().multi_line) {
|
} else if (c.break_after == BREAK_SOFT && style.field().multi_line) {
|
||||||
// Soft break == end of word
|
// Soft break == end of word
|
||||||
accept_word = true;
|
accept_word = true;
|
||||||
|
} else if (c.break_after == BREAK_MAYBE && style.direction == TOP_TO_BOTTOM) {
|
||||||
|
break_now = true;
|
||||||
|
accept_word = true;
|
||||||
|
hide_breaker = false;
|
||||||
|
line_height_multiplier = style.line_height_soft;
|
||||||
}
|
}
|
||||||
// Add size of the character
|
// Add size of the character
|
||||||
word_size = add_horizontal(word_size, c.size);
|
word_size = add_horizontal(word_size, c.size);
|
||||||
|
|||||||
Reference in New Issue
Block a user