mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-04-10 19:15:13 +00:00
Renamed the textlist property selectorOffsetY to selectorVerticalOffset and added a selectorHorizontalOffset property.
Also enforced minimum and maximum values for a few textlist properties.
This commit is contained in:
parent
cd4d486d8d
commit
a7005f22e9
|
@ -57,6 +57,7 @@ std::vector<std::string> ThemeData::sLegacyProperties {
|
||||||
{"maxLogoCount"}};
|
{"maxLogoCount"}};
|
||||||
|
|
||||||
std::vector<std::string> ThemeData::sDeprecatedProperties {
|
std::vector<std::string> ThemeData::sDeprecatedProperties {
|
||||||
|
{"selectorOffsetY"},
|
||||||
{"staticItem"},
|
{"staticItem"},
|
||||||
{"itemType"},
|
{"itemType"},
|
||||||
{"defaultItem"},
|
{"defaultItem"},
|
||||||
|
@ -216,7 +217,9 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>>
|
||||||
{"size", NORMALIZED_PAIR},
|
{"size", NORMALIZED_PAIR},
|
||||||
{"origin", NORMALIZED_PAIR},
|
{"origin", NORMALIZED_PAIR},
|
||||||
{"selectorHeight", FLOAT},
|
{"selectorHeight", FLOAT},
|
||||||
{"selectorOffsetY", FLOAT},
|
{"selectorHorizontalOffset", FLOAT},
|
||||||
|
{"selectorVerticalOffset", FLOAT},
|
||||||
|
{"selectorOffsetY", FLOAT}, // For backward compatibility with legacy themes.
|
||||||
{"selectorColor", COLOR},
|
{"selectorColor", COLOR},
|
||||||
{"selectorColorEnd", COLOR},
|
{"selectorColorEnd", COLOR},
|
||||||
{"selectorGradientType", STRING},
|
{"selectorGradientType", STRING},
|
||||||
|
|
|
@ -133,7 +133,8 @@ private:
|
||||||
LetterCase mLetterCaseGroupedCollections;
|
LetterCase mLetterCaseGroupedCollections;
|
||||||
float mLineSpacing;
|
float mLineSpacing;
|
||||||
float mSelectorHeight;
|
float mSelectorHeight;
|
||||||
float mSelectorOffsetY;
|
float mSelectorHorizontalOffset;
|
||||||
|
float mSelectorVerticalOffset;
|
||||||
unsigned int mSelectorColor;
|
unsigned int mSelectorColor;
|
||||||
unsigned int mSelectorColorEnd;
|
unsigned int mSelectorColorEnd;
|
||||||
bool mSelectorColorGradientHorizontal;
|
bool mSelectorColorGradientHorizontal;
|
||||||
|
@ -167,7 +168,8 @@ TextListComponent<T>::TextListComponent()
|
||||||
, mLetterCaseGroupedCollections {LetterCase::NONE}
|
, mLetterCaseGroupedCollections {LetterCase::NONE}
|
||||||
, mLineSpacing {1.5f}
|
, mLineSpacing {1.5f}
|
||||||
, mSelectorHeight {mFont->getSize() * 1.5f}
|
, mSelectorHeight {mFont->getSize() * 1.5f}
|
||||||
, mSelectorOffsetY {0.0f}
|
, mSelectorHorizontalOffset {0.0f}
|
||||||
|
, mSelectorVerticalOffset {0.0f}
|
||||||
, mSelectorColor {0x333333FF}
|
, mSelectorColor {0x333333FF}
|
||||||
, mSelectorColorEnd {0x333333FF}
|
, mSelectorColorEnd {0x333333FF}
|
||||||
, mSelectorColorGradientHorizontal {true}
|
, mSelectorColorGradientHorizontal {true}
|
||||||
|
@ -357,13 +359,15 @@ template <typename T> void TextListComponent<T>::render(const glm::mat4& parentT
|
||||||
// Draw selector bar.
|
// Draw selector bar.
|
||||||
if (startEntry < listCutoff) {
|
if (startEntry < listCutoff) {
|
||||||
if (mSelectorImage.hasImage()) {
|
if (mSelectorImage.hasImage()) {
|
||||||
mSelectorImage.setPosition(0.0f, (mCursor - startEntry) * entrySize + mSelectorOffsetY,
|
mSelectorImage.setPosition(mSelectorHorizontalOffset,
|
||||||
|
(mCursor - startEntry) * entrySize + mSelectorVerticalOffset,
|
||||||
0.0f);
|
0.0f);
|
||||||
mSelectorImage.render(trans);
|
mSelectorImage.render(trans);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mRenderer->setMatrix(trans);
|
mRenderer->setMatrix(trans);
|
||||||
mRenderer->drawRect(0.0f, (mCursor - startEntry) * entrySize + mSelectorOffsetY,
|
mRenderer->drawRect(mSelectorHorizontalOffset,
|
||||||
|
(mCursor - startEntry) * entrySize + mSelectorVerticalOffset,
|
||||||
mSize.x, mSelectorHeight, mSelectorColor, mSelectorColorEnd,
|
mSize.x, mSelectorHeight, mSelectorColor, mSelectorColorEnd,
|
||||||
mSelectorColorGradientHorizontal);
|
mSelectorColorGradientHorizontal);
|
||||||
}
|
}
|
||||||
|
@ -639,18 +643,33 @@ void TextListComponent<T>::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
||||||
mLetterCase = LetterCase::UPPERCASE;
|
mLetterCase = LetterCase::UPPERCASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mSelectorHorizontalOffset = 0.0f;
|
||||||
|
mSelectorVerticalOffset = 0.0f;
|
||||||
|
|
||||||
if (properties & LINE_SPACING) {
|
if (properties & LINE_SPACING) {
|
||||||
if (elem->has("lineSpacing"))
|
if (elem->has("lineSpacing"))
|
||||||
mLineSpacing = glm::clamp(elem->get<float>("lineSpacing"), 0.5f, 3.0f);
|
mLineSpacing = glm::clamp(elem->get<float>("lineSpacing"), 0.5f, 3.0f);
|
||||||
if (elem->has("selectorHeight"))
|
if (elem->has("selectorHeight"))
|
||||||
mSelectorHeight = elem->get<float>("selectorHeight") * Renderer::getScreenHeight();
|
mSelectorHeight = glm::clamp(elem->get<float>("selectorHeight"), 0.0f, 1.0f) *
|
||||||
if (elem->has("selectorOffsetY")) {
|
Renderer::getScreenHeight();
|
||||||
|
if (elem->has("selectorHorizontalOffset")) {
|
||||||
|
const float scale {this->mParent ? this->mParent->getSize().x :
|
||||||
|
Renderer::getScreenWidth()};
|
||||||
|
mSelectorHorizontalOffset =
|
||||||
|
glm::clamp(elem->get<float>("selectorHorizontalOffset"), -1.0f, 1.0f) * scale;
|
||||||
|
}
|
||||||
|
if (elem->has("selectorVerticalOffset")) {
|
||||||
const float scale {this->mParent ? this->mParent->getSize().y :
|
const float scale {this->mParent ? this->mParent->getSize().y :
|
||||||
Renderer::getScreenHeight()};
|
Renderer::getScreenHeight()};
|
||||||
mSelectorOffsetY = elem->get<float>("selectorOffsetY") * scale;
|
mSelectorVerticalOffset =
|
||||||
|
glm::clamp(elem->get<float>("selectorVerticalOffset"), -1.0f, 1.0f) * scale;
|
||||||
}
|
}
|
||||||
else {
|
else if (elem->has("selectorOffsetY")) {
|
||||||
mSelectorOffsetY = 0.0f;
|
// TEMPORARY: This property will only be usable for legacy themes as of 2.0.0-beta
|
||||||
|
const float scale {this->mParent ? this->mParent->getSize().y :
|
||||||
|
Renderer::getScreenHeight()};
|
||||||
|
mSelectorVerticalOffset =
|
||||||
|
glm::clamp(elem->get<float>("selectorOffsetY"), -1.0f, 1.0f) * scale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,6 +715,11 @@ void TextListComponent<T>::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
||||||
|
|
||||||
if (elem->has("fadeAbovePrimary"))
|
if (elem->has("fadeAbovePrimary"))
|
||||||
mFadeAbovePrimary = elem->get<bool>("fadeAbovePrimary");
|
mFadeAbovePrimary = elem->get<bool>("fadeAbovePrimary");
|
||||||
|
|
||||||
|
mSize.x = glm::clamp(mSize.x, mRenderer->getScreenWidth() * 0.05f,
|
||||||
|
mRenderer->getScreenWidth() * 1.0f);
|
||||||
|
mSize.y = glm::clamp(mSize.y, mRenderer->getScreenHeight() * 0.05f,
|
||||||
|
mRenderer->getScreenHeight() * 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> void TextListComponent<T>::onCursorChanged(const CursorState& state)
|
template <typename T> void TextListComponent<T>::onCursorChanged(const CursorState& state)
|
||||||
|
|
Loading…
Reference in a new issue