mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 04:57:00 -04:00
stretch-overflow biw works with rotation and alignment.
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@733 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -61,7 +61,7 @@ TextStyle::TextStyle(const TextFieldP& field)
|
||||
|
||||
double TextStyle::getStretch() const {
|
||||
if (content_width > 0 && ((alignment() & ALIGN_STRETCH) || (alignment() & ALIGN_STRETCH_OVERFLOW))) {
|
||||
double factor = (width - padding_left - padding_right) / content_width;
|
||||
double factor = (sideways(angle) ? height : width - padding_left - padding_right) / content_width;
|
||||
if (alignment() == ALIGN_STRETCH || factor < 1.0) {
|
||||
return factor;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,12 @@ class TextStyle : public Style {
|
||||
|
||||
/// The rotation to use when drawing
|
||||
inline Rotation getRotation() const {
|
||||
return Rotation(angle, getRect(), 1.0, getStretch());
|
||||
double stretch = getStretch();
|
||||
if (sideways(angle)) {
|
||||
return Rotation(angle, getRect(), stretch, 1/stretch);
|
||||
} else {
|
||||
return Rotation(angle, getRect(), 1.0, stretch);
|
||||
}
|
||||
}
|
||||
/// The rotation to use when determining content layout, does not include the stretch factor
|
||||
inline Rotation getRotationNoStretch() const {
|
||||
|
||||
@@ -753,6 +753,9 @@ void TextViewer::alignParagraph(size_t start_line, size_t end_line, const vector
|
||||
c += s.x + hdelta * i / count;
|
||||
if (j < l.end_or_soft && chars[j++].break_after == BREAK_SPACE) i++;
|
||||
}
|
||||
} else if (style.alignment & ALIGN_STRETCH_OVERFLOW && width >= s.width) {
|
||||
// stretching, don't center or align right
|
||||
justifying = false;
|
||||
} else {
|
||||
// simple alignment
|
||||
justifying = false;
|
||||
|
||||
@@ -44,10 +44,10 @@ Alignment from_string(const String& s) {
|
||||
if (s.find(_("justify-overflow")) !=String::npos) al = ALIGN_JUSTIFY_OVERFLOW | (al & ~ALIGN_JUSTIFY_OVERFLOW);
|
||||
if (s.find(_("shrink-overflow")) !=String::npos) al = ALIGN_STRETCH_OVERFLOW | (al & ~ALIGN_STRETCH_OVERFLOW); // compatability
|
||||
if (s.find(_("stretch-overflow")) !=String::npos) al = ALIGN_STRETCH_OVERFLOW | (al & ~ALIGN_STRETCH_OVERFLOW);
|
||||
else if (s.find(_("stretch")) !=String::npos) al = ALIGN_STRETCH;
|
||||
if (s.find(_("top")) !=String::npos) al = ALIGN_TOP | (al & ~ALIGN_VERTICAL);
|
||||
if (s.find(_("middle")) !=String::npos) al = ALIGN_MIDDLE | (al & ~ALIGN_VERTICAL);
|
||||
if (s.find(_("bottom")) !=String::npos) al = ALIGN_BOTTOM | (al & ~ALIGN_VERTICAL);
|
||||
if (s.find(_("stretch")) !=String::npos) al = ALIGN_STRETCH;
|
||||
return static_cast<Alignment>(al);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user