mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 23:55:38 +00:00
Added carousel theme support for setting item transitions to 'slide' or 'instant'.
This commit is contained in:
parent
87749e7d37
commit
bea6889926
|
@ -267,6 +267,7 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>>
|
||||||
{"maxLogoCount", FLOAT}, // For backward compatibility with legacy themes.
|
{"maxLogoCount", FLOAT}, // For backward compatibility with legacy themes.
|
||||||
{"itemSize", NORMALIZED_PAIR},
|
{"itemSize", NORMALIZED_PAIR},
|
||||||
{"itemScale", FLOAT},
|
{"itemScale", FLOAT},
|
||||||
|
{"itemTransitions", STRING},
|
||||||
{"itemInterpolation", STRING},
|
{"itemInterpolation", STRING},
|
||||||
{"itemRotation", FLOAT},
|
{"itemRotation", FLOAT},
|
||||||
{"itemRotationOrigin", NORMALIZED_PAIR},
|
{"itemRotationOrigin", NORMALIZED_PAIR},
|
||||||
|
|
|
@ -139,6 +139,7 @@ private:
|
||||||
float mItemScale;
|
float mItemScale;
|
||||||
float mItemRotation;
|
float mItemRotation;
|
||||||
glm::vec2 mItemRotationOrigin;
|
glm::vec2 mItemRotationOrigin;
|
||||||
|
int mTransitionsAnimTime;
|
||||||
unsigned int mCarouselColor;
|
unsigned int mCarouselColor;
|
||||||
unsigned int mCarouselColorEnd;
|
unsigned int mCarouselColorEnd;
|
||||||
bool mColorGradientHorizontal;
|
bool mColorGradientHorizontal;
|
||||||
|
@ -180,6 +181,7 @@ CarouselComponent<T>::CarouselComponent()
|
||||||
, mItemScale {1.2f}
|
, mItemScale {1.2f}
|
||||||
, mItemRotation {7.5f}
|
, mItemRotation {7.5f}
|
||||||
, mItemRotationOrigin {-3.0f, 0.5f}
|
, mItemRotationOrigin {-3.0f, 0.5f}
|
||||||
|
, mTransitionsAnimTime {500}
|
||||||
, mCarouselColor {0}
|
, mCarouselColor {0}
|
||||||
, mCarouselColorEnd {0}
|
, mCarouselColorEnd {0}
|
||||||
, mColorGradientHorizontal {true}
|
, mColorGradientHorizontal {true}
|
||||||
|
@ -837,6 +839,23 @@ void CarouselComponent<T>::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (elem->has("itemTransitions")) {
|
||||||
|
const std::string itemTransitions {elem->get<std::string>("itemTransitions")};
|
||||||
|
if (itemTransitions == "slide") {
|
||||||
|
mTransitionsAnimTime = 500;
|
||||||
|
}
|
||||||
|
else if (itemTransitions == "instant") {
|
||||||
|
mTransitionsAnimTime = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mTransitionsAnimTime = 500;
|
||||||
|
LOG(LogWarning) << "CarouselComponent: Invalid theme configuration, property "
|
||||||
|
"\"itemTransitions\" for element \""
|
||||||
|
<< element.substr(9) << "\" defined as \"" << itemTransitions
|
||||||
|
<< "\"";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (elem->has("itemSize")) {
|
if (elem->has("itemSize")) {
|
||||||
// Keep size within a 0.05 and 1.0 multiple of the screen size.
|
// Keep size within a 0.05 and 1.0 multiple of the screen size.
|
||||||
glm::vec2 itemSize {elem->get<glm::vec2>("itemSize")};
|
glm::vec2 itemSize {elem->get<glm::vec2>("itemSize")};
|
||||||
|
@ -1124,7 +1143,7 @@ template <typename T> void CarouselComponent<T>::onCursorChanged(const CursorSta
|
||||||
|
|
||||||
mEntryCamOffset = f;
|
mEntryCamOffset = f;
|
||||||
},
|
},
|
||||||
500)};
|
mTransitionsAnimTime)};
|
||||||
|
|
||||||
GuiComponent::setAnimation(anim, 0, nullptr, false, 0);
|
GuiComponent::setAnimation(anim, 0, nullptr, false, 0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue