mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 15:45:38 +00:00
add 'visible' theme element
This commit is contained in:
parent
13819ec0d9
commit
8de1fc8860
16
THEMES.md
16
THEMES.md
|
@ -576,6 +576,8 @@ Can be created as an extra.
|
||||||
- If true, the image will be tiled instead of stretched to fit its size. Useful for backgrounds.
|
- If true, the image will be tiled instead of stretched to fit its size. Useful for backgrounds.
|
||||||
* `color` - type: COLOR.
|
* `color` - type: COLOR.
|
||||||
- Multiply each pixel's color by this color. For example, an all-white image with `<color>FF0000</color>` would become completely red. You can also control the transparency of an image with `<color>FFFFFFAA</color>` - keeping all the pixels their normal color and only affecting the alpha channel.
|
- Multiply each pixel's color by this color. For example, an all-white image with `<color>FF0000</color>` would become completely red. You can also control the transparency of an image with `<color>FFFFFFAA</color>` - keeping all the pixels their normal color and only affecting the alpha channel.
|
||||||
|
* `visible` - type: BOOLEAN.
|
||||||
|
- If true, component will be rendered, otherwise rendering will be skipped. Can be used to hide elements from a particular view.
|
||||||
* `zIndex` - type: FLOAT.
|
* `zIndex` - type: FLOAT.
|
||||||
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
||||||
|
|
||||||
|
@ -632,6 +634,8 @@ Can be created as an extra.
|
||||||
- If true, image will be shown when selected game does not have a video and no `default` video is configured.
|
- If true, image will be shown when selected game does not have a video and no `default` video is configured.
|
||||||
* `showSnapshotDelay` - type: BOOLEAN
|
* `showSnapshotDelay` - type: BOOLEAN
|
||||||
- If true, playing of video will be delayed for `delayed` seconds, when game is selected.
|
- If true, playing of video will be delayed for `delayed` seconds, when game is selected.
|
||||||
|
* `visible` - type: BOOLEAN.
|
||||||
|
- If true, component will be rendered, otherwise rendering will be skipped. Can be used to hide elements from a particular view.
|
||||||
* `zIndex` - type: FLOAT.
|
* `zIndex` - type: FLOAT.
|
||||||
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
||||||
|
|
||||||
|
@ -662,6 +666,8 @@ Can be created as an extra.
|
||||||
- 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 (as a multiple of font height). Default is 1.5.
|
* `lineSpacing` - type: FLOAT. Controls the space between lines (as a multiple of font height). Default is 1.5.
|
||||||
|
* `visible` - type: BOOLEAN.
|
||||||
|
- If true, component will be rendered, otherwise rendering will be skipped. Can be used to hide elements from a particular view.
|
||||||
* `zIndex` - type: FLOAT.
|
* `zIndex` - type: FLOAT.
|
||||||
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
||||||
|
|
||||||
|
@ -705,11 +711,13 @@ Can be created as an extra.
|
||||||
* `pos` - type: NORMALIZED_PAIR.
|
* `pos` - type: NORMALIZED_PAIR.
|
||||||
* `size` - type: NORMALIZED_PAIR.
|
* `size` - type: NORMALIZED_PAIR.
|
||||||
* `path` - type: PATH.
|
* `path` - type: PATH.
|
||||||
|
* `visible` - type: BOOLEAN.
|
||||||
EmulationStation borrows the concept of "nine patches" from Android (or "9-Slices"). Currently the implementation is very simple and hard-coded to only use 48x48px images (16x16px for each "patch"). Check the `data/resources` directory for some examples (button.png, frame.png).
|
- If true, component will be rendered, otherwise rendering will be skipped. Can be used to hide elements from a particular view.
|
||||||
* `zIndex` - type: FLOAT.
|
* `zIndex` - type: FLOAT.
|
||||||
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
||||||
|
|
||||||
|
EmulationStation borrows the concept of "nine patches" from Android (or "9-Slices"). Currently the implementation is very simple and hard-coded to only use 48x48px images (16x16px for each "patch"). Check the `data/resources` directory for some examples (button.png, frame.png).
|
||||||
|
|
||||||
#### rating
|
#### rating
|
||||||
|
|
||||||
* `pos` - type: NORMALIZED_PAIR.
|
* `pos` - type: NORMALIZED_PAIR.
|
||||||
|
@ -727,6 +735,8 @@ EmulationStation borrows the concept of "nine patches" from Android (or "9-Slice
|
||||||
- Path to the "unfilled star" image. Image must be square (width equals height).
|
- Path to the "unfilled star" image. Image must be square (width equals height).
|
||||||
* `color` - type: COLOR.
|
* `color` - type: COLOR.
|
||||||
- Multiply each pixel's color by this color. For example, an all-white image with `<color>FF0000</color>` would become completely red. You can also control the transparency of an image with `<color>FFFFFFAA</color>` - keeping all the pixels their normal color and only affecting the alpha channel.
|
- Multiply each pixel's color by this color. For example, an all-white image with `<color>FF0000</color>` would become completely red. You can also control the transparency of an image with `<color>FFFFFFAA</color>` - keeping all the pixels their normal color and only affecting the alpha channel.
|
||||||
|
* `visible` - type: BOOLEAN.
|
||||||
|
- If true, component will be rendered, otherwise rendering will be skipped. Can be used to hide elements from a particular view.
|
||||||
* `zIndex` - type: FLOAT.
|
* `zIndex` - type: FLOAT.
|
||||||
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
||||||
|
|
||||||
|
@ -753,6 +763,8 @@ EmulationStation borrows the concept of "nine patches" from Android (or "9-Slice
|
||||||
- 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 (as a multiple of font height). Default is 1.5.
|
* `lineSpacing` - type: FLOAT. Controls the space between lines (as a multiple of font height). Default is 1.5.
|
||||||
|
* `visible` - type: BOOLEAN.
|
||||||
|
- If true, component will be rendered, otherwise rendering will be skipped. Can be used to hide elements from a particular view.
|
||||||
* `zIndex` - type: FLOAT.
|
* `zIndex` - type: FLOAT.
|
||||||
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
- z-index value for component. Components will be rendered in order of z-index value from low to high.
|
||||||
* `displayRelative` - type: BOOLEAN. Renders the datetime as a a relative string (ex: 'x days ago')
|
* `displayRelative` - type: BOOLEAN. Renders the datetime as a a relative string (ex: 'x days ago')
|
||||||
|
|
|
@ -112,6 +112,9 @@ void RatingComponent::updateColors()
|
||||||
|
|
||||||
void RatingComponent::render(const Transform4x4f& parentTrans)
|
void RatingComponent::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
Transform4x4f trans = parentTrans * getTransform();
|
Transform4x4f trans = parentTrans * getTransform();
|
||||||
trans.round();
|
trans.round();
|
||||||
Renderer::setMatrix(trans);
|
Renderer::setMatrix(trans);
|
||||||
|
|
|
@ -86,7 +86,7 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr<ThemeData>& them
|
||||||
BasicGameListView::onThemeChanged(theme);
|
BasicGameListView::onThemeChanged(theme);
|
||||||
|
|
||||||
using namespace ThemeFlags;
|
using namespace ThemeFlags;
|
||||||
mImage.applyTheme(theme, getName(), "md_image", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION);
|
mImage.applyTheme(theme, getName(), "md_image", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE);
|
||||||
mName.applyTheme(theme, getName(), "md_name", ALL);
|
mName.applyTheme(theme, getName(), "md_name", ALL);
|
||||||
|
|
||||||
initMDLabels();
|
initMDLabels();
|
||||||
|
@ -116,7 +116,7 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr<ThemeData>& them
|
||||||
values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT);
|
values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX);
|
mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE);
|
||||||
mDescription.setSize(mDescContainer.getSize().x(), 0);
|
mDescription.setSize(mDescContainer.getSize().x(), 0);
|
||||||
mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION));
|
mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION));
|
||||||
|
|
||||||
|
|
|
@ -163,7 +163,7 @@ void GridGameListView::onThemeChanged(const std::shared_ptr<ThemeData>& theme)
|
||||||
values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT);
|
values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX);
|
mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE);
|
||||||
mDescription.setSize(mDescContainer.getSize().x(), 0);
|
mDescription.setSize(mDescContainer.getSize().x(), 0);
|
||||||
mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION));
|
mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION));
|
||||||
|
|
||||||
|
|
|
@ -123,9 +123,9 @@ void VideoGameListView::onThemeChanged(const std::shared_ptr<ThemeData>& theme)
|
||||||
BasicGameListView::onThemeChanged(theme);
|
BasicGameListView::onThemeChanged(theme);
|
||||||
|
|
||||||
using namespace ThemeFlags;
|
using namespace ThemeFlags;
|
||||||
mMarquee.applyTheme(theme, getName(), "md_marquee", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION);
|
mMarquee.applyTheme(theme, getName(), "md_marquee", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE);
|
||||||
mImage.applyTheme(theme, getName(), "md_image", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION);
|
mImage.applyTheme(theme, getName(), "md_image", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE);
|
||||||
mVideo->applyTheme(theme, getName(), "md_video", POSITION | ThemeFlags::SIZE | ThemeFlags::DELAY | Z_INDEX | ROTATION);
|
mVideo->applyTheme(theme, getName(), "md_video", POSITION | ThemeFlags::SIZE | ThemeFlags::DELAY | Z_INDEX | ROTATION | VISIBLE);
|
||||||
mName.applyTheme(theme, getName(), "md_name", ALL);
|
mName.applyTheme(theme, getName(), "md_name", ALL);
|
||||||
|
|
||||||
initMDLabels();
|
initMDLabels();
|
||||||
|
@ -155,7 +155,7 @@ void VideoGameListView::onThemeChanged(const std::shared_ptr<ThemeData>& theme)
|
||||||
values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT);
|
values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX);
|
mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE);
|
||||||
mDescription.setSize(mDescContainer.getSize().x(), 0);
|
mDescription.setSize(mDescContainer.getSize().x(), 0);
|
||||||
mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION));
|
mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION));
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
GuiComponent::GuiComponent(Window* window) : mWindow(window), mParent(NULL), mOpacity(255),
|
GuiComponent::GuiComponent(Window* window) : mWindow(window), mParent(NULL), mOpacity(255),
|
||||||
mPosition(Vector3f::Zero()), mOrigin(Vector2f::Zero()), mRotationOrigin(0.5, 0.5),
|
mPosition(Vector3f::Zero()), mOrigin(Vector2f::Zero()), mRotationOrigin(0.5, 0.5),
|
||||||
mSize(Vector2f::Zero()), mTransform(Transform4x4f::Identity()), mIsProcessing(false)
|
mSize(Vector2f::Zero()), mTransform(Transform4x4f::Identity()), mIsProcessing(false), mVisible(true)
|
||||||
{
|
{
|
||||||
for(unsigned char i = 0; i < MAX_ANIMATIONS; i++)
|
for(unsigned char i = 0; i < MAX_ANIMATIONS; i++)
|
||||||
mAnimationMap[i] = NULL;
|
mAnimationMap[i] = NULL;
|
||||||
|
@ -62,6 +62,9 @@ void GuiComponent::update(int deltaTime)
|
||||||
|
|
||||||
void GuiComponent::render(const Transform4x4f& parentTrans)
|
void GuiComponent::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
Transform4x4f trans = parentTrans * getTransform();
|
Transform4x4f trans = parentTrans * getTransform();
|
||||||
renderChildren(trans);
|
renderChildren(trans);
|
||||||
}
|
}
|
||||||
|
@ -157,6 +160,15 @@ void GuiComponent::setDefaultZIndex(float z)
|
||||||
mDefaultZIndex = z;
|
mDefaultZIndex = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GuiComponent::isVisible() const
|
||||||
|
{
|
||||||
|
return mVisible;
|
||||||
|
}
|
||||||
|
void GuiComponent::setVisible(bool visible)
|
||||||
|
{
|
||||||
|
mVisible = visible;
|
||||||
|
}
|
||||||
|
|
||||||
Vector2f GuiComponent::getCenter() const
|
Vector2f GuiComponent::getCenter() const
|
||||||
{
|
{
|
||||||
return Vector2f(mPosition.x() - (getSize().x() * mOrigin.x()) + getSize().x() / 2,
|
return Vector2f(mPosition.x() - (getSize().x() * mOrigin.x()) + getSize().x() / 2,
|
||||||
|
@ -424,6 +436,11 @@ void GuiComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const std
|
||||||
setZIndex(elem->get<float>("zIndex"));
|
setZIndex(elem->get<float>("zIndex"));
|
||||||
else
|
else
|
||||||
setZIndex(getDefaultZIndex());
|
setZIndex(getDefaultZIndex());
|
||||||
|
|
||||||
|
if(properties & ThemeFlags::VISIBLE && elem->has("visible"))
|
||||||
|
setVisible(elem->get<bool>("visible"));
|
||||||
|
else
|
||||||
|
setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiComponent::updateHelpPrompts()
|
void GuiComponent::updateHelpPrompts()
|
||||||
|
|
|
@ -76,6 +76,9 @@ public:
|
||||||
float getDefaultZIndex() const;
|
float getDefaultZIndex() const;
|
||||||
void setDefaultZIndex(float zIndex);
|
void setDefaultZIndex(float zIndex);
|
||||||
|
|
||||||
|
bool isVisible() const;
|
||||||
|
void setVisible(bool visible);
|
||||||
|
|
||||||
// Returns the center point of the image (takes origin into account).
|
// Returns the center point of the image (takes origin into account).
|
||||||
Vector2f getCenter() const;
|
Vector2f getCenter() const;
|
||||||
|
|
||||||
|
@ -157,6 +160,7 @@ protected:
|
||||||
float mZIndex = 0;
|
float mZIndex = 0;
|
||||||
|
|
||||||
bool mIsProcessing;
|
bool mIsProcessing;
|
||||||
|
bool mVisible;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const static unsigned char MAX_ANIMATIONS = 4;
|
const static unsigned char MAX_ANIMATIONS = 4;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
std::vector<std::string> ThemeData::sSupportedViews { { "system" }, { "basic" }, { "detailed" }, { "grid" }, { "video" } };
|
std::vector<std::string> ThemeData::sSupportedViews { { "system" }, { "basic" }, { "detailed" }, { "grid" }, { "video" } };
|
||||||
std::vector<std::string> ThemeData::sSupportedFeatures { { "video" }, { "carousel" }, { "z-index" } };
|
std::vector<std::string> ThemeData::sSupportedFeatures { { "video" }, { "carousel" }, { "z-index" }, { "visible" } };
|
||||||
|
|
||||||
std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> ThemeData::sElementMap {
|
std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> ThemeData::sElementMap {
|
||||||
{ "image", {
|
{ "image", {
|
||||||
|
@ -24,6 +24,7 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> The
|
||||||
{ "default", PATH },
|
{ "default", PATH },
|
||||||
{ "tile", BOOLEAN },
|
{ "tile", BOOLEAN },
|
||||||
{ "color", COLOR },
|
{ "color", COLOR },
|
||||||
|
{ "visible", BOOLEAN },
|
||||||
{ "zIndex", FLOAT } } },
|
{ "zIndex", FLOAT } } },
|
||||||
{ "imagegrid", {
|
{ "imagegrid", {
|
||||||
{ "pos", NORMALIZED_PAIR },
|
{ "pos", NORMALIZED_PAIR },
|
||||||
|
@ -56,6 +57,7 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> The
|
||||||
{ "forceUppercase", BOOLEAN },
|
{ "forceUppercase", BOOLEAN },
|
||||||
{ "lineSpacing", FLOAT },
|
{ "lineSpacing", FLOAT },
|
||||||
{ "value", STRING },
|
{ "value", STRING },
|
||||||
|
{ "visible", BOOLEAN },
|
||||||
{ "zIndex", FLOAT } } },
|
{ "zIndex", FLOAT } } },
|
||||||
{ "textlist", {
|
{ "textlist", {
|
||||||
{ "pos", NORMALIZED_PAIR },
|
{ "pos", NORMALIZED_PAIR },
|
||||||
|
@ -81,11 +83,13 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> The
|
||||||
{ "pos", NORMALIZED_PAIR },
|
{ "pos", NORMALIZED_PAIR },
|
||||||
{ "size", NORMALIZED_PAIR },
|
{ "size", NORMALIZED_PAIR },
|
||||||
{ "origin", NORMALIZED_PAIR },
|
{ "origin", NORMALIZED_PAIR },
|
||||||
{ "zIndex", FLOAT } } },
|
{ "visible", BOOLEAN },
|
||||||
|
{ "zIndex", FLOAT } } },
|
||||||
{ "ninepatch", {
|
{ "ninepatch", {
|
||||||
{ "pos", NORMALIZED_PAIR },
|
{ "pos", NORMALIZED_PAIR },
|
||||||
{ "size", NORMALIZED_PAIR },
|
{ "size", NORMALIZED_PAIR },
|
||||||
{ "path", PATH },
|
{ "path", PATH },
|
||||||
|
{ "visible", BOOLEAN },
|
||||||
{ "zIndex", FLOAT } } },
|
{ "zIndex", FLOAT } } },
|
||||||
{ "datetime", {
|
{ "datetime", {
|
||||||
{ "pos", NORMALIZED_PAIR },
|
{ "pos", NORMALIZED_PAIR },
|
||||||
|
@ -103,7 +107,8 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> The
|
||||||
{ "value", STRING },
|
{ "value", STRING },
|
||||||
{ "format", STRING },
|
{ "format", STRING },
|
||||||
{ "displayRelative", BOOLEAN },
|
{ "displayRelative", BOOLEAN },
|
||||||
{ "zIndex", FLOAT } } },
|
{ "visible", BOOLEAN },
|
||||||
|
{ "zIndex", FLOAT } } },
|
||||||
{ "rating", {
|
{ "rating", {
|
||||||
{ "pos", NORMALIZED_PAIR },
|
{ "pos", NORMALIZED_PAIR },
|
||||||
{ "size", NORMALIZED_PAIR },
|
{ "size", NORMALIZED_PAIR },
|
||||||
|
@ -113,6 +118,7 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> The
|
||||||
{ "color", COLOR },
|
{ "color", COLOR },
|
||||||
{ "filledPath", PATH },
|
{ "filledPath", PATH },
|
||||||
{ "unfilledPath", PATH },
|
{ "unfilledPath", PATH },
|
||||||
|
{ "visible", BOOLEAN },
|
||||||
{ "zIndex", FLOAT } } },
|
{ "zIndex", FLOAT } } },
|
||||||
{ "sound", {
|
{ "sound", {
|
||||||
{ "path", PATH } } },
|
{ "path", PATH } } },
|
||||||
|
@ -132,7 +138,8 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> The
|
||||||
{ "rotationOrigin", NORMALIZED_PAIR },
|
{ "rotationOrigin", NORMALIZED_PAIR },
|
||||||
{ "default", PATH },
|
{ "default", PATH },
|
||||||
{ "delay", FLOAT },
|
{ "delay", FLOAT },
|
||||||
{ "zIndex", FLOAT },
|
{ "visible", BOOLEAN },
|
||||||
|
{ "zIndex", FLOAT },
|
||||||
{ "showSnapshotNoVideo", BOOLEAN },
|
{ "showSnapshotNoVideo", BOOLEAN },
|
||||||
{ "showSnapshotDelay", BOOLEAN } } },
|
{ "showSnapshotDelay", BOOLEAN } } },
|
||||||
{ "carousel", {
|
{ "carousel", {
|
||||||
|
|
|
@ -41,6 +41,7 @@ namespace ThemeFlags
|
||||||
DELAY = 4096,
|
DELAY = 4096,
|
||||||
Z_INDEX = 8192,
|
Z_INDEX = 8192,
|
||||||
ROTATION = 16384,
|
ROTATION = 16384,
|
||||||
|
VISIBLE = 32768,
|
||||||
ALL = 0xFFFFFFFF
|
ALL = 0xFFFFFFFF
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -317,6 +317,9 @@ void ImageComponent::updateColors()
|
||||||
|
|
||||||
void ImageComponent::render(const Transform4x4f& parentTrans)
|
void ImageComponent::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
Transform4x4f trans = parentTrans * getTransform();
|
Transform4x4f trans = parentTrans * getTransform();
|
||||||
Renderer::setMatrix(trans);
|
Renderer::setMatrix(trans);
|
||||||
|
|
||||||
|
@ -466,6 +469,11 @@ void ImageComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const s
|
||||||
setZIndex(elem->get<float>("zIndex"));
|
setZIndex(elem->get<float>("zIndex"));
|
||||||
else
|
else
|
||||||
setZIndex(getDefaultZIndex());
|
setZIndex(getDefaultZIndex());
|
||||||
|
|
||||||
|
if(properties & ThemeFlags::VISIBLE && elem->has("visible"))
|
||||||
|
setVisible(elem->get<bool>("visible"));
|
||||||
|
else
|
||||||
|
setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<HelpPrompt> ImageComponent::getHelpPrompts()
|
std::vector<HelpPrompt> ImageComponent::getHelpPrompts()
|
||||||
|
|
|
@ -103,6 +103,9 @@ void NinePatchComponent::buildVertices()
|
||||||
|
|
||||||
void NinePatchComponent::render(const Transform4x4f& parentTrans)
|
void NinePatchComponent::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
Transform4x4f trans = parentTrans * getTransform();
|
Transform4x4f trans = parentTrans * getTransform();
|
||||||
trans.round();
|
trans.round();
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,9 @@ ScrollableContainer::ScrollableContainer(Window* window) : GuiComponent(window),
|
||||||
|
|
||||||
void ScrollableContainer::render(const Transform4x4f& parentTrans)
|
void ScrollableContainer::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
Transform4x4f trans = parentTrans * getTransform();
|
Transform4x4f trans = parentTrans * getTransform();
|
||||||
|
|
||||||
Vector2i clipPos((int)trans.translation().x(), (int)trans.translation().y());
|
Vector2i clipPos((int)trans.translation().x(), (int)trans.translation().y());
|
||||||
|
|
|
@ -95,6 +95,9 @@ void TextComponent::setUppercase(bool uppercase)
|
||||||
|
|
||||||
void TextComponent::render(const Transform4x4f& parentTrans)
|
void TextComponent::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
Transform4x4f trans = parentTrans * getTransform();
|
Transform4x4f trans = parentTrans * getTransform();
|
||||||
|
|
||||||
if (mRenderBackground)
|
if (mRenderBackground)
|
||||||
|
|
|
@ -145,6 +145,9 @@ void VideoComponent::setOpacity(unsigned char opacity)
|
||||||
|
|
||||||
void VideoComponent::render(const Transform4x4f& parentTrans)
|
void VideoComponent::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
Transform4x4f trans = parentTrans * getTransform();
|
Transform4x4f trans = parentTrans * getTransform();
|
||||||
GuiComponent::renderChildren(trans);
|
GuiComponent::renderChildren(trans);
|
||||||
|
|
||||||
|
@ -223,6 +226,11 @@ void VideoComponent::applyTheme(const std::shared_ptr<ThemeData>& theme, const s
|
||||||
setZIndex(elem->get<float>("zIndex"));
|
setZIndex(elem->get<float>("zIndex"));
|
||||||
else
|
else
|
||||||
setZIndex(getDefaultZIndex());
|
setZIndex(getDefaultZIndex());
|
||||||
|
|
||||||
|
if(properties & ThemeFlags::VISIBLE && elem->has("visible"))
|
||||||
|
setVisible(elem->get<bool>("visible"));
|
||||||
|
else
|
||||||
|
setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<HelpPrompt> VideoComponent::getHelpPrompts()
|
std::vector<HelpPrompt> VideoComponent::getHelpPrompts()
|
||||||
|
|
|
@ -30,6 +30,9 @@ VideoPlayerComponent::~VideoPlayerComponent()
|
||||||
|
|
||||||
void VideoPlayerComponent::render(const Transform4x4f& parentTrans)
|
void VideoPlayerComponent::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
VideoComponent::render(parentTrans);
|
VideoComponent::render(parentTrans);
|
||||||
|
|
||||||
if (!mIsPlaying || mPlayerPid == -1)
|
if (!mIsPlaying || mPlayerPid == -1)
|
||||||
|
|
|
@ -131,6 +131,9 @@ void VideoVlcComponent::resize()
|
||||||
|
|
||||||
void VideoVlcComponent::render(const Transform4x4f& parentTrans)
|
void VideoVlcComponent::render(const Transform4x4f& parentTrans)
|
||||||
{
|
{
|
||||||
|
if (!isVisible())
|
||||||
|
return;
|
||||||
|
|
||||||
VideoComponent::render(parentTrans);
|
VideoComponent::render(parentTrans);
|
||||||
float x, y;
|
float x, y;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue