Added <lineSpacing> tag to text elements.

Accessable with TextComponent::setLineSpacing(float spacing) in C++.
This commit is contained in:
Aloshi 2014-05-14 17:01:40 -05:00
parent 7e5f161271
commit fe7f7f983b
7 changed files with 28 additions and 8 deletions

View file

@ -421,6 +421,7 @@ Can be created as an extra.
* `alignment` - type: STRING. * `alignment` - type: STRING.
- Valid values are "left", "center", or "right". Controls alignment on the X axis. "center" will also align vertically. - Valid values are "left", "center", or "right". Controls alignment on the X axis. "center" will also align vertically.
* `forceUppercase` - type: BOOLEAN. Draw text in uppercase. * `forceUppercase` - type: BOOLEAN. Draw text in uppercase.
* `lineSpacing` - type: FLOAT. Controls the space between lines. Default is 1.5.
#### textlist #### textlist

View file

@ -40,7 +40,8 @@ std::map< std::string, ElementMapType > ThemeData::sElementMap = boost::assign::
("fontPath", PATH) ("fontPath", PATH)
("fontSize", FLOAT) ("fontSize", FLOAT)
("alignment", STRING) ("alignment", STRING)
("forceUppercase", BOOLEAN))) ("forceUppercase", BOOLEAN)
("lineSpacing", FLOAT)))
("textlist", makeMap(boost::assign::map_list_of ("textlist", makeMap(boost::assign::map_list_of
("pos", NORMALIZED_PAIR) ("pos", NORMALIZED_PAIR)
("size", NORMALIZED_PAIR) ("size", NORMALIZED_PAIR)

View file

@ -36,6 +36,7 @@ namespace ThemeFlags
ALIGNMENT = 256, ALIGNMENT = 256,
TEXT = 512, TEXT = 512,
FORCE_UPPERCASE = 1024, FORCE_UPPERCASE = 1024,
LINE_SPACING = 2048,
ALL = 0xFFFFFFFF ALL = 0xFFFFFFFF
}; };

View file

@ -7,13 +7,13 @@
#include "../Settings.h" #include "../Settings.h"
TextComponent::TextComponent(Window* window) : GuiComponent(window), TextComponent::TextComponent(Window* window) : GuiComponent(window),
mFont(Font::get(FONT_SIZE_MEDIUM)), mUppercase(false), mColor(0x000000FF), mAutoCalcExtent(true, true), mAlignment(ALIGN_LEFT) mFont(Font::get(FONT_SIZE_MEDIUM)), mUppercase(false), mColor(0x000000FF), mAutoCalcExtent(true, true), mAlignment(ALIGN_LEFT), mLineSpacing(1.5f)
{ {
} }
TextComponent::TextComponent(Window* window, const std::string& text, const std::shared_ptr<Font>& font, unsigned int color, Alignment align, TextComponent::TextComponent(Window* window, const std::string& text, const std::shared_ptr<Font>& font, unsigned int color, Alignment align,
Eigen::Vector3f pos, Eigen::Vector2f size) : GuiComponent(window), Eigen::Vector3f pos, Eigen::Vector2f size) : GuiComponent(window),
mFont(NULL), mUppercase(false), mColor(0x000000FF), mAutoCalcExtent(true, true), mAlignment(align) mFont(NULL), mUppercase(false), mColor(0x000000FF), mAutoCalcExtent(true, true), mAlignment(align), mLineSpacing(1.5f)
{ {
setFont(font); setFont(font);
setColor(color); setColor(color);
@ -154,9 +154,9 @@ void TextComponent::onTextChanged()
text.append(abbrev); text.append(abbrev);
mTextCache = std::shared_ptr<TextCache>(f->buildTextCache(text, Eigen::Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), mAlignment)); mTextCache = std::shared_ptr<TextCache>(f->buildTextCache(text, Eigen::Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), mAlignment, mLineSpacing));
}else{ }else{
mTextCache = std::shared_ptr<TextCache>(f->buildTextCache(f->wrapText(text, mSize.x()), Eigen::Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), mAlignment)); mTextCache = std::shared_ptr<TextCache>(f->buildTextCache(f->wrapText(text, mSize.x()), Eigen::Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), mAlignment, mLineSpacing));
} }
} }
@ -168,6 +168,18 @@ void TextComponent::onColorChanged()
} }
} }
void TextComponent::setAlignment(Alignment align)
{
mAlignment = align;
onTextChanged();
}
void TextComponent::setLineSpacing(float spacing)
{
mLineSpacing = spacing;
onTextChanged();
}
void TextComponent::setValue(const std::string& value) void TextComponent::setValue(const std::string& value)
{ {
setText(value); setText(value);
@ -210,5 +222,8 @@ void TextComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const st
if(properties & FORCE_UPPERCASE && elem->has("forceUppercase")) if(properties & FORCE_UPPERCASE && elem->has("forceUppercase"))
setUppercase(elem->get<bool>("forceUppercase")); setUppercase(elem->get<bool>("forceUppercase"));
if(properties & LINE_SPACING && elem->has("lineSpacing"))
setLineSpacing(elem->get<float>("lineSpacing"));
setFont(Font::getFromTheme(elem, properties, mFont)); setFont(Font::getFromTheme(elem, properties, mFont));
} }

View file

@ -23,7 +23,8 @@ public:
void onSizeChanged() override; void onSizeChanged() override;
void setText(const std::string& text); void setText(const std::string& text);
void setColor(unsigned int color); void setColor(unsigned int color);
inline void setAlignment(Alignment align) { mAlignment = align; } void setAlignment(Alignment align);
void setLineSpacing(float spacing);
void render(const Eigen::Affine3f& parentTrans) override; void render(const Eigen::Affine3f& parentTrans) override;
@ -50,6 +51,7 @@ private:
std::string mText; std::string mText;
std::shared_ptr<TextCache> mTextCache; std::shared_ptr<TextCache> mTextCache;
Alignment mAlignment; Alignment mAlignment;
float mLineSpacing;
}; };
#endif #endif

View file

@ -44,7 +44,7 @@ void GuiScraperStart::pressedStart()
if((*it)->getPlatformId() == PlatformIds::PLATFORM_UNKNOWN) if((*it)->getPlatformId() == PlatformIds::PLATFORM_UNKNOWN)
{ {
mWindow->pushGui(new GuiMsgBox(mWindow, mWindow->pushGui(new GuiMsgBox(mWindow,
"Warning: some of your selected systems do not have a platform ID set. Results may be even more inaccurate than usual!\nContinue anyway?", strToUpper("Warning: some of your selected systems do not have a platform ID set. Results may be even more inaccurate than usual!\nContinue anyway?"),
"YES", std::bind(&GuiScraperStart::start, this), "YES", std::bind(&GuiScraperStart::start, this),
"NO", nullptr)); "NO", nullptr));
return; return;

View file

@ -107,7 +107,7 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr<ThemeData>& them
mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE); mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE);
mDescription.setSize(mDescContainer.getSize().x(), 0); mDescription.setSize(mDescContainer.getSize().x(), 0);
mDescription.applyTheme(theme, getName(), "md_description", FONT_PATH | FONT_SIZE | COLOR | FORCE_UPPERCASE | ALIGNMENT); mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | TEXT));
} }
void DetailedGameListView::initMDLabels() void DetailedGameListView::initMDLabels()