From abcd3e5bacb255b0ddd079412d002dfc760e0e23 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Sun, 11 Dec 2022 12:10:08 +0100 Subject: [PATCH] Fixed an issue in CarouselComponent and GridComponent where the default image was rendered when it shouldn't. Also moved a property position in GridComponent. --- es-core/src/ThemeData.cpp | 2 +- .../components/primary/CarouselComponent.h | 7 ++- .../src/components/primary/GridComponent.h | 51 ++++++++++--------- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/es-core/src/ThemeData.cpp b/es-core/src/ThemeData.cpp index 91096e6a4..8477e1b9f 100644 --- a/es-core/src/ThemeData.cpp +++ b/es-core/src/ThemeData.cpp @@ -190,10 +190,10 @@ std::map> {"backgroundGradientType", STRING}, {"selectorImage", PATH}, {"selectorRelativeScale", FLOAT}, + {"selectorLayer", STRING}, {"selectorColor", COLOR}, {"selectorColorEnd", COLOR}, {"selectorGradientType", STRING}, - {"selectorLayer", STRING}, {"text", STRING}, {"textRelativeScale", FLOAT}, {"textColor", COLOR}, diff --git a/es-core/src/components/primary/CarouselComponent.h b/es-core/src/components/primary/CarouselComponent.h index f2e16c035..3006f7265 100644 --- a/es-core/src/components/primary/CarouselComponent.h +++ b/es-core/src/components/primary/CarouselComponent.h @@ -278,7 +278,9 @@ void CarouselComponent::addEntry(Entry& entry, const std::shared_ptrsetColorGradientHorizontal(false); defaultImage->setRotateByTargetSize(true); - entry.data.item = defaultImage; + // For the gamelist view the default image is applied in onDemandTextureLoad(). + if (!mGamelistView) + entry.data.item = defaultImage; } } @@ -455,6 +457,9 @@ template void CarouselComponent::onDemandTextureLoad() else if (mImageType == "none") // Display the game name as text. return; + if (entry.data.imagePath == "") + entry.data.imagePath = entry.data.defaultImagePath; + auto theme = game->getSystem()->getTheme(); updateEntry(entry, theme); } diff --git a/es-core/src/components/primary/GridComponent.h b/es-core/src/components/primary/GridComponent.h index 7d4c82342..f70e1e862 100644 --- a/es-core/src/components/primary/GridComponent.h +++ b/es-core/src/components/primary/GridComponent.h @@ -65,7 +65,7 @@ public: const std::string& getImageType() { return mImageType; } void setImageType(std::string imageType) { mImageType = imageType; } const std::string& getDefaultImage() { return mDefaultImage; } - void setDefaultImage(std::string defaultItem) { mDefaultImage = defaultItem; } + void setDefaultImage(std::string defaultImage) { mDefaultImage = defaultImage; } bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; void render(const glm::mat4& parentTrans) override; @@ -104,18 +104,18 @@ private: bool remove(const T& obj) override { return List::remove(obj); } int size() const override { return List::size(); } - enum class SelectorLayer { - TOP, - MIDDLE, - BOTTOM - }; - enum class ImageFit { CONTAIN, FILL, COVER }; + enum class SelectorLayer { + TOP, + MIDDLE, + BOTTOM + }; + Renderer* mRenderer; std::function mCancelTransitionsCallback; std::function mCursorChangedCallback; @@ -155,11 +155,11 @@ private: bool mHasBackgroundColor; std::unique_ptr mSelectorImage; float mSelectorRelativeScale; + SelectorLayer mSelectorLayer; unsigned int mSelectorColor; unsigned int mSelectorColorEnd; bool mSelectorColorGradientHorizontal; bool mHasSelectorColor; - SelectorLayer mSelectorLayer; float mTextRelativeScale; unsigned int mTextColor; unsigned int mTextBackgroundColor; @@ -207,11 +207,11 @@ GridComponent::GridComponent() , mBackgroundColorGradientHorizontal {true} , mHasBackgroundColor {false} , mSelectorRelativeScale {1.0f} + , mSelectorLayer {SelectorLayer::TOP} , mSelectorColor {0xFFFFFFFF} , mSelectorColorEnd {0xFFFFFFFF} , mSelectorColorGradientHorizontal {true} , mHasSelectorColor {false} - , mSelectorLayer {SelectorLayer::TOP} , mTextRelativeScale {1.0f} , mTextColor {0x000000FF} , mTextBackgroundColor {0xFFFFFF00} @@ -254,27 +254,29 @@ void GridComponent::addEntry(Entry& entry, const std::shared_ptr& } else if (entry.data.defaultImagePath != "" && ResourceManager::getInstance().fileExists(entry.data.defaultImagePath)) { - auto defaultItem = std::make_shared(false, dynamic); - defaultItem->setLinearInterpolation(true); - defaultItem->setMipmapping(true); + auto defaultImage = std::make_shared(false, dynamic); + defaultImage->setLinearInterpolation(true); + defaultImage->setMipmapping(true); if (mImagefit == ImageFit::CONTAIN) - defaultItem->setMaxSize(mItemSize * mImageRelativeScale); + defaultImage->setMaxSize(mItemSize * mImageRelativeScale); else if (mImagefit == ImageFit::FILL) - defaultItem->setResize(mItemSize * mImageRelativeScale); + defaultImage->setResize(mItemSize * mImageRelativeScale); else if (mImagefit == ImageFit::COVER) - defaultItem->setCroppedSize(mItemSize * mImageRelativeScale); - defaultItem->setImage(entry.data.defaultImagePath); - defaultItem->applyTheme(theme, "system", "", ThemeFlags::ALL); + defaultImage->setCroppedSize(mItemSize * mImageRelativeScale); + defaultImage->setImage(entry.data.defaultImagePath); + defaultImage->applyTheme(theme, "system", "", ThemeFlags::ALL); if (mImageColor != 0xFFFFFFFF) - defaultItem->setColorShift(mImageColor); + defaultImage->setColorShift(mImageColor); if (mImageColorEnd != mImageColor) { - defaultItem->setColorShiftEnd(mImageColorEnd); + defaultImage->setColorShiftEnd(mImageColorEnd); if (!mImageColorGradientHorizontal) - defaultItem->setColorGradientHorizontal(false); + defaultImage->setColorGradientHorizontal(false); } - defaultItem->setOrigin(0.5f, 0.5f); - defaultItem->setRotateByTargetSize(true); - entry.data.item = defaultItem; + defaultImage->setOrigin(0.5f, 0.5f); + defaultImage->setRotateByTargetSize(true); + // For the gamelist view the default image is applied in onDemandTextureLoad(). + if (!mGamelistView) + entry.data.item = defaultImage; } if (!entry.data.item) { @@ -392,6 +394,9 @@ template void GridComponent::onDemandTextureLoad() else if (mImageType == "none") // Display the game name as text. return; + if (entry.data.imagePath == "") + entry.data.imagePath = entry.data.defaultImagePath; + auto theme = game->getSystem()->getTheme(); updateEntry(entry, theme); }