cleanup duplicate theme code in Image/Video components

This commit is contained in:
John Rassa 2019-08-30 21:57:32 -04:00
parent 5edecef9c8
commit 3b07bfeb93
3 changed files with 11 additions and 61 deletions

View file

@ -401,20 +401,14 @@ void ImageComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const s
{
using namespace ThemeFlags;
GuiComponent::applyTheme(theme, view, element, (properties ^ SIZE) | ((properties & (SIZE | POSITION)) ? ORIGIN : 0));
const ThemeData::ThemeElement* elem = theme->getElement(view, element, "image");
if(!elem)
{
return;
}
Vector2f scale = getParent() ? getParent()->getSize() : Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight());
if(properties & POSITION && elem->has("pos"))
{
Vector2f denormalized = elem->get<Vector2f>("pos") * scale;
setPosition(Vector3f(denormalized.x(), denormalized.y(), 0));
}
if(properties & ThemeFlags::SIZE)
{
if(elem->has("size"))
@ -425,13 +419,8 @@ void ImageComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const s
setMinSize(elem->get<Vector2f>("minSize") * scale);
}
// position + size also implies origin
if((properties & ORIGIN || (properties & POSITION && properties & ThemeFlags::SIZE)) && elem->has("origin"))
setOrigin(elem->get<Vector2f>("origin"));
if(elem->has("default")) {
if(elem->has("default"))
setDefaultImage(elem->get<std::string>("default"));
}
if(properties & PATH && elem->has("path"))
{
@ -453,23 +442,6 @@ void ImageComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const s
if (elem->has("gradientType"))
setColorGradientHorizontal(!(elem->get<std::string>("gradientType").compare("horizontal")));
}
if(properties & ThemeFlags::ROTATION) {
if(elem->has("rotation"))
setRotationDegrees(elem->get<float>("rotation"));
if(elem->has("rotationOrigin"))
setRotationOrigin(elem->get<Vector2f>("rotationOrigin"));
}
if(properties & ThemeFlags::Z_INDEX && elem->has("zIndex"))
setZIndex(elem->get<float>("zIndex"));
else
setZIndex(getDefaultZIndex());
if(properties & ThemeFlags::VISIBLE && elem->has("visible"))
setVisible(elem->get<bool>("visible"));
else
setVisible(true);
}
std::vector<HelpPrompt> ImageComponent::getHelpPrompts()

View file

@ -90,6 +90,11 @@ void VideoComponent::onOriginChanged()
// Update the embeded static image
mStaticImage.setOrigin(mOrigin);
}
void VideoComponent::onPositionChanged()
{
// Update the embeded static image
mStaticImage.setPosition(mPosition);
}
void VideoComponent::onSizeChanged()
{
@ -175,21 +180,14 @@ void VideoComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const s
{
using namespace ThemeFlags;
GuiComponent::applyTheme(theme, view, element, (properties ^ SIZE) | ((properties & (SIZE | POSITION)) ? ORIGIN : 0));
const ThemeData::ThemeElement* elem = theme->getElement(view, element, "video");
if(!elem)
{
return;
}
Vector2f scale = getParent() ? getParent()->getSize() : Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight());
if ((properties & POSITION) && elem->has("pos"))
{
Vector2f denormalized = elem->get<Vector2f>("pos") * scale;
setPosition(Vector3f(denormalized.x(), denormalized.y(), 0));
mStaticImage.setPosition(Vector3f(denormalized.x(), denormalized.y(), 0));
}
if(properties & ThemeFlags::SIZE)
{
if(elem->has("size"))
@ -198,10 +196,6 @@ void VideoComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const s
setMaxSize(elem->get<Vector2f>("maxSize") * scale);
}
// position + size also implies origin
if (((properties & ORIGIN) || ((properties & POSITION) && (properties & ThemeFlags::SIZE))) && elem->has("origin"))
setOrigin(elem->get<Vector2f>("origin"));
if(elem->has("default"))
mConfig.defaultVideoPath = elem->get<std::string>("default");
@ -213,23 +207,6 @@ void VideoComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const s
if (elem->has("showSnapshotDelay"))
mConfig.showSnapshotDelay = elem->get<bool>("showSnapshotDelay");
if(properties & ThemeFlags::ROTATION) {
if(elem->has("rotation"))
setRotationDegrees(elem->get<float>("rotation"));
if(elem->has("rotationOrigin"))
setRotationOrigin(elem->get<Vector2f>("rotationOrigin"));
}
if(properties & ThemeFlags::Z_INDEX && elem->has("zIndex"))
setZIndex(elem->get<float>("zIndex"));
else
setZIndex(getDefaultZIndex());
if(properties & ThemeFlags::VISIBLE && elem->has("visible"))
setVisible(elem->get<bool>("visible"));
else
setVisible(true);
}
std::vector<HelpPrompt> VideoComponent::getHelpPrompts()

View file

@ -45,6 +45,7 @@ public:
virtual void topWindow(bool isTop) override;
void onOriginChanged() override;
void onPositionChanged() override;
void onSizeChanged() override;
void setOpacity(unsigned char opacity) override;