From 722468129ed4feaed6f9294d7e40273e06f6253a Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Sun, 15 Aug 2021 19:30:31 +0200 Subject: [PATCH 1/5] Replaced all internal matrix data types and functions with the GLM library equivalents. Also changed some vectors. --- CMakeLists.txt | 4 + es-app/src/MediaViewer.cpp | 8 +- es-app/src/SystemScreensaver.cpp | 15 ++- es-app/src/animations/MoveCameraAnimation.h | 18 ++-- es-app/src/guis/GuiGameScraper.cpp | 2 +- es-app/src/guis/GuiInfoPopup.cpp | 8 +- es-app/src/guis/GuiInfoPopup.h | 2 +- es-app/src/guis/GuiLaunchScreen.cpp | 12 +-- es-app/src/guis/GuiMetaDataEd.cpp | 6 +- es-app/src/guis/GuiOfflineGenerator.cpp | 2 +- es-app/src/guis/GuiScraperMulti.cpp | 2 +- es-app/src/guis/GuiScraperSearch.cpp | 4 +- es-app/src/guis/GuiScraperSearch.h | 2 +- es-app/src/views/SystemView.cpp | 47 ++++---- es-app/src/views/SystemView.h | 12 ++- es-app/src/views/ViewController.cpp | 102 +++++++++--------- es-app/src/views/ViewController.h | 4 +- .../views/gamelist/DetailedGameListView.cpp | 24 ++--- .../src/views/gamelist/GridGameListView.cpp | 20 ++-- es-app/src/views/gamelist/IGameListView.cpp | 12 +-- es-app/src/views/gamelist/IGameListView.h | 2 +- .../src/views/gamelist/VideoGameListView.cpp | 22 ++-- es-core/src/GuiComponent.cpp | 37 +++---- es-core/src/GuiComponent.h | 38 +++---- es-core/src/Window.cpp | 23 ++-- es-core/src/Window.h | 3 +- .../src/components/AnimatedImageComponent.cpp | 2 +- .../src/components/AnimatedImageComponent.h | 2 +- es-core/src/components/ButtonComponent.cpp | 18 ++-- es-core/src/components/ButtonComponent.h | 2 +- es-core/src/components/ComponentGrid.cpp | 11 +- es-core/src/components/ComponentGrid.h | 2 +- es-core/src/components/ComponentList.cpp | 23 ++-- es-core/src/components/ComponentList.h | 2 +- es-core/src/components/DateTimeComponent.cpp | 3 +- es-core/src/components/DateTimeComponent.h | 2 +- .../src/components/DateTimeEditComponent.cpp | 12 +-- .../src/components/DateTimeEditComponent.h | 2 +- es-core/src/components/GridTileComponent.cpp | 10 +- es-core/src/components/GridTileComponent.h | 6 +- es-core/src/components/HelpComponent.cpp | 6 +- es-core/src/components/HelpComponent.h | 2 +- es-core/src/components/IList.h | 2 +- es-core/src/components/ImageComponent.cpp | 4 +- es-core/src/components/ImageComponent.h | 2 +- es-core/src/components/ImageGridComponent.h | 24 ++--- es-core/src/components/MenuComponent.cpp | 2 +- es-core/src/components/NinePatchComponent.cpp | 10 +- es-core/src/components/NinePatchComponent.h | 6 +- es-core/src/components/OptionListComponent.h | 10 +- es-core/src/components/RatingComponent.cpp | 4 +- es-core/src/components/RatingComponent.h | 2 +- .../src/components/ScrollableContainer.cpp | 19 ++-- es-core/src/components/ScrollableContainer.h | 2 +- es-core/src/components/SliderComponent.cpp | 4 +- es-core/src/components/SliderComponent.h | 2 +- es-core/src/components/SwitchComponent.cpp | 4 +- es-core/src/components/SwitchComponent.h | 2 +- es-core/src/components/TextComponent.cpp | 14 ++- es-core/src/components/TextComponent.h | 2 +- es-core/src/components/TextEditComponent.cpp | 22 ++-- es-core/src/components/TextEditComponent.h | 2 +- es-core/src/components/TextListComponent.h | 46 ++++---- es-core/src/components/VideoComponent.cpp | 6 +- es-core/src/components/VideoComponent.h | 4 +- .../src/components/VideoFFmpegComponent.cpp | 8 +- es-core/src/components/VideoFFmpegComponent.h | 2 +- es-core/src/components/VideoVlcComponent.cpp | 8 +- es-core/src/components/VideoVlcComponent.h | 2 +- es-core/src/guis/GuiComplexTextEditPopup.cpp | 2 +- es-core/src/guis/GuiDetectDevice.cpp | 2 +- es-core/src/guis/GuiInputConfig.cpp | 2 +- es-core/src/guis/GuiMsgBox.cpp | 2 +- es-core/src/guis/GuiTextEditPopup.cpp | 2 +- es-core/src/math/Misc.h | 7 +- es-core/src/renderers/Renderer.cpp | 50 ++++----- es-core/src/renderers/Renderer.h | 16 +-- es-core/src/renderers/Renderer_GL21.cpp | 15 ++- es-core/src/renderers/Renderer_GLES10.cpp | 11 +- es-core/src/renderers/Shader_GL21.cpp | 2 +- es-core/src/renderers/Shader_GL21.h | 6 +- 81 files changed, 445 insertions(+), 423 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a7fda450d..ab82fdf91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -196,6 +196,10 @@ if(DEFINED libCEC_FOUND) add_definitions(-DHAVE_LIBCEC) endif() +# GLM library options. +add_definitions(-DGLM_FORCE_CXX14) +add_definitions(-DGLM_FORCE_XYZW_ONLY) + # For Unix systems, assign the installation prefix. If it's not explicitly set, # we use /usr on Linux, /usr/pkg on NetBSD and /usr/local on FreeBSD and OpenBSD. if(NOT WIN32 AND NOT APPLE) diff --git a/es-app/src/MediaViewer.cpp b/es-app/src/MediaViewer.cpp index d62630ff2..0a8ede44d 100644 --- a/es-app/src/MediaViewer.cpp +++ b/es-app/src/MediaViewer.cpp @@ -83,15 +83,15 @@ void MediaViewer::update(int deltaTime) void MediaViewer::render() { - Transform4x4f transform = Transform4x4f::Identity(); - Renderer::setMatrix(transform); + glm::mat4 trans = Renderer::getIdentity(); + Renderer::setMatrix(trans); // Render a black background below the game media. Renderer::drawRect(0.0f, 0.0f, static_cast(Renderer::getScreenWidth()), static_cast(Renderer::getScreenHeight()), 0x000000FF, 0x000000FF); if (mVideo && !mDisplayingImage) { - mVideo->render(transform); + mVideo->render(trans); #if defined(USE_OPENGL_21) Renderer::shaderParameters videoParameters; @@ -122,7 +122,7 @@ void MediaViewer::render() #endif } else if (mImage && mImage->hasImage() && mImage->getSize() != 0) { - mImage->render(transform); + mImage->render(trans); #if defined(USE_OPENGL_21) if (mCurrentImageIndex == mScreenShotIndex && diff --git a/es-app/src/SystemScreensaver.cpp b/es-app/src/SystemScreensaver.cpp index e74b161d9..6dfd55a4f 100644 --- a/es-app/src/SystemScreensaver.cpp +++ b/es-app/src/SystemScreensaver.cpp @@ -248,19 +248,19 @@ void SystemScreensaver::renderScreensaver() if (mVideoScreensaver && screensaverType == "video") { // Render a black background below the video. - Renderer::setMatrix(Transform4x4f::Identity()); + Renderer::setMatrix(Renderer::getIdentity()); Renderer::drawRect(0.0f, 0.0f, static_cast(Renderer::getScreenWidth()), static_cast(Renderer::getScreenHeight()), 0x000000FF, 0x000000FF); // Only render the video if the state requires it. if (static_cast(mState) >= STATE_FADE_IN_VIDEO) { - Transform4x4f transform = Transform4x4f::Identity(); - mVideoScreensaver->render(transform); + glm::mat4 trans = Renderer::getIdentity(); + mVideoScreensaver->render(trans); } } else if (mImageScreensaver && screensaverType == "slideshow") { // Render a black background below the image. - Renderer::setMatrix(Transform4x4f::Identity()); + Renderer::setMatrix(Renderer::getIdentity()); Renderer::drawRect(0.0f, 0.0f, static_cast(Renderer::getScreenWidth()), static_cast(Renderer::getScreenHeight()), 0x000000FF, 0x000000FF); @@ -268,15 +268,14 @@ void SystemScreensaver::renderScreensaver() if (static_cast(mState) >= STATE_FADE_IN_VIDEO) { if (mImageScreensaver->hasImage()) { mImageScreensaver->setOpacity(255 - static_cast(mOpacity * 255)); - - Transform4x4f transform = Transform4x4f::Identity(); - mImageScreensaver->render(transform); + glm::mat4 trans = Renderer::getIdentity(); + mImageScreensaver->render(trans); } } } if (isScreensaverActive()) { - Renderer::setMatrix(Transform4x4f::Identity()); + Renderer::setMatrix(Renderer::getIdentity()); if (Settings::getInstance()->getString("ScreensaverType") == "slideshow") { if (mHasMediaFiles) { #if defined(USE_OPENGL_21) diff --git a/es-app/src/animations/MoveCameraAnimation.h b/es-app/src/animations/MoveCameraAnimation.h index 82fd76152..c402cb7ca 100644 --- a/es-app/src/animations/MoveCameraAnimation.h +++ b/es-app/src/animations/MoveCameraAnimation.h @@ -10,14 +10,15 @@ #define ES_APP_ANIMATIONS_MOVE_CAMERA_ANIMATION_H #include "animations/Animation.h" +#include "math/Misc.h" class MoveCameraAnimation : public Animation { public: - MoveCameraAnimation(Transform4x4f& camera, const Vector3f& target) + MoveCameraAnimation(glm::mat4& camera, const glm::vec3& target) : mCameraStart(camera) , mTarget(target) - , cameraOut(camera) + , cameraPosition(camera) { } @@ -25,17 +26,16 @@ public: void apply(float t) override { - // Cubic ease out. t -= 1; - cameraOut.translation() = - -Vector3f().lerp(-mCameraStart.translation(), mTarget, t * t * t + 1); + cameraPosition[3].x = -Math::lerp(-mCameraStart[3].x, mTarget.x, t * t * t + 1); + cameraPosition[3].y = -Math::lerp(-mCameraStart[3].y, mTarget.y, t * t * t + 1); + cameraPosition[3].z = -Math::lerp(-mCameraStart[3].z, mTarget.z, t * t * t + 1); } private: - Transform4x4f mCameraStart; - Vector3f mTarget; - - Transform4x4f& cameraOut; + glm::mat4 mCameraStart; + glm::mat4& cameraPosition; + glm::vec3 mTarget; }; #endif // ES_APP_ANIMATIONS_MOVE_CAMERA_ANIMATION_H diff --git a/es-app/src/guis/GuiGameScraper.cpp b/es-app/src/guis/GuiGameScraper.cpp index 98b74fd02..ea87eb982 100644 --- a/es-app/src/guis/GuiGameScraper.cpp +++ b/es-app/src/guis/GuiGameScraper.cpp @@ -115,7 +115,7 @@ GuiGameScraper::GuiGameScraper(Window* window, void GuiGameScraper::onSizeChanged() { - mBox.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBox.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); mGrid.setRowHeightPerc(0, 0.04f, false); mGrid.setRowHeightPerc(1, mGameName->getFont()->getLetterHeight() / mSize.y(), diff --git a/es-app/src/guis/GuiInfoPopup.cpp b/es-app/src/guis/GuiInfoPopup.cpp index c7ab4e9e4..5167ae45d 100644 --- a/es-app/src/guis/GuiInfoPopup.cpp +++ b/es-app/src/guis/GuiInfoPopup.cpp @@ -54,7 +54,7 @@ GuiInfoPopup::GuiInfoPopup(Window* window, std::string message, int duration) setPosition(posX, posY, 0); mFrame->setImagePath(":/graphics/frame.svg"); - mFrame->fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mFrame->fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); addChild(mFrame); // We only initialize the actual time when we first start to render. @@ -72,10 +72,10 @@ GuiInfoPopup::~GuiInfoPopup() delete mFrame; } -void GuiInfoPopup::render(const Transform4x4f& /*parentTrans*/) +void GuiInfoPopup::render(const glm::mat4& /*parentTrans*/) { - // We use Identity() as we want to render on a specific window position, not on the view. - Transform4x4f trans = getTransform() * Transform4x4f::Identity(); + // We use getIdentity() as we want to render on a specific window position, not on the view. + glm::mat4 trans = getTransform() * Renderer::getIdentity(); if (mRunning && updateState()) { // If we're still supposed to be rendering it. Renderer::setMatrix(trans); diff --git a/es-app/src/guis/GuiInfoPopup.h b/es-app/src/guis/GuiInfoPopup.h index 8de60ee3a..61b720ce4 100644 --- a/es-app/src/guis/GuiInfoPopup.h +++ b/es-app/src/guis/GuiInfoPopup.h @@ -21,7 +21,7 @@ public: GuiInfoPopup(Window* window, std::string message, int duration); ~GuiInfoPopup(); - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void stop() override { mRunning = false; } private: diff --git a/es-app/src/guis/GuiLaunchScreen.cpp b/es-app/src/guis/GuiLaunchScreen.cpp index b20977841..c6adb1017 100644 --- a/es-app/src/guis/GuiLaunchScreen.cpp +++ b/es-app/src/guis/GuiLaunchScreen.cpp @@ -169,13 +169,13 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) mGrid->getRowHeight(3)); mMarquee->setOrigin(0.5f, 0.5f); - Vector3f currentPos = mMarquee->getPosition(); + glm::vec3 currentPos = mMarquee->getPosition(); Vector2f currentSize = mMarquee->getSize(); // Position the image in the middle of row four. - currentPos.x() = mSize.x() / 2.0f; - currentPos.y() = mGrid->getRowHeight(0) + mGrid->getRowHeight(1) + mGrid->getRowHeight(2) + - mGrid->getRowHeight(3) / 2.0f; + currentPos.x = mSize.x() / 2.0f; + currentPos.y = mGrid->getRowHeight(0) + mGrid->getRowHeight(1) + mGrid->getRowHeight(2) + + mGrid->getRowHeight(3) / 2.0f; mMarquee->setPosition(currentPos); } @@ -185,7 +185,7 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) setPosition(static_cast(Renderer::getScreenWidth()) / 2.0f, static_cast(Renderer::getScreenHeight()) / 2.25f); - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); mBackground.setEdgeColor(0xEEEEEEFF); } @@ -228,7 +228,7 @@ void GuiLaunchScreen::render() if (mScaleUp < 1.0f) setScale(mScaleUp); - Transform4x4f trans = Transform4x4f::Identity() * getTransform(); + glm::mat4 trans = Renderer::getIdentity() * getTransform(); Renderer::setMatrix(trans); GuiComponent::renderChildren(trans); diff --git a/es-app/src/guis/GuiMetaDataEd.cpp b/es-app/src/guis/GuiMetaDataEd.cpp index bce30d558..29d4d41ca 100644 --- a/es-app/src/guis/GuiMetaDataEd.cpp +++ b/es-app/src/guis/GuiMetaDataEd.cpp @@ -388,11 +388,11 @@ void GuiMetaDataEd::onSizeChanged() mList->setSize(mList->getSize().x(), listHeight); Vector2f newWindowSize = mSize; newWindowSize.y() -= heightAdjustment; - mBackground.fitTo(newWindowSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(newWindowSize, {}, Vector2f(-32.0f, -32.0f)); // Move the buttons up as well to make the layout align correctly after the resize. - Vector3f newButtonPos = mButtons->getPosition(); - newButtonPos.y() -= heightAdjustment; + glm::vec3 newButtonPos = mButtons->getPosition(); + newButtonPos.y -= heightAdjustment; mButtons->setPosition(newButtonPos); mHeaderGrid->setRowHeightPerc(1, titleHeight / mHeaderGrid->getSize().y()); diff --git a/es-app/src/guis/GuiOfflineGenerator.cpp b/es-app/src/guis/GuiOfflineGenerator.cpp index 8b6f3c506..9cfeb005a 100644 --- a/es-app/src/guis/GuiOfflineGenerator.cpp +++ b/es-app/src/guis/GuiOfflineGenerator.cpp @@ -203,7 +203,7 @@ GuiOfflineGenerator::~GuiOfflineGenerator() void GuiOfflineGenerator::onSizeChanged() { - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); // Set row heights. mGrid.setRowHeightPerc(0, mTitle->getFont()->getLetterHeight() * 1.9725f / mSize.y(), false); diff --git a/es-app/src/guis/GuiScraperMulti.cpp b/es-app/src/guis/GuiScraperMulti.cpp index 222bf926e..3e79fd60d 100644 --- a/es-app/src/guis/GuiScraperMulti.cpp +++ b/es-app/src/guis/GuiScraperMulti.cpp @@ -130,7 +130,7 @@ GuiScraperMulti::~GuiScraperMulti() void GuiScraperMulti::onSizeChanged() { - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); mGrid.setRowHeightPerc(0, mTitle->getFont()->getLetterHeight() * 1.9725f / mSize.y(), false); mGrid.setRowHeightPerc(1, (mSystem->getFont()->getLetterHeight() + 2.0f) / mSize.y(), false); diff --git a/es-app/src/guis/GuiScraperSearch.cpp b/es-app/src/guis/GuiScraperSearch.cpp index 04c8dc48a..02afc5a48 100644 --- a/es-app/src/guis/GuiScraperSearch.cpp +++ b/es-app/src/guis/GuiScraperSearch.cpp @@ -565,9 +565,9 @@ bool GuiScraperSearch::input(InputConfig* config, Input input) return GuiComponent::input(config, input); } -void GuiScraperSearch::render(const Transform4x4f& parentTrans) +void GuiScraperSearch::render(const glm::mat4& parentTrans) { - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); renderChildren(trans); Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0x00000009, 0x00000009); diff --git a/es-app/src/guis/GuiScraperSearch.h b/es-app/src/guis/GuiScraperSearch.h index d2f813ea3..9b05ed7cc 100644 --- a/es-app/src/guis/GuiScraperSearch.h +++ b/es-app/src/guis/GuiScraperSearch.h @@ -75,7 +75,7 @@ public: bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; std::vector getHelpPrompts() override; HelpStyle getHelpStyle() override; void onSizeChanged() override; diff --git a/es-app/src/views/SystemView.cpp b/es-app/src/views/SystemView.cpp index 1e78c6777..1810b71b4 100644 --- a/es-app/src/views/SystemView.cpp +++ b/es-app/src/views/SystemView.cpp @@ -396,12 +396,12 @@ void SystemView::onCursorChanged(const CursorState& /*state*/) setAnimation(anim, 0, nullptr, false, 0); } -void SystemView::render(const Transform4x4f& parentTrans) +void SystemView::render(const glm::mat4& parentTrans) { if (size() == 0) return; // Nothing to render. - Transform4x4f trans = getTransform() * parentTrans; + glm::mat4 trans = getTransform() * parentTrans; renderExtras(trans, INT16_MIN, INT16_MAX); @@ -449,7 +449,6 @@ void SystemView::onThemeChanged(const std::shared_ptr& /*theme*/) populate(); } -// Get the ThemeElements that make up the SystemView. void SystemView::getViewElements(const std::shared_ptr& theme) { LOG(LogDebug) << "SystemView::getViewElements()"; @@ -473,18 +472,20 @@ void SystemView::getViewElements(const std::shared_ptr& theme) mViewNeedsReload = false; } -// Render system carousel. -void SystemView::renderCarousel(const Transform4x4f& trans) +void SystemView::renderCarousel(const glm::mat4& trans) { - // Background box behind logos. - Transform4x4f carouselTrans = trans; - carouselTrans.translate(Vector3f(mCarousel.pos.x(), mCarousel.pos.y(), 0.0)); - carouselTrans.translate(Vector3f(mCarousel.origin.x() * mCarousel.size.x() * -1.0f, - mCarousel.origin.y() * mCarousel.size.y() * -1.0f, 0.0f)); - Vector2f clipPos(carouselTrans.translation().x(), carouselTrans.translation().y()); + // Background box behind logos. + glm::mat4 carouselTrans = trans; + carouselTrans = + glm::translate(carouselTrans, glm::vec3(mCarousel.pos.x(), mCarousel.pos.y(), 0.0f)); + carouselTrans = glm::translate( + carouselTrans, glm::vec3(mCarousel.origin.x() * mCarousel.size.x() * -1.0f, + mCarousel.origin.y() * mCarousel.size.y() * -1.0f, 0.0f)); + + glm::vec2 clipPos(carouselTrans[3].x, carouselTrans[3].y); Renderer::pushClipRect( - Vector2i(static_cast(clipPos.x()), static_cast(clipPos.y())), + Vector2i(static_cast(clipPos.x), static_cast(clipPos.y)), Vector2i(static_cast(mCarousel.size.x()), static_cast(mCarousel.size.y()))); Renderer::setMatrix(carouselTrans); @@ -575,8 +576,9 @@ void SystemView::renderCarousel(const Transform4x4f& trans) while (index >= static_cast(mEntries.size())) index -= static_cast(mEntries.size()); - Transform4x4f logoTrans = carouselTrans; - logoTrans.translate(Vector3f(i * logoSpacing[0] + xOff, i * logoSpacing[1] + yOff, 0)); + glm::mat4 logoTrans = carouselTrans; + logoTrans = glm::translate( + logoTrans, glm::vec3(i * logoSpacing[0] + xOff, i * logoSpacing[1] + yOff, 0.0f)); float distance = i - mCamOffset; @@ -600,8 +602,7 @@ void SystemView::renderCarousel(const Transform4x4f& trans) Renderer::popClipRect(); } -// Draw background extras. -void SystemView::renderExtras(const Transform4x4f& trans, float lower, float upper) +void SystemView::renderExtras(const glm::mat4& trans, float lower, float upper) { int extrasCenter = static_cast(mExtrasCamOffset); @@ -621,15 +622,16 @@ void SystemView::renderExtras(const Transform4x4f& trans, float lower, float upp // Only render selected system when not showing. if (mShowing || index == mCursor) { - Transform4x4f extrasTrans = trans; + glm::mat4 extrasTrans = trans; if (mCarousel.type == HORIZONTAL || mCarousel.type == HORIZONTAL_WHEEL) - extrasTrans.translate(Vector3f((i - mExtrasCamOffset) * mSize.x(), 0, 0)); + extrasTrans = glm::translate( + extrasTrans, glm::vec3((i - mExtrasCamOffset) * mSize.x(), 0.0f, 0.0f)); else - extrasTrans.translate(Vector3f(0, (i - mExtrasCamOffset) * mSize.y(), 0)); + extrasTrans = glm::translate( + extrasTrans, glm::vec3(0.0f, (i - mExtrasCamOffset) * mSize.y(), 0.0f)); Renderer::pushClipRect( - Vector2i(static_cast(extrasTrans.translation()[0]), - static_cast(extrasTrans.translation()[1])), + Vector2i(static_cast(extrasTrans[3].x), static_cast(extrasTrans[3].y)), Vector2i(static_cast(mSize.x()), static_cast(mSize.y()))); SystemViewData data = mEntries.at(index).data; for (unsigned int j = 0; j < data.backgroundExtras.size(); j++) { @@ -644,14 +646,13 @@ void SystemView::renderExtras(const Transform4x4f& trans, float lower, float upp Renderer::popClipRect(); } -void SystemView::renderFade(const Transform4x4f& trans) +void SystemView::renderFade(const glm::mat4& trans) { unsigned int fadeColor = 0x00000000 | static_cast(mExtrasFadeOpacity * 255.0f); Renderer::setMatrix(trans); Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), fadeColor, fadeColor); } -// Populate the system carousel with the legacy values. void SystemView::getDefaultElements(void) { // Carousel. diff --git a/es-app/src/views/SystemView.h b/es-app/src/views/SystemView.h index 8d30c42c4..391da7929 100644 --- a/es-app/src/views/SystemView.h +++ b/es-app/src/views/SystemView.h @@ -62,7 +62,7 @@ public: bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void onThemeChanged(const std::shared_ptr& theme); @@ -81,13 +81,17 @@ protected: private: void populate(); void updateGameCount(); + // Get the ThemeElements that make up the SystemView. void getViewElements(const std::shared_ptr& theme); + // Populate the system carousel with the legacy values. void getDefaultElements(void); void getCarouselFromTheme(const ThemeData::ThemeElement* elem); - void renderCarousel(const Transform4x4f& parentTrans); - void renderExtras(const Transform4x4f& parentTrans, float lower, float upper); - void renderFade(const Transform4x4f& trans); + // Render system carousel. + void renderCarousel(const glm::mat4& parentTrans); + // Draw background extras. + void renderExtras(const glm::mat4& parentTrans, float lower, float upper); + void renderFade(const glm::mat4& trans); SystemViewCarousel mCarousel; TextComponent mSystemInfo; diff --git a/es-app/src/views/ViewController.cpp b/es-app/src/views/ViewController.cpp index 03865faaf..6705e4272 100644 --- a/es-app/src/views/ViewController.cpp +++ b/es-app/src/views/ViewController.cpp @@ -66,7 +66,7 @@ ViewController::ViewController(Window* window) , mCurrentView(nullptr) , mPreviousView(nullptr) , mSkipView(nullptr) - , mCamera(Transform4x4f::Identity()) + , mCamera(Renderer::getIdentity()) , mSystemViewTransition(false) , mWrappedViews(false) , mFadeOpacity(0) @@ -234,8 +234,8 @@ void ViewController::ReloadAndGoToStart() bool ViewController::isCameraMoving() { if (mCurrentView) { - if (mCamera.r3().x() - -mCurrentView->getPosition().x() != 0 || - mCamera.r3().y() - -mCurrentView->getPosition().y() != 0) + if (mCamera[3].x - -mCurrentView->getPosition().x != 0.0f || + mCamera[3].y - -mCurrentView->getPosition().y != 0.0f) return true; } return false; @@ -245,8 +245,8 @@ void ViewController::cancelViewTransitions() { if (Settings::getInstance()->getString("TransitionStyle") == "slide") { if (isCameraMoving()) { - mCamera.r3().x() = -mCurrentView->getPosition().x(); - mCamera.r3().y() = -mCurrentView->getPosition().y(); + mCamera[3].x = -mCurrentView->getPosition().x; + mCamera[3].y = -mCurrentView->getPosition().y; stopAllAnimations(); } // mSkipView is used when skipping through the gamelists in quick succession. @@ -285,8 +285,8 @@ int ViewController::getSystemId(SystemData* system) void ViewController::restoreViewPosition() { if (mPreviousView) { - Vector3f restorePosition = mPreviousView->getPosition(); - restorePosition.x() = mWrapPreviousPositionX; + glm::vec3 restorePosition = mPreviousView->getPosition(); + restorePosition.x = mWrapPreviousPositionX; mPreviousView->setPosition(restorePosition); mWrapPreviousPositionX = 0; mWrappedViews = false; @@ -320,7 +320,7 @@ void ViewController::goToSystemView(SystemData* system, bool playTransition) auto systemList = getSystemListView(); systemList->setPosition(getSystemId(system) * static_cast(Renderer::getScreenWidth()), - systemList->getPosition().y()); + systemList->getPosition().y); systemList->goToSystem(system, false); mCurrentView = systemList; @@ -328,21 +328,21 @@ void ViewController::goToSystemView(SystemData* system, bool playTransition) // Application startup animation. if (applicationStartup) { - mCamera.translation() = -mCurrentView->getPosition(); + mCamera = glm::translate(mCamera, -mCurrentView->getPosition()); if (Settings::getInstance()->getString("TransitionStyle") == "slide") { if (getSystemListView()->getCarouselType() == CarouselType::HORIZONTAL || getSystemListView()->getCarouselType() == CarouselType::HORIZONTAL_WHEEL) - mCamera.translation().y() += Renderer::getScreenHeight(); + mCamera[3].y += static_cast(Renderer::getScreenHeight()); else - mCamera.translation().x() -= Renderer::getScreenWidth(); + mCamera[3].x -= static_cast(Renderer::getScreenWidth()); updateHelpPrompts(); } else if (Settings::getInstance()->getString("TransitionStyle") == "fade") { if (getSystemListView()->getCarouselType() == CarouselType::HORIZONTAL || getSystemListView()->getCarouselType() == CarouselType::HORIZONTAL_WHEEL) - mCamera.translation().y() += Renderer::getScreenHeight(); + mCamera[3].y += static_cast(Renderer::getScreenHeight()); else - mCamera.translation().x() += Renderer::getScreenWidth(); + mCamera[3].x += static_cast(Renderer::getScreenWidth()); } else { updateHelpPrompts(); @@ -444,13 +444,13 @@ void ViewController::goToGameList(SystemData* system) if (mState.viewing == SYSTEM_SELECT) { // Move the system list. auto sysList = getSystemListView(); - float offsetX = sysList->getPosition().x(); + float offsetX = sysList->getPosition().x; int sysId = getSystemId(system); sysList->setPosition(sysId * static_cast(Renderer::getScreenWidth()), - sysList->getPosition().y()); - offsetX = sysList->getPosition().x() - offsetX; - mCamera.translation().x() -= offsetX; + sysList->getPosition().y); + offsetX = sysList->getPosition().x - offsetX; + mCamera[3].x -= offsetX; } // If we are wrapping around, either from the first to last system, or the other way @@ -458,30 +458,30 @@ void ViewController::goToGameList(SystemData* system) // movements will be correct. This is accomplished by simply offsetting the X position // with the position of the first or last system plus the screen width. if (wrapFirstToLast) { - Vector3f currentPosition = mCurrentView->getPosition(); - mWrapPreviousPositionX = currentPosition.x(); - float offsetX = getGameListView(system)->getPosition().x(); + glm::vec3 currentPosition = mCurrentView->getPosition(); + mWrapPreviousPositionX = currentPosition.x; + float offsetX = getGameListView(system)->getPosition().x; // This is needed to move the camera in the correct direction if there are only two systems. if (SystemData::sSystemVector.size() == 2 && mNextSystem) offsetX -= Renderer::getScreenWidth(); else offsetX += Renderer::getScreenWidth(); - currentPosition.x() = offsetX; + currentPosition.x = offsetX; mCurrentView->setPosition(currentPosition); - mCamera.translation().x() -= offsetX; + mCamera[3].x -= offsetX; mWrappedViews = true; } else if (wrapLastToFirst) { - Vector3f currentPosition = mCurrentView->getPosition(); - mWrapPreviousPositionX = currentPosition.x(); - float offsetX = getGameListView(system)->getPosition().x(); + glm::vec3 currentPosition = mCurrentView->getPosition(); + mWrapPreviousPositionX = currentPosition.x; + float offsetX = getGameListView(system)->getPosition().x; if (SystemData::sSystemVector.size() == 2 && !mNextSystem) offsetX += Renderer::getScreenWidth(); else offsetX -= Renderer::getScreenWidth(); - currentPosition.x() = offsetX; + currentPosition.x = offsetX; mCurrentView->setPosition(currentPosition); - mCamera.translation().x() = -offsetX; + mCamera[3].x = -offsetX; mWrappedViews = true; } @@ -489,13 +489,13 @@ void ViewController::goToGameList(SystemData* system) // Application startup animation, if starting in a gamelist rather than in the system view. if (mState.viewing == NOTHING) { - mCamera.translation() = -mCurrentView->getPosition(); + mCamera = glm::translate(mCamera, -mCurrentView->getPosition()); if (Settings::getInstance()->getString("TransitionStyle") == "slide") { - mCamera.translation().y() -= Renderer::getScreenHeight(); + mCamera[3].y -= static_cast(Renderer::getScreenHeight()); updateHelpPrompts(); } else if (Settings::getInstance()->getString("TransitionStyle") == "fade") { - mCamera.translation().y() += Renderer::getScreenHeight() * 2; + mCamera[3].y += static_cast(Renderer::getScreenHeight() * 2); } else { updateHelpPrompts(); @@ -528,13 +528,13 @@ void ViewController::playViewTransition(bool instant) { mCancelledTransition = false; - Vector3f target(Vector3f::Zero()); + glm::vec3 target {}; if (mCurrentView) target = mCurrentView->getPosition(); // No need to animate, we're not going anywhere (probably due to goToNextGamelist() // or goToPrevGamelist() being called when there's only 1 system). - if (target == -mCamera.translation() && !isAnimationPlaying(0)) + if (target == static_cast(-mCamera[3]) && !isAnimationPlaying(0)) return; std::string transition_style = Settings::getInstance()->getString("TransitionStyle"); @@ -542,7 +542,9 @@ void ViewController::playViewTransition(bool instant) if (instant || transition_style == "instant") { setAnimation(new LambdaAnimation( [this, target](float /*t*/) { - this->mCamera.translation() = -target; + this->mCamera[3].x = -target.x; + this->mCamera[3].y = -target.y; + this->mCamera[3].z = -target.z; if (mPreviousView) mPreviousView->onHide(); }, @@ -571,14 +573,16 @@ void ViewController::playViewTransition(bool instant) const static int FADE_WAIT = 200; // Time to wait between in/out. setAnimation(new LambdaAnimation(fadeFunc, FADE_DURATION), 0, [this, fadeFunc, fadeCallback, target] { - this->mCamera.translation() = -target; + this->mCamera[3].x = -target.x; + this->mCamera[3].y = -target.y; + this->mCamera[3].z = -target.z; updateHelpPrompts(); setAnimation(new LambdaAnimation(fadeFunc, FADE_DURATION), FADE_WAIT, fadeCallback, true); }); // Fast-forward animation if we're partway faded. - if (target == -mCamera.translation()) { + if (target == static_cast(-mCamera[3])) { // Not changing screens, so cancel the first half entirely. advanceAnimation(0, FADE_DURATION); advanceAnimation(0, FADE_WAIT); @@ -848,16 +852,17 @@ void ViewController::update(int deltaTime) } } -void ViewController::render(const Transform4x4f& parentTrans) +void ViewController::render(const glm::mat4& parentTrans) { - Transform4x4f trans = mCamera * parentTrans; - Transform4x4f transInverse; - transInverse.invert(trans); + glm::mat4 trans = mCamera * parentTrans; + glm::mat4 transInverse; + transInverse = glm::inverse(trans); // Camera position, position + size. - Vector3f viewStart = transInverse.translation(); - Vector3f viewEnd = transInverse * Vector3f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight(), 0)); + glm::vec3 viewStart = transInverse[3]; + glm::vec3 viewEnd = { std::fabs(trans[3].x) + static_cast(Renderer::getScreenWidth()), + std::fabs(trans[3].y) + static_cast(Renderer::getScreenHeight()), + 0.0f }; // Keep track of UI mode changes. UIModeController::getInstance()->monitorUIMode(); @@ -872,12 +877,13 @@ void ViewController::render(const Transform4x4f& parentTrans) // Same thing as for the system view, limit the rendering only to what needs to be drawn. if (it->second == mCurrentView || (it->second == mPreviousView && isCameraMoving())) { // Clipping. - Vector3f guiStart = it->second->getPosition(); - Vector3f guiEnd = it->second->getPosition() + - Vector3f(it->second->getSize().x(), it->second->getSize().y(), 0); + glm::vec3 guiStart = it->second->getPosition(); + glm::vec3 guiEnd = + it->second->getPosition() + + glm::vec3(it->second->getSize().x(), it->second->getSize().y(), 0.0f); - if (guiEnd.x() >= viewStart.x() && guiEnd.y() >= viewStart.y() && - guiStart.x() <= viewEnd.x() && guiStart.y() <= viewEnd.y()) + if (guiEnd.x >= viewStart.x && guiEnd.y >= viewStart.y && guiStart.x <= viewEnd.x && + guiStart.y <= viewEnd.y) it->second->render(trans); } } @@ -1000,7 +1006,7 @@ void ViewController::reloadAll() SystemData* system = mState.getSystem(); mSystemListView->goToSystem(system, false); mCurrentView = mSystemListView; - mCamera.r3().x() = 0; + mCamera[3].x = 0.0f; } else { goToSystemView(SystemData::sSystemVector.front(), false); diff --git a/es-app/src/views/ViewController.h b/es-app/src/views/ViewController.h index 17d5f78ee..ee1bcc211 100644 --- a/es-app/src/views/ViewController.h +++ b/es-app/src/views/ViewController.h @@ -78,7 +78,7 @@ public: bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; enum ViewMode { NOTHING, // Replace with AllowShortEnumsOnASingleLine: false (clang-format >=11.0). @@ -152,7 +152,7 @@ private: FileData* mGameToLaunch; State mState; - Transform4x4f mCamera; + glm::mat4 mCamera; bool mSystemViewTransition; bool mWrappedViews; float mWrapPreviousPositionX; diff --git a/es-app/src/views/gamelist/DetailedGameListView.cpp b/es-app/src/views/gamelist/DetailedGameListView.cpp index 7d4ea3baa..b5ab5d046 100644 --- a/es-app/src/views/gamelist/DetailedGameListView.cpp +++ b/es-app/src/views/gamelist/DetailedGameListView.cpp @@ -45,7 +45,7 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) { const float padding = 0.01f; - mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y()); + mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y); mList.setSize(mSize.x() * (0.50f - padding), mList.getSize().y()); mList.setAlignment(TextListComponent::ALIGN_LEFT); mList.setCursorChangedCallback([&](const CursorState& /*state*/) { updateInfoPanel(); }); @@ -69,7 +69,7 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) // Image. mImage.setOrigin(0.5f, 0.5f); - mImage.setPosition(mSize.x() * 0.25f, mList.getPosition().y() + mSize.y() * 0.2125f); + mImage.setPosition(mSize.x() * 0.25f, mList.getPosition().y + mSize.y() * 0.2125f); mImage.setMaxSize(mSize.x() * (0.50f - 2 * padding), mSize.y() * 0.4f); mImage.setDefaultZIndex(30); addChild(&mImage); @@ -110,7 +110,7 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); mDescContainer.setSize(mSize.x() * (0.50f - 2.0f * padding), - mSize.y() - mDescContainer.getPosition().y()); + mSize.y() - mDescContainer.getPosition().y); mDescContainer.setAutoScroll(true); mDescContainer.setDefaultZIndex(40); addChild(&mDescContainer); @@ -172,7 +172,7 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr& them mGamelistInfo.applyTheme(theme, getName(), "gamelistInfo", ALL ^ ThemeFlags::TEXT); // If there is no position defined in the theme for gamelistInfo, then hide it. - if (mGamelistInfo.getPosition() == 0) + if (mGamelistInfo.getPosition() == glm::vec3 {}) mGamelistInfo.setVisible(false); else mGamelistInfo.setVisible(true); @@ -187,21 +187,21 @@ void DetailedGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - Vector3f start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); + glm::vec3 start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); const float colSize = (mSize.x() * 0.48f) / colCount; const float rowPadding = 0.01f * mSize.y(); for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; - Vector3f pos(0.0f, 0.0f, 0.0f); + glm::vec3 pos {}; if (row == 0) { - pos = start + Vector3f(colSize * (i / rowCount), 0, 0); + pos = start + glm::vec3(colSize * (i / rowCount), 0.0f, 0.0f); } else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + Vector3f(0, lc->getSize().y() + rowPadding, 0); + pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y() + rowPadding, 0.0f); } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); @@ -231,19 +231,19 @@ void DetailedGameListView::initMDValues() for (unsigned int i = 0; i < labels.size(); i++) { const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - Vector3f(labels[i]->getSize().x(), heightDiff, 0)); + glm::vec3(labels[i]->getSize().x(), heightDiff, 0.0f)); values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); values[i]->setDefaultZIndex(40.0f); - float testBot = values[i]->getPosition().y() + values[i]->getSize().y(); + float testBot = values[i]->getPosition().y + values[i]->getSize().y(); if (testBot > bottom) bottom = testBot; } - mDescContainer.setPosition(mDescContainer.getPosition().x(), bottom + mSize.y() * 0.01f); + mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y() * 0.01f); mDescContainer.setSize(mDescContainer.getSize().x(), - mSize.y() - mDescContainer.getPosition().y()); + mSize.y() - mDescContainer.getPosition().y); } void DetailedGameListView::updateInfoPanel() diff --git a/es-app/src/views/gamelist/GridGameListView.cpp b/es-app/src/views/gamelist/GridGameListView.cpp index c30339ea0..7b7a812c8 100644 --- a/es-app/src/views/gamelist/GridGameListView.cpp +++ b/es-app/src/views/gamelist/GridGameListView.cpp @@ -90,7 +90,7 @@ GridGameListView::GridGameListView(Window* window, FileData* root) mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); mDescContainer.setSize(mSize.x() * (0.50f - 2.0f * padding), - mSize.y() - mDescContainer.getPosition().y()); + mSize.y() - mDescContainer.getPosition().y); mDescContainer.setAutoScroll(true); mDescContainer.setDefaultZIndex(40); addChild(&mDescContainer); @@ -277,7 +277,7 @@ void GridGameListView::onThemeChanged(const std::shared_ptr& theme) mGamelistInfo.applyTheme(theme, getName(), "gamelistInfo", ALL ^ ThemeFlags::TEXT); // If there is no position defined in the theme for gamelistInfo, then hide it. - if (mGamelistInfo.getPosition() == 0) + if (mGamelistInfo.getPosition() == glm::vec3 {}) mGamelistInfo.setVisible(false); else mGamelistInfo.setVisible(true); @@ -298,21 +298,21 @@ void GridGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - Vector3f start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); + glm::vec3 start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); const float colSize = (mSize.x() * 0.48f) / colCount; const float rowPadding = 0.01f * mSize.y(); for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; - Vector3f pos(0.0f, 0.0f, 0.0f); + glm::vec3 pos {}; if (row == 0) { - pos = start + Vector3f(colSize * (i / rowCount), 0, 0); + pos = start + glm::vec3(colSize * (i / rowCount), 0.0f, 0.0f); } else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + Vector3f(0, lc->getSize().y() + rowPadding, 0); + pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y() + rowPadding, 0.0f); } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); @@ -342,18 +342,18 @@ void GridGameListView::initMDValues() for (unsigned int i = 0; i < labels.size(); i++) { const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - Vector3f(labels[i]->getSize().x(), heightDiff, 0)); + glm::vec3(labels[i]->getSize().x(), heightDiff, 0.0f)); values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); values[i]->setDefaultZIndex(40); - float testBot = values[i]->getPosition().y() + values[i]->getSize().y(); + float testBot = values[i]->getPosition().y + values[i]->getSize().y(); if (testBot > bottom) bottom = testBot; } - mDescContainer.setPosition(mDescContainer.getPosition().x(), bottom + mSize.y() * 0.01f); + mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y() * 0.01f); mDescContainer.setSize(mDescContainer.getSize().x(), - mSize.y() - mDescContainer.getPosition().y()); + mSize.y() - mDescContainer.getPosition().y); } void GridGameListView::updateInfoPanel() diff --git a/es-app/src/views/gamelist/IGameListView.cpp b/es-app/src/views/gamelist/IGameListView.cpp index 64df0456f..651fc87a9 100644 --- a/es-app/src/views/gamelist/IGameListView.cpp +++ b/es-app/src/views/gamelist/IGameListView.cpp @@ -60,15 +60,15 @@ HelpStyle IGameListView::getHelpStyle() return style; } -void IGameListView::render(const Transform4x4f& parentTrans) +void IGameListView::render(const glm::mat4& parentTrans) { - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); - float scaleX = trans.r0().x(); - float scaleY = trans.r1().y(); + float scaleX = trans[0].x; + float scaleY = trans[1].y; - Vector2i pos(static_cast(std::round(trans.translation()[0])), - static_cast(std::round(trans.translation()[1]))); + Vector2i pos(static_cast(std::round(trans[3].x)), + static_cast(std::round(trans[3].y))); Vector2i size(static_cast(std::round(mSize.x() * scaleX)), static_cast(std::round(mSize.y() * scaleY))); diff --git a/es-app/src/views/gamelist/IGameListView.h b/es-app/src/views/gamelist/IGameListView.h index b1c39ac5e..853aa925e 100644 --- a/es-app/src/views/gamelist/IGameListView.h +++ b/es-app/src/views/gamelist/IGameListView.h @@ -54,7 +54,7 @@ public: virtual HelpStyle getHelpStyle() override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; protected: FileData* mRoot; diff --git a/es-app/src/views/gamelist/VideoGameListView.cpp b/es-app/src/views/gamelist/VideoGameListView.cpp index a1ddd7278..c1b2f8df4 100644 --- a/es-app/src/views/gamelist/VideoGameListView.cpp +++ b/es-app/src/views/gamelist/VideoGameListView.cpp @@ -64,7 +64,7 @@ VideoGameListView::VideoGameListView(Window* window, FileData* root) mVideo = new VideoFFmpegComponent(window); #endif - mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y()); + mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y); mList.setSize(mSize.x() * (0.50f - padding), mList.getSize().y()); mList.setAlignment(TextListComponent::ALIGN_LEFT); mList.setCursorChangedCallback([&](const CursorState& /*state*/) { updateInfoPanel(); }); @@ -127,7 +127,7 @@ VideoGameListView::VideoGameListView(Window* window, FileData* root) mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); mDescContainer.setSize(mSize.x() * (0.50f - 2.0f * padding), - mSize.y() - mDescContainer.getPosition().y()); + mSize.y() - mDescContainer.getPosition().y); mDescContainer.setAutoScroll(true); mDescContainer.setDefaultZIndex(40); addChild(&mDescContainer); @@ -194,7 +194,7 @@ void VideoGameListView::onThemeChanged(const std::shared_ptr& theme) mGamelistInfo.applyTheme(theme, getName(), "gamelistInfo", ALL ^ ThemeFlags::TEXT); // If there is no position defined in the theme for gamelistInfo, then hide it. - if (mGamelistInfo.getPosition() == 0) + if (mGamelistInfo.getPosition() == glm::vec3 {}) mGamelistInfo.setVisible(false); else mGamelistInfo.setVisible(true); @@ -209,21 +209,21 @@ void VideoGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - Vector3f start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); + glm::vec3 start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); const float colSize = (mSize.x() * 0.48f) / colCount; const float rowPadding = 0.01f * mSize.y(); for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; - Vector3f pos(0.0f, 0.0f, 0.0f); + glm::vec3 pos {}; if (row == 0) { - pos = start + Vector3f(colSize * (i / rowCount), 0, 0); + pos = start + glm::vec3(colSize * (i / rowCount), 0.0f, 0.0f); } else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + Vector3f(0, lc->getSize().y() + rowPadding, 0); + pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y() + rowPadding, 0.0f); } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); @@ -253,19 +253,19 @@ void VideoGameListView::initMDValues() for (unsigned int i = 0; i < labels.size(); i++) { const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - Vector3f(labels[i]->getSize().x(), heightDiff, 0)); + glm::vec3(labels[i]->getSize().x(), heightDiff, 0.0f)); values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); values[i]->setDefaultZIndex(40); - float testBot = values[i]->getPosition().y() + values[i]->getSize().y(); + float testBot = values[i]->getPosition().y + values[i]->getSize().y(); if (testBot > bottom) bottom = testBot; } - mDescContainer.setPosition(mDescContainer.getPosition().x(), bottom + mSize.y() * 0.01f); + mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y() * 0.01f); mDescContainer.setSize(mDescContainer.getSize().x(), - mSize.y() - mDescContainer.getPosition().y()); + mSize.y() - mDescContainer.getPosition().y); } void VideoGameListView::updateInfoPanel() diff --git a/es-core/src/GuiComponent.cpp b/es-core/src/GuiComponent.cpp index d3cf8e09e..d16106195 100644 --- a/es-core/src/GuiComponent.cpp +++ b/es-core/src/GuiComponent.cpp @@ -24,11 +24,11 @@ GuiComponent::GuiComponent(Window* window) , mColorShiftEnd(0) , mOpacity(255) , mSaturation(1.0f) - , mPosition(Vector3f::Zero()) + , mPosition({}) , mOrigin(Vector2f::Zero()) , mRotationOrigin(0.5f, 0.5f) , mSize(Vector2f::Zero()) - , mTransform(Transform4x4f::Identity()) + , mTransform(Renderer::getIdentity()) , mIsProcessing(false) , mVisible(true) , mEnabled(true) @@ -78,16 +78,16 @@ void GuiComponent::update(int deltaTime) updateChildren(deltaTime); } -void GuiComponent::render(const Transform4x4f& parentTrans) +void GuiComponent::render(const glm::mat4& parentTrans) { if (!isVisible()) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); renderChildren(trans); } -void GuiComponent::renderChildren(const Transform4x4f& transform) const +void GuiComponent::renderChildren(const glm::mat4& transform) const { for (unsigned int i = 0; i < getChildCount(); i++) getChild(i)->render(transform); @@ -95,7 +95,7 @@ void GuiComponent::renderChildren(const Transform4x4f& transform) const void GuiComponent::setPosition(float x, float y, float z) { - mPosition = Vector3f(x, y, z); + mPosition = glm::vec3(x, y, z); onPositionChanged(); } @@ -113,8 +113,8 @@ void GuiComponent::setSize(float w, float h) Vector2f GuiComponent::getCenter() const { - return Vector2f(mPosition.x() - (getSize().x() * mOrigin.x()) + getSize().x() / 2.0f, - mPosition.y() - (getSize().y() * mOrigin.y()) + getSize().y() / 2.0f); + return Vector2f(mPosition.x - (getSize().x() * mOrigin.x()) + getSize().x() / 2.0f, + mPosition.y - (getSize().y() * mOrigin.y()) + getSize().y() / 2.0f); } void GuiComponent::addChild(GuiComponent* cmp) @@ -171,13 +171,13 @@ void GuiComponent::setOpacity(unsigned char opacity) (*it)->setOpacity(opacity); } -const Transform4x4f& GuiComponent::getTransform() +const glm::mat4& GuiComponent::getTransform() { - mTransform = Transform4x4f::Identity(); - mTransform.translate(mPosition); + mTransform = Renderer::getIdentity(); + mTransform = glm::translate(mTransform, mPosition); if (mScale != 1.0f) - mTransform.scale(mScale); + mTransform = glm::scale(mTransform, glm::vec3(mScale)); if (mRotation != 0.0f) { // Calculate offset as difference between origin and rotation origin. @@ -187,17 +187,18 @@ const Transform4x4f& GuiComponent::getTransform() // Transform to offset point. if (xOff != 0.0f || yOff != 0.0f) - mTransform.translate(Vector3f(xOff * -1.0f, yOff * -1.0f, 0.0f)); + mTransform = glm::translate(mTransform, glm::vec3(xOff * -1.0f, yOff * -1.0f, 0.0f)); // Apply rotation transform. - mTransform.rotateZ(mRotation); + mTransform = glm::rotate(mTransform, mRotation, glm::vec3(0.0f, 0.0f, 1.0f)); // Transform back to original point. if (xOff != 0.0f || yOff != 0.0f) - mTransform.translate(Vector3f(xOff, yOff, 0.0f)); + mTransform = glm::translate(mTransform, glm::vec3(xOff, yOff, 0.0f)); } - mTransform.translate( - Vector3f(mOrigin.x() * mSize.x() * -1.0f, mOrigin.y() * mSize.y() * -1.0f, 0.0f)); + mTransform = glm::translate(mTransform, glm::vec3(mOrigin.x() * mSize.x() * -1.0f, + mOrigin.y() * mSize.y() * -1.0f, 0.0f)); + return mTransform; } @@ -312,7 +313,7 @@ void GuiComponent::applyTheme(const std::shared_ptr& theme, using namespace ThemeFlags; if (properties & POSITION && elem->has("pos")) { Vector2f denormalized = elem->get("pos") * scale; - setPosition(Vector3f(denormalized.x(), denormalized.y(), 0)); + setPosition(glm::vec3(denormalized.x(), denormalized.y(), 0.0f)); } if (properties & ThemeFlags::SIZE && elem->has("size")) diff --git a/es-core/src/GuiComponent.h b/es-core/src/GuiComponent.h index 83901040f..09d5b8847 100644 --- a/es-core/src/GuiComponent.h +++ b/es-core/src/GuiComponent.h @@ -14,7 +14,6 @@ #include "InputConfig.h" #include "animations/AnimationController.h" #include "math/Misc.h" -#include "math/Transform4x4f.h" #include #include @@ -45,8 +44,8 @@ public: virtual void textInput(const std::string& text); // Called when input is received. - // Return true if the input is consumed, false if - // it should continue to be passed to other children. + // Return true if the input is consumed, false if it should continue to be passed + // to other children. virtual bool input(InputConfig* config, Input input); // Called when time passes. @@ -56,18 +55,19 @@ public: virtual void update(int deltaTime); // Called when it's time to render. - // By default, just calls renderChildren(parentTrans * getTransform()). - // You probably want to override this like so: - // 1. Calculate the new transform that your control will draw at with - // Transform4x4f t = parentTrans * getTransform(). + // By default, just calls renderChildren(parentTrans * getTransform()) + // Normally the following steps are required: + // 1. Calculate the new transform that your component will draw at + // glm::mat4 trans = parentTrans * getTransform(); // 2. Set the renderer to use that new transform as the model matrix - // Renderer::setMatrix(t); - // 3. Draw your component. - // 4. Tell your children to render, based on your component's transform - renderChildren(t). - virtual void render(const Transform4x4f& parentTrans); + // Renderer::setMatrix(trans); + // 3. Draw your component + // 4. Tell your children to render, based on your component's transform + // renderChildren(trans); + virtual void render(const glm::mat4& parentTrans); - Vector3f getPosition() const { return mPosition; } - void setPosition(const Vector3f& offset) { setPosition(offset.x(), offset.y(), offset.z()); } + glm::vec3 getPosition() const { return mPosition; } + void setPosition(const glm::vec3& offset) { setPosition(offset.x, offset.y, offset.z); } void setPosition(float x, float y, float z = 0.0f); virtual void onPositionChanged() {} @@ -98,7 +98,7 @@ public: void setRotation(float rotation) { mRotation = rotation; } void setRotationDegrees(float rotation) { - setRotation(static_cast(ES_DEG_TO_RAD(rotation))); + setRotation(static_cast(glm::radians(rotation))); } float getScale() const { return mScale; } @@ -183,7 +183,7 @@ public: virtual std::shared_ptr getFont() const { return nullptr; } - const Transform4x4f& getTransform(); + const glm::mat4& getTransform(); virtual std::string getValue() const { return ""; } virtual void setValue(const std::string& value) {} @@ -231,7 +231,7 @@ public: const static unsigned char MAX_ANIMATIONS = 4; protected: - void renderChildren(const Transform4x4f& transform) const; + void renderChildren(const glm::mat4& transform) const; void updateSelf(int deltaTime); // Updates animations. void updateChildren(int deltaTime); // Updates animations. @@ -249,7 +249,7 @@ protected: GuiComponent* mParent; std::vector mChildren; - Vector3f mPosition; + glm::vec3 mPosition; Vector2f mOrigin; Vector2f mRotationOrigin; Vector2f mSize; @@ -265,8 +265,8 @@ protected: bool mEnabled; private: - // Don't access this directly! Use getTransform()! - Transform4x4f mTransform; + // Don't access this directly, instead use getTransform(). + glm::mat4 mTransform; AnimationController* mAnimationMap[MAX_ANIMATIONS]; }; diff --git a/es-core/src/Window.cpp b/es-core/src/Window.cpp index e1820ecc6..f7580ce9b 100644 --- a/es-core/src/Window.cpp +++ b/es-core/src/Window.cpp @@ -18,6 +18,7 @@ #include "InputManager.h" #include "Log.h" #include "Sound.h" +#include "math/Misc.h" #include "resources/Font.h" #include @@ -348,7 +349,7 @@ void Window::update(int deltaTime) void Window::render() { - Transform4x4f transform = Transform4x4f::Identity(); + glm::mat4 trans = Renderer::getIdentity(); mRenderedHelpPrompts = false; @@ -378,7 +379,7 @@ void Window::render() renderBottom = false; if (renderBottom) - bottom->render(transform); + bottom->render(trans); if (bottom != top || mRenderLaunchScreen) { #if defined(USE_OPENGL_21) @@ -468,7 +469,7 @@ void Window::render() } #endif // USE_OPENGL_21 - mBackgroundOverlay->render(transform); + mBackgroundOverlay->render(trans); // Scale-up menu opening effect. if (Settings::getInstance()->getString("MenuOpeningEffect") == "scale-up") { @@ -482,7 +483,7 @@ void Window::render() } if (!mRenderLaunchScreen) - top->render(transform); + top->render(trans); } else { mCachedBackground = false; @@ -493,7 +494,7 @@ void Window::render() // Render the quick list scrolling overlay, which is triggered in IList. if (mListScrollOpacity != 0) { - Renderer::setMatrix(Transform4x4f::Identity()); + Renderer::setMatrix(Renderer::getIdentity()); Renderer::drawRect(0.0f, 0.0f, static_cast(Renderer::getScreenWidth()), static_cast(Renderer::getScreenHeight()), 0x00000000 | mListScrollOpacity, 0x00000000 | mListScrollOpacity); @@ -509,7 +510,7 @@ void Window::render() } if (!mRenderedHelpPrompts) - mHelp->render(transform); + mHelp->render(trans); unsigned int screensaverTimer = static_cast(Settings::getInstance()->getInt("ScreensaverTimer")); @@ -531,7 +532,7 @@ void Window::render() renderScreensaver(); if (!mRenderScreensaver && mInfoPopup) - mInfoPopup->render(transform); + mInfoPopup->render(trans); if (mTimeSinceLastInput >= screensaverTimer && screensaverTimer != 0) { if (!isProcessing() && mAllowSleep && (!mScreensaver)) { @@ -550,14 +551,14 @@ void Window::render() mLaunchScreen->render(); if (Settings::getInstance()->getBool("DisplayGPUStatistics") && mFrameDataText) { - Renderer::setMatrix(Transform4x4f::Identity()); + Renderer::setMatrix(Renderer::getIdentity()); mDefaultFonts.at(1)->renderTextCache(mFrameDataText.get()); } } void Window::renderLoadingScreen(std::string text) { - Transform4x4f trans = Transform4x4f::Identity(); + glm::mat4 trans = Renderer::getIdentity(); Renderer::setMatrix(trans); Renderer::drawRect(0.0f, 0.0f, static_cast(Renderer::getScreenWidth()), static_cast(Renderer::getScreenHeight()), 0x000000FF, 0x000000FF); @@ -574,7 +575,7 @@ void Window::renderLoadingScreen(std::string text) float x = std::round((Renderer::getScreenWidth() - cache->metrics.size.x()) / 2.0f); float y = std::round(Renderer::getScreenHeight() * 0.835f); - trans = trans.translate(Vector3f(x, y, 0.0f)); + trans = glm::translate(trans, glm::vec3(x, y, 0.0f)); Renderer::setMatrix(trans); font->renderTextCache(cache); delete cache; @@ -590,7 +591,7 @@ void Window::renderListScrollOverlay(unsigned char opacity, const std::string& t void Window::renderHelpPromptsEarly() { - mHelp->render(Transform4x4f::Identity()); + mHelp->render(Renderer::getIdentity()); mRenderedHelpPrompts = true; } diff --git a/es-core/src/Window.h b/es-core/src/Window.h index 5201b2902..b5d771b79 100644 --- a/es-core/src/Window.h +++ b/es-core/src/Window.h @@ -26,7 +26,6 @@ class HelpComponent; class ImageComponent; class InputConfig; class TextCache; -class Transform4x4f; struct HelpStyle; class Window @@ -77,7 +76,7 @@ public: class InfoPopup { public: - virtual void render(const Transform4x4f& parentTrans) = 0; + virtual void render(const glm::mat4& parentTrans) = 0; virtual void stop() = 0; virtual ~InfoPopup() {} }; diff --git a/es-core/src/components/AnimatedImageComponent.cpp b/es-core/src/components/AnimatedImageComponent.cpp index 64cbc2b81..a77e917c9 100644 --- a/es-core/src/components/AnimatedImageComponent.cpp +++ b/es-core/src/components/AnimatedImageComponent.cpp @@ -86,7 +86,7 @@ void AnimatedImageComponent::update(int deltaTime) } } -void AnimatedImageComponent::render(const Transform4x4f& trans) +void AnimatedImageComponent::render(const glm::mat4& trans) { if (mFrames.size()) mFrames.at(mCurrentFrame).first->render(getTransform() * trans); diff --git a/es-core/src/components/AnimatedImageComponent.h b/es-core/src/components/AnimatedImageComponent.h index 09f604b29..7294de6bb 100644 --- a/es-core/src/components/AnimatedImageComponent.h +++ b/es-core/src/components/AnimatedImageComponent.h @@ -34,7 +34,7 @@ public: void reset(); // Set to frame 0. void update(int deltaTime) override; - void render(const Transform4x4f& trans) override; + void render(const glm::mat4& trans) override; void onSizeChanged() override; diff --git a/es-core/src/components/ButtonComponent.cpp b/es-core/src/components/ButtonComponent.cpp index 06d7032d4..0ecfea88b 100644 --- a/es-core/src/components/ButtonComponent.cpp +++ b/es-core/src/components/ButtonComponent.cpp @@ -32,7 +32,7 @@ ButtonComponent::ButtonComponent(Window* window, void ButtonComponent::onSizeChanged() { // Fit to mBox. - mBox.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBox.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); } bool ButtonComponent::input(InputConfig* config, Input input) @@ -93,21 +93,21 @@ void ButtonComponent::updateImage() mBox.setImagePath(mFocused ? ":/graphics/button_filled.svg" : ":/graphics/button.svg"); } -void ButtonComponent::render(const Transform4x4f& parentTrans) +void ButtonComponent::render(const glm::mat4& parentTrans) { - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); mBox.render(trans); if (mTextCache) { - Vector3f centerOffset((mSize.x() - mTextCache->metrics.size.x()) / 2.0f, - (mSize.y() - mTextCache->metrics.size.y()) / 2.0f, 0); - trans = trans.translate(centerOffset); + glm::vec3 centerOffset((mSize.x() - mTextCache->metrics.size.x()) / 2.0f, + (mSize.y() - mTextCache->metrics.size.y()) / 2.0f, 0.0f); + trans = glm::translate(trans, centerOffset); if (Settings::getInstance()->getBool("DebugText")) { - Renderer::drawRect(centerOffset.x(), 0.0f, mTextCache->metrics.size.x(), mSize.y(), + Renderer::drawRect(centerOffset.x, 0.0f, mTextCache->metrics.size.x(), mSize.y(), 0x00000033, 0x00000033); - Renderer::drawRect(mBox.getPosition().x(), 0.0f, mBox.getSize().x(), mSize.y(), + Renderer::drawRect(mBox.getPosition().x, 0.0f, mBox.getSize().x(), mSize.y(), 0x0000FF33, 0x0000FF33); } @@ -115,7 +115,7 @@ void ButtonComponent::render(const Transform4x4f& parentTrans) mTextCache->setColor(getCurTextColor()); mFont->renderTextCache(mTextCache.get()); - trans = trans.translate(-centerOffset); + trans = glm::translate(trans, -centerOffset); } renderChildren(trans); diff --git a/es-core/src/components/ButtonComponent.h b/es-core/src/components/ButtonComponent.h index fd2c59171..75f3c4660 100644 --- a/es-core/src/components/ButtonComponent.h +++ b/es-core/src/components/ButtonComponent.h @@ -26,7 +26,7 @@ public: void setEnabled(bool state) override; bool input(InputConfig* config, Input input) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void setText(const std::string& text, const std::string& helpText); diff --git a/es-core/src/components/ComponentGrid.cpp b/es-core/src/components/ComponentGrid.cpp index d8bf872d3..eac01feac 100644 --- a/es-core/src/components/ComponentGrid.cpp +++ b/es-core/src/components/ComponentGrid.cpp @@ -141,17 +141,16 @@ void ComponentGrid::updateCellComponent(const GridEntry& cell) if (cell.resize) cell.component->setSize(size); - // Position. // Find top left corner. - Vector3f pos(0, 0, 0); + glm::vec3 pos {}; for (int x = 0; x < cell.pos.x(); x++) pos[0] += getColWidth(x); for (int y = 0; y < cell.pos.y(); y++) pos[1] += getRowHeight(y); // Center component. - pos[0] = pos.x() + (size.x() - cell.component->getSize().x()) / 2; - pos[1] = pos.y() + (size.y() - cell.component->getSize().y()) / 2; + pos[0] = pos.x + (size.x() - cell.component->getSize().x()) / 2.0f; + pos[1] = pos.y + (size.y() - cell.component->getSize().y()) / 2.0f; cell.component->setPosition(pos); } @@ -360,9 +359,9 @@ void ComponentGrid::update(int deltaTime) } } -void ComponentGrid::render(const Transform4x4f& parentTrans) +void ComponentGrid::render(const glm::mat4& parentTrans) { - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); renderChildren(trans); diff --git a/es-core/src/components/ComponentGrid.h b/es-core/src/components/ComponentGrid.h index 9acd927e0..8d0b8a86a 100644 --- a/es-core/src/components/ComponentGrid.h +++ b/es-core/src/components/ComponentGrid.h @@ -50,7 +50,7 @@ public: void textInput(const std::string& text) override; bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void onSizeChanged() override; void resetCursor(); diff --git a/es-core/src/components/ComponentList.cpp b/es-core/src/components/ComponentList.cpp index 9e1edfab3..9bee26f0b 100644 --- a/es-core/src/components/ComponentList.cpp +++ b/es-core/src/components/ComponentList.cpp @@ -167,23 +167,25 @@ void ComponentList::updateCameraOffset() } } -void ComponentList::render(const Transform4x4f& parentTrans) +void ComponentList::render(const glm::mat4& parentTrans) { if (!size()) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); // Clip everything to be inside our bounds. - Vector3f dim(mSize.x(), mSize.y(), 0.0f); - dim = trans * dim - trans.translation(); + glm::vec3 dim(mSize.x(), mSize.y(), 0.0f); + dim.x = (trans[0].x * dim.x + trans[3].x) - trans[3].x; + dim.y = (trans[1].y * dim.y + trans[3].y) - trans[3].y; + Renderer::pushClipRect( - Vector2i(static_cast(std::round(trans.translation().x())), - static_cast(std::round(trans.translation().y()))), - Vector2i(static_cast(std::round(dim.x())), static_cast(std::round(dim.y())))); + Vector2i(static_cast(std::round(trans[3].x)), + static_cast(std::round(trans[3].y))), + Vector2i(static_cast(std::round(dim.x)), static_cast(std::round(dim.y)))); // Scroll the camera. - trans.translate(Vector3f(0.0f, -std::round(mCameraOffset), 0.0f)); + trans = glm::translate(trans, glm::vec3(0.0f, -std::round(mCameraOffset), 0.0f)); // Draw our entries. std::vector drawAfterCursor; @@ -243,11 +245,6 @@ void ComponentList::render(const Transform4x4f& parentTrans) // Draw selector bar. if (mFocused) { - // Inversion: src * (1 - dst) + dst * 0 = where src = 1 - // Need a function that goes roughly 0x777777 -> 0xFFFFFF - // and 0xFFFFFF -> 0x777777 - // (1 - dst) + 0x77 - const float selectedRowHeight = getRowHeight(mEntries.at(mCursor).data); if (opacity == 1) { diff --git a/es-core/src/components/ComponentList.h b/es-core/src/components/ComponentList.h index 309e2007c..c5dc392c1 100644 --- a/es-core/src/components/ComponentList.h +++ b/es-core/src/components/ComponentList.h @@ -66,7 +66,7 @@ public: void textInput(const std::string& text) override; bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; virtual std::vector getHelpPrompts() override; void onSizeChanged() override; diff --git a/es-core/src/components/DateTimeComponent.cpp b/es-core/src/components/DateTimeComponent.cpp index c1e670fce..e07001ce3 100644 --- a/es-core/src/components/DateTimeComponent.cpp +++ b/es-core/src/components/DateTimeComponent.cpp @@ -101,8 +101,9 @@ std::string DateTimeComponent::getDisplayString() const return Utils::Time::timeToString(mTime.getTime(), mFormat); } -void DateTimeComponent::render(const Transform4x4f& parentTrans) +void DateTimeComponent::render(const glm::mat4& parentTrans) { + // Render the component. TextComponent::render(parentTrans); } diff --git a/es-core/src/components/DateTimeComponent.h b/es-core/src/components/DateTimeComponent.h index 444484851..9864ffcb9 100644 --- a/es-core/src/components/DateTimeComponent.h +++ b/es-core/src/components/DateTimeComponent.h @@ -30,7 +30,7 @@ public: Vector2f size = Vector2f::Zero(), unsigned int bgcolor = 0x00000000); - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void setValue(const std::string& val) override; std::string getValue() const override; diff --git a/es-core/src/components/DateTimeEditComponent.cpp b/es-core/src/components/DateTimeEditComponent.cpp index ef91ed5f4..ab55e8520 100644 --- a/es-core/src/components/DateTimeEditComponent.cpp +++ b/es-core/src/components/DateTimeEditComponent.cpp @@ -154,9 +154,9 @@ void DateTimeEditComponent::update(int deltaTime) GuiComponent::update(deltaTime); } -void DateTimeEditComponent::render(const Transform4x4f& parentTrans) +void DateTimeEditComponent::render(const glm::mat4& parentTrans) { - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); if (mTextCache) { std::shared_ptr font = getFont(); @@ -170,18 +170,18 @@ void DateTimeEditComponent::render(const Transform4x4f& parentTrans) } // Vertically center. - Vector3f off(0, (mSize.y() - mTextCache->metrics.size.y()) / 2.0f, 0.0f); + glm::vec3 off(0.0f, (mSize.y() - mTextCache->metrics.size.y()) / 2.0f, 0.0f); if (mAlignRight) - off.x() += referenceSize - mTextCache->metrics.size.x(); - trans.translate(off); + off.x += referenceSize - mTextCache->metrics.size.x(); + trans = glm::translate(trans, off); Renderer::setMatrix(trans); if (Settings::getInstance()->getBool("DebugText")) { Renderer::setMatrix(trans); if (mTextCache->metrics.size.x() > 0) { - Renderer::drawRect(0.0f, 0.0f - off.y(), mSize.x() - off.x(), mSize.y(), 0x0000FF33, + Renderer::drawRect(0.0f, 0.0f - off.y, mSize.x() - off.x, mSize.y(), 0x0000FF33, 0x0000FF33); } Renderer::drawRect(0.0f, 0.0f, mTextCache->metrics.size.x(), diff --git a/es-core/src/components/DateTimeEditComponent.h b/es-core/src/components/DateTimeEditComponent.h index 3273fe51b..1a70a49b6 100644 --- a/es-core/src/components/DateTimeEditComponent.h +++ b/es-core/src/components/DateTimeEditComponent.h @@ -34,7 +34,7 @@ public: bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; unsigned int getColor() const override { return mColor; } - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void onSizeChanged() override; // Set how the point in time will be displayed: diff --git a/es-core/src/components/GridTileComponent.cpp b/es-core/src/components/GridTileComponent.cpp index af5a87136..ed0d00db3 100644 --- a/es-core/src/components/GridTileComponent.cpp +++ b/es-core/src/components/GridTileComponent.cpp @@ -50,9 +50,9 @@ GridTileComponent::GridTileComponent(Window* window) setVisible(true); } -void GridTileComponent::render(const Transform4x4f& parentTrans) +void GridTileComponent::render(const glm::mat4& parentTrans) { - Transform4x4f trans = getTransform() * parentTrans; + glm::mat4 trans = getTransform() * parentTrans; if (mVisible) renderChildren(trans); @@ -171,7 +171,7 @@ void GridTileComponent::setImage(const std::shared_ptr& texture void GridTileComponent::setSelected(bool selected, bool allowAnimation, - Vector3f* pPosition, + glm::vec3* pPosition, bool force) { if (mSelected == selected && !force) @@ -189,7 +189,7 @@ void GridTileComponent::setSelected(bool selected, resize(); } else { - mAnimPosition = Vector3f(pPosition->x(), pPosition->y(), pPosition->z()); + mAnimPosition = Vector3f(pPosition->x, pPosition->y, pPosition->z); auto func = [this](float t) { t -= 1; // Cubic ease out. @@ -307,7 +307,7 @@ void GridTileComponent::calcCurrentProperties() } } -Vector3f GridTileComponent::getBackgroundPosition() +glm::vec3 GridTileComponent::getBackgroundPosition() { return mBackground.getPosition() + mPosition; } diff --git a/es-core/src/components/GridTileComponent.h b/es-core/src/components/GridTileComponent.h index 6c0d600ee..bae039151 100644 --- a/es-core/src/components/GridTileComponent.h +++ b/es-core/src/components/GridTileComponent.h @@ -27,7 +27,7 @@ class GridTileComponent : public GuiComponent public: GridTileComponent(Window* window); - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, @@ -45,13 +45,13 @@ public: void setImage(const std::shared_ptr& texture); void setSelected(bool selected, bool allowAnimation = true, - Vector3f* pPosition = nullptr, + glm::vec3* pPosition = nullptr, bool force = false); void setVisible(bool visible); void forceSize(Vector2f size, float selectedZoom); - Vector3f getBackgroundPosition(); + glm::vec3 getBackgroundPosition(); virtual void update(int deltaTime) override; diff --git a/es-core/src/components/HelpComponent.cpp b/es-core/src/components/HelpComponent.cpp index dd2c526a3..66b07da3a 100644 --- a/es-core/src/components/HelpComponent.cpp +++ b/es-core/src/components/HelpComponent.cpp @@ -152,7 +152,7 @@ void HelpComponent::updateGrid() mGrid->setEntry(labels.at(i), Vector2i(col + 2, 0), false, false); } - mGrid->setPosition(Vector3f(mStyle.position.x(), mStyle.position.y(), 0.0f)); + mGrid->setPosition({ mStyle.position.x(), mStyle.position.y(), 0.0f }); mGrid->setOrigin(mStyle.origin); } @@ -187,9 +187,9 @@ void HelpComponent::setOpacity(unsigned char opacity) mGrid->getChild(i)->setOpacity(opacity); } -void HelpComponent::render(const Transform4x4f& parentTrans) +void HelpComponent::render(const glm::mat4& parentTrans) { - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); if (mGrid) mGrid->render(trans); diff --git a/es-core/src/components/HelpComponent.h b/es-core/src/components/HelpComponent.h index 19bd61aed..aa80eb170 100644 --- a/es-core/src/components/HelpComponent.h +++ b/es-core/src/components/HelpComponent.h @@ -26,7 +26,7 @@ public: void clearPrompts(); void setPrompts(const std::vector& prompts); - void render(const Transform4x4f& parent) override; + void render(const glm::mat4& parent) override; void setOpacity(unsigned char opacity) override; void setStyle(const HelpStyle& style); diff --git a/es-core/src/components/IList.h b/es-core/src/components/IList.h index 1c907a1b3..8a573540d 100644 --- a/es-core/src/components/IList.h +++ b/es-core/src/components/IList.h @@ -282,7 +282,7 @@ protected: scroll(mScrollVelocity); } - void listRenderTitleOverlay(const Transform4x4f& /*trans*/) + void listRenderTitleOverlay(const glm::mat4& /*trans*/) { if (!Settings::getInstance()->getBool("ListScrollOverlay")) return; diff --git a/es-core/src/components/ImageComponent.cpp b/es-core/src/components/ImageComponent.cpp index 253d155b5..d5a2679fc 100644 --- a/es-core/src/components/ImageComponent.cpp +++ b/es-core/src/components/ImageComponent.cpp @@ -387,12 +387,12 @@ void ImageComponent::updateColors() mVertices[3].col = colorEnd; } -void ImageComponent::render(const Transform4x4f& parentTrans) +void ImageComponent::render(const glm::mat4& parentTrans) { if (!isVisible()) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); Renderer::setMatrix(trans); if (mTexture && mOpacity > 0) { diff --git a/es-core/src/components/ImageComponent.h b/es-core/src/components/ImageComponent.h index 68da21126..718edacac 100644 --- a/es-core/src/components/ImageComponent.h +++ b/es-core/src/components/ImageComponent.h @@ -90,7 +90,7 @@ public: bool hasImage() { return static_cast(mTexture); } std::shared_ptr getTexture() { return mTexture; } - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, diff --git a/es-core/src/components/ImageGridComponent.h b/es-core/src/components/ImageGridComponent.h index b3ac4c393..22af36a65 100644 --- a/es-core/src/components/ImageGridComponent.h +++ b/es-core/src/components/ImageGridComponent.h @@ -61,7 +61,7 @@ public: bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, @@ -208,17 +208,17 @@ template void ImageGridComponent::update(int deltaTime) (*it)->update(deltaTime); } -template void ImageGridComponent::render(const Transform4x4f& parentTrans) +template void ImageGridComponent::render(const glm::mat4& parentTrans) { - Transform4x4f trans = getTransform() * parentTrans; - Transform4x4f tileTrans = trans; + glm::mat4 trans = getTransform() * parentTrans; + glm::mat4 tileTrans = trans; float offsetX = isVertical() ? 0.0f : mCamera * mCameraDirection * (mTileSize.x() + mMargin.x()); float offsetY = isVertical() ? mCamera * mCameraDirection * (mTileSize.y() + mMargin.y()) : 0.0f; - tileTrans.translate(Vector3f(offsetX, offsetY, 0.0)); + tileTrans = glm::translate(tileTrans, glm::vec3(offsetX, offsetY, 0.0f)); if (mEntriesDirty) { updateTiles(); @@ -226,11 +226,11 @@ template void ImageGridComponent::render(const Transform4x4f& pa } // Create a clipRect to hide tiles used to buffer texture loading. - float scaleX = trans.r0().x(); - float scaleY = trans.r1().y(); + float scaleX = trans[0].x; + float scaleY = trans[1].y; - Vector2i pos(static_cast(std::round(trans.translation()[0])), - static_cast(std::round(trans.translation()[1]))); + Vector2i pos(static_cast(std::round(trans[3].x)), + static_cast(std::round(trans[3].y))); Vector2i size(static_cast(std::round(mSize.x() * scaleX)), static_cast(std::round(mSize.y() * scaleY))); @@ -449,7 +449,7 @@ template void ImageGridComponent::onCursorChanged(const CursorSt } } - Vector3f oldPos = Vector3f::Zero(); + glm::vec3 oldPos {}; if (oldTile != nullptr && oldTile != newTile) { oldPos = oldTile->getBackgroundPosition(); @@ -457,7 +457,7 @@ template void ImageGridComponent::onCursorChanged(const CursorSt } if (newTile != nullptr) - newTile->setSelected(true, true, oldPos == Vector3f::Zero() ? nullptr : &oldPos, true); + newTile->setSelected(true, true, oldPos == glm::vec3 {} ? nullptr : &oldPos, true); } int firstVisibleCol = mStartPosition / dimOpposite; @@ -677,7 +677,7 @@ void ImageGridComponent::updateTileAtPos(int tilePos, if (idx < 0 || idx >= mTiles.size()) idx = 0; - Vector3f pos = mTiles.at(idx)->getBackgroundPosition(); + glm::vec3 pos = mTiles.at(idx)->getBackgroundPosition(); tile->setSelected(true, allowAnimation, &pos); } else { diff --git a/es-core/src/components/MenuComponent.cpp b/es-core/src/components/MenuComponent.cpp index ce7258599..eb2487785 100644 --- a/es-core/src/components/MenuComponent.cpp +++ b/es-core/src/components/MenuComponent.cpp @@ -106,7 +106,7 @@ void MenuComponent::updateSize() void MenuComponent::onSizeChanged() { - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); // Update grid row/column sizes. mGrid.setRowHeightPerc(0, TITLE_HEIGHT / mSize.y()); diff --git a/es-core/src/components/NinePatchComponent.cpp b/es-core/src/components/NinePatchComponent.cpp index f14915086..fa4119ef9 100644 --- a/es-core/src/components/NinePatchComponent.cpp +++ b/es-core/src/components/NinePatchComponent.cpp @@ -118,12 +118,12 @@ void NinePatchComponent::buildVertices() updateColors(); } -void NinePatchComponent::render(const Transform4x4f& parentTrans) +void NinePatchComponent::render(const glm::mat4& parentTrans) { if (!isVisible()) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); if (mTexture && mVertices != nullptr) { Renderer::setMatrix(trans); @@ -146,15 +146,15 @@ void NinePatchComponent::render(const Transform4x4f& parentTrans) void NinePatchComponent::onSizeChanged() { buildVertices(); } -void NinePatchComponent::fitTo(Vector2f size, Vector3f position, Vector2f padding) +void NinePatchComponent::fitTo(Vector2f size, glm::vec3 position, Vector2f padding) { size += padding; position[0] -= padding.x() / 2.0f; position[1] -= padding.y() / 2.0f; setSize(size + mCornerSize * 2.0f); - setPosition(position.x() + Math::lerp(-mCornerSize.x(), mCornerSize.x(), mOrigin.x()), - position.y() + Math::lerp(-mCornerSize.y(), mCornerSize.y(), mOrigin.y())); + setPosition(position.x + Math::lerp(-mCornerSize.x(), mCornerSize.x(), mOrigin.x()), + position.y + Math::lerp(-mCornerSize.y(), mCornerSize.y(), mOrigin.y())); } void NinePatchComponent::setImagePath(const std::string& path) diff --git a/es-core/src/components/NinePatchComponent.h b/es-core/src/components/NinePatchComponent.h index 9c0191ded..12ce091d7 100644 --- a/es-core/src/components/NinePatchComponent.h +++ b/es-core/src/components/NinePatchComponent.h @@ -35,13 +35,11 @@ public: unsigned int centerColor = 0xFFFFFFFF); virtual ~NinePatchComponent(); - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void onSizeChanged() override; - void fitTo(Vector2f size, - Vector3f position = Vector3f::Zero(), - Vector2f padding = Vector2f::Zero()); + void fitTo(Vector2f size, glm::vec3 position = {}, Vector2f padding = Vector2f::Zero()); void setImagePath(const std::string& path); // Apply a color shift to the "edge" parts of the ninepatch. diff --git a/es-core/src/components/OptionListComponent.h b/es-core/src/components/OptionListComponent.h index 223ec141f..f65574860 100644 --- a/es-core/src/components/OptionListComponent.h +++ b/es-core/src/components/OptionListComponent.h @@ -75,11 +75,11 @@ public: mText.getFont()->getHeight()); // Position. - mLeftArrow.setPosition(0, (mSize.y() - mLeftArrow.getSize().y()) / 2); - mText.setPosition(mLeftArrow.getPosition().x() + mLeftArrow.getSize().x(), - (mSize.y() - mText.getSize().y()) / 2); - mRightArrow.setPosition(mText.getPosition().x() + mText.getSize().x(), - (mSize.y() - mRightArrow.getSize().y()) / 2); + mLeftArrow.setPosition(0.0f, (mSize.y() - mLeftArrow.getSize().y()) / 2.0f); + mText.setPosition(mLeftArrow.getPosition().x + mLeftArrow.getSize().x(), + (mSize.y() - mText.getSize().y()) / 2.0f); + mRightArrow.setPosition(mText.getPosition().x + mText.getSize().x(), + (mSize.y() - mRightArrow.getSize().y()) / 2.0f); } bool input(InputConfig* config, Input input) override diff --git a/es-core/src/components/RatingComponent.cpp b/es-core/src/components/RatingComponent.cpp index 6dfc32b3f..42c153b63 100644 --- a/es-core/src/components/RatingComponent.cpp +++ b/es-core/src/components/RatingComponent.cpp @@ -141,12 +141,12 @@ void RatingComponent::updateColors() mVertices[i].col = color; } -void RatingComponent::render(const Transform4x4f& parentTrans) +void RatingComponent::render(const glm::mat4& parentTrans) { if (!isVisible() || mFilledTexture == nullptr || mUnfilledTexture == nullptr) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); Renderer::setMatrix(trans); diff --git a/es-core/src/components/RatingComponent.h b/es-core/src/components/RatingComponent.h index dfb2be65c..322dcb42a 100644 --- a/es-core/src/components/RatingComponent.h +++ b/es-core/src/components/RatingComponent.h @@ -27,7 +27,7 @@ public: void setValue(const std::string& value) override; bool input(InputConfig* config, Input input) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void onSizeChanged() override; diff --git a/es-core/src/components/ScrollableContainer.cpp b/es-core/src/components/ScrollableContainer.cpp index d025ae89f..02eb3cb81 100644 --- a/es-core/src/components/ScrollableContainer.cpp +++ b/es-core/src/components/ScrollableContainer.cpp @@ -148,23 +148,26 @@ void ScrollableContainer::update(int deltaTime) GuiComponent::update(deltaTime); } -void ScrollableContainer::render(const Transform4x4f& parentTrans) +void ScrollableContainer::render(const glm::mat4& parentTrans) { if (!isVisible()) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); - Vector2i clipPos(static_cast(trans.translation().x()), - static_cast(trans.translation().y())); + Vector2i clipPos(static_cast(trans[3].x), static_cast(trans[3].y)); - Vector3f dimScaled = trans * Vector3f(mSize.x(), mSize.y(), 0); - Vector2i clipDim(static_cast((dimScaled.x()) - trans.translation().x()), - static_cast((dimScaled.y()) - trans.translation().y())); + glm::vec3 dimScaled {}; + + dimScaled.x = std::fabs(trans[3].x + mSize.x()); + dimScaled.y = std::fabs(trans[3].y + mSize.y()); + + Vector2i clipDim(static_cast(dimScaled.x - trans[3].x), + static_cast(dimScaled.y - trans[3].y)); Renderer::pushClipRect(clipPos, clipDim); - trans.translate(-Vector3f(mScrollPos.x(), mScrollPos.y(), 0)); + trans = glm::translate(trans, -glm::vec3(mScrollPos.x(), mScrollPos.y(), 0.0f)); Renderer::setMatrix(trans); GuiComponent::renderChildren(trans); diff --git a/es-core/src/components/ScrollableContainer.h b/es-core/src/components/ScrollableContainer.h index 96d8b17f5..f6df4955f 100644 --- a/es-core/src/components/ScrollableContainer.h +++ b/es-core/src/components/ScrollableContainer.h @@ -34,7 +34,7 @@ public: void reset(); void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; private: Vector2f getContentSize(); diff --git a/es-core/src/components/SliderComponent.cpp b/es-core/src/components/SliderComponent.cpp index 247b9fc1e..d1dfd2f1b 100644 --- a/es-core/src/components/SliderComponent.cpp +++ b/es-core/src/components/SliderComponent.cpp @@ -74,9 +74,9 @@ void SliderComponent::update(int deltaTime) GuiComponent::update(deltaTime); } -void SliderComponent::render(const Transform4x4f& parentTrans) +void SliderComponent::render(const glm::mat4& parentTrans) { - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); Renderer::setMatrix(trans); // Render suffix. diff --git a/es-core/src/components/SliderComponent.h b/es-core/src/components/SliderComponent.h index 3b9f7ec86..13b5d3153 100644 --- a/es-core/src/components/SliderComponent.h +++ b/es-core/src/components/SliderComponent.h @@ -29,7 +29,7 @@ public: bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void onSizeChanged() override; diff --git a/es-core/src/components/SwitchComponent.cpp b/es-core/src/components/SwitchComponent.cpp index 18d1010a4..975496a27 100644 --- a/es-core/src/components/SwitchComponent.cpp +++ b/es-core/src/components/SwitchComponent.cpp @@ -42,9 +42,9 @@ bool SwitchComponent::input(InputConfig* config, Input input) return false; } -void SwitchComponent::render(const Transform4x4f& parentTrans) +void SwitchComponent::render(const glm::mat4& parentTrans) { - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); mImage.render(trans); renderChildren(trans); } diff --git a/es-core/src/components/SwitchComponent.h b/es-core/src/components/SwitchComponent.h index cc7cadf9d..c21219144 100644 --- a/es-core/src/components/SwitchComponent.h +++ b/es-core/src/components/SwitchComponent.h @@ -19,7 +19,7 @@ public: SwitchComponent(Window* window, bool state = false); bool input(InputConfig* config, Input input) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void onSizeChanged() override { mImage.setSize(mSize); } void setResize(float width, float height) override { mImage.setResize(width, height); } diff --git a/es-core/src/components/TextComponent.cpp b/es-core/src/components/TextComponent.cpp index 332cc56c4..c90e0d95a 100644 --- a/es-core/src/components/TextComponent.cpp +++ b/es-core/src/components/TextComponent.cpp @@ -54,7 +54,11 @@ TextComponent::TextComponent(Window* window, setColor(color); setBackgroundColor(bgcolor); setText(text); - setPosition(pos); + + // TEMPORARY + glm::vec3 tempvec = { pos.x(), pos.y(), pos.z() }; + + setPosition(tempvec); setSize(size); } @@ -115,12 +119,12 @@ void TextComponent::setUppercase(bool uppercase) onTextChanged(); } -void TextComponent::render(const Transform4x4f& parentTrans) +void TextComponent::render(const glm::mat4& parentTrans) { if (!isVisible()) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); if (mRenderBackground) { Renderer::setMatrix(trans); @@ -147,7 +151,7 @@ void TextComponent::render(const Transform4x4f& parentTrans) break; } } - Vector3f off(0, yOff, 0); + glm::vec3 off(0.0f, yOff, 0.0f); if (Settings::getInstance()->getBool("DebugText")) { // Draw the "textbox" area, what we are aligned within. @@ -155,7 +159,7 @@ void TextComponent::render(const Transform4x4f& parentTrans) Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0x0000FF33, 0x0000FF33); } - trans.translate(off); + trans = glm::translate(trans, off); Renderer::setMatrix(trans); // Draw the text area, where the text actually is located. diff --git a/es-core/src/components/TextComponent.h b/es-core/src/components/TextComponent.h index 52a65d373..c9bf4f34f 100644 --- a/es-core/src/components/TextComponent.h +++ b/es-core/src/components/TextComponent.h @@ -48,7 +48,7 @@ public: void setBackgroundColor(unsigned int color); void setRenderBackground(bool render) { mRenderBackground = render; } - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; std::string getValue() const override { return mText; } void setValue(const std::string& value) override { setText(value); } diff --git a/es-core/src/components/TextEditComponent.cpp b/es-core/src/components/TextEditComponent.cpp index de9bd028d..c0a5572cf 100644 --- a/es-core/src/components/TextEditComponent.cpp +++ b/es-core/src/components/TextEditComponent.cpp @@ -46,7 +46,7 @@ void TextEditComponent::onFocusLost() void TextEditComponent::onSizeChanged() { - mBox.fitTo(mSize, Vector3f::Zero(), + mBox.fitTo(mSize, {}, Vector2f(-34 + mResolutionAdjustment, -32 - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier()))); onTextChanged(); // Wrap point probably changed. @@ -271,24 +271,26 @@ void TextEditComponent::onCursorChanged() } } -void TextEditComponent::render(const Transform4x4f& parentTrans) +void TextEditComponent::render(const glm::mat4& parentTrans) { - Transform4x4f trans = getTransform() * parentTrans; + glm::mat4 trans = getTransform() * parentTrans; renderChildren(trans); // Text + cursor rendering. // Offset into our "text area" (padding). - trans.translation() += Vector3f(getTextAreaPos().x(), getTextAreaPos().y(), 0); + trans = glm::translate(trans, glm::vec3(getTextAreaPos().x(), getTextAreaPos().y(), 0.0f)); - Vector2i clipPos(static_cast(trans.translation().x()), - static_cast(trans.translation().y())); + Vector2i clipPos(static_cast(trans[3].x), static_cast(trans[3].y)); // Use "text area" size for clipping. - Vector3f dimScaled = trans * Vector3f(getTextAreaSize().x(), getTextAreaSize().y(), 0); - Vector2i clipDim(static_cast((dimScaled.x()) - trans.translation().x()), - static_cast((dimScaled.y()) - trans.translation().y())); + glm::vec3 dimScaled {}; + dimScaled.x = std::fabs(trans[3].x + getTextAreaSize().x()); + dimScaled.y = std::fabs(trans[3].y + getTextAreaSize().y()); + + Vector2i clipDim(static_cast(dimScaled.x - trans[3].x), + static_cast(dimScaled.y - trans[3].y)); Renderer::pushClipRect(clipPos, clipDim); - trans.translate(Vector3f(-mScrollOffset.x(), -mScrollOffset.y(), 0)); + trans = glm::translate(trans, glm::vec3(-mScrollOffset.x(), -mScrollOffset.y(), 0.0f)); Renderer::setMatrix(trans); if (mTextCache) diff --git a/es-core/src/components/TextEditComponent.h b/es-core/src/components/TextEditComponent.h index 9365912a3..36ad42c12 100644 --- a/es-core/src/components/TextEditComponent.h +++ b/es-core/src/components/TextEditComponent.h @@ -25,7 +25,7 @@ public: void textInput(const std::string& text) override; bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void onFocusGained() override; void onFocusLost() override; diff --git a/es-core/src/components/TextListComponent.h b/es-core/src/components/TextListComponent.h index f38318a18..ced4d5e41 100644 --- a/es-core/src/components/TextListComponent.h +++ b/es-core/src/components/TextListComponent.h @@ -48,7 +48,7 @@ public: bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, @@ -155,12 +155,12 @@ TextListComponent::TextListComponent(Window* window) mColors[1] = 0x00FF00FF; } -template void TextListComponent::render(const Transform4x4f& parentTrans) +template void TextListComponent::render(const glm::mat4& parentTrans) { if (size() == 0) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); std::shared_ptr& font = mFont; int startEntry = 0; @@ -206,12 +206,13 @@ template void TextListComponent::render(const Transform4x4f& par } // Clip to inside margins. - Vector3f dim(mSize.x(), mSize.y(), 0.0f); - dim = trans * dim - trans.translation(); + glm::vec3 dim(mSize.x(), mSize.y(), 0.0f); + dim.x = (trans[0].x * dim.x + trans[3].x) - trans[3].x; + dim.y = (trans[1].y * dim.y + trans[3].y) - trans[3].y; + Renderer::pushClipRect( - Vector2i(static_cast(trans.translation().x() + mHorizontalMargin), - static_cast(trans.translation().y())), - Vector2i(static_cast(dim.x() - mHorizontalMargin * 2.0f), static_cast(dim.y()))); + Vector2i(static_cast(trans[3].x + mHorizontalMargin), static_cast(trans[3].y)), + Vector2i(static_cast(dim.x - mHorizontalMargin * 2.0f), static_cast(dim.y))); for (int i = startEntry; i < listCutoff; i++) { typename IList::Entry& entry = mEntries.at(static_cast(i)); @@ -235,34 +236,35 @@ template void TextListComponent::render(const Transform4x4f& par else entry.data.textCache->setColor(color); - Vector3f offset(0.0f, y, 0.0f); + glm::vec3 offset(0.0f, y, 0.0f); switch (mAlignment) { case ALIGN_LEFT: - offset[0] = mHorizontalMargin; + offset.x = mHorizontalMargin; break; case ALIGN_CENTER: - offset[0] = + offset.x = static_cast((mSize.x() - entry.data.textCache->metrics.size.x()) / 2.0f); - if (offset[0] < mHorizontalMargin) - offset[0] = mHorizontalMargin; + if (offset.x < mHorizontalMargin) + offset.x = mHorizontalMargin; break; case ALIGN_RIGHT: - offset[0] = (mSize.x() - entry.data.textCache->metrics.size.x()); - offset[0] -= mHorizontalMargin; - if (offset[0] < mHorizontalMargin) - offset[0] = mHorizontalMargin; + offset.x = (mSize.x() - entry.data.textCache->metrics.size.x()); + offset.x -= mHorizontalMargin; + if (offset.x < mHorizontalMargin) + offset.x = mHorizontalMargin; break; } // Render text. - Transform4x4f drawTrans = trans; + glm::mat4 drawTrans = trans; // Currently selected item text might be scrolling. if (mCursor == i && mMarqueeOffset > 0) - drawTrans.translate(offset - Vector3f(static_cast(mMarqueeOffset), 0.0f, 0.0f)); + drawTrans = glm::translate( + drawTrans, offset - glm::vec3(static_cast(mMarqueeOffset), 0.0f, 0.0f)); else - drawTrans.translate(offset); + drawTrans = glm::translate(drawTrans, offset); // Needed to avoid flickering when returning to the start position. if (mMarqueeOffset == 0 && mMarqueeOffset2 == 0) @@ -275,13 +277,13 @@ template void TextListComponent::render(const Transform4x4f& par if ((mCursor == i && mMarqueeOffset2 < 0) || (mCursor == i && mMarqueeScroll)) { mMarqueeScroll = true; drawTrans = trans; - drawTrans.translate(offset - Vector3f(static_cast(mMarqueeOffset2), 0.0f, 0.0f)); + drawTrans = glm::translate( + drawTrans, offset - glm::vec3(static_cast(mMarqueeOffset2), 0.0f, 0.0f)); Renderer::setMatrix(drawTrans); font->renderTextCache(entry.data.textCache.get()); } y += entrySize; } - Renderer::popClipRect(); listRenderTitleOverlay(trans); GuiComponent::renderChildren(trans); diff --git a/es-core/src/components/VideoComponent.cpp b/es-core/src/components/VideoComponent.cpp index 4ca19cc8e..ad3567f71 100644 --- a/es-core/src/components/VideoComponent.cpp +++ b/es-core/src/components/VideoComponent.cpp @@ -171,12 +171,12 @@ void VideoComponent::topWindow(bool isTop) manageState(); } -void VideoComponent::render(const Transform4x4f& parentTrans) +void VideoComponent::render(const glm::mat4& parentTrans) { if (!isVisible()) return; - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); GuiComponent::renderChildren(trans); Renderer::setMatrix(trans); @@ -191,7 +191,7 @@ void VideoComponent::render(const Transform4x4f& parentTrans) pauseVideo(); } -void VideoComponent::renderSnapshot(const Transform4x4f& parentTrans) +void VideoComponent::renderSnapshot(const glm::mat4& parentTrans) { // This function is called when the video is not currently being played. We need to // work out if we should display a static image. If the menu is open, then always render diff --git a/es-core/src/components/VideoComponent.h b/es-core/src/components/VideoComponent.h index 8a7653cc5..f7c98ea8e 100644 --- a/es-core/src/components/VideoComponent.h +++ b/es-core/src/components/VideoComponent.h @@ -61,8 +61,8 @@ public: void onPositionChanged() override { mStaticImage.setPosition(mPosition); } void onSizeChanged() override { mStaticImage.onSizeChanged(); } - void render(const Transform4x4f& parentTrans) override; - void renderSnapshot(const Transform4x4f& parentTrans); + void render(const glm::mat4& parentTrans) override; + void renderSnapshot(const glm::mat4& parentTrans); virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, diff --git a/es-core/src/components/VideoFFmpegComponent.cpp b/es-core/src/components/VideoFFmpegComponent.cpp index bfd364e14..e3e87e077 100644 --- a/es-core/src/components/VideoFFmpegComponent.cpp +++ b/es-core/src/components/VideoFFmpegComponent.cpp @@ -119,10 +119,10 @@ void VideoFFmpegComponent::resize() onSizeChanged(); } -void VideoFFmpegComponent::render(const Transform4x4f& parentTrans) +void VideoFFmpegComponent::render(const glm::mat4& parentTrans) { VideoComponent::render(parentTrans); - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); GuiComponent::renderChildren(trans); if (mIsPlaying && mFormatContext) { @@ -839,8 +839,8 @@ void VideoFFmpegComponent::calculateBlackRectangle() // If the option to display pillarboxes is disabled, then make the rectangle equivalent // to the size of the video. else { - mVideoRectangleCoords.push_back(std::round(mPosition.x() - mSize.x() * mOrigin.x())); - mVideoRectangleCoords.push_back(std::round(mPosition.y() - mSize.y() * mOrigin.y())); + mVideoRectangleCoords.push_back(std::round(mPosition.x - mSize.x() * mOrigin.x())); + mVideoRectangleCoords.push_back(std::round(mPosition.y - mSize.y() * mOrigin.y())); mVideoRectangleCoords.push_back(std::round(mSize.x())); mVideoRectangleCoords.push_back(std::round(mSize.y())); } diff --git a/es-core/src/components/VideoFFmpegComponent.h b/es-core/src/components/VideoFFmpegComponent.h index 2d06b9709..255e2fe09 100644 --- a/es-core/src/components/VideoFFmpegComponent.h +++ b/es-core/src/components/VideoFFmpegComponent.h @@ -50,7 +50,7 @@ private: // Used internally whenever the resizing parameters or texture change. void resize(); - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; virtual void updatePlayer() override; // This will run the frame processing in a separate thread. diff --git a/es-core/src/components/VideoVlcComponent.cpp b/es-core/src/components/VideoVlcComponent.cpp index 60dd46b83..03a48f3d2 100644 --- a/es-core/src/components/VideoVlcComponent.cpp +++ b/es-core/src/components/VideoVlcComponent.cpp @@ -168,7 +168,7 @@ void VideoVlcComponent::resize() onSizeChanged(); } -void VideoVlcComponent::render(const Transform4x4f& parentTrans) +void VideoVlcComponent::render(const glm::mat4& parentTrans) { // Set the audio volume. As libVLC is very unreliable we need to make an additional // attempt here in the render loop in addition to the initialization in startVideo(). @@ -179,7 +179,7 @@ void VideoVlcComponent::render(const Transform4x4f& parentTrans) setAudioVolume(); VideoComponent::render(parentTrans); - Transform4x4f trans = parentTrans * getTransform(); + glm::mat4 trans = parentTrans * getTransform(); GuiComponent::renderChildren(trans); // Check the actual VLC state, i.e. if the video is really playing rather than @@ -296,8 +296,8 @@ void VideoVlcComponent::calculateBlackRectangle() // If the option to display pillarboxes is disabled, then make the rectangle equivalent // to the size of the video. else { - mVideoRectangleCoords.push_back(std::round(mPosition.x() - mSize.x() * mOrigin.x())); - mVideoRectangleCoords.push_back(std::round(mPosition.y() - mSize.y() * mOrigin.y())); + mVideoRectangleCoords.push_back(std::round(mPosition.x - mSize.x() * mOrigin.x())); + mVideoRectangleCoords.push_back(std::round(mPosition.y - mSize.y() * mOrigin.y())); mVideoRectangleCoords.push_back(std::round(mSize.x())); mVideoRectangleCoords.push_back(std::round(mSize.y())); } diff --git a/es-core/src/components/VideoVlcComponent.h b/es-core/src/components/VideoVlcComponent.h index 880852aa8..864060155 100644 --- a/es-core/src/components/VideoVlcComponent.h +++ b/es-core/src/components/VideoVlcComponent.h @@ -53,7 +53,7 @@ private: // Used internally whenever the resizing parameters or texture change. void resize(); - void render(const Transform4x4f& parentTrans) override; + void render(const glm::mat4& parentTrans) override; void calculateBlackRectangle(); void setAudioVolume(); diff --git a/es-core/src/guis/GuiComplexTextEditPopup.cpp b/es-core/src/guis/GuiComplexTextEditPopup.cpp index d649976ba..0d4905423 100644 --- a/es-core/src/guis/GuiComplexTextEditPopup.cpp +++ b/es-core/src/guis/GuiComplexTextEditPopup.cpp @@ -106,7 +106,7 @@ GuiComplexTextEditPopup::GuiComplexTextEditPopup( void GuiComplexTextEditPopup::onSizeChanged() { - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); mText->setSize(mSize.x() - 40.0f, mText->getSize().y()); // Update grid. diff --git a/es-core/src/guis/GuiDetectDevice.cpp b/es-core/src/guis/GuiDetectDevice.cpp index 2cf8d33ab..ae4292b63 100644 --- a/es-core/src/guis/GuiDetectDevice.cpp +++ b/es-core/src/guis/GuiDetectDevice.cpp @@ -93,7 +93,7 @@ GuiDetectDevice::GuiDetectDevice(Window* window, void GuiDetectDevice::onSizeChanged() { - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); // Grid. mGrid.setSize(mSize); diff --git a/es-core/src/guis/GuiInputConfig.cpp b/es-core/src/guis/GuiInputConfig.cpp index c3c76e692..79c3ebd01 100644 --- a/es-core/src/guis/GuiInputConfig.cpp +++ b/es-core/src/guis/GuiInputConfig.cpp @@ -293,7 +293,7 @@ void GuiInputConfig::update(int deltaTime) void GuiInputConfig::onSizeChanged() { - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); // Update grid. mGrid.setSize(mSize); diff --git a/es-core/src/guis/GuiMsgBox.cpp b/es-core/src/guis/GuiMsgBox.cpp index 9006fec4e..69e8c5b20 100644 --- a/es-core/src/guis/GuiMsgBox.cpp +++ b/es-core/src/guis/GuiMsgBox.cpp @@ -160,7 +160,7 @@ void GuiMsgBox::onSizeChanged() mGrid.getRowHeight(0)); mGrid.onSizeChanged(); - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); } void GuiMsgBox::deleteMeAndCall(const std::function& func) diff --git a/es-core/src/guis/GuiTextEditPopup.cpp b/es-core/src/guis/GuiTextEditPopup.cpp index 27fe9eb1d..01e19ec58 100644 --- a/es-core/src/guis/GuiTextEditPopup.cpp +++ b/es-core/src/guis/GuiTextEditPopup.cpp @@ -78,7 +78,7 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window, void GuiTextEditPopup::onSizeChanged() { - mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); mText->setSize(mSize.x() - 40, mText->getSize().y()); diff --git a/es-core/src/math/Misc.h b/es-core/src/math/Misc.h index e3e85ba91..a9aedc398 100644 --- a/es-core/src/math/Misc.h +++ b/es-core/src/math/Misc.h @@ -10,10 +10,11 @@ #define ES_CORE_MATH_MISC_H #include +#include +#include +#include -#define ES_PI (3.1415926535897932384626433832795028841971693993751058209749445923) -#define ES_RAD_TO_DEG(_x) ((_x) * (180.0 / ES_PI)) -#define ES_DEG_TO_RAD(_x) ((_x) * (ES_PI / 180.0)) +#include namespace Math { diff --git a/es-core/src/renderers/Renderer.cpp b/es-core/src/renderers/Renderer.cpp index 7b96c6d56..efda256ad 100644 --- a/es-core/src/renderers/Renderer.cpp +++ b/es-core/src/renderers/Renderer.cpp @@ -12,7 +12,6 @@ #include "Log.h" #include "Settings.h" #include "Shader_GL21.h" -#include "math/Transform4x4f.h" #include "math/Vector2i.h" #include "resources/ResourceManager.h" @@ -326,28 +325,19 @@ namespace Renderer if (!createWindow()) return false; - Transform4x4f projection = Transform4x4f::Identity(); + glm::mat4 projection = getIdentity(); Rect viewport = Rect(0, 0, 0, 0); switch (screenRotate) { - case 0: { - viewport.x = screenOffsetX; - viewport.y = screenOffsetY; - viewport.w = screenWidth; - viewport.h = screenHeight; - projection.orthoProjection(0.0f, static_cast(screenWidth), - static_cast(screenHeight), 0.0f, -1.0f, 1.0f); - break; - } case 1: { viewport.x = windowWidth - screenOffsetY - screenHeight; viewport.y = screenOffsetX; viewport.w = screenHeight; viewport.h = screenWidth; - projection.orthoProjection(0.0f, static_cast(screenHeight), - static_cast(screenWidth), 0.0f, -1.0f, 1.0f); - projection.rotate(static_cast(ES_DEG_TO_RAD(90)), { 0, 0, 1 }); - projection.translate({ 0, screenHeight * -1.0f, 0 }); + projection = glm::ortho(0.0f, static_cast(screenHeight), + static_cast(screenWidth), 0.0f, -1.0f, 1.0f); + projection = glm::rotate(projection, glm::radians(90.0f), { 0.0f, 0.0f, 1.0f }); + projection = glm::translate(projection, { 0.0f, screenHeight * -1.0f, 0.0f }); break; } case 2: { @@ -355,10 +345,11 @@ namespace Renderer viewport.y = windowHeight - screenOffsetY - screenHeight; viewport.w = screenWidth; viewport.h = screenHeight; - projection.orthoProjection(0.0f, static_cast(screenWidth), - static_cast(screenHeight), 0.0f, -1.0f, 1.0f); - projection.rotate(static_cast(ES_DEG_TO_RAD(180)), { 0, 0, 1 }); - projection.translate({ screenWidth * -1.0f, screenHeight * -1.0f, 0 }); + projection = glm::ortho(0.0f, static_cast(screenWidth), + static_cast(screenHeight), 0.0f, -1.0f, 1.0f); + projection = glm::rotate(projection, glm::radians(180.0f), { 0.0f, 0.0f, 1.0f }); + projection = + glm::translate(projection, { screenWidth * -1.0f, screenHeight * -1.0f, 0.0f }); break; } case 3: { @@ -366,10 +357,19 @@ namespace Renderer viewport.y = windowHeight - screenOffsetX - screenWidth; viewport.w = screenHeight; viewport.h = screenWidth; - projection.orthoProjection(0.0f, static_cast(screenHeight), - static_cast(screenWidth), 0.0f, -1.0f, 1.0f); - projection.rotate(static_cast(ES_DEG_TO_RAD(270)), { 0, 0, 1 }); - projection.translate({ screenWidth * -1.0f, 0, 0 }); + projection = glm::ortho(0.0f, static_cast(screenHeight), + static_cast(screenWidth), 0.0f, -1.0f, 1.0f); + projection = glm::rotate(projection, glm::radians(270.0f), { 0.0f, 0.0f, 1.0f }); + projection = glm::translate(projection, { screenWidth * -1.0f, 0.0f, 0.0f }); + break; + } + default: { + viewport.x = screenOffsetX; + viewport.y = screenOffsetY; + viewport.w = screenWidth; + viewport.h = screenHeight; + projection = glm::ortho(0.0f, static_cast(screenWidth), + static_cast(screenHeight), 0.0f, -1.0f, 1.0f); break; } } @@ -466,7 +466,7 @@ namespace Renderer const unsigned int _colorEnd, bool horizontalGradient, const float _opacity, - const Transform4x4f& _trans, + const glm::mat4& _trans, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) { @@ -542,7 +542,7 @@ namespace Renderer return nullptr; }; - const Transform4x4f getProjectionMatrix() { return mProjectionMatrix; } + const glm::mat4 getProjectionMatrix() { return mProjectionMatrix; } SDL_Window* getSDLWindow() { return sdlWindow; } int getWindowWidth() { return windowWidth; } int getWindowHeight() { return windowHeight; } diff --git a/es-core/src/renderers/Renderer.h b/es-core/src/renderers/Renderer.h index 5fec1600e..e1ff28bdf 100644 --- a/es-core/src/renderers/Renderer.h +++ b/es-core/src/renderers/Renderer.h @@ -11,7 +11,7 @@ #include "Log.h" #include "Shader_GL21.h" -#include "math/Transform4x4f.h" +#include "math/Misc.h" #include "math/Vector2f.h" #include @@ -19,7 +19,6 @@ struct SDL_Window; -class Transform4x4f; class Vector2i; namespace Renderer @@ -52,7 +51,8 @@ namespace Renderer static std::vector sShaderProgramVector; static GLuint shaderFBO; - static Transform4x4f mProjectionMatrix; + static glm::mat4 mProjectionMatrix; + static constexpr glm::mat4 getIdentity() { return glm::mat4(1.0f); } #if !defined(NDEBUG) #define GL_CHECK_ERROR(Function) (Function, _GLCheckError(#Function)) @@ -141,7 +141,7 @@ namespace Renderer const unsigned int _colorEnd, bool horizontalGradient = false, const float _opacity = 1.0, - const Transform4x4f& _trans = Transform4x4f::Identity(), + const glm::mat4& _trans = getIdentity(), const Blend::Factor _srcBlendFactor = Blend::SRC_ALPHA, const Blend::Factor _dstBlendFactor = Blend::ONE_MINUS_SRC_ALPHA); SDL_Window* getSDLWindow(); @@ -160,7 +160,7 @@ namespace Renderer unsigned int convertABGRToRGBA(unsigned int color); Shader* getShaderProgram(unsigned int shaderID); - const Transform4x4f getProjectionMatrix(); + const glm::mat4 getProjectionMatrix(); void shaderPostprocessing(unsigned int shaders, const Renderer::shaderParameters& parameters = shaderParameters(), unsigned char* textureRGBA = nullptr); @@ -191,12 +191,12 @@ namespace Renderer const Blend::Factor _dstBlendFactor = Blend::ONE_MINUS_SRC_ALPHA); void drawTriangleStrips(const Vertex* _vertices, const unsigned int _numVertices, - const Transform4x4f& _trans = Transform4x4f::Identity(), + const glm::mat4& _trans = getIdentity(), const Blend::Factor _srcBlendFactor = Blend::SRC_ALPHA, const Blend::Factor _dstBlendFactor = Blend::ONE_MINUS_SRC_ALPHA, const shaderParameters& _parameters = shaderParameters()); - void setProjection(const Transform4x4f& _projection); - void setMatrix(const Transform4x4f& _matrix); + void setProjection(const glm::mat4& _projection); + void setMatrix(const glm::mat4& _matrix); void setViewport(const Rect& _viewport); void setScissor(const Rect& _scissor); void setSwapInterval(); diff --git a/es-core/src/renderers/Renderer_GL21.cpp b/es-core/src/renderers/Renderer_GL21.cpp index 7f236ec8c..f40d65bce 100644 --- a/es-core/src/renderers/Renderer_GL21.cpp +++ b/es-core/src/renderers/Renderer_GL21.cpp @@ -10,7 +10,6 @@ #include "Settings.h" #include "Shader_GL21.h" -#include "math/Transform4x4f.h" #include "renderers/Renderer.h" namespace Renderer @@ -239,7 +238,7 @@ namespace Renderer void drawTriangleStrips(const Vertex* _vertices, const unsigned int _numVertices, - const Transform4x4f& _trans, + const glm::mat4& _trans, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor, const shaderParameters& _parameters) @@ -353,16 +352,16 @@ namespace Renderer #endif } - void setProjection(const Transform4x4f& _projection) + void setProjection(const glm::mat4& _projection) { GL_CHECK_ERROR(glMatrixMode(GL_PROJECTION)); GL_CHECK_ERROR(glLoadMatrixf(reinterpret_cast(&_projection))); } - void setMatrix(const Transform4x4f& _matrix) + void setMatrix(const glm::mat4& _matrix) { - Transform4x4f matrix = _matrix; - matrix.round(); + glm::mat4 matrix = _matrix; + matrix[3] = glm::round(matrix[3]); GL_CHECK_ERROR(glMatrixMode(GL_MODELVIEW)); GL_CHECK_ERROR(glLoadMatrixf(reinterpret_cast(&matrix))); @@ -448,7 +447,7 @@ namespace Renderer if (parameters.fragmentSaturation < 1.0) vertices[0].saturation = parameters.fragmentSaturation; - setMatrix(Transform4x4f::Identity()); + setMatrix(getIdentity()); GLuint screenTexture = createTexture(Texture::RGBA, false, false, width, height, nullptr); GL_CHECK_ERROR(glBindFramebuffer(GL_READ_FRAMEBUFFER, 0)); @@ -475,7 +474,7 @@ namespace Renderer GL_COLOR_BUFFER_BIT, GL_NEAREST)); // Apply/render the shaders. - drawTriangleStrips(vertices, 4, Transform4x4f::Identity(), Blend::SRC_ALPHA, + drawTriangleStrips(vertices, 4, getIdentity(), Blend::SRC_ALPHA, Blend::ONE_MINUS_SRC_ALPHA, parameters); // If textureRGBA has an address, it means that the output should go to this diff --git a/es-core/src/renderers/Renderer_GLES10.cpp b/es-core/src/renderers/Renderer_GLES10.cpp index a179ca5fe..743c6f82a 100644 --- a/es-core/src/renderers/Renderer_GLES10.cpp +++ b/es-core/src/renderers/Renderer_GLES10.cpp @@ -10,7 +10,6 @@ #include "Log.h" #include "Settings.h" -#include "math/Transform4x4f.h" #include "renderers/Renderer.h" #include @@ -185,7 +184,7 @@ namespace Renderer void drawTriangleStrips(const Vertex* _vertices, const unsigned int _numVertices, - const Transform4x4f& _trans, + const glm::mat4& _trans, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor, const shaderParameters& _parameters) @@ -200,16 +199,16 @@ namespace Renderer GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVertices)); } - void setProjection(const Transform4x4f& _projection) + void setProjection(const glm::mat4& _projection) { GL_CHECK_ERROR(glMatrixMode(GL_PROJECTION)); GL_CHECK_ERROR(glLoadMatrixf((GLfloat*)&_projection)); } - void setMatrix(const Transform4x4f& _matrix) + void setMatrix(const glm::mat4& _matrix) { - Transform4x4f matrix = _matrix; - matrix.round(); + glm::mat4 matrix = _matrix; + matrix[3] = glm::round(matrix[3]); GL_CHECK_ERROR(glMatrixMode(GL_MODELVIEW)); GL_CHECK_ERROR(glLoadMatrixf((GLfloat*)&matrix)); diff --git a/es-core/src/renderers/Shader_GL21.cpp b/es-core/src/renderers/Shader_GL21.cpp index 52d376e53..61f6610be 100644 --- a/es-core/src/renderers/Shader_GL21.cpp +++ b/es-core/src/renderers/Shader_GL21.cpp @@ -114,7 +114,7 @@ namespace Renderer shaderDimValue = glGetUniformLocation(mProgramID, "dimValue"); } - void Renderer::Shader::setModelViewProjectionMatrix(Transform4x4f mvpMatrix) + void Renderer::Shader::setModelViewProjectionMatrix(glm::mat4 mvpMatrix) { if (shaderMVPMatrix != -1) GL_CHECK_ERROR(glUniformMatrix4fv(shaderMVPMatrix, 1, GL_FALSE, diff --git a/es-core/src/renderers/Shader_GL21.h b/es-core/src/renderers/Shader_GL21.h index f9e0a970c..2d64daea2 100644 --- a/es-core/src/renderers/Shader_GL21.h +++ b/es-core/src/renderers/Shader_GL21.h @@ -11,7 +11,8 @@ #define GL_GLEXT_PROTOTYPES -#include "math/Transform4x4f.h" +#include "math/Misc.h" +#include "math/Vector3f.h" #if defined(_WIN64) #include @@ -45,7 +46,8 @@ namespace Renderer // Get references to the variables inside the compiled shaders. void getVariableLocations(GLuint programID); // One-way communication with the compiled shaders. - void setModelViewProjectionMatrix(Transform4x4f mvpMatrix); + void setModelViewProjectionMatrix(glm::mat4 mvpMatrix); + void setTextureSize(std::array shaderVec2); void setTextureCoordinates(std::array shaderVec4); void setColor(std::array shaderVec4); From 64a7b8e54a4e7aef475308911b75e0d84deca931 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Sun, 15 Aug 2021 22:03:17 +0200 Subject: [PATCH 2/5] Replaced the internal Vector3f and Vector4f data types and functions with the GLM library equivalents. --- es-app/src/guis/GuiMetaDataEd.cpp | 4 ++-- es-app/src/guis/GuiScraperSearch.cpp | 20 +++++++--------- es-core/src/ThemeData.cpp | 18 +++++++-------- es-core/src/ThemeData.h | 11 ++++----- es-core/src/components/DateTimeComponent.cpp | 2 +- es-core/src/components/DateTimeComponent.h | 2 +- .../src/components/DateTimeEditComponent.cpp | 6 ++--- .../src/components/DateTimeEditComponent.h | 2 +- es-core/src/components/GridTileComponent.cpp | 10 ++++---- es-core/src/components/GridTileComponent.h | 2 +- es-core/src/components/ImageGridComponent.h | 23 +++++++++---------- es-core/src/components/TextComponent.cpp | 8 ++----- es-core/src/components/TextComponent.h | 2 +- es-core/src/renderers/Shader_GL21.h | 1 - 14 files changed, 50 insertions(+), 61 deletions(-) diff --git a/es-app/src/guis/GuiMetaDataEd.cpp b/es-app/src/guis/GuiMetaDataEd.cpp index 29d4d41ca..72ac65353 100644 --- a/es-app/src/guis/GuiMetaDataEd.cpp +++ b/es-app/src/guis/GuiMetaDataEd.cpp @@ -78,8 +78,8 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, folderPath + Utils::FileSystem::getFileName(scraperParams.game->getPath()) + " [" + Utils::String::toUpper(scraperParams.system->getName()) + "]" + (scraperParams.game->getType() == FOLDER ? " " + ViewController::FOLDER_CHAR : ""), - Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER, Vector3f(0.0f, 0.0f, 0.0f), - Vector2f(0.0f, 0.0f), 0x00000000, 0.05f); + Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER, glm::vec3 {}, Vector2f(0.0f, 0.0f), + 0x00000000, 0.05f); mHeaderGrid->setEntry(mTitle, Vector2i(0, 1), false, true); mHeaderGrid->setEntry(mSubtitle, Vector2i(0, 3), false, true); diff --git a/es-app/src/guis/GuiScraperSearch.cpp b/es-app/src/guis/GuiScraperSearch.cpp index 02afc5a48..30a13a08e 100644 --- a/es-app/src/guis/GuiScraperSearch.cpp +++ b/es-app/src/guis/GuiScraperSearch.cpp @@ -87,18 +87,14 @@ GuiScraperSearch::GuiScraperSearch(Window* window, SearchType type, unsigned int mMD_ReleaseDate = std::make_shared(mWindow); mMD_ReleaseDate->setColor(mdColor); mMD_ReleaseDate->setUppercase(true); - mMD_Developer = - std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, Vector3f::Zero(), - Vector2f::Zero(), 0x00000000, 0.02f); - mMD_Publisher = - std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, Vector3f::Zero(), - Vector2f::Zero(), 0x00000000, 0.02f); - mMD_Genre = - std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, Vector3f::Zero(), - Vector2f::Zero(), 0x00000000, 0.02f); - mMD_Players = - std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, Vector3f::Zero(), - Vector2f::Zero(), 0x00000000, 0.02f); + mMD_Developer = std::make_shared( + mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3 {}, Vector2f::Zero(), 0x00000000, 0.02f); + mMD_Publisher = std::make_shared( + mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3 {}, Vector2f::Zero(), 0x00000000, 0.02f); + mMD_Genre = std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, + glm::vec3 {}, Vector2f::Zero(), 0x00000000, 0.02f); + mMD_Players = std::make_shared( + mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3 {}, Vector2f::Zero(), 0x00000000, 0.02f); mMD_Filler = std::make_shared(mWindow, "", font, mdColor); if (Settings::getInstance()->getString("Scraper") != "thegamesdb") diff --git a/es-core/src/ThemeData.cpp b/es-core/src/ThemeData.cpp index 72dbe06b1..35abe9179 100644 --- a/es-core/src/ThemeData.cpp +++ b/es-core/src/ThemeData.cpp @@ -450,20 +450,20 @@ void ThemeData::parseElement(const pugi::xml_node& root, switch (typeIt->second) { case NORMALIZED_RECT: { - Vector4f val; + glm::vec4 val; auto splits = Utils::String::delimitedStringToVector(str, " "); if (splits.size() == 2) { - val = Vector4f(static_cast(atof(splits.at(0).c_str())), - static_cast(atof(splits.at(1).c_str())), - static_cast(atof(splits.at(0).c_str())), - static_cast(atof(splits.at(1).c_str()))); + val = glm::vec4(static_cast(atof(splits.at(0).c_str())), + static_cast(atof(splits.at(1).c_str())), + static_cast(atof(splits.at(0).c_str())), + static_cast(atof(splits.at(1).c_str()))); } else if (splits.size() == 4) { - val = Vector4f(static_cast(atof(splits.at(0).c_str())), - static_cast(atof(splits.at(1).c_str())), - static_cast(atof(splits.at(2).c_str())), - static_cast(atof(splits.at(3).c_str()))); + val = glm::vec4(static_cast(atof(splits.at(0).c_str())), + static_cast(atof(splits.at(1).c_str())), + static_cast(atof(splits.at(2).c_str())), + static_cast(atof(splits.at(3).c_str()))); } element.properties[node.name()] = val; diff --git a/es-core/src/ThemeData.h b/es-core/src/ThemeData.h index d3e008b64..c64a29f3e 100644 --- a/es-core/src/ThemeData.h +++ b/es-core/src/ThemeData.h @@ -12,7 +12,6 @@ #define ES_CORE_THEME_DATA_H #include "math/Vector2f.h" -#include "math/Vector4f.h" #include "utils/FileSystemUtil.h" #include @@ -103,11 +102,11 @@ public: std::string type; struct Property { - void operator=(const Vector4f& value) + void operator=(const glm::vec4& value) { r = value; - const Vector4f initVector = value; - v = Vector2f(initVector.x(), initVector.y()); + const glm::vec4 initVector = value; + v = Vector2f(initVector.x, initVector.y); } void operator=(const Vector2f& value) { v = value; } void operator=(const std::string& value) { s = value; } @@ -115,7 +114,7 @@ public: void operator=(const float& value) { f = value; } void operator=(const bool& value) { b = value; } - Vector4f r; + glm::vec4 r; Vector2f v; std::string s; unsigned int i; @@ -137,7 +136,7 @@ public: return *(const T*)&properties.at(prop).f; else if (std::is_same::value) return *(const T*)&properties.at(prop).b; - else if (std::is_same::value) + else if (std::is_same::value) return *(const T*)&properties.at(prop).r; return T(); } diff --git a/es-core/src/components/DateTimeComponent.cpp b/es-core/src/components/DateTimeComponent.cpp index e07001ce3..c09659192 100644 --- a/es-core/src/components/DateTimeComponent.cpp +++ b/es-core/src/components/DateTimeComponent.cpp @@ -27,7 +27,7 @@ DateTimeComponent::DateTimeComponent(Window* window, const std::shared_ptr& font, unsigned int color, Alignment align, - Vector3f pos, + glm::vec3 pos, Vector2f size, unsigned int bgcolor) : TextComponent(window, text, font, color, align, pos, size, bgcolor) diff --git a/es-core/src/components/DateTimeComponent.h b/es-core/src/components/DateTimeComponent.h index 9864ffcb9..fdfa3ee88 100644 --- a/es-core/src/components/DateTimeComponent.h +++ b/es-core/src/components/DateTimeComponent.h @@ -26,7 +26,7 @@ public: const std::shared_ptr& font, unsigned int color = 0x000000FF, Alignment align = ALIGN_LEFT, - Vector3f pos = Vector3f::Zero(), + glm::vec3 pos = {}, Vector2f size = Vector2f::Zero(), unsigned int bgcolor = 0x00000000); diff --git a/es-core/src/components/DateTimeEditComponent.cpp b/es-core/src/components/DateTimeEditComponent.cpp index ab55e8520..16912ea20 100644 --- a/es-core/src/components/DateTimeEditComponent.cpp +++ b/es-core/src/components/DateTimeEditComponent.cpp @@ -303,19 +303,19 @@ void DateTimeEditComponent::updateTextCache() Vector2f start(0, 0); Vector2f end = font->sizeText(dispString.substr(0, 4)); Vector2f diff = end - start; - mCursorBoxes.push_back(Vector4f(start[0], start[1], diff[0], diff[1])); + mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); // Month. start[0] = font->sizeText(dispString.substr(0, 5)).x(); end = font->sizeText(dispString.substr(0, 7)); diff = end - start; - mCursorBoxes.push_back(Vector4f(start[0], start[1], diff[0], diff[1])); + mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); // Day. start[0] = font->sizeText(dispString.substr(0, 8)).x(); end = font->sizeText(dispString.substr(0, 10)); diff = end - start; - mCursorBoxes.push_back(Vector4f(start[0], start[1], diff[0], diff[1])); + mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); // The logic for handling time for 'mode = DISP_DATE_TIME' is missing, but // nobody will use it anyway so it's not worthwhile implementing. diff --git a/es-core/src/components/DateTimeEditComponent.h b/es-core/src/components/DateTimeEditComponent.h index 1a70a49b6..a2c7ab58f 100644 --- a/es-core/src/components/DateTimeEditComponent.h +++ b/es-core/src/components/DateTimeEditComponent.h @@ -82,7 +82,7 @@ private: int mRelativeUpdateAccumulator; std::unique_ptr mTextCache; - std::vector mCursorBoxes; + std::vector mCursorBoxes; unsigned int mColor; Utils::Time::DateTime mOriginalValue; diff --git a/es-core/src/components/GridTileComponent.cpp b/es-core/src/components/GridTileComponent.cpp index ed0d00db3..2dafdf391 100644 --- a/es-core/src/components/GridTileComponent.cpp +++ b/es-core/src/components/GridTileComponent.cpp @@ -184,15 +184,15 @@ void GridTileComponent::setSelected(bool selected, cancelAnimation(3); this->setSelectedZoom(1); - mAnimPosition = Vector3f(0, 0, 0); + mAnimPosition = {}; resize(); } else { - mAnimPosition = Vector3f(pPosition->x, pPosition->y, pPosition->z); + mAnimPosition = glm::vec3(pPosition->x, pPosition->y, pPosition->z); auto func = [this](float t) { - t -= 1; // Cubic ease out. + t -= 1; float pct = Math::lerp(0, 1, t * t * t + 1); this->setSelectedZoom(pct); }; @@ -202,7 +202,7 @@ void GridTileComponent::setSelected(bool selected, new LambdaAnimation(func, 250), 0, [this] { this->setSelectedZoom(1); - mAnimPosition = Vector3f(0, 0, 0); + mAnimPosition = {}; }, false, 3); } @@ -218,7 +218,7 @@ void GridTileComponent::setSelected(bool selected, this->setSelectedZoom(1); auto func = [this](float t) { - t -= 1.0f; // Cubic ease out. + t -= 1.0f; float pct = Math::lerp(0, 1, t * t * t + 1.0f); this->setSelectedZoom(1.0f - pct); }; diff --git a/es-core/src/components/GridTileComponent.h b/es-core/src/components/GridTileComponent.h index bae039151..a4429e3f0 100644 --- a/es-core/src/components/GridTileComponent.h +++ b/es-core/src/components/GridTileComponent.h @@ -73,7 +73,7 @@ private: bool mSelected; bool mVisible; - Vector3f mAnimPosition; + glm::vec3 mAnimPosition; }; #endif // ES_CORE_COMPONENTS_GRID_TILE_COMPONENT_H diff --git a/es-core/src/components/ImageGridComponent.h b/es-core/src/components/ImageGridComponent.h index 22af36a65..0f6ef62af 100644 --- a/es-core/src/components/ImageGridComponent.h +++ b/es-core/src/components/ImageGridComponent.h @@ -101,7 +101,7 @@ private: Vector2f mAutoLayout; float mAutoLayoutZoom; - Vector4f mPadding; + glm::vec4 mPadding; Vector2f mMargin; Vector2f mTileSize; Vector2i mGridDimension; @@ -144,7 +144,7 @@ ImageGridComponent::ImageGridComponent(Window* window) mSize = screen * 0.80f; mMargin = screen * 0.07f; - mPadding = Vector4f::Zero(); + mPadding = {}; mTileSize = GridTileComponent::getDefaultTileSize(); mAnimate = true; @@ -280,8 +280,8 @@ void ImageGridComponent::applyTheme(const std::shared_ptr& theme, mMargin = elem->get("margin") * screen; if (elem->has("padding")) - mPadding = elem->get("padding") * - Vector4f(screen.x(), screen.y(), screen.x(), screen.y()); + mPadding = elem->get("padding") * + glm::vec4(screen.x(), screen.y(), screen.x(), screen.y()); if (elem->has("autoLayout")) mAutoLayout = elem->get("autoLayout"); @@ -506,7 +506,7 @@ template void ImageGridComponent::onCursorChanged(const CursorSt if (!moveCamera) return; - t -= 1.0f; // Cubic ease out. + t -= 1.0f; float pct = Math::lerp(0, 1.0f, t * t * t + 1.0f); t = startPos * (1.0f - pct) + endPos * pct; mCamera = t; @@ -538,12 +538,10 @@ template void ImageGridComponent::buildTiles() Vector2f tileDistance = mTileSize + mMargin; if (mAutoLayout.x() != 0.0f && mAutoLayout.y() != 0.0f) { - auto x = - (mSize.x() - (mMargin.x() * (mAutoLayout.x() - 1.0f)) - mPadding.x() - mPadding.z()) / - static_cast(mAutoLayout.x()); - auto y = - (mSize.y() - (mMargin.y() * (mAutoLayout.y() - 1.0f)) - mPadding.y() - mPadding.w()) / - static_cast(mAutoLayout.y()); + auto x = (mSize.x() - (mMargin.x() * (mAutoLayout.x() - 1.0f)) - mPadding.x - mPadding.z) / + static_cast(mAutoLayout.x()); + auto y = (mSize.y() - (mMargin.y() * (mAutoLayout.y() - 1.0f)) - mPadding.y - mPadding.w) / + static_cast(mAutoLayout.y()); mTileSize = Vector2f(x, y); tileDistance = mTileSize + mMargin; @@ -551,7 +549,8 @@ template void ImageGridComponent::buildTiles() bool vert = isVertical(); Vector2f startPosition = mTileSize / 2.0f; - startPosition += mPadding.v2(); + startPosition.x() += mPadding.x; + startPosition.y() += mPadding.y; int X; int Y; diff --git a/es-core/src/components/TextComponent.cpp b/es-core/src/components/TextComponent.cpp index c90e0d95a..0ca01fa57 100644 --- a/es-core/src/components/TextComponent.cpp +++ b/es-core/src/components/TextComponent.cpp @@ -33,7 +33,7 @@ TextComponent::TextComponent(Window* window, const std::shared_ptr& font, unsigned int color, Alignment align, - Vector3f pos, + glm::vec3 pos, Vector2f size, unsigned int bgcolor, float margin) @@ -54,11 +54,7 @@ TextComponent::TextComponent(Window* window, setColor(color); setBackgroundColor(bgcolor); setText(text); - - // TEMPORARY - glm::vec3 tempvec = { pos.x(), pos.y(), pos.z() }; - - setPosition(tempvec); + setPosition(pos); setSize(size); } diff --git a/es-core/src/components/TextComponent.h b/es-core/src/components/TextComponent.h index c9bf4f34f..05cbdb72a 100644 --- a/es-core/src/components/TextComponent.h +++ b/es-core/src/components/TextComponent.h @@ -30,7 +30,7 @@ public: const std::shared_ptr& font, unsigned int color = 0x000000FF, Alignment align = ALIGN_LEFT, - Vector3f pos = Vector3f::Zero(), + glm::vec3 pos = {}, Vector2f size = Vector2f::Zero(), unsigned int bgcolor = 0x00000000, float margin = 0.0f); diff --git a/es-core/src/renderers/Shader_GL21.h b/es-core/src/renderers/Shader_GL21.h index 2d64daea2..d7080ed7c 100644 --- a/es-core/src/renderers/Shader_GL21.h +++ b/es-core/src/renderers/Shader_GL21.h @@ -12,7 +12,6 @@ #define GL_GLEXT_PROTOTYPES #include "math/Misc.h" -#include "math/Vector3f.h" #if defined(_WIN64) #include From 1fb0ccef0d658c48e0504763e1fa2d1e447a2757 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Mon, 16 Aug 2021 18:25:01 +0200 Subject: [PATCH 3/5] Replaced the internal Vector2f data type and functions with the GLM library equivalent. --- es-app/src/MediaViewer.cpp | 2 +- es-app/src/SystemScreensaver.cpp | 10 +- .../src/guis/GuiCollectionSystemsOptions.cpp | 8 +- es-app/src/guis/GuiGameScraper.cpp | 14 +- es-app/src/guis/GuiGamelistFilter.cpp | 6 +- es-app/src/guis/GuiGamelistOptions.cpp | 3 +- es-app/src/guis/GuiInfoPopup.cpp | 20 +-- es-app/src/guis/GuiLaunchScreen.cpp | 16 +- es-app/src/guis/GuiMenu.cpp | 21 ++- es-app/src/guis/GuiMetaDataEd.cpp | 44 +++--- es-app/src/guis/GuiOfflineGenerator.cpp | 16 +- es-app/src/guis/GuiScraperMenu.cpp | 3 +- es-app/src/guis/GuiScraperMulti.cpp | 14 +- es-app/src/guis/GuiScraperSearch.cpp | 39 +++-- es-app/src/guis/GuiSettings.cpp | 5 +- es-app/src/views/SystemView.cpp | 121 +++++++------- es-app/src/views/SystemView.h | 10 +- es-app/src/views/ViewController.cpp | 5 +- .../src/views/gamelist/BasicGameListView.cpp | 6 +- .../views/gamelist/DetailedGameListView.cpp | 61 ++++---- .../src/views/gamelist/GridGameListView.cpp | 61 ++++---- es-app/src/views/gamelist/IGameListView.cpp | 4 +- .../views/gamelist/ISimpleGameListView.cpp | 16 +- .../src/views/gamelist/VideoGameListView.cpp | 67 ++++---- es-core/src/GuiComponent.cpp | 40 ++--- es-core/src/GuiComponent.h | 24 +-- es-core/src/HelpStyle.cpp | 13 +- es-core/src/HelpStyle.h | 6 +- es-core/src/ThemeData.cpp | 6 +- es-core/src/ThemeData.h | 10 +- es-core/src/Window.cpp | 18 +-- .../src/components/AnimatedImageComponent.cpp | 4 +- es-core/src/components/BusyComponent.cpp | 18 +-- es-core/src/components/ButtonComponent.cpp | 18 +-- es-core/src/components/ComponentGrid.cpp | 56 +++---- es-core/src/components/ComponentList.cpp | 40 ++--- es-core/src/components/DateTimeComponent.cpp | 2 +- es-core/src/components/DateTimeComponent.h | 2 +- .../src/components/DateTimeEditComponent.cpp | 26 ++-- es-core/src/components/GridTileComponent.cpp | 29 ++-- es-core/src/components/GridTileComponent.h | 12 +- es-core/src/components/HelpComponent.cpp | 12 +- es-core/src/components/ImageComponent.cpp | 147 +++++++++--------- es-core/src/components/ImageComponent.h | 16 +- es-core/src/components/ImageGridComponent.h | 80 +++++----- es-core/src/components/MenuComponent.cpp | 19 +-- es-core/src/components/NinePatchComponent.cpp | 42 ++--- es-core/src/components/NinePatchComponent.h | 8 +- es-core/src/components/OptionListComponent.h | 33 ++-- es-core/src/components/RatingComponent.cpp | 22 +-- es-core/src/components/RatingComponent.h | 2 - .../src/components/ScrollableContainer.cpp | 58 +++---- es-core/src/components/ScrollableContainer.h | 10 +- es-core/src/components/SliderComponent.cpp | 28 ++-- es-core/src/components/TextComponent.cpp | 54 +++---- es-core/src/components/TextComponent.h | 2 +- es-core/src/components/TextEditComponent.cpp | 64 ++++---- es-core/src/components/TextEditComponent.h | 8 +- es-core/src/components/TextListComponent.h | 28 ++-- es-core/src/components/VideoComponent.cpp | 16 +- es-core/src/components/VideoComponent.h | 10 +- .../src/components/VideoFFmpegComponent.cpp | 80 +++++----- es-core/src/components/VideoVlcComponent.cpp | 82 +++++----- es-core/src/guis/GuiComplexTextEditPopup.cpp | 16 +- es-core/src/guis/GuiDetectDevice.cpp | 12 +- es-core/src/guis/GuiInputConfig.cpp | 16 +- es-core/src/guis/GuiMsgBox.cpp | 42 ++--- es-core/src/guis/GuiTextEditPopup.cpp | 16 +- es-core/src/renderers/Renderer.cpp | 2 +- es-core/src/renderers/Renderer.h | 7 +- es-core/src/resources/Font.cpp | 94 ++++++----- es-core/src/resources/Font.h | 25 ++- es-core/src/resources/TextureResource.cpp | 8 +- es-core/src/resources/TextureResource.h | 6 +- 74 files changed, 964 insertions(+), 997 deletions(-) diff --git a/es-app/src/MediaViewer.cpp b/es-app/src/MediaViewer.cpp index 0a8ede44d..82ccecdc6 100644 --- a/es-app/src/MediaViewer.cpp +++ b/es-app/src/MediaViewer.cpp @@ -121,7 +121,7 @@ void MediaViewer::render() Renderer::shaderPostprocessing(shaders, videoParameters); #endif } - else if (mImage && mImage->hasImage() && mImage->getSize() != 0) { + else if (mImage && mImage->hasImage() && mImage->getSize() != glm::vec2({})) { mImage->render(trans); #if defined(USE_OPENGL_21) diff --git a/es-app/src/SystemScreensaver.cpp b/es-app/src/SystemScreensaver.cpp index 6dfd55a4f..dfdc27c4e 100644 --- a/es-app/src/SystemScreensaver.cpp +++ b/es-app/src/SystemScreensaver.cpp @@ -608,18 +608,18 @@ void SystemScreensaver::generateOverlayInfo() mGameOverlayFont.at(0)->buildTextCache(overlayText, posX, posY, 0xFFFFFFFF)); float textSizeX; - float textSizeY = mGameOverlayFont[0].get()->sizeText(overlayText).y(); + float textSizeY = mGameOverlayFont[0].get()->sizeText(overlayText).y; // There is a weird issue with sizeText() where the X size value is returned // as too large if there are two rows in a string and the second row is longer // than the first row. Possibly it's the newline character that is somehow // injected in the size calculation. Regardless, this workaround is working // fine for the time being. - if (mGameOverlayFont[0].get()->sizeText(gameName).x() > - mGameOverlayFont[0].get()->sizeText(systemName).x()) - textSizeX = mGameOverlayFont[0].get()->sizeText(gameName).x(); + if (mGameOverlayFont[0].get()->sizeText(gameName).x > + mGameOverlayFont[0].get()->sizeText(systemName).x) + textSizeX = mGameOverlayFont[0].get()->sizeText(gameName).x; else - textSizeX = mGameOverlayFont[0].get()->sizeText(systemName).x(); + textSizeX = mGameOverlayFont[0].get()->sizeText(systemName).x; float marginX = Renderer::getWindowWidth() * 0.01f; diff --git a/es-app/src/guis/GuiCollectionSystemsOptions.cpp b/es-app/src/guis/GuiCollectionSystemsOptions.cpp index 86e8404d7..76b2d27de 100644 --- a/es-app/src/guis/GuiCollectionSystemsOptions.cpp +++ b/es-app/src/guis/GuiCollectionSystemsOptions.cpp @@ -158,7 +158,7 @@ GuiCollectionSystemsOptions::GuiCollectionSystemsOptions(Window* window, std::st auto bracketThemeCollection = std::make_shared(mWindow); bracketThemeCollection->setImage(":/graphics/arrow.svg"); bracketThemeCollection->setResize( - Vector2f(0, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + glm::vec2(0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); row.addElement(themeCollection, true); row.addElement(bracketThemeCollection, false); row.makeAcceptInputHandler([this, unusedFolders] { @@ -195,7 +195,8 @@ GuiCollectionSystemsOptions::GuiCollectionSystemsOptions(Window* window, std::st Font::get(FONT_SIZE_MEDIUM), 0x777777FF); auto bracketNewCollection = std::make_shared(mWindow); bracketNewCollection->setImage(":/graphics/arrow.svg"); - bracketNewCollection->setResize(Vector2f(0, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + bracketNewCollection->setResize( + glm::vec2(0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); row.addElement(newCollection, true); row.addElement(bracketNewCollection, false); auto createCollectionCall = [this](const std::string& newVal) { @@ -219,7 +220,8 @@ GuiCollectionSystemsOptions::GuiCollectionSystemsOptions(Window* window, std::st mWindow, "DELETE CUSTOM COLLECTION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF); auto bracketDeleteCollection = std::make_shared(mWindow); bracketDeleteCollection->setImage(":/graphics/arrow.svg"); - bracketDeleteCollection->setResize(Vector2f(0, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + bracketDeleteCollection->setResize( + glm::vec2(0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); row.addElement(deleteCollection, true); row.addElement(bracketDeleteCollection, false); row.makeAcceptInputHandler([this, customSystems] { diff --git a/es-app/src/guis/GuiGameScraper.cpp b/es-app/src/guis/GuiGameScraper.cpp index ea87eb982..38d5594f4 100644 --- a/es-app/src/guis/GuiGameScraper.cpp +++ b/es-app/src/guis/GuiGameScraper.cpp @@ -106,8 +106,8 @@ GuiGameScraper::GuiGameScraper(Window* window, float width = Math::clamp(0.95f * aspectValue, 0.70f, 0.95f) * Renderer::getScreenWidth(); setSize(width, Renderer::getScreenHeight() * 0.747f); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - (Renderer::getScreenHeight() - mSize.y()) / 2.0f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, + (Renderer::getScreenHeight() - mSize.y) / 2.0f); mGrid.resetCursor(); mSearch->search(params); // Start the search. @@ -115,16 +115,14 @@ GuiGameScraper::GuiGameScraper(Window* window, void GuiGameScraper::onSizeChanged() { - mBox.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBox.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); mGrid.setRowHeightPerc(0, 0.04f, false); - mGrid.setRowHeightPerc(1, mGameName->getFont()->getLetterHeight() / mSize.y(), - false); // Game name. + mGrid.setRowHeightPerc(1, mGameName->getFont()->getLetterHeight() / mSize.y, false); mGrid.setRowHeightPerc(2, 0.04f, false); - mGrid.setRowHeightPerc(3, mSystemName->getFont()->getLetterHeight() / mSize.y(), - false); // System name. + mGrid.setRowHeightPerc(3, mSystemName->getFont()->getLetterHeight() / mSize.y, false); mGrid.setRowHeightPerc(4, 0.04f, false); - mGrid.setRowHeightPerc(6, mButtonGrid->getSize().y() / mSize.y(), false); // Buttons. + mGrid.setRowHeightPerc(6, mButtonGrid->getSize().y / mSize.y, false); mGrid.setSize(mSize); } diff --git a/es-app/src/guis/GuiGamelistFilter.cpp b/es-app/src/guis/GuiGamelistFilter.cpp index 2c48660cf..a6d19091f 100644 --- a/es-app/src/guis/GuiGamelistFilter.cpp +++ b/es-app/src/guis/GuiGamelistFilter.cpp @@ -50,7 +50,7 @@ void GuiGamelistFilter::initializeMenu() mMenu.addButton("BACK", "back", std::bind(&GuiGamelistFilter::applyFilters, this)); - mMenu.setPosition((Renderer::getScreenWidth() - mMenu.getSize().x()) / 2.0f, + mMenu.setPosition((Renderer::getScreenWidth() - mMenu.getSize().x) / 2.0f, Renderer::getScreenHeight() * 0.13f); // Save the initial filter values to be able to check later if any changes were made. @@ -101,12 +101,12 @@ void GuiGamelistFilter::addFiltersToMenu() row.addElement(mTextFilterField, true); auto spacer = std::make_shared(mWindow); - spacer->setSize(Renderer::getScreenWidth() * 0.005f, 0); + spacer->setSize(Renderer::getScreenWidth() * 0.005f, 0.0f); row.addElement(spacer, false); auto bracket = std::make_shared(mWindow); bracket->setImage(":/graphics/arrow.svg"); - bracket->setResize(Vector2f(0, lbl->getFont()->getLetterHeight())); + bracket->setResize(glm::vec2(0.0f, lbl->getFont()->getLetterHeight())); row.addElement(bracket, false); mTextFilterField->setValue(mFilterIndex->getTextFilter()); diff --git a/es-app/src/guis/GuiGamelistOptions.cpp b/es-app/src/guis/GuiGamelistOptions.cpp index 0db9424a3..9c6a5f87e 100644 --- a/es-app/src/guis/GuiGamelistOptions.cpp +++ b/es-app/src/guis/GuiGamelistOptions.cpp @@ -240,8 +240,7 @@ GuiGamelistOptions::GuiGamelistOptions(Window* window, SystemData* system) // Center the menu. setSize(static_cast(Renderer::getScreenWidth()), static_cast(Renderer::getScreenHeight())); - mMenu.setPosition((mSize.x() - mMenu.getSize().x()) / 2.0f, - (mSize.y() - mMenu.getSize().y()) / 2.0f); + mMenu.setPosition((mSize.x - mMenu.getSize().x) / 2.0f, (mSize.y - mMenu.getSize().y) / 2.0f); } GuiGamelistOptions::~GuiGamelistOptions() diff --git a/es-app/src/guis/GuiInfoPopup.cpp b/es-app/src/guis/GuiInfoPopup.cpp index 5167ae45d..0137d4ff4 100644 --- a/es-app/src/guis/GuiInfoPopup.cpp +++ b/es-app/src/guis/GuiInfoPopup.cpp @@ -33,28 +33,28 @@ GuiInfoPopup::GuiInfoPopup(Window* window, std::string message, int duration) mSize = s->getSize(); // Confirm that the size isn't larger than the screen width, otherwise cap it. - if (mSize.x() > maxWidth) { - s->setSize(maxWidth, mSize[1]); - mSize[0] = maxWidth; + if (mSize.x > maxWidth) { + s->setSize(maxWidth, mSize.y); + mSize.x = maxWidth; } - if (mSize.y() > maxHeight) { - s->setSize(mSize[0], maxHeight); - mSize[1] = maxHeight; + if (mSize.y > maxHeight) { + s->setSize(mSize.x, maxHeight); + mSize.y = maxHeight; } // Add a padding to the box. int paddingX = static_cast(Renderer::getScreenWidth() * 0.03f); int paddingY = static_cast(Renderer::getScreenHeight() * 0.02f); - mSize[0] = mSize.x() + paddingX; - mSize[1] = mSize.y() + paddingY; + mSize.x = mSize.x + paddingX; + mSize.y = mSize.y + paddingY; - float posX = Renderer::getScreenWidth() * 0.5f - mSize.x() * 0.5f; + float posX = Renderer::getScreenWidth() * 0.5f - mSize.x * 0.5f; float posY = Renderer::getScreenHeight() * 0.02f; setPosition(posX, posY, 0); mFrame->setImagePath(":/graphics/frame.svg"); - mFrame->fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mFrame->fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); addChild(mFrame); // We only initialize the actual time when we first start to render. diff --git a/es-app/src/guis/GuiLaunchScreen.cpp b/es-app/src/guis/GuiLaunchScreen.cpp index c6adb1017..590ee78d0 100644 --- a/es-app/src/guis/GuiLaunchScreen.cpp +++ b/es-app/src/guis/GuiLaunchScreen.cpp @@ -114,7 +114,7 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) Font::get(static_cast(gameNameFontSize * std::min(Renderer::getScreenHeight(), Renderer::getScreenWidth()))) ->sizeText(Utils::String::toUpper(game->getName())) - .x(); + .x; // Add a bit of width to compensate for the left and right spacers. fontWidth += static_cast(Renderer::getScreenWidth()) * 0.05f; @@ -131,15 +131,15 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) mGrid->setRowHeightPerc(0, 0.09f, false); else mGrid->setRowHeightPerc(0, 0.15f, false); - mGrid->setRowHeightPerc(1, mTitle->getFont()->getLetterHeight() * 1.70f / mSize.y(), false); + mGrid->setRowHeightPerc(1, mTitle->getFont()->getLetterHeight() * 1.70f / mSize.y, false); mGrid->setRowHeightPerc(2, 0.05f, false); if (mImagePath != "") mGrid->setRowHeightPerc(3, 0.35f, false); else mGrid->setRowHeightPerc(3, 0.01f, false); mGrid->setRowHeightPerc(4, 0.05f, false); - mGrid->setRowHeightPerc(5, mGameName->getFont()->getHeight() * 0.80f / mSize.y(), false); - mGrid->setRowHeightPerc(6, mSystemName->getFont()->getHeight() * 0.90f / mSize.y(), false); + mGrid->setRowHeightPerc(5, mGameName->getFont()->getHeight() * 0.80f / mSize.y, false); + mGrid->setRowHeightPerc(6, mSystemName->getFont()->getHeight() * 0.90f / mSize.y, false); // Set left and right spacers column widths. mGrid->setColWidthPerc(0, 0.025f); @@ -153,7 +153,7 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) for (int i = 0; i < 7; i++) totalRowHeight += mGrid->getRowHeight(i); - setSize(mSize.x(), totalRowHeight); + setSize(mSize.x, totalRowHeight); mGameName->setText(Utils::String::toUpper(game->getName())); mSystemName->setText(Utils::String::toUpper(game->getSystem()->getFullName())); @@ -170,10 +170,10 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) mMarquee->setOrigin(0.5f, 0.5f); glm::vec3 currentPos = mMarquee->getPosition(); - Vector2f currentSize = mMarquee->getSize(); + glm::vec2 currentSize = mMarquee->getSize(); // Position the image in the middle of row four. - currentPos.x = mSize.x() / 2.0f; + currentPos.x = mSize.x / 2.0f; currentPos.y = mGrid->getRowHeight(0) + mGrid->getRowHeight(1) + mGrid->getRowHeight(2) + mGrid->getRowHeight(3) / 2.0f; mMarquee->setPosition(currentPos); @@ -185,7 +185,7 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) setPosition(static_cast(Renderer::getScreenWidth()) / 2.0f, static_cast(Renderer::getScreenHeight()) / 2.25f); - mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); mBackground.setEdgeColor(0xEEEEEEFF); } diff --git a/es-app/src/guis/GuiMenu.cpp b/es-app/src/guis/GuiMenu.cpp index 3cd80dc9f..a7ff2208a 100644 --- a/es-app/src/guis/GuiMenu.cpp +++ b/es-app/src/guis/GuiMenu.cpp @@ -75,8 +75,7 @@ GuiMenu::GuiMenu(Window* window) addChild(&mMenu); addVersionInfo(); setSize(mMenu.getSize()); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - Renderer::getScreenHeight() * 0.13f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, Renderer::getScreenHeight() * 0.13f); } GuiMenu::~GuiMenu() @@ -97,17 +96,16 @@ void GuiMenu::openUIOptions() auto startup_system = std::make_shared>( mWindow, getHelpStyle(), "GAMELIST ON STARTUP", false); startup_system->add("NONE", "", Settings::getInstance()->getString("StartupSystem") == ""); - float dotsSize = Font::get(FONT_SIZE_MEDIUM)->sizeText("...").x(); + float dotsSize = Font::get(FONT_SIZE_MEDIUM)->sizeText("...").x; for (auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++) { if ((*it)->getName() != "retropie") { // If required, abbreviate the system name so it doesn't overlap the setting name. std::string abbreviatedString = - Font::get(FONT_SIZE_MEDIUM) - ->getTextMaxWidth((*it)->getFullName(), mSize.x() * 0.47f); - float sizeDifference = Font::get(FONT_SIZE_MEDIUM)->sizeText((*it)->getFullName()).x() - - Font::get(FONT_SIZE_MEDIUM)->sizeText(abbreviatedString).x(); - if (sizeDifference > 0) { + Font::get(FONT_SIZE_MEDIUM)->getTextMaxWidth((*it)->getFullName(), mSize.x * 0.47f); + float sizeDifference = Font::get(FONT_SIZE_MEDIUM)->sizeText((*it)->getFullName()).x - + Font::get(FONT_SIZE_MEDIUM)->sizeText(abbreviatedString).x; + if (sizeDifference > 0.0f) { // It doesn't make sense to abbreviate if the number of pixels removed by // the abbreviation is less or equal to the size of the three dots that // would be appended to the string. @@ -899,7 +897,8 @@ void GuiMenu::openOtherOptions() Font::get(FONT_SIZE_MEDIUM), 0x777777FF); auto bracketMediaDirectory = std::make_shared(mWindow); bracketMediaDirectory->setImage(":/graphics/arrow.svg"); - bracketMediaDirectory->setResize(Vector2f(0, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + bracketMediaDirectory->setResize( + glm::vec2(0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); rowMediaDir.addElement(media_directory, true); rowMediaDir.addElement(bracketMediaDirectory, false); std::string titleMediaDir = "ENTER GAME MEDIA DIRECTORY"; @@ -1259,8 +1258,8 @@ void GuiMenu::openCollectionSystemOptions() void GuiMenu::onSizeChanged() { - mVersion.setSize(mSize.x(), 0); - mVersion.setPosition(0, mSize.y() - mVersion.getSize().y()); + mVersion.setSize(mSize.x, 0.0f); + mVersion.setPosition(0.0f, mSize.y - mVersion.getSize().y); } void GuiMenu::addEntry(const std::string& name, diff --git a/es-app/src/guis/GuiMetaDataEd.cpp b/es-app/src/guis/GuiMetaDataEd.cpp index 72ac65353..fbb7506e1 100644 --- a/es-app/src/guis/GuiMetaDataEd.cpp +++ b/es-app/src/guis/GuiMetaDataEd.cpp @@ -78,7 +78,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, folderPath + Utils::FileSystem::getFileName(scraperParams.game->getPath()) + " [" + Utils::String::toUpper(scraperParams.system->getName()) + "]" + (scraperParams.game->getType() == FOLDER ? " " + ViewController::FOLDER_CHAR : ""), - Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER, glm::vec3 {}, Vector2f(0.0f, 0.0f), + Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER, glm::vec3({}), glm::vec2({}), 0x00000000, 0.05f); mHeaderGrid->setEntry(mTitle, Vector2i(0, 1), false, true); mHeaderGrid->setEntry(mSubtitle, Vector2i(0, 3), false, true); @@ -123,8 +123,8 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, case MD_BOOL: { ed = std::make_shared(window); // Make the switches slightly smaller. - auto switchSize = ed->getSize() * 0.9f; - ed->setResize(switchSize.x(), switchSize.y()); + glm::vec2 switchSize = ed->getSize() * 0.9f; + ed->setResize(switchSize.x, switchSize.y); ed->setOrigin(-0.05f, -0.09f); ed->setChangedColor(ICONCOLOR_USERMARKED); @@ -138,8 +138,8 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, ed = std::make_shared(window, true); ed->setChangedColor(ICONCOLOR_USERMARKED); - const float height = lbl->getSize().y() * 0.71f; - ed->setSize(0, height); + const float height = lbl->getSize().y * 0.71f; + ed->setSize(0.0f, height); row.addElement(ed, false, true); auto ratingSpacer = std::make_shared(mWindow); @@ -182,7 +182,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, auto bracket = std::make_shared(mWindow); bracket->setImage(":/graphics/arrow.svg"); - bracket->setResize(Vector2f(0, lbl->getFont()->getLetterHeight())); + bracket->setResize(glm::vec2(0.0f, lbl->getFont()->getLetterHeight())); row.addElement(bracket, false); bool multiLine = false; @@ -223,7 +223,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, auto bracket = std::make_shared(mWindow); bracket->setImage(":/graphics/arrow.svg"); - bracket->setResize(Vector2f(0, lbl->getFont()->getLetterHeight())); + bracket->setResize(glm::vec2(0.0f, lbl->getFont()->getLetterHeight())); row.addElement(bracket, false); bool multiLine = iter->type == MD_MULTILINE_STRING; @@ -353,8 +353,8 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, static_cast(std::min(static_cast(Renderer::getScreenHeight() * 1.05f), static_cast(Renderer::getScreenWidth() * 0.90f))); setSize(width, Renderer::getScreenHeight() * 0.83f); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - (Renderer::getScreenHeight() - mSize.y()) / 2.0f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, + (Renderer::getScreenHeight() - mSize.y) / 2.0f); } void GuiMetaDataEd::onSizeChanged() @@ -363,19 +363,19 @@ void GuiMetaDataEd::onSizeChanged() const float titleHeight = mTitle->getFont()->getLetterHeight(); const float subtitleHeight = mSubtitle->getFont()->getLetterHeight(); - const float titleSubtitleSpacing = mSize.y() * 0.03f; + const float titleSubtitleSpacing = mSize.y * 0.03f; mGrid.setRowHeightPerc( - 0, (titleHeight + titleSubtitleSpacing + subtitleHeight + TITLE_VERT_PADDING) / mSize.y()); - mGrid.setRowHeightPerc(2, mButtons->getSize().y() / mSize.y()); + 0, (titleHeight + titleSubtitleSpacing + subtitleHeight + TITLE_VERT_PADDING) / mSize.y); + mGrid.setRowHeightPerc(2, mButtons->getSize().y / mSize.y); // Snap list size to the row height to prevent a fraction of a row from being displayed. - float listHeight = 0; - float listSize = mList->getSize().y(); + float listHeight = 0.0f; + float listSize = mList->getSize().y; int i = 0; while (i < mList->size()) { // Add the separator height to the row height so that it also gets properly rendered. - float rowHeight = mList->getRowHeight(i) + (1 * Renderer::getScreenHeightModifier()); + float rowHeight = mList->getRowHeight(i) + Renderer::getScreenHeightModifier(); if (listHeight + rowHeight < listSize) listHeight += rowHeight; else @@ -385,19 +385,19 @@ void GuiMetaDataEd::onSizeChanged() // Adjust the size of the list and window. float heightAdjustment = listSize - listHeight; - mList->setSize(mList->getSize().x(), listHeight); - Vector2f newWindowSize = mSize; - newWindowSize.y() -= heightAdjustment; - mBackground.fitTo(newWindowSize, {}, Vector2f(-32.0f, -32.0f)); + mList->setSize(mList->getSize().x, listHeight); + glm::vec2 newWindowSize = mSize; + newWindowSize.y -= heightAdjustment; + mBackground.fitTo(newWindowSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); // Move the buttons up as well to make the layout align correctly after the resize. glm::vec3 newButtonPos = mButtons->getPosition(); newButtonPos.y -= heightAdjustment; mButtons->setPosition(newButtonPos); - mHeaderGrid->setRowHeightPerc(1, titleHeight / mHeaderGrid->getSize().y()); - mHeaderGrid->setRowHeightPerc(2, titleSubtitleSpacing / mHeaderGrid->getSize().y()); - mHeaderGrid->setRowHeightPerc(3, subtitleHeight / mHeaderGrid->getSize().y()); + mHeaderGrid->setRowHeightPerc(1, titleHeight / mHeaderGrid->getSize().y); + mHeaderGrid->setRowHeightPerc(2, titleSubtitleSpacing / mHeaderGrid->getSize().y); + mHeaderGrid->setRowHeightPerc(3, subtitleHeight / mHeaderGrid->getSize().y); } void GuiMetaDataEd::save() diff --git a/es-app/src/guis/GuiOfflineGenerator.cpp b/es-app/src/guis/GuiOfflineGenerator.cpp index 9cfeb005a..16c8bc85c 100644 --- a/es-app/src/guis/GuiOfflineGenerator.cpp +++ b/es-app/src/guis/GuiOfflineGenerator.cpp @@ -185,8 +185,8 @@ GuiOfflineGenerator::GuiOfflineGenerator(Window* window, const std::queuegetFont()->getLetterHeight() * 1.9725f / mSize.y(), false); - mGrid.setRowHeightPerc(1, (mStatus->getFont()->getLetterHeight() + 2.0f) / mSize.y(), false); - mGrid.setRowHeightPerc(2, mGameCounter->getFont()->getHeight() * 1.75f / mSize.y(), false); - mGrid.setRowHeightPerc(3, (mStatus->getFont()->getLetterHeight() + 3.0f) / mSize.y(), false); + mGrid.setRowHeightPerc(0, mTitle->getFont()->getLetterHeight() * 1.9725f / mSize.y, false); + mGrid.setRowHeightPerc(1, (mStatus->getFont()->getLetterHeight() + 2.0f) / mSize.y, false); + mGrid.setRowHeightPerc(2, mGameCounter->getFont()->getHeight() * 1.75f / mSize.y, false); + mGrid.setRowHeightPerc(3, (mStatus->getFont()->getLetterHeight() + 3.0f) / mSize.y, false); mGrid.setRowHeightPerc(4, 0.07f, false); mGrid.setRowHeightPerc(5, 0.07f, false); mGrid.setRowHeightPerc(6, 0.07f, false); @@ -217,7 +217,7 @@ void GuiOfflineGenerator::onSizeChanged() mGrid.setRowHeightPerc(8, 0.02f, false); mGrid.setRowHeightPerc(9, 0.07f, false); mGrid.setRowHeightPerc(10, 0.07f, false); - mGrid.setRowHeightPerc(12, mButtonGrid->getSize().y() / mSize.y(), false); + mGrid.setRowHeightPerc(12, mButtonGrid->getSize().y / mSize.y, false); // Set column widths. mGrid.setColWidthPerc(0, 0.03f); diff --git a/es-app/src/guis/GuiScraperMenu.cpp b/es-app/src/guis/GuiScraperMenu.cpp index 4040c0e50..b85698e59 100644 --- a/es-app/src/guis/GuiScraperMenu.cpp +++ b/es-app/src/guis/GuiScraperMenu.cpp @@ -140,8 +140,7 @@ GuiScraperMenu::GuiScraperMenu(Window* window, std::string title) setSize(mMenu.getSize()); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - Renderer::getScreenHeight() * 0.13f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, Renderer::getScreenHeight() * 0.13f); } GuiScraperMenu::~GuiScraperMenu() diff --git a/es-app/src/guis/GuiScraperMulti.cpp b/es-app/src/guis/GuiScraperMulti.cpp index 3e79fd60d..70233e14e 100644 --- a/es-app/src/guis/GuiScraperMulti.cpp +++ b/es-app/src/guis/GuiScraperMulti.cpp @@ -110,8 +110,8 @@ GuiScraperMulti::GuiScraperMulti(Window* window, float width = Math::clamp(0.95f * aspectValue, 0.70f, 0.95f) * Renderer::getScreenWidth(); setSize(width, Renderer::getScreenHeight() * 0.849f); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - (Renderer::getScreenHeight() - mSize.y()) / 2.0f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, + (Renderer::getScreenHeight() - mSize.y) / 2.0f); doNextSearch(); } @@ -130,12 +130,12 @@ GuiScraperMulti::~GuiScraperMulti() void GuiScraperMulti::onSizeChanged() { - mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); - mGrid.setRowHeightPerc(0, mTitle->getFont()->getLetterHeight() * 1.9725f / mSize.y(), false); - mGrid.setRowHeightPerc(1, (mSystem->getFont()->getLetterHeight() + 2.0f) / mSize.y(), false); - mGrid.setRowHeightPerc(2, mSubtitle->getFont()->getHeight() * 1.75f / mSize.y(), false); - mGrid.setRowHeightPerc(4, mButtonGrid->getSize().y() / mSize.y(), false); + mGrid.setRowHeightPerc(0, mTitle->getFont()->getLetterHeight() * 1.9725f / mSize.y, false); + mGrid.setRowHeightPerc(1, (mSystem->getFont()->getLetterHeight() + 2.0f) / mSize.y, false); + mGrid.setRowHeightPerc(2, mSubtitle->getFont()->getHeight() * 1.75f / mSize.y, false); + mGrid.setRowHeightPerc(4, mButtonGrid->getSize().y / mSize.y, false); mGrid.setSize(mSize); } diff --git a/es-app/src/guis/GuiScraperSearch.cpp b/es-app/src/guis/GuiScraperSearch.cpp index 30a13a08e..262bff12b 100644 --- a/es-app/src/guis/GuiScraperSearch.cpp +++ b/es-app/src/guis/GuiScraperSearch.cpp @@ -88,13 +88,13 @@ GuiScraperSearch::GuiScraperSearch(Window* window, SearchType type, unsigned int mMD_ReleaseDate->setColor(mdColor); mMD_ReleaseDate->setUppercase(true); mMD_Developer = std::make_shared( - mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3 {}, Vector2f::Zero(), 0x00000000, 0.02f); + mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3({}), glm::vec2({}), 0x00000000, 0.02f); mMD_Publisher = std::make_shared( - mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3 {}, Vector2f::Zero(), 0x00000000, 0.02f); + mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3({}), glm::vec2({}), 0x00000000, 0.02f); mMD_Genre = std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, - glm::vec3 {}, Vector2f::Zero(), 0x00000000, 0.02f); - mMD_Players = std::make_shared( - mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3 {}, Vector2f::Zero(), 0x00000000, 0.02f); + glm::vec3({}), glm::vec2({}), 0x00000000, 0.02f); + mMD_Players = std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, + glm::vec3({}), glm::vec2({}), 0x00000000, 0.02f); mMD_Filler = std::make_shared(mWindow, "", font, mdColor); if (Settings::getInstance()->getString("Scraper") != "thegamesdb") @@ -180,7 +180,7 @@ void GuiScraperSearch::onSizeChanged() { mGrid.setSize(mSize); - if (mSize.x() == 0 || mSize.y() == 0) + if (mSize.x == 0 || mSize.y == 0) return; // Column widths. @@ -199,7 +199,7 @@ void GuiScraperSearch::onSizeChanged() // Row heights. if (mSearchType == ALWAYS_ACCEPT_FIRST_RESULT) // Show name. mGrid.setRowHeightPerc(0, (mResultName->getFont()->getHeight() * 1.6f) / - mGrid.getSize().y()); // Result name. + mGrid.getSize().y); // Result name. else mGrid.setRowHeightPerc(0, 0.0825f); // Hide name but do padding. @@ -226,11 +226,11 @@ void GuiScraperSearch::onSizeChanged() mResultDesc->getFont()->getHeight() * 6.0f); // Make description text wrap at edge of container. - mResultDesc->setSize(mDescContainer->getSize().x(), 0); + mResultDesc->setSize(mDescContainer->getSize().x, 0.0f); // Set the width of mResultName to the cell width so that text abbreviation will work correctly. - Vector2f resultNameSize = mResultName->getSize(); - mResultName->setSize(mGrid.getColWidth(3), resultNameSize.y()); + glm::vec2 resultNameSize = mResultName->getSize(); + mResultName->setSize(mGrid.getColWidth(3), resultNameSize.y); mGrid.onSizeChanged(); mBusyAnim.setSize(mSize); @@ -239,8 +239,8 @@ void GuiScraperSearch::onSizeChanged() void GuiScraperSearch::resizeMetadata() { mMD_Grid->setSize(mGrid.getColWidth(2), mGrid.getRowHeight(1)); - if (mMD_Grid->getSize().y() > mMD_Pairs.size()) { - const int fontHeight = static_cast(mMD_Grid->getSize().y() / mMD_Pairs.size() * 0.8f); + if (mMD_Grid->getSize().y > mMD_Pairs.size()) { + const int fontHeight = static_cast(mMD_Grid->getSize().y / mMD_Pairs.size() * 0.8f); auto fontLbl = Font::get(fontHeight, FONT_PATH_REGULAR); auto fontComp = Font::get(fontHeight, FONT_PATH_LIGHT); @@ -249,15 +249,14 @@ void GuiScraperSearch::resizeMetadata() for (auto it = mMD_Pairs.cbegin(); it != mMD_Pairs.cend(); it++) { it->first->setFont(fontLbl); it->first->setSize(0, 0); - if (it->first->getSize().x() > maxLblWidth) - maxLblWidth = - it->first->getSize().x() + (16.0f * Renderer::getScreenWidthModifier()); + if (it->first->getSize().x > maxLblWidth) + maxLblWidth = it->first->getSize().x + (16.0f * Renderer::getScreenWidthModifier()); } for (unsigned int i = 0; i < mMD_Pairs.size(); i++) mMD_Grid->setRowHeightPerc( i * 2, (fontLbl->getLetterHeight() + (2.0f * Renderer::getScreenHeightModifier())) / - mMD_Grid->getSize().y()); + mMD_Grid->getSize().y); // Update component fonts. mMD_ReleaseDate->setFont(fontComp); @@ -266,7 +265,7 @@ void GuiScraperSearch::resizeMetadata() mMD_Genre->setFont(fontComp); mMD_Players->setFont(fontComp); - mMD_Grid->setColWidthPerc(0, maxLblWidth / mMD_Grid->getSize().x()); + mMD_Grid->setColWidthPerc(0, maxLblWidth / mMD_Grid->getSize().x); if (mScrapeRatings) { // Rating is manually sized. @@ -300,7 +299,7 @@ void GuiScraperSearch::updateViewStyle() mGrid.setEntry(mDescContainer, Vector2i(3, 0), false, false, Vector2i(1, 3), GridFlags::BORDER_TOP | GridFlags::BORDER_BOTTOM); // Make description text wrap at edge of container. - mResultDesc->setSize(mDescContainer->getSize().x(), 0.0f); + mResultDesc->setSize(mDescContainer->getSize().x, 0.0f); } else { // Fake row where name would be. @@ -315,7 +314,7 @@ void GuiScraperSearch::updateViewStyle() mGrid.setEntry(mDescContainer, Vector2i(1, 2), false, false, Vector2i(2, 1), GridFlags::BORDER_BOTTOM); // Make description text wrap at edge of container. - mResultDesc->setSize(mDescContainer->getSize().x(), 0); + mResultDesc->setSize(mDescContainer->getSize().x, 0); } } @@ -566,7 +565,7 @@ void GuiScraperSearch::render(const glm::mat4& parentTrans) glm::mat4 trans = parentTrans * getTransform(); renderChildren(trans); - Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0x00000009, 0x00000009); + Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, 0x00000009, 0x00000009); if (mBlockAccept) { Renderer::setMatrix(trans); diff --git a/es-app/src/guis/GuiSettings.cpp b/es-app/src/guis/GuiSettings.cpp index 3f65efd8c..87e000e27 100644 --- a/es-app/src/guis/GuiSettings.cpp +++ b/es-app/src/guis/GuiSettings.cpp @@ -41,8 +41,7 @@ GuiSettings::GuiSettings(Window* window, std::string title) setSize(static_cast(Renderer::getScreenWidth()), static_cast(Renderer::getScreenHeight())); - mMenu.setPosition((mSize.x() - mMenu.getSize().x()) / 2.0f, - Renderer::getScreenHeight() * 0.13f); + mMenu.setPosition((mSize.x - mMenu.getSize().x) / 2.0f, Renderer::getScreenHeight() * 0.13f); } GuiSettings::~GuiSettings() @@ -171,7 +170,7 @@ void GuiSettings::addEditableTextComponent(const std::string label, auto bracket = std::make_shared(mWindow); bracket->setImage(":/graphics/arrow.svg"); - bracket->setResize(Vector2f(0, lbl->getFont()->getLetterHeight())); + bracket->setResize(glm::vec2(0.0f, lbl->getFont()->getLetterHeight())); row.addElement(bracket, false); // OK callback (apply new value to ed). diff --git a/es-app/src/views/SystemView.cpp b/es-app/src/views/SystemView.cpp index 1810b71b4..eb9c285c4 100644 --- a/es-app/src/views/SystemView.cpp +++ b/es-app/src/views/SystemView.cpp @@ -123,8 +123,8 @@ void SystemView::populate() e.data.logo->setOrigin(0.5, 0.5); } - Vector2f denormalized = mCarousel.logoSize * e.data.logo->getOrigin(); - e.data.logo->setPosition(denormalized.x(), denormalized.y(), 0.0); + glm::vec2 denormalized = mCarousel.logoSize * e.data.logo->getOrigin(); + e.data.logo->setPosition(denormalized.x, denormalized.y, 0.0f); // Make background extras. e.data.backgroundExtras = ThemeData::makeExtras((*it)->getTheme(), "system", mWindow); @@ -474,83 +474,76 @@ void SystemView::getViewElements(const std::shared_ptr& theme) void SystemView::renderCarousel(const glm::mat4& trans) { - // Background box behind logos. glm::mat4 carouselTrans = trans; carouselTrans = - glm::translate(carouselTrans, glm::vec3(mCarousel.pos.x(), mCarousel.pos.y(), 0.0f)); - carouselTrans = glm::translate( - carouselTrans, glm::vec3(mCarousel.origin.x() * mCarousel.size.x() * -1.0f, - mCarousel.origin.y() * mCarousel.size.y() * -1.0f, 0.0f)); + glm::translate(carouselTrans, glm::vec3(mCarousel.pos.x, mCarousel.pos.y, 0.0f)); + carouselTrans = glm::translate(carouselTrans, + glm::vec3(mCarousel.origin.x * mCarousel.size.x * -1.0f, + mCarousel.origin.y * mCarousel.size.y * -1.0f, 0.0f)); glm::vec2 clipPos(carouselTrans[3].x, carouselTrans[3].y); Renderer::pushClipRect( Vector2i(static_cast(clipPos.x), static_cast(clipPos.y)), - Vector2i(static_cast(mCarousel.size.x()), static_cast(mCarousel.size.y()))); + Vector2i(static_cast(mCarousel.size.x), static_cast(mCarousel.size.y))); Renderer::setMatrix(carouselTrans); - Renderer::drawRect(0.0f, 0.0f, mCarousel.size.x(), mCarousel.size.y(), mCarousel.color, + Renderer::drawRect(0.0f, 0.0f, mCarousel.size.x, mCarousel.size.y, mCarousel.color, mCarousel.colorEnd, mCarousel.colorGradientHorizontal); // Draw logos. // Note: logoSpacing will also include the size of the logo itself. - Vector2f logoSpacing(0.0f, 0.0f); + glm::vec2 logoSpacing(0.0f, 0.0f); float xOff = 0.0f; float yOff = 0.0f; switch (mCarousel.type) { case VERTICAL_WHEEL: { - yOff = (mCarousel.size.y() - mCarousel.logoSize.y()) / 2.0f - - (mCamOffset * logoSpacing[1]); + yOff = (mCarousel.size.y - mCarousel.logoSize.y) / 2.0f - (mCamOffset * logoSpacing.y); if (mCarousel.logoAlignment == ALIGN_LEFT) - xOff = mCarousel.logoSize.x() / 10.0f; + xOff = mCarousel.logoSize.x / 10.0f; else if (mCarousel.logoAlignment == ALIGN_RIGHT) - xOff = mCarousel.size.x() - (mCarousel.logoSize.x() * 1.1f); + xOff = mCarousel.size.x - (mCarousel.logoSize.x * 1.1f); else - xOff = (mCarousel.size.x() - mCarousel.logoSize.x()) / 2.0f; + xOff = (mCarousel.size.x - mCarousel.logoSize.x) / 2.0f; break; } case VERTICAL: { - logoSpacing[1] = - ((mCarousel.size.y() - (mCarousel.logoSize.y() * mCarousel.maxLogoCount)) / - (mCarousel.maxLogoCount)) + - mCarousel.logoSize.y(); - yOff = (mCarousel.size.y() - mCarousel.logoSize.y()) / 2.0f - - (mCamOffset * logoSpacing[1]); + logoSpacing.y = ((mCarousel.size.y - (mCarousel.logoSize.y * mCarousel.maxLogoCount)) / + (mCarousel.maxLogoCount)) + + mCarousel.logoSize.y; + yOff = (mCarousel.size.y - mCarousel.logoSize.y) / 2.0f - (mCamOffset * logoSpacing.y); if (mCarousel.logoAlignment == ALIGN_LEFT) - xOff = mCarousel.logoSize.x() / 10.0f; + xOff = mCarousel.logoSize.x / 10.0f; else if (mCarousel.logoAlignment == ALIGN_RIGHT) - xOff = mCarousel.size.x() - (mCarousel.logoSize.x() * 1.1f); + xOff = mCarousel.size.x - (mCarousel.logoSize.x * 1.1f); else - xOff = (mCarousel.size.x() - mCarousel.logoSize.x()) / 2.0f; + xOff = (mCarousel.size.x - mCarousel.logoSize.x) / 2.0f; break; } case HORIZONTAL_WHEEL: { - xOff = (mCarousel.size.x() - mCarousel.logoSize.x()) / 2.0f - - (mCamOffset * logoSpacing[1]); + xOff = (mCarousel.size.x - mCarousel.logoSize.x) / 2.0f - (mCamOffset * logoSpacing.y); if (mCarousel.logoAlignment == ALIGN_TOP) - yOff = mCarousel.logoSize.y() / 10.0f; + yOff = mCarousel.logoSize.y / 10.0f; else if (mCarousel.logoAlignment == ALIGN_BOTTOM) - yOff = mCarousel.size.y() - (mCarousel.logoSize.y() * 1.1f); + yOff = mCarousel.size.y - (mCarousel.logoSize.y * 1.1f); else - yOff = (mCarousel.size.y() - mCarousel.logoSize.y()) / 2.0f; + yOff = (mCarousel.size.y - mCarousel.logoSize.y) / 2.0f; break; } case HORIZONTAL: { } default: { - logoSpacing[0] = - ((mCarousel.size.x() - (mCarousel.logoSize.x() * mCarousel.maxLogoCount)) / - (mCarousel.maxLogoCount)) + - mCarousel.logoSize.x(); - xOff = (mCarousel.size.x() - mCarousel.logoSize.x()) / 2.0f - - (mCamOffset * logoSpacing[0]); + logoSpacing.x = ((mCarousel.size.x - (mCarousel.logoSize.x * mCarousel.maxLogoCount)) / + (mCarousel.maxLogoCount)) + + mCarousel.logoSize.x; + xOff = (mCarousel.size.x - mCarousel.logoSize.x) / 2.0f - (mCamOffset * logoSpacing.x); if (mCarousel.logoAlignment == ALIGN_TOP) - yOff = mCarousel.logoSize.y() / 10.0f; + yOff = mCarousel.logoSize.y / 10.0f; else if (mCarousel.logoAlignment == ALIGN_BOTTOM) - yOff = mCarousel.size.y() - (mCarousel.logoSize.y() * 1.1f); + yOff = mCarousel.size.y - (mCarousel.logoSize.y * 1.1f); else - yOff = (mCarousel.size.y() - mCarousel.logoSize.y()) / 2.0f; + yOff = (mCarousel.size.y - mCarousel.logoSize.y) / 2.0f; break; } } @@ -578,7 +571,7 @@ void SystemView::renderCarousel(const glm::mat4& trans) glm::mat4 logoTrans = carouselTrans; logoTrans = glm::translate( - logoTrans, glm::vec3(i * logoSpacing[0] + xOff, i * logoSpacing[1] + yOff, 0.0f)); + logoTrans, glm::vec3(i * logoSpacing.x + xOff, i * logoSpacing.y + yOff, 0.0f)); float distance = i - mCamOffset; @@ -610,7 +603,7 @@ void SystemView::renderExtras(const glm::mat4& trans, float lower, float upper) int bufferIndex = getScrollingVelocity() + 1; Renderer::pushClipRect(Vector2i::Zero(), - Vector2i(static_cast(mSize.x()), static_cast(mSize.y()))); + Vector2i(static_cast(mSize.x), static_cast(mSize.y))); for (int i = extrasCenter + logoBuffersLeft[bufferIndex]; i <= extrasCenter + logoBuffersRight[bufferIndex]; i++) { @@ -625,14 +618,14 @@ void SystemView::renderExtras(const glm::mat4& trans, float lower, float upper) glm::mat4 extrasTrans = trans; if (mCarousel.type == HORIZONTAL || mCarousel.type == HORIZONTAL_WHEEL) extrasTrans = glm::translate( - extrasTrans, glm::vec3((i - mExtrasCamOffset) * mSize.x(), 0.0f, 0.0f)); + extrasTrans, glm::vec3((i - mExtrasCamOffset) * mSize.x, 0.0f, 0.0f)); else extrasTrans = glm::translate( - extrasTrans, glm::vec3(0.0f, (i - mExtrasCamOffset) * mSize.y(), 0.0f)); + extrasTrans, glm::vec3(0.0f, (i - mExtrasCamOffset) * mSize.y, 0.0f)); Renderer::pushClipRect( Vector2i(static_cast(extrasTrans[3].x), static_cast(extrasTrans[3].y)), - Vector2i(static_cast(mSize.x()), static_cast(mSize.y()))); + Vector2i(static_cast(mSize.x), static_cast(mSize.y))); SystemViewData data = mEntries.at(index).data; for (unsigned int j = 0; j < data.backgroundExtras.size(); j++) { GuiComponent* extra = data.backgroundExtras[j]; @@ -650,7 +643,7 @@ void SystemView::renderFade(const glm::mat4& trans) { unsigned int fadeColor = 0x00000000 | static_cast(mExtrasFadeOpacity * 255.0f); Renderer::setMatrix(trans); - Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), fadeColor, fadeColor); + Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, fadeColor, fadeColor); } void SystemView::getDefaultElements(void) @@ -658,33 +651,33 @@ void SystemView::getDefaultElements(void) // Carousel. mCarousel.type = HORIZONTAL; mCarousel.logoAlignment = ALIGN_CENTER; - mCarousel.size.x() = mSize.x(); - mCarousel.size.y() = floorf(0.2325f * mSize.y()); - mCarousel.pos.x() = 0.0f; - mCarousel.pos.y() = floorf(0.5f * (mSize.y() - mCarousel.size.y())); - mCarousel.origin.x() = 0.0f; - mCarousel.origin.y() = 0.0f; + mCarousel.size.x = mSize.x; + mCarousel.size.y = floorf(0.2325f * mSize.y); + mCarousel.pos.x = 0.0f; + mCarousel.pos.y = floorf(0.5f * (mSize.y - mCarousel.size.y)); + mCarousel.origin.x = 0.0f; + mCarousel.origin.y = 0.0f; mCarousel.color = 0xFFFFFFD8; mCarousel.colorEnd = 0xFFFFFFD8; mCarousel.colorGradientHorizontal = true; mCarousel.logoScale = 1.2f; mCarousel.logoRotation = 7.5f; - mCarousel.logoRotationOrigin.x() = -5.0f; - mCarousel.logoRotationOrigin.y() = 0.5f; - mCarousel.logoSize.x() = 0.25f * mSize.x(); - mCarousel.logoSize.y() = 0.155f * mSize.y(); + mCarousel.logoRotationOrigin.x = -5.0f; + mCarousel.logoRotationOrigin.y = 0.5f; + mCarousel.logoSize.x = 0.25f * mSize.x; + mCarousel.logoSize.y = 0.155f * mSize.y; mCarousel.maxLogoCount = 3; mCarousel.zIndex = 40.0f; // System info bar. - mSystemInfo.setSize(mSize.x(), mSystemInfo.getFont()->getLetterHeight() * 2.2f); - mSystemInfo.setPosition(0, mCarousel.pos.y() + mCarousel.size.y()); + mSystemInfo.setSize(mSize.x, mSystemInfo.getFont()->getLetterHeight() * 2.2f); + mSystemInfo.setPosition(0.0f, mCarousel.pos.y + mCarousel.size.y); mSystemInfo.setBackgroundColor(0xDDDDDDD8); mSystemInfo.setRenderBackground(true); - mSystemInfo.setFont(Font::get(static_cast(0.035f * mSize.y()), Font::getDefaultPath())); + mSystemInfo.setFont(Font::get(static_cast(0.035f * mSize.y), Font::getDefaultPath())); mSystemInfo.setColor(0x000000FF); - mSystemInfo.setZIndex(50); - mSystemInfo.setDefaultZIndex(50); + mSystemInfo.setZIndex(50.0f); + mSystemInfo.setDefaultZIndex(50.0f); } void SystemView::getCarouselFromTheme(const ThemeData::ThemeElement* elem) @@ -700,11 +693,11 @@ void SystemView::getCarouselFromTheme(const ThemeData::ThemeElement* elem) mCarousel.type = HORIZONTAL; } if (elem->has("size")) - mCarousel.size = elem->get("size") * mSize; + mCarousel.size = elem->get("size") * mSize; if (elem->has("pos")) - mCarousel.pos = elem->get("pos") * mSize; + mCarousel.pos = elem->get("pos") * mSize; if (elem->has("origin")) - mCarousel.origin = elem->get("origin"); + mCarousel.origin = elem->get("origin"); if (elem->has("color")) { mCarousel.color = elem->get("color"); mCarousel.colorEnd = mCarousel.color; @@ -717,7 +710,7 @@ void SystemView::getCarouselFromTheme(const ThemeData::ThemeElement* elem) if (elem->has("logoScale")) mCarousel.logoScale = elem->get("logoScale"); if (elem->has("logoSize")) - mCarousel.logoSize = elem->get("logoSize") * mSize; + mCarousel.logoSize = elem->get("logoSize") * mSize; if (elem->has("maxLogoCount")) mCarousel.maxLogoCount = static_cast(std::round(elem->get("maxLogoCount"))); if (elem->has("zIndex")) @@ -725,7 +718,7 @@ void SystemView::getCarouselFromTheme(const ThemeData::ThemeElement* elem) if (elem->has("logoRotation")) mCarousel.logoRotation = elem->get("logoRotation"); if (elem->has("logoRotationOrigin")) - mCarousel.logoRotationOrigin = elem->get("logoRotationOrigin"); + mCarousel.logoRotationOrigin = elem->get("logoRotationOrigin"); if (elem->has("logoAlignment")) { if (!(elem->get("logoAlignment").compare("left"))) mCarousel.logoAlignment = ALIGN_LEFT; diff --git a/es-app/src/views/SystemView.h b/es-app/src/views/SystemView.h index 391da7929..6e590c971 100644 --- a/es-app/src/views/SystemView.h +++ b/es-app/src/views/SystemView.h @@ -34,18 +34,18 @@ struct SystemViewData { struct SystemViewCarousel { CarouselType type; - Vector2f pos; - Vector2f size; - Vector2f origin; + glm::vec2 pos; + glm::vec2 size; + glm::vec2 origin; float logoScale; float logoRotation; - Vector2f logoRotationOrigin; + glm::vec2 logoRotationOrigin; Alignment logoAlignment; unsigned int color; unsigned int colorEnd; bool colorGradientHorizontal; int maxLogoCount; // Number of logos shown on the carousel. - Vector2f logoSize; + glm::vec2 logoSize; float zIndex; }; diff --git a/es-app/src/views/ViewController.cpp b/es-app/src/views/ViewController.cpp index 6705e4272..a0ebb2889 100644 --- a/es-app/src/views/ViewController.cpp +++ b/es-app/src/views/ViewController.cpp @@ -878,9 +878,8 @@ void ViewController::render(const glm::mat4& parentTrans) if (it->second == mCurrentView || (it->second == mPreviousView && isCameraMoving())) { // Clipping. glm::vec3 guiStart = it->second->getPosition(); - glm::vec3 guiEnd = - it->second->getPosition() + - glm::vec3(it->second->getSize().x(), it->second->getSize().y(), 0.0f); + glm::vec3 guiEnd = it->second->getPosition() + + glm::vec3(it->second->getSize().x, it->second->getSize().y, 0.0f); if (guiEnd.x >= viewStart.x && guiEnd.y >= viewStart.y && guiStart.x <= viewEnd.x && guiStart.y <= viewEnd.y) diff --git a/es-app/src/views/gamelist/BasicGameListView.cpp b/es-app/src/views/gamelist/BasicGameListView.cpp index 85c5fe64f..61945fff1 100644 --- a/es-app/src/views/gamelist/BasicGameListView.cpp +++ b/es-app/src/views/gamelist/BasicGameListView.cpp @@ -19,9 +19,9 @@ BasicGameListView::BasicGameListView(Window* window, FileData* root) : ISimpleGameListView(window, root) , mList(window) { - mList.setSize(mSize.x(), mSize.y() * 0.8f); - mList.setPosition(0, mSize.y() * 0.2f); - mList.setDefaultZIndex(20); + mList.setSize(mSize.x, mSize.y * 0.8f); + mList.setPosition(0.0f, mSize.y * 0.2f); + mList.setDefaultZIndex(20.0f); addChild(&mList); populateList(root->getChildrenListToDisplay(), root); diff --git a/es-app/src/views/gamelist/DetailedGameListView.cpp b/es-app/src/views/gamelist/DetailedGameListView.cpp index b5ab5d046..e333e3203 100644 --- a/es-app/src/views/gamelist/DetailedGameListView.cpp +++ b/es-app/src/views/gamelist/DetailedGameListView.cpp @@ -45,8 +45,8 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) { const float padding = 0.01f; - mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y); - mList.setSize(mSize.x() * (0.50f - padding), mList.getSize().y()); + mList.setPosition(mSize.x * (0.50f + padding), mList.getPosition().y); + mList.setSize(mSize.x * (0.50f - padding), mList.getSize().y); mList.setAlignment(TextListComponent::ALIGN_LEFT); mList.setCursorChangedCallback([&](const CursorState& /*state*/) { updateInfoPanel(); }); @@ -54,8 +54,8 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) mThumbnail.setOrigin(0.5f, 0.5f); mThumbnail.setPosition(2.0f, 2.0f); mThumbnail.setVisible(false); - mThumbnail.setMaxSize(mSize.x() * (0.25f - 2 * padding), mSize.y() * 0.10f); - mThumbnail.setDefaultZIndex(25); + mThumbnail.setMaxSize(mSize.x * (0.25f - 2.0f * padding), mSize.y * 0.10f); + mThumbnail.setDefaultZIndex(25.0f); addChild(&mThumbnail); // Marquee. @@ -63,15 +63,15 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) // Default to off the screen. mMarquee.setPosition(2.0f, 2.0f); mMarquee.setVisible(false); - mMarquee.setMaxSize(mSize.x() * (0.5f - 2 * padding), mSize.y() * 0.18f); - mMarquee.setDefaultZIndex(35); + mMarquee.setMaxSize(mSize.x * (0.5f - 2.0f * padding), mSize.y * 0.18f); + mMarquee.setDefaultZIndex(35.0f); addChild(&mMarquee); // Image. mImage.setOrigin(0.5f, 0.5f); - mImage.setPosition(mSize.x() * 0.25f, mList.getPosition().y + mSize.y() * 0.2125f); - mImage.setMaxSize(mSize.x() * (0.50f - 2 * padding), mSize.y() * 0.4f); - mImage.setDefaultZIndex(30); + mImage.setPosition(mSize.x * 0.25f, mList.getPosition().y + mSize.y * 0.2125f); + mImage.setMaxSize(mSize.x * (0.50f - 2.0f * padding), mSize.y * 0.4f); + mImage.setDefaultZIndex(30.0f); addChild(&mImage); // Metadata labels + values. @@ -101,27 +101,27 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) addChild(&mLblPlayCount); addChild(&mPlayCount); - mName.setPosition(mSize.x(), mSize.y()); - mName.setDefaultZIndex(40); + mName.setPosition(mSize.x, mSize.y); + mName.setDefaultZIndex(40.0f); mName.setColor(0xAAAAAAFF); mName.setFont(Font::get(FONT_SIZE_MEDIUM)); mName.setHorizontalAlignment(ALIGN_CENTER); addChild(&mName); - mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); - mDescContainer.setSize(mSize.x() * (0.50f - 2.0f * padding), - mSize.y() - mDescContainer.getPosition().y); + mDescContainer.setPosition(mSize.x * padding, mSize.y * 0.65f); + mDescContainer.setSize(mSize.x * (0.50f - 2.0f * padding), + mSize.y - mDescContainer.getPosition().y); mDescContainer.setAutoScroll(true); - mDescContainer.setDefaultZIndex(40); + mDescContainer.setDefaultZIndex(40.0f); addChild(&mDescContainer); mDescription.setFont(Font::get(FONT_SIZE_SMALL)); - mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescription.setSize(mDescContainer.getSize().x, 0.0f); mDescContainer.addChild(&mDescription); mGamelistInfo.setOrigin(0.5f, 0.5f); mGamelistInfo.setFont(Font::get(FONT_SIZE_SMALL)); - mGamelistInfo.setDefaultZIndex(50); + mGamelistInfo.setDefaultZIndex(50.0f); mGamelistInfo.setVisible(true); addChild(&mGamelistInfo); @@ -165,7 +165,7 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr& them mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE); - mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescription.setSize(mDescContainer.getSize().x, 0.0f); mDescription.applyTheme( theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION)); @@ -187,10 +187,10 @@ void DetailedGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - glm::vec3 start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); + glm::vec3 start(mSize.x * 0.01f, mSize.y * 0.625f, 0.0f); - const float colSize = (mSize.x() * 0.48f) / colCount; - const float rowPadding = 0.01f * mSize.y(); + const float colSize = (mSize.x * 0.48f) / colCount; + const float rowPadding = 0.01f * mSize.y; for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; @@ -201,12 +201,12 @@ void DetailedGameListView::initMDLabels() else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y() + rowPadding, 0.0f); + pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y + rowPadding, 0.0f); } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); components[i]->setPosition(pos); - components[i]->setDefaultZIndex(40); + components[i]->setDefaultZIndex(40.0f); } } @@ -227,23 +227,22 @@ void DetailedGameListView::initMDValues() float bottom = 0.0f; - const float colSize = (mSize.x() * 0.48f) / 2.0f; + const float colSize = (mSize.x * 0.48f) / 2.0f; for (unsigned int i = 0; i < labels.size(); i++) { - const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2.0f; + const float heightDiff = (labels[i]->getSize().y - values[i]->getSize().y) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - glm::vec3(labels[i]->getSize().x(), heightDiff, 0.0f)); - values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); + glm::vec3(labels[i]->getSize().x, heightDiff, 0.0f)); + values[i]->setSize(colSize - labels[i]->getSize().x, values[i]->getSize().y); values[i]->setDefaultZIndex(40.0f); - float testBot = values[i]->getPosition().y + values[i]->getSize().y(); + float testBot = values[i]->getPosition().y + values[i]->getSize().y; if (testBot > bottom) bottom = testBot; } - mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y() * 0.01f); - mDescContainer.setSize(mDescContainer.getSize().x(), - mSize.y() - mDescContainer.getPosition().y); + mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y * 0.01f); + mDescContainer.setSize(mDescContainer.getSize().x, mSize.y - mDescContainer.getPosition().y); } void DetailedGameListView::updateInfoPanel() diff --git a/es-app/src/views/gamelist/GridGameListView.cpp b/es-app/src/views/gamelist/GridGameListView.cpp index 7b7a812c8..cb5331ff7 100644 --- a/es-app/src/views/gamelist/GridGameListView.cpp +++ b/es-app/src/views/gamelist/GridGameListView.cpp @@ -47,8 +47,8 @@ GridGameListView::GridGameListView(Window* window, FileData* root) { const float padding = 0.01f; - mGrid.setPosition(mSize.x() * 0.1f, mSize.y() * 0.1f); - mGrid.setDefaultZIndex(20); + mGrid.setPosition(mSize.x * 0.1f, mSize.y * 0.1f); + mGrid.setDefaultZIndex(20.0f); mGrid.setCursorChangedCallback([&](const CursorState& /*state*/) { updateInfoPanel(); }); addChild(&mGrid); @@ -81,41 +81,41 @@ GridGameListView::GridGameListView(Window* window, FileData* root) addChild(&mLblPlayCount); addChild(&mPlayCount); - mName.setPosition(mSize.x(), mSize.y()); - mName.setDefaultZIndex(40); + mName.setPosition(mSize.x, mSize.y); + mName.setDefaultZIndex(40.0f); mName.setColor(0xAAAAAAFF); mName.setFont(Font::get(FONT_SIZE_MEDIUM)); mName.setHorizontalAlignment(ALIGN_CENTER); addChild(&mName); - mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); - mDescContainer.setSize(mSize.x() * (0.50f - 2.0f * padding), - mSize.y() - mDescContainer.getPosition().y); + mDescContainer.setPosition(mSize.x * padding, mSize.y * 0.65f); + mDescContainer.setSize(mSize.x * (0.50f - 2.0f * padding), + mSize.y - mDescContainer.getPosition().y); mDescContainer.setAutoScroll(true); - mDescContainer.setDefaultZIndex(40); + mDescContainer.setDefaultZIndex(40.0f); addChild(&mDescContainer); mDescription.setFont(Font::get(FONT_SIZE_SMALL)); - mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescription.setSize(mDescContainer.getSize().x, 0.0f); mDescContainer.addChild(&mDescription); mMarquee.setOrigin(0.5f, 0.5f); - mMarquee.setPosition(mSize.x() * 0.25f, mSize.y() * 0.10f); - mMarquee.setMaxSize(mSize.x() * (0.5f - 2.0f * padding), mSize.y() * 0.18f); - mMarquee.setDefaultZIndex(35); + mMarquee.setPosition(mSize.x * 0.25f, mSize.y * 0.10f); + mMarquee.setMaxSize(mSize.x * (0.5f - 2.0f * padding), mSize.y * 0.18f); + mMarquee.setDefaultZIndex(35.0f); mMarquee.setVisible(false); addChild(&mMarquee); mImage.setOrigin(0.5f, 0.5f); mImage.setPosition(2.0f, 2.0f); - mImage.setMaxSize(mSize.x() * (0.50f - 2 * padding), mSize.y() * 0.4f); - mImage.setDefaultZIndex(10); + mImage.setMaxSize(mSize.x * (0.50f - 2.0f * padding), mSize.y * 0.4f); + mImage.setDefaultZIndex(10.0f); mImage.setVisible(false); addChild(&mImage); mGamelistInfo.setOrigin(0.5f, 0.5f); mGamelistInfo.setFont(Font::get(FONT_SIZE_SMALL)); - mGamelistInfo.setDefaultZIndex(50); + mGamelistInfo.setDefaultZIndex(50.0f); mGamelistInfo.setVisible(true); addChild(&mGamelistInfo); @@ -264,7 +264,7 @@ void GridGameListView::onThemeChanged(const std::shared_ptr& theme) mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE); - mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescription.setSize(mDescContainer.getSize().x, 0.0f); mDescription.applyTheme( theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION)); @@ -277,7 +277,7 @@ void GridGameListView::onThemeChanged(const std::shared_ptr& theme) mGamelistInfo.applyTheme(theme, getName(), "gamelistInfo", ALL ^ ThemeFlags::TEXT); // If there is no position defined in the theme for gamelistInfo, then hide it. - if (mGamelistInfo.getPosition() == glm::vec3 {}) + if (mGamelistInfo.getPosition() == glm::vec3({})) mGamelistInfo.setVisible(false); else mGamelistInfo.setVisible(true); @@ -298,10 +298,10 @@ void GridGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - glm::vec3 start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); + glm::vec3 start(mSize.x * 0.01f, mSize.y * 0.625f, 0.0f); - const float colSize = (mSize.x() * 0.48f) / colCount; - const float rowPadding = 0.01f * mSize.y(); + const float colSize = (mSize.x * 0.48f) / colCount; + const float rowPadding = 0.01f * mSize.y; for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; @@ -312,12 +312,12 @@ void GridGameListView::initMDLabels() else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y() + rowPadding, 0.0f); + pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y + rowPadding, 0.0f); } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); components[i]->setPosition(pos); - components[i]->setDefaultZIndex(40); + components[i]->setDefaultZIndex(40.0f); } } @@ -338,22 +338,21 @@ void GridGameListView::initMDValues() float bottom = 0.0f; - const float colSize = (mSize.x() * 0.48f) / 2.0f; + const float colSize = (mSize.x * 0.48f) / 2.0f; for (unsigned int i = 0; i < labels.size(); i++) { - const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2.0f; + const float heightDiff = (labels[i]->getSize().y - values[i]->getSize().y) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - glm::vec3(labels[i]->getSize().x(), heightDiff, 0.0f)); - values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); - values[i]->setDefaultZIndex(40); + glm::vec3(labels[i]->getSize().x, heightDiff, 0.0f)); + values[i]->setSize(colSize - labels[i]->getSize().x, values[i]->getSize().y); + values[i]->setDefaultZIndex(40.0f); - float testBot = values[i]->getPosition().y + values[i]->getSize().y(); + float testBot = values[i]->getPosition().y + values[i]->getSize().y; if (testBot > bottom) bottom = testBot; } - mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y() * 0.01f); - mDescContainer.setSize(mDescContainer.getSize().x(), - mSize.y() - mDescContainer.getPosition().y); + mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y * 0.01f); + mDescContainer.setSize(mDescContainer.getSize().x, mSize.y - mDescContainer.getPosition().y); } void GridGameListView::updateInfoPanel() diff --git a/es-app/src/views/gamelist/IGameListView.cpp b/es-app/src/views/gamelist/IGameListView.cpp index 651fc87a9..6f129dd9f 100644 --- a/es-app/src/views/gamelist/IGameListView.cpp +++ b/es-app/src/views/gamelist/IGameListView.cpp @@ -69,8 +69,8 @@ void IGameListView::render(const glm::mat4& parentTrans) Vector2i pos(static_cast(std::round(trans[3].x)), static_cast(std::round(trans[3].y))); - Vector2i size(static_cast(std::round(mSize.x() * scaleX)), - static_cast(std::round(mSize.y() * scaleY))); + Vector2i size(static_cast(std::round(mSize.x * scaleX)), + static_cast(std::round(mSize.y * scaleY))); Renderer::pushClipRect(pos, size); renderChildren(trans); diff --git a/es-app/src/views/gamelist/ISimpleGameListView.cpp b/es-app/src/views/gamelist/ISimpleGameListView.cpp index db12519c3..f84013582 100644 --- a/es-app/src/views/gamelist/ISimpleGameListView.cpp +++ b/es-app/src/views/gamelist/ISimpleGameListView.cpp @@ -28,18 +28,18 @@ ISimpleGameListView::ISimpleGameListView(Window* window, FileData* root) , mRandomGame(nullptr) { mHeaderText.setText("Logo Text"); - mHeaderText.setSize(mSize.x(), 0); - mHeaderText.setPosition(0, 0); + mHeaderText.setSize(mSize.x, 0.0f); + mHeaderText.setPosition(0.0f, 0.0f); mHeaderText.setHorizontalAlignment(ALIGN_CENTER); - mHeaderText.setDefaultZIndex(50); + mHeaderText.setDefaultZIndex(50.0f); - mHeaderImage.setResize(0, mSize.y() * 0.185f); + mHeaderImage.setResize(0.0f, mSize.y * 0.185f); mHeaderImage.setOrigin(0.5f, 0.0f); - mHeaderImage.setPosition(mSize.x() / 2, 0); - mHeaderImage.setDefaultZIndex(50); + mHeaderImage.setPosition(mSize.x / 2.0f, 0.0f); + mHeaderImage.setDefaultZIndex(50.0f); - mBackground.setResize(mSize.x(), mSize.y()); - mBackground.setDefaultZIndex(0); + mBackground.setResize(mSize.x, mSize.y); + mBackground.setDefaultZIndex(0.0f); addChild(&mHeaderText); addChild(&mBackground); diff --git a/es-app/src/views/gamelist/VideoGameListView.cpp b/es-app/src/views/gamelist/VideoGameListView.cpp index c1b2f8df4..ab4cd8012 100644 --- a/es-app/src/views/gamelist/VideoGameListView.cpp +++ b/es-app/src/views/gamelist/VideoGameListView.cpp @@ -64,8 +64,8 @@ VideoGameListView::VideoGameListView(Window* window, FileData* root) mVideo = new VideoFFmpegComponent(window); #endif - mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y); - mList.setSize(mSize.x() * (0.50f - padding), mList.getSize().y()); + mList.setPosition(mSize.x * (0.50f + padding), mList.getPosition().y); + mList.setSize(mSize.x * (0.50f - padding), mList.getSize().y); mList.setAlignment(TextListComponent::ALIGN_LEFT); mList.setCursorChangedCallback([&](const CursorState& /*state*/) { updateInfoPanel(); }); @@ -73,22 +73,22 @@ VideoGameListView::VideoGameListView(Window* window, FileData* root) mThumbnail.setOrigin(0.5f, 0.5f); mThumbnail.setPosition(2.0f, 2.0f); mThumbnail.setVisible(false); - mThumbnail.setMaxSize(mSize.x() * (0.25f - 2.0f * padding), mSize.y() * 0.10f); - mThumbnail.setDefaultZIndex(35); + mThumbnail.setMaxSize(mSize.x * (0.25f - 2.0f * padding), mSize.y * 0.10f); + mThumbnail.setDefaultZIndex(35.0f); addChild(&mThumbnail); // Marquee. mMarquee.setOrigin(0.5f, 0.5f); - mMarquee.setPosition(mSize.x() * 0.25f, mSize.y() * 0.10f); - mMarquee.setMaxSize(mSize.x() * (0.5f - 2.0f * padding), mSize.y() * 0.18f); - mMarquee.setDefaultZIndex(35); + mMarquee.setPosition(mSize.x * 0.25f, mSize.y * 0.10f); + mMarquee.setMaxSize(mSize.x * (0.5f - 2.0f * padding), mSize.y * 0.18f); + mMarquee.setDefaultZIndex(35.0f); addChild(&mMarquee); // Video. mVideo->setOrigin(0.5f, 0.5f); - mVideo->setPosition(mSize.x() * 0.25f, mSize.y() * 0.4f); - mVideo->setSize(mSize.x() * (0.5f - 2.0f * padding), mSize.y() * 0.4f); - mVideo->setDefaultZIndex(30); + mVideo->setPosition(mSize.x * 0.25f, mSize.y * 0.4f); + mVideo->setSize(mSize.x * (0.5f - 2.0f * padding), mSize.y * 0.4f); + mVideo->setDefaultZIndex(30.0f); addChild(mVideo); // Metadata labels + values. @@ -118,27 +118,27 @@ VideoGameListView::VideoGameListView(Window* window, FileData* root) addChild(&mLblPlayCount); addChild(&mPlayCount); - mName.setPosition(mSize.x(), mSize.y()); - mName.setDefaultZIndex(40); + mName.setPosition(mSize.x, mSize.y); + mName.setDefaultZIndex(40.0f); mName.setColor(0xAAAAAAFF); mName.setFont(Font::get(FONT_SIZE_MEDIUM)); mName.setHorizontalAlignment(ALIGN_CENTER); addChild(&mName); - mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); - mDescContainer.setSize(mSize.x() * (0.50f - 2.0f * padding), - mSize.y() - mDescContainer.getPosition().y); + mDescContainer.setPosition(mSize.x * padding, mSize.y * 0.65f); + mDescContainer.setSize(mSize.x * (0.50f - 2.0f * padding), + mSize.y - mDescContainer.getPosition().y); mDescContainer.setAutoScroll(true); - mDescContainer.setDefaultZIndex(40); + mDescContainer.setDefaultZIndex(40.0f); addChild(&mDescContainer); mDescription.setFont(Font::get(FONT_SIZE_SMALL)); - mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescription.setSize(mDescContainer.getSize().x, 0.0f); mDescContainer.addChild(&mDescription); mGamelistInfo.setOrigin(0.5f, 0.5f); mGamelistInfo.setFont(Font::get(FONT_SIZE_SMALL)); - mGamelistInfo.setDefaultZIndex(50); + mGamelistInfo.setDefaultZIndex(50.0f); mGamelistInfo.setVisible(true); addChild(&mGamelistInfo); @@ -187,14 +187,14 @@ void VideoGameListView::onThemeChanged(const std::shared_ptr& theme) mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE); - mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescription.setSize(mDescContainer.getSize().x, 0.0f); mDescription.applyTheme( theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION)); mGamelistInfo.applyTheme(theme, getName(), "gamelistInfo", ALL ^ ThemeFlags::TEXT); // If there is no position defined in the theme for gamelistInfo, then hide it. - if (mGamelistInfo.getPosition() == glm::vec3 {}) + if (mGamelistInfo.getPosition() == glm::vec3({})) mGamelistInfo.setVisible(false); else mGamelistInfo.setVisible(true); @@ -209,10 +209,10 @@ void VideoGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - glm::vec3 start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); + glm::vec3 start(mSize.x * 0.01f, mSize.y * 0.625f, 0.0f); - const float colSize = (mSize.x() * 0.48f) / colCount; - const float rowPadding = 0.01f * mSize.y(); + const float colSize = (mSize.x * 0.48f) / colCount; + const float rowPadding = 0.01f * mSize.y; for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; @@ -223,12 +223,12 @@ void VideoGameListView::initMDLabels() else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y() + rowPadding, 0.0f); + pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y + rowPadding, 0.0f); } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); components[i]->setPosition(pos); - components[i]->setDefaultZIndex(40); + components[i]->setDefaultZIndex(40.0f); } } @@ -249,23 +249,22 @@ void VideoGameListView::initMDValues() float bottom = 0.0f; - const float colSize = (mSize.x() * 0.48f) / 2.0f; + const float colSize = (mSize.x * 0.48f) / 2.0f; for (unsigned int i = 0; i < labels.size(); i++) { - const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2.0f; + const float heightDiff = (labels[i]->getSize().y - values[i]->getSize().y) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - glm::vec3(labels[i]->getSize().x(), heightDiff, 0.0f)); - values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); - values[i]->setDefaultZIndex(40); + glm::vec3(labels[i]->getSize().x, heightDiff, 0.0f)); + values[i]->setSize(colSize - labels[i]->getSize().x, values[i]->getSize().y); + values[i]->setDefaultZIndex(40.0f); - float testBot = values[i]->getPosition().y + values[i]->getSize().y(); + float testBot = values[i]->getPosition().y + values[i]->getSize().y; if (testBot > bottom) bottom = testBot; } - mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y() * 0.01f); - mDescContainer.setSize(mDescContainer.getSize().x(), - mSize.y() - mDescContainer.getPosition().y); + mDescContainer.setPosition(mDescContainer.getPosition().x, bottom + mSize.y * 0.01f); + mDescContainer.setSize(mDescContainer.getSize().x, mSize.y - mDescContainer.getPosition().y); } void VideoGameListView::updateInfoPanel() diff --git a/es-core/src/GuiComponent.cpp b/es-core/src/GuiComponent.cpp index d16106195..14848b379 100644 --- a/es-core/src/GuiComponent.cpp +++ b/es-core/src/GuiComponent.cpp @@ -25,9 +25,9 @@ GuiComponent::GuiComponent(Window* window) , mOpacity(255) , mSaturation(1.0f) , mPosition({}) - , mOrigin(Vector2f::Zero()) + , mOrigin({}) , mRotationOrigin(0.5f, 0.5f) - , mSize(Vector2f::Zero()) + , mSize({}) , mTransform(Renderer::getIdentity()) , mIsProcessing(false) , mVisible(true) @@ -101,20 +101,20 @@ void GuiComponent::setPosition(float x, float y, float z) void GuiComponent::setOrigin(float x, float y) { - mOrigin = Vector2f(x, y); + mOrigin = glm::vec2(x, y); onOriginChanged(); } void GuiComponent::setSize(float w, float h) { - mSize = Vector2f(w, h); + mSize = glm::vec2(w, h); onSizeChanged(); } -Vector2f GuiComponent::getCenter() const +glm::vec2 GuiComponent::getCenter() const { - return Vector2f(mPosition.x - (getSize().x() * mOrigin.x()) + getSize().x() / 2.0f, - mPosition.y - (getSize().y() * mOrigin.y()) + getSize().y() / 2.0f); + return glm::vec2(mPosition.x - (getSize().x * mOrigin.x) + getSize().x / 2.0f, + mPosition.y - (getSize().y * mOrigin.y) + getSize().y / 2.0f); } void GuiComponent::addChild(GuiComponent* cmp) @@ -181,9 +181,9 @@ const glm::mat4& GuiComponent::getTransform() if (mRotation != 0.0f) { // Calculate offset as difference between origin and rotation origin. - Vector2f rotationSize = getRotationSize(); - float xOff = (mOrigin.x() - mRotationOrigin.x()) * rotationSize.x(); - float yOff = (mOrigin.y() - mRotationOrigin.y()) * rotationSize.y(); + glm::vec2 rotationSize = getRotationSize(); + float xOff = (mOrigin.x - mRotationOrigin.x) * rotationSize.x; + float yOff = (mOrigin.y - mRotationOrigin.y) * rotationSize.y; // Transform to offset point. if (xOff != 0.0f || yOff != 0.0f) @@ -196,8 +196,8 @@ const glm::mat4& GuiComponent::getTransform() if (xOff != 0.0f || yOff != 0.0f) mTransform = glm::translate(mTransform, glm::vec3(xOff, yOff, 0.0f)); } - mTransform = glm::translate(mTransform, glm::vec3(mOrigin.x() * mSize.x() * -1.0f, - mOrigin.y() * mSize.y() * -1.0f, 0.0f)); + mTransform = glm::translate( + mTransform, glm::vec3(mOrigin.x * mSize.x * -1.0f, mOrigin.y * mSize.y * -1.0f, 0.0f)); return mTransform; } @@ -302,9 +302,9 @@ void GuiComponent::applyTheme(const std::shared_ptr& theme, const std::string& element, unsigned int properties) { - Vector2f scale = getParent() ? getParent()->getSize() : - Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 scale = getParent() ? getParent()->getSize() : + glm::vec2(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())); const ThemeData::ThemeElement* elem = theme->getElement(view, element, ""); if (!elem) @@ -312,24 +312,24 @@ void GuiComponent::applyTheme(const std::shared_ptr& theme, using namespace ThemeFlags; if (properties & POSITION && elem->has("pos")) { - Vector2f denormalized = elem->get("pos") * scale; - setPosition(glm::vec3(denormalized.x(), denormalized.y(), 0.0f)); + glm::vec2 denormalized = elem->get("pos") * scale; + setPosition(glm::vec3(denormalized.x, denormalized.y, 0.0f)); } if (properties & ThemeFlags::SIZE && elem->has("size")) - setSize(elem->get("size") * scale); + setSize(elem->get("size") * scale); // Position + size also implies origin. if ((properties & ORIGIN || (properties & POSITION && properties & ThemeFlags::SIZE)) && elem->has("origin")) { - setOrigin(elem->get("origin")); + setOrigin(elem->get("origin")); } if (properties & ThemeFlags::ROTATION) { if (elem->has("rotation")) setRotationDegrees(elem->get("rotation")); if (elem->has("rotationOrigin")) - setRotationOrigin(elem->get("rotationOrigin")); + setRotationOrigin(elem->get("rotationOrigin")); } if (properties & ThemeFlags::Z_INDEX && elem->has("zIndex")) diff --git a/es-core/src/GuiComponent.h b/es-core/src/GuiComponent.h index 09d5b8847..658418d13 100644 --- a/es-core/src/GuiComponent.h +++ b/es-core/src/GuiComponent.h @@ -71,29 +71,29 @@ public: void setPosition(float x, float y, float z = 0.0f); virtual void onPositionChanged() {} - Vector2f getOrigin() const { return mOrigin; } + glm::vec2 getOrigin() const { return mOrigin; } // Sets the origin as a percentage of this image. // (e.g. (0, 0) is top left, (0.5, 0.5) is the center.) void setOrigin(float originX, float originY); - void setOrigin(Vector2f origin) { setOrigin(origin.x(), origin.y()); } + void setOrigin(glm::vec2 origin) { setOrigin(origin.x, origin.y); } virtual void onOriginChanged() {} - Vector2f getRotationOrigin() const { return mRotationOrigin; } + glm::vec2 getRotationOrigin() const { return mRotationOrigin; } // Sets the rotation origin as a percentage of this image. // (e.g. (0, 0) is top left, (0.5, 0.5) is the center.) void setRotationOrigin(float originX, float originY) { - mRotationOrigin = Vector2f(originX, originY); + mRotationOrigin = glm::vec2(originX, originY); } - void setRotationOrigin(Vector2f origin) { setRotationOrigin(origin.x(), origin.y()); } + void setRotationOrigin(glm::vec2 origin) { setRotationOrigin(origin.x, origin.y); } - virtual Vector2f getSize() const { return mSize; } - void setSize(const Vector2f& size) { setSize(size.x(), size.y()); } + virtual glm::vec2 getSize() const { return mSize; } + void setSize(const glm::vec2& size) { setSize(size.x, size.y); } void setSize(float w, float h); virtual void setResize(float width, float height) {} virtual void onSizeChanged() {} - virtual Vector2f getRotationSize() const { return getSize(); } + virtual glm::vec2 getRotationSize() const { return getSize(); } float getRotation() const { return mRotation; } void setRotation(float rotation) { mRotation = rotation; } void setRotationDegrees(float rotation) @@ -114,7 +114,7 @@ public: void setVisible(bool visible) { mVisible = visible; } // Returns the center point of the image (takes origin into account). - Vector2f getCenter() const; + glm::vec2 getCenter() const; void setParent(GuiComponent* parent) { mParent = parent; } GuiComponent* getParent() const { return mParent; } @@ -250,9 +250,9 @@ protected: std::vector mChildren; glm::vec3 mPosition; - Vector2f mOrigin; - Vector2f mRotationOrigin; - Vector2f mSize; + glm::vec2 mOrigin; + glm::vec2 mRotationOrigin; + glm::vec2 mSize; float mRotation = 0.0; float mScale = 1.0; diff --git a/es-core/src/HelpStyle.cpp b/es-core/src/HelpStyle.cpp index b57d55e73..866ef4684 100644 --- a/es-core/src/HelpStyle.cpp +++ b/es-core/src/HelpStyle.cpp @@ -13,8 +13,9 @@ HelpStyle::HelpStyle() { - position = Vector2f(Renderer::getScreenWidth() * 0.012f, Renderer::getScreenHeight() * 0.9515f); - origin = Vector2f(0.0f, 0.0f); + position = + glm::vec2(Renderer::getScreenWidth() * 0.012f, Renderer::getScreenHeight() * 0.9515f); + origin = glm::vec2(0.0f, 0.0f); iconColor = 0x777777FF; textColor = 0x777777FF; @@ -31,12 +32,12 @@ void HelpStyle::applyTheme(const std::shared_ptr& theme, const std::s return; if (elem->has("pos")) - position = - elem->get("pos") * Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + position = elem->get("pos") * + glm::vec2(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())); if (elem->has("origin")) - origin = elem->get("origin"); + origin = elem->get("origin"); if (elem->has("textColor")) textColor = elem->get("textColor"); diff --git a/es-core/src/HelpStyle.h b/es-core/src/HelpStyle.h index b82b86e96..4edc0e1dd 100644 --- a/es-core/src/HelpStyle.h +++ b/es-core/src/HelpStyle.h @@ -10,7 +10,7 @@ #ifndef ES_CORE_HELP_STYLE_H #define ES_CORE_HELP_STYLE_H -#include "math/Vector2f.h" +#include "math/Misc.h" #include #include @@ -19,8 +19,8 @@ class Font; class ThemeData; struct HelpStyle { - Vector2f position; - Vector2f origin; + glm::vec2 position; + glm::vec2 origin; unsigned int iconColor; unsigned int textColor; std::shared_ptr font; diff --git a/es-core/src/ThemeData.cpp b/es-core/src/ThemeData.cpp index 35abe9179..6bf6cda30 100644 --- a/es-core/src/ThemeData.cpp +++ b/es-core/src/ThemeData.cpp @@ -478,8 +478,8 @@ void ThemeData::parseElement(const pugi::xml_node& root, std::string first = str.substr(0, divider); std::string second = str.substr(divider, std::string::npos); - Vector2f val(static_cast(atof(first.c_str())), - static_cast(atof(second.c_str()))); + glm::vec2 val(static_cast(atof(first.c_str())), + static_cast(atof(second.c_str()))); element.properties[node.name()] = val; break; @@ -602,7 +602,7 @@ std::vector ThemeData::makeExtras(const std::shared_ptrsetDefaultZIndex(10); + comp->setDefaultZIndex(10.0f); comp->applyTheme(theme, view, *it, ThemeFlags::ALL); comps.push_back(comp); } diff --git a/es-core/src/ThemeData.h b/es-core/src/ThemeData.h index c64a29f3e..5c2e41dac 100644 --- a/es-core/src/ThemeData.h +++ b/es-core/src/ThemeData.h @@ -11,7 +11,7 @@ #ifndef ES_CORE_THEME_DATA_H #define ES_CORE_THEME_DATA_H -#include "math/Vector2f.h" +#include "math/Misc.h" #include "utils/FileSystemUtil.h" #include @@ -106,16 +106,16 @@ public: { r = value; const glm::vec4 initVector = value; - v = Vector2f(initVector.x, initVector.y); + v = glm::vec2(initVector.x, initVector.y); } - void operator=(const Vector2f& value) { v = value; } + void operator=(const glm::vec2& value) { v = value; } void operator=(const std::string& value) { s = value; } void operator=(const unsigned int& value) { i = value; } void operator=(const float& value) { f = value; } void operator=(const bool& value) { b = value; } glm::vec4 r; - Vector2f v; + glm::vec2 v; std::string s; unsigned int i; float f; @@ -126,7 +126,7 @@ public: template const T get(const std::string& prop) const { - if (std::is_same::value) + if (std::is_same::value) return *(const T*)&properties.at(prop).v; else if (std::is_same::value) return *(const T*)&properties.at(prop).s; diff --git a/es-core/src/Window.cpp b/es-core/src/Window.cpp index f7580ce9b..84fa29c33 100644 --- a/es-core/src/Window.cpp +++ b/es-core/src/Window.cpp @@ -475,9 +475,9 @@ void Window::render() if (Settings::getInstance()->getString("MenuOpeningEffect") == "scale-up") { if (mTopScale < 1.0f) { mTopScale = Math::clamp(mTopScale + 0.07f, 0.0f, 1.0f); - Vector2f topCenter = top->getCenter(); + glm::vec2 topCenter = top->getCenter(); top->setOrigin({ 0.5f, 0.5f }); - top->setPosition({ topCenter.x(), topCenter.y(), 0.0f }); + top->setPosition({ topCenter.x, topCenter.y, 0.0f }); top->setScale(mTopScale); } } @@ -499,11 +499,11 @@ void Window::render() static_cast(Renderer::getScreenHeight()), 0x00000000 | mListScrollOpacity, 0x00000000 | mListScrollOpacity); - Vector2f offset = mListScrollFont->sizeText(mListScrollText); - offset[0] = (Renderer::getScreenWidth() - offset.x()) * 0.5f; - offset[1] = (Renderer::getScreenHeight() - offset.y()) * 0.5f; + glm::vec2 offset = mListScrollFont->sizeText(mListScrollText); + offset.x = (Renderer::getScreenWidth() - offset.x) * 0.5f; + offset.y = (Renderer::getScreenHeight() - offset.y) * 0.5f; - TextCache* cache = mListScrollFont->buildTextCache(mListScrollText, offset.x(), offset.y(), + TextCache* cache = mListScrollFont->buildTextCache(mListScrollText, offset.x, offset.y, 0xFFFFFF00 | mListScrollOpacity); mListScrollFont->renderTextCache(cache); delete cache; @@ -566,14 +566,14 @@ void Window::renderLoadingScreen(std::string text) ImageComponent splash(this, true); splash.setResize(Renderer::getScreenWidth() * 0.6f, 0.0f); splash.setImage(":/graphics/splash.svg"); - splash.setPosition((Renderer::getScreenWidth() - splash.getSize().x()) / 2.0f, - (Renderer::getScreenHeight() - splash.getSize().y()) / 2.0f * 0.6f); + splash.setPosition((Renderer::getScreenWidth() - splash.getSize().x) / 2.0f, + (Renderer::getScreenHeight() - splash.getSize().y) / 2.0f * 0.6f); splash.render(trans); auto& font = mDefaultFonts.at(1); TextCache* cache = font->buildTextCache(text, 0.0f, 0.0f, 0x656565FF); - float x = std::round((Renderer::getScreenWidth() - cache->metrics.size.x()) / 2.0f); + float x = std::round((Renderer::getScreenWidth() - cache->metrics.size.x) / 2.0f); float y = std::round(Renderer::getScreenHeight() * 0.835f); trans = glm::translate(trans, glm::vec3(x, y, 0.0f)); Renderer::setMatrix(trans); diff --git a/es-core/src/components/AnimatedImageComponent.cpp b/es-core/src/components/AnimatedImageComponent.cpp index a77e917c9..7f97ace59 100644 --- a/es-core/src/components/AnimatedImageComponent.cpp +++ b/es-core/src/components/AnimatedImageComponent.cpp @@ -33,7 +33,7 @@ void AnimatedImageComponent::load(const AnimationDef* def) } auto img = std::unique_ptr(new ImageComponent(mWindow)); - img->setResize(mSize.x(), mSize.y()); + img->setResize(mSize.x, mSize.y); img->setImage(std::string(def->frames[i].path), false); mFrames.push_back(ImageFrame(std::move(img), def->frames[i].time)); @@ -55,7 +55,7 @@ void AnimatedImageComponent::reset() void AnimatedImageComponent::onSizeChanged() { for (auto it = mFrames.cbegin(); it != mFrames.cend(); it++) { - it->first->setResize(mSize.x(), mSize.y()); + it->first->setResize(mSize.x, mSize.y); } } diff --git a/es-core/src/components/BusyComponent.cpp b/es-core/src/components/BusyComponent.cpp index c66a5ae99..f0db6f0be 100644 --- a/es-core/src/components/BusyComponent.cpp +++ b/es-core/src/components/BusyComponent.cpp @@ -44,25 +44,25 @@ void BusyComponent::onSizeChanged() { mGrid.setSize(mSize); - if (mSize.x() == 0 || mSize.y() == 0) + if (mSize.x == 0.0f || mSize.y == 0.0f) return; const float middleSpacerWidth = 0.01f * Renderer::getScreenWidth(); const float textHeight = mText->getFont()->getLetterHeight(); mText->setSize(0, textHeight); - const float textWidth = mText->getSize().x() + (4 * Renderer::getScreenWidthModifier()); + const float textWidth = mText->getSize().x + (4.0f * Renderer::getScreenWidthModifier()); - mGrid.setColWidthPerc(1, textHeight / mSize.x()); // Animation is square. - mGrid.setColWidthPerc(2, middleSpacerWidth / mSize.x()); - mGrid.setColWidthPerc(3, textWidth / mSize.x()); + mGrid.setColWidthPerc(1, textHeight / mSize.x); // Animation is square. + mGrid.setColWidthPerc(2, middleSpacerWidth / mSize.x); + mGrid.setColWidthPerc(3, textWidth / mSize.x); - mGrid.setRowHeightPerc(1, textHeight / mSize.y()); + mGrid.setRowHeightPerc(1, textHeight / mSize.y); mBackground.setCornerSize({ 16.0f * Renderer::getScreenWidthModifier(), 16.0f * Renderer::getScreenHeightModifier() }); - mBackground.fitTo(Vector2f(mGrid.getColWidth(1) + mGrid.getColWidth(2) + mGrid.getColWidth(3), - textHeight + (2.0f * Renderer::getScreenHeightModifier())), - mAnimation->getPosition(), Vector2f(0, 0)); + mBackground.fitTo(glm::vec2(mGrid.getColWidth(1) + mGrid.getColWidth(2) + mGrid.getColWidth(3), + textHeight + (2.0f * Renderer::getScreenHeightModifier())), + mAnimation->getPosition(), glm::vec2(0.0f, 0.0f)); } void BusyComponent::reset() diff --git a/es-core/src/components/ButtonComponent.cpp b/es-core/src/components/ButtonComponent.cpp index 0ecfea88b..81c7eb929 100644 --- a/es-core/src/components/ButtonComponent.cpp +++ b/es-core/src/components/ButtonComponent.cpp @@ -32,7 +32,7 @@ ButtonComponent::ButtonComponent(Window* window, void ButtonComponent::onSizeChanged() { // Fit to mBox. - mBox.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBox.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); } bool ButtonComponent::input(InputConfig* config, Input input) @@ -53,10 +53,10 @@ void ButtonComponent::setText(const std::string& text, const std::string& helpTe mTextCache = std::unique_ptr(mFont->buildTextCache(mText, 0, 0, getCurTextColor())); - float minWidth = mFont->sizeText("DELETE").x() + (12.0f * Renderer::getScreenWidthModifier()); - setSize(std::max(mTextCache->metrics.size.x() + (12.0f * Renderer::getScreenWidthModifier()), + float minWidth = mFont->sizeText("DELETE").x + (12.0f * Renderer::getScreenWidthModifier()); + setSize(std::max(mTextCache->metrics.size.x + (12.0f * Renderer::getScreenWidthModifier()), minWidth), - mTextCache->metrics.size.y()); + mTextCache->metrics.size.y); updateHelpPrompts(); } @@ -100,15 +100,15 @@ void ButtonComponent::render(const glm::mat4& parentTrans) mBox.render(trans); if (mTextCache) { - glm::vec3 centerOffset((mSize.x() - mTextCache->metrics.size.x()) / 2.0f, - (mSize.y() - mTextCache->metrics.size.y()) / 2.0f, 0.0f); + glm::vec3 centerOffset((mSize.x - mTextCache->metrics.size.x) / 2.0f, + (mSize.y - mTextCache->metrics.size.y) / 2.0f, 0.0f); trans = glm::translate(trans, centerOffset); if (Settings::getInstance()->getBool("DebugText")) { - Renderer::drawRect(centerOffset.x, 0.0f, mTextCache->metrics.size.x(), mSize.y(), + Renderer::drawRect(centerOffset.x, 0.0f, mTextCache->metrics.size.x, mSize.y, 0x00000033, 0x00000033); - Renderer::drawRect(mBox.getPosition().x, 0.0f, mBox.getSize().x(), mSize.y(), - 0x0000FF33, 0x0000FF33); + Renderer::drawRect(mBox.getPosition().x, 0.0f, mBox.getSize().x, mSize.y, 0x0000FF33, + 0x0000FF33); } Renderer::setMatrix(trans); diff --git a/es-core/src/components/ComponentGrid.cpp b/es-core/src/components/ComponentGrid.cpp index eac01feac..616804cea 100644 --- a/es-core/src/components/ComponentGrid.cpp +++ b/es-core/src/components/ComponentGrid.cpp @@ -39,7 +39,7 @@ ComponentGrid::~ComponentGrid() float ComponentGrid::getColWidth(int col) { if (mColWidths[col] != 0) - return mColWidths[col] * mSize.x(); + return mColWidths[col] * mSize.x; // Calculate automatic width. float freeWidthPerc = 1; @@ -50,13 +50,13 @@ float ComponentGrid::getColWidth(int col) between++; } - return (freeWidthPerc * mSize.x()) / between; + return (freeWidthPerc * mSize.x) / static_cast(between); } float ComponentGrid::getRowHeight(int row) { if (mRowHeights[row] != 0) - return mRowHeights[row] * mSize.y(); + return mRowHeights[row] * mSize.y; // Calculate automatic height. float freeHeightPerc = 1; @@ -67,7 +67,7 @@ float ComponentGrid::getRowHeight(int row) between++; } - return (freeHeightPerc * mSize.y()) / between; + return (freeHeightPerc * mSize.y) / static_cast(between); } void ComponentGrid::setColWidthPerc(int col, float width, bool update) @@ -132,11 +132,11 @@ bool ComponentGrid::removeEntry(const std::shared_ptr& comp) void ComponentGrid::updateCellComponent(const GridEntry& cell) { // Size. - Vector2f size(0, 0); + glm::vec2 size(0.0f, 0.0f); for (int x = cell.pos.x(); x < cell.pos.x() + cell.dim.x(); x++) - size[0] += getColWidth(x); + size.x += getColWidth(x); for (int y = cell.pos.y(); y < cell.pos.y() + cell.dim.y(); y++) - size[1] += getRowHeight(y); + size.y += getRowHeight(y); if (cell.resize) cell.component->setSize(size); @@ -144,13 +144,13 @@ void ComponentGrid::updateCellComponent(const GridEntry& cell) // Find top left corner. glm::vec3 pos {}; for (int x = 0; x < cell.pos.x(); x++) - pos[0] += getColWidth(x); + pos.x += getColWidth(x); for (int y = 0; y < cell.pos.y(); y++) - pos[1] += getRowHeight(y); + pos.y += getRowHeight(y); // Center component. - pos[0] = pos.x + (size.x() - cell.component->getSize().x()) / 2.0f; - pos[1] = pos.y + (size.y() - cell.component->getSize().y()) / 2.0f; + pos.x = pos.x + (size.x - cell.component->getSize().x) / 2.0f; + pos.y = pos.y + (size.y - cell.component->getSize().y) / 2.0f; cell.component->setPosition(pos); } @@ -161,16 +161,16 @@ void ComponentGrid::updateSeparators() bool drawAll = Settings::getInstance()->getBool("DebugGrid"); - Vector2f pos; - Vector2f size; + glm::vec2 pos; + glm::vec2 size; for (auto it = mCells.cbegin(); it != mCells.cend(); it++) { if (!it->border && !drawAll) continue; // Find component position + size. - pos = Vector2f(0, 0); - size = Vector2f(0, 0); + pos = glm::vec2(0.0f, 0.0f); + size = glm::vec2(0.0f, 0.0f); for (int x = 0; x < it->pos.x(); x++) pos[0] += getColWidth(x); for (int y = 0; y < it->pos.y(); y++) @@ -180,39 +180,39 @@ void ComponentGrid::updateSeparators() for (int y = it->pos.y(); y < it->pos.y() + it->dim.y(); y++) size[1] += getRowHeight(y); - if (size == 0) + if (size == glm::vec2({})) return; if (it->border & BORDER_TOP || drawAll) { std::vector coordVector; - coordVector.push_back(pos.x()); - coordVector.push_back(pos.y()); - coordVector.push_back(size.x()); + coordVector.push_back(pos.x); + coordVector.push_back(pos.y); + coordVector.push_back(size.x); coordVector.push_back(1.0f * Renderer::getScreenHeightModifier()); mSeparators.push_back(coordVector); } if (it->border & BORDER_BOTTOM || drawAll) { std::vector coordVector; - coordVector.push_back(pos.x()); - coordVector.push_back(pos.y() + size.y()); - coordVector.push_back(size.x()); + coordVector.push_back(pos.x); + coordVector.push_back(pos.y + size.y); + coordVector.push_back(size.x); coordVector.push_back(1.0f * Renderer::getScreenHeightModifier()); mSeparators.push_back(coordVector); } if (it->border & BORDER_LEFT || drawAll) { std::vector coordVector; - coordVector.push_back(pos.x()); - coordVector.push_back(pos.y()); + coordVector.push_back(pos.x); + coordVector.push_back(pos.y); coordVector.push_back(1.0f * Renderer::getScreenWidthModifier()); - coordVector.push_back(size.y()); + coordVector.push_back(size.y); mSeparators.push_back(coordVector); } if (it->border & BORDER_RIGHT || drawAll) { std::vector coordVector; - coordVector.push_back(pos.x() + size.x()); - coordVector.push_back(pos.y()); + coordVector.push_back(pos.x + size.x); + coordVector.push_back(pos.y); coordVector.push_back(1.0f * Renderer::getScreenWidthModifier()); - coordVector.push_back(size.y()); + coordVector.push_back(size.y); mSeparators.push_back(coordVector); } } diff --git a/es-core/src/components/ComponentList.cpp b/es-core/src/components/ComponentList.cpp index 9bee26f0b..948e193bd 100644 --- a/es-core/src/components/ComponentList.cpp +++ b/es-core/src/components/ComponentList.cpp @@ -145,25 +145,25 @@ void ComponentList::updateCameraOffset() { // Move the camera to scroll. const float totalHeight = getTotalRowHeight(); - if (totalHeight > mSize.y()) { - float target = mSelectorBarOffset + getRowHeight(mEntries.at(mCursor).data) / 2.0f - - (mSize.y() / 2.0f); + if (totalHeight > mSize.y) { + float target = + mSelectorBarOffset + getRowHeight(mEntries.at(mCursor).data) / 2.0f - (mSize.y / 2.0f); // Clamp the camera to prevent a fraction of a row from being displayed. mCameraOffset = 0.0f; unsigned int i = 0; while (mCameraOffset < target && i < mEntries.size()) { mCameraOffset += getRowHeight(mEntries.at(i).data); - if (mCameraOffset > totalHeight - mSize.y()) + if (mCameraOffset > totalHeight - mSize.y) break; i++; } - if (mCameraOffset < 0) - mCameraOffset = 0; + if (mCameraOffset < 0.0f) + mCameraOffset = 0.0f; } else { - mCameraOffset = 0; + mCameraOffset = 0.0f; } } @@ -175,7 +175,7 @@ void ComponentList::render(const glm::mat4& parentTrans) glm::mat4 trans = parentTrans * getTransform(); // Clip everything to be inside our bounds. - glm::vec3 dim(mSize.x(), mSize.y(), 0.0f); + glm::vec3 dim(mSize.x, mSize.y, 0.0f); dim.x = (trans[0].x * dim.x + trans[3].x) - trans[3].x; dim.y = (trans[1].y * dim.y + trans[3].y) - trans[3].y; @@ -248,11 +248,11 @@ void ComponentList::render(const glm::mat4& parentTrans) const float selectedRowHeight = getRowHeight(mEntries.at(mCursor).data); if (opacity == 1) { - Renderer::drawRect(0.0f, mSelectorBarOffset, mSize.x(), selectedRowHeight, 0xFFFFFFFF, + Renderer::drawRect(0.0f, mSelectorBarOffset, mSize.x, selectedRowHeight, 0xFFFFFFFF, 0xFFFFFFFF, false, opacity, trans, Renderer::Blend::ONE_MINUS_DST_COLOR, Renderer::Blend::ZERO); - Renderer::drawRect(0.0f, mSelectorBarOffset, mSize.x(), selectedRowHeight, 0x777777FF, + Renderer::drawRect(0.0f, mSelectorBarOffset, mSize.x, selectedRowHeight, 0x777777FF, 0x777777FF, false, opacity, trans, Renderer::Blend::ONE, Renderer::Blend::ONE); } @@ -268,12 +268,12 @@ void ComponentList::render(const glm::mat4& parentTrans) // Draw separators. float y = 0; for (unsigned int i = 0; i < mEntries.size(); i++) { - Renderer::drawRect(0.0f, y, mSize.x(), 1.0f * Renderer::getScreenHeightModifier(), - 0xC6C7C6FF, 0xC6C7C6FF, false, opacity, trans); + Renderer::drawRect(0.0f, y, mSize.x, 1.0f * Renderer::getScreenHeightModifier(), 0xC6C7C6FF, + 0xC6C7C6FF, false, opacity, trans); y += getRowHeight(mEntries.at(i).data); } - Renderer::drawRect(0.0f, y, mSize.x(), 1.0f * Renderer::getScreenHeightModifier(), 0xC6C7C6FF, + Renderer::drawRect(0.0f, y, mSize.x, 1.0f * Renderer::getScreenHeightModifier(), 0xC6C7C6FF, 0xC6C7C6FF, false, opacity, trans); Renderer::popClipRect(); } @@ -283,8 +283,8 @@ float ComponentList::getRowHeight(const ComponentListRow& row) const // Returns the highest component height found in the row. float height = 0; for (unsigned int i = 0; i < row.elements.size(); i++) { - if (row.elements.at(i).component->getSize().y() > height) - height = row.elements.at(i).component->getSize().y(); + if (row.elements.at(i).component->getSize().y > height) + height = row.elements.at(i).component->getSize().y; } return height; @@ -313,27 +313,27 @@ void ComponentList::updateElementPosition(const ComponentListRow& row) const auto comp = row.elements.at(i).component; // Center vertically. - comp->setPosition(x, (rowHeight - comp->getSize().y()) / 2.0f + yOffset); - x += comp->getSize().x(); + comp->setPosition(x, (rowHeight - comp->getSize().y) / 2.0f + yOffset); + x += comp->getSize().x; } } void ComponentList::updateElementSize(const ComponentListRow& row) { - float width = mSize.x() - mHorizontalPadding; + float width = mSize.x - mHorizontalPadding; std::vector> resizeVec; for (auto it = row.elements.cbegin(); it != row.elements.cend(); it++) { if (it->resize_width) resizeVec.push_back(it->component); else - width -= it->component->getSize().x(); + width -= it->component->getSize().x; } // Redistribute the "unused" width equally among the components with resize_width set to true. width = width / resizeVec.size(); for (auto it = resizeVec.cbegin(); it != resizeVec.cend(); it++) - (*it)->setSize(width, (*it)->getSize().y()); + (*it)->setSize(width, (*it)->getSize().y); } void ComponentList::textInput(const std::string& text) diff --git a/es-core/src/components/DateTimeComponent.cpp b/es-core/src/components/DateTimeComponent.cpp index c09659192..b66fc471f 100644 --- a/es-core/src/components/DateTimeComponent.cpp +++ b/es-core/src/components/DateTimeComponent.cpp @@ -28,7 +28,7 @@ DateTimeComponent::DateTimeComponent(Window* window, unsigned int color, Alignment align, glm::vec3 pos, - Vector2f size, + glm::vec2 size, unsigned int bgcolor) : TextComponent(window, text, font, color, align, pos, size, bgcolor) , mDisplayRelative(false) diff --git a/es-core/src/components/DateTimeComponent.h b/es-core/src/components/DateTimeComponent.h index fdfa3ee88..5b63b793b 100644 --- a/es-core/src/components/DateTimeComponent.h +++ b/es-core/src/components/DateTimeComponent.h @@ -27,7 +27,7 @@ public: unsigned int color = 0x000000FF, Alignment align = ALIGN_LEFT, glm::vec3 pos = {}, - Vector2f size = Vector2f::Zero(), + glm::vec2 size = {}, unsigned int bgcolor = 0x00000000); void render(const glm::mat4& parentTrans) override; diff --git a/es-core/src/components/DateTimeEditComponent.cpp b/es-core/src/components/DateTimeEditComponent.cpp index 16912ea20..9818b0ec3 100644 --- a/es-core/src/components/DateTimeEditComponent.cpp +++ b/es-core/src/components/DateTimeEditComponent.cpp @@ -164,28 +164,28 @@ void DateTimeEditComponent::render(const glm::mat4& parentTrans) if (mAlignRight) { if (mTime != 0) - referenceSize = font->sizeText("ABCDEFG").x(); + referenceSize = font->sizeText("ABCDEFG").x; else - referenceSize = font->sizeText("ABCDEIJ").x(); + referenceSize = font->sizeText("ABCDEIJ").x; } // Vertically center. - glm::vec3 off(0.0f, (mSize.y() - mTextCache->metrics.size.y()) / 2.0f, 0.0f); + glm::vec3 off(0.0f, (mSize.y - mTextCache->metrics.size.y) / 2.0f, 0.0f); if (mAlignRight) - off.x += referenceSize - mTextCache->metrics.size.x(); + off.x += referenceSize - mTextCache->metrics.size.x; trans = glm::translate(trans, off); Renderer::setMatrix(trans); if (Settings::getInstance()->getBool("DebugText")) { Renderer::setMatrix(trans); - if (mTextCache->metrics.size.x() > 0) { - Renderer::drawRect(0.0f, 0.0f - off.y, mSize.x() - off.x, mSize.y(), 0x0000FF33, + if (mTextCache->metrics.size.x > 0.0f) { + Renderer::drawRect(0.0f, 0.0f - off.y, mSize.x - off.x, mSize.y, 0x0000FF33, 0x0000FF33); } - Renderer::drawRect(0.0f, 0.0f, mTextCache->metrics.size.x(), - mTextCache->metrics.size.y(), 0x00000033, 0x00000033); + Renderer::drawRect(0.0f, 0.0f, mTextCache->metrics.size.x, mTextCache->metrics.size.y, + 0x00000033, 0x00000033); } mTextCache->setColor((mColor & 0xFFFFFF00) | getOpacity()); @@ -300,19 +300,19 @@ void DateTimeEditComponent::updateTextCache() return; // Year. - Vector2f start(0, 0); - Vector2f end = font->sizeText(dispString.substr(0, 4)); - Vector2f diff = end - start; + glm::vec2 start(0.0f, 0.0f); + glm::vec2 end = font->sizeText(dispString.substr(0, 4)); + glm::vec2 diff = end - start; mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); // Month. - start[0] = font->sizeText(dispString.substr(0, 5)).x(); + start[0] = font->sizeText(dispString.substr(0, 5)).x; end = font->sizeText(dispString.substr(0, 7)); diff = end - start; mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); // Day. - start[0] = font->sizeText(dispString.substr(0, 8)).x(); + start[0] = font->sizeText(dispString.substr(0, 8)).x; end = font->sizeText(dispString.substr(0, 10)); diff = end - start; mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); diff --git a/es-core/src/components/GridTileComponent.cpp b/es-core/src/components/GridTileComponent.cpp index 2dafdf391..3269751d1 100644 --- a/es-core/src/components/GridTileComponent.cpp +++ b/es-core/src/components/GridTileComponent.cpp @@ -17,12 +17,12 @@ GridTileComponent::GridTileComponent(Window* window) , mBackground(window, ":/graphics/frame.png") { mDefaultProperties.mSize = getDefaultTileSize(); - mDefaultProperties.mPadding = Vector2f(16.0f * Renderer::getScreenWidthModifier(), - 16.0f * Renderer::getScreenHeightModifier()); + mDefaultProperties.mPadding = glm::vec2(16.0f * Renderer::getScreenWidthModifier(), + 16.0f * Renderer::getScreenHeightModifier()); mDefaultProperties.mImageColor = 0xAAAAAABB; // Attempting to use frame.svg instead causes quite severe performance problems. mDefaultProperties.mBackgroundImage = ":/graphics/frame.png"; - mDefaultProperties.mBackgroundCornerSize = Vector2f(16.0f, 16.0f); + mDefaultProperties.mBackgroundCornerSize = glm::vec2(16.0f, 16.0f); mDefaultProperties.mBackgroundCenterColor = 0xAAAAEEFF; mDefaultProperties.mBackgroundEdgeColor = 0xAAAAEEFF; @@ -76,14 +76,14 @@ void GridTileComponent::update(int deltaTime) void applyThemeToProperties(const ThemeData::ThemeElement* elem, GridTileProperties* properties) { - Vector2f screen = Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 screen(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())); if (elem->has("size")) - properties->mSize = elem->get("size") * screen; + properties->mSize = elem->get("size") * screen; if (elem->has("padding")) - properties->mPadding = elem->get("padding"); + properties->mPadding = elem->get("padding"); if (elem->has("imageColor")) properties->mImageColor = elem->get("imageColor"); @@ -92,7 +92,7 @@ void applyThemeToProperties(const ThemeData::ThemeElement* elem, GridTilePropert properties->mBackgroundImage = elem->get("backgroundImage"); if (elem->has("backgroundCornerSize")) - properties->mBackgroundCornerSize = elem->get("backgroundCornerSize"); + properties->mBackgroundCornerSize = elem->get("backgroundCornerSize"); if (elem->has("backgroundColor")) { properties->mBackgroundCenterColor = elem->get("backgroundColor"); @@ -111,9 +111,6 @@ void GridTileComponent::applyTheme(const std::shared_ptr& theme, const std::string& /*element*/, unsigned int /*properties*/) { - Vector2f screen = Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); - // Apply theme to the default gridtile. const ThemeData::ThemeElement* elem = theme->getElement(view, "default", "gridtile"); if (elem) @@ -133,15 +130,15 @@ void GridTileComponent::applyTheme(const std::shared_ptr& theme, applyThemeToProperties(elem, &mSelectedProperties); } -Vector2f GridTileComponent::getDefaultTileSize() +glm::vec2 GridTileComponent::getDefaultTileSize() { - Vector2f screen = Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 screen = glm::vec2(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())); return screen * 0.22f; } -Vector2f GridTileComponent::getSelectedTileSize() const +glm::vec2 GridTileComponent::getSelectedTileSize() const { // Return the tile size. return mDefaultProperties.mSize * 1.2f; @@ -320,7 +317,7 @@ std::shared_ptr GridTileComponent::getTexture() return nullptr; }; -void GridTileComponent::forceSize(Vector2f size, float selectedZoom) +void GridTileComponent::forceSize(glm::vec2 size, float selectedZoom) { mDefaultProperties.mSize = size; mSelectedProperties.mSize = size * selectedZoom; diff --git a/es-core/src/components/GridTileComponent.h b/es-core/src/components/GridTileComponent.h index a4429e3f0..edc583aaf 100644 --- a/es-core/src/components/GridTileComponent.h +++ b/es-core/src/components/GridTileComponent.h @@ -13,11 +13,11 @@ #include "NinePatchComponent.h" struct GridTileProperties { - Vector2f mSize; - Vector2f mPadding; + glm::vec2 mSize; + glm::vec2 mPadding; unsigned int mImageColor; std::string mBackgroundImage; - Vector2f mBackgroundCornerSize; + glm::vec2 mBackgroundCornerSize; unsigned int mBackgroundCenterColor; unsigned int mBackgroundEdgeColor; }; @@ -35,8 +35,8 @@ public: // Made this a static function because the ImageGridComponent needs to know the default tile // max size to calculate the grid dimension before it instantiates the GridTileComponents. - static Vector2f getDefaultTileSize(); - Vector2f getSelectedTileSize() const; + static glm::vec2 getDefaultTileSize(); + glm::vec2 getSelectedTileSize() const; bool isSelected() const; void reset() { setImage(""); } @@ -49,7 +49,7 @@ public: bool force = false); void setVisible(bool visible); - void forceSize(Vector2f size, float selectedZoom); + void forceSize(glm::vec2 size, float selectedZoom); glm::vec3 getBackgroundPosition(); diff --git a/es-core/src/components/HelpComponent.cpp b/es-core/src/components/HelpComponent.cpp index 66b07da3a..8f654c20a 100644 --- a/es-core/src/components/HelpComponent.cpp +++ b/es-core/src/components/HelpComponent.cpp @@ -16,8 +16,8 @@ #include "resources/TextureResource.h" #include "utils/StringUtil.h" -#define ICON_TEXT_SPACING 8 // Space between [icon] and [text] (px). -#define ENTRY_SPACING 16 // Space between [text] and next [icon] (px). +#define ICON_TEXT_SPACING 8.0f // Space between [icon] and [text] (px). +#define ENTRY_SPACING 16.0f // Space between [text] and next [icon] (px). static std::map sIconPathMap {}; @@ -135,7 +135,7 @@ void HelpComponent::updateGrid() font, mStyle.textColor); labels.push_back(lbl); - width += icon->getSize().x() + lbl->getSize().x() + + width += icon->getSize().x + lbl->getSize().x + ((ICON_TEXT_SPACING + ENTRY_SPACING) * Renderer::getScreenWidthModifier()); } @@ -143,16 +143,16 @@ void HelpComponent::updateGrid() for (unsigned int i = 0; i < icons.size(); i++) { const int col = i * 4; - mGrid->setColWidthPerc(col, icons.at(i)->getSize().x() / width); + mGrid->setColWidthPerc(col, icons.at(i)->getSize().x / width); mGrid->setColWidthPerc(col + 1, (ICON_TEXT_SPACING * Renderer::getScreenWidthModifier()) / width); - mGrid->setColWidthPerc(col + 2, labels.at(i)->getSize().x() / width); + mGrid->setColWidthPerc(col + 2, labels.at(i)->getSize().x / width); mGrid->setEntry(icons.at(i), Vector2i(col, 0), false, false); mGrid->setEntry(labels.at(i), Vector2i(col + 2, 0), false, false); } - mGrid->setPosition({ mStyle.position.x(), mStyle.position.y(), 0.0f }); + mGrid->setPosition({ mStyle.position.x, mStyle.position.y, 0.0f }); mGrid->setOrigin(mStyle.origin); } diff --git a/es-core/src/components/ImageComponent.cpp b/es-core/src/components/ImageComponent.cpp index d5a2679fc..cb56ea754 100644 --- a/es-core/src/components/ImageComponent.cpp +++ b/es-core/src/components/ImageComponent.cpp @@ -22,7 +22,7 @@ Vector2i ImageComponent::getTextureSize() const return Vector2i::Zero(); } -Vector2f ImageComponent::getSize() const +glm::vec2 ImageComponent::getSize() const { return GuiComponent::getSize() * (mBottomRightCrop - mTopLeftCrop); } @@ -53,8 +53,8 @@ void ImageComponent::resize() if (!mTexture) return; - const Vector2f textureSize = mTexture->getSourceImageSize(); - if (textureSize == Vector2f::Zero()) + const glm::vec2 textureSize = mTexture->getSourceImageSize(); + if (textureSize == glm::vec2({})) return; if (mTexture->isTiled()) { @@ -71,70 +71,69 @@ void ImageComponent::resize() if (mTargetIsMax) { mSize = textureSize; - Vector2f resizeScale((mTargetSize.x() / mSize.x()), (mTargetSize.y() / mSize.y())); + glm::vec2 resizeScale((mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)); - if (resizeScale.x() < resizeScale.y()) { - // This will be mTargetSize.x(). We can't exceed it, nor be lower than it. - mSize[0] *= resizeScale.x(); + if (resizeScale.x < resizeScale.y) { + // This will be mTargetSize.x. We can't exceed it, nor be lower than it. + mSize.x *= resizeScale.x; // We need to make sure we're not creating an image larger than max size. - mSize[1] = std::min(floorf(mSize[1] *= resizeScale.x()), mTargetSize.y()); + mSize.y = std::min(floorf(mSize.y *= resizeScale.x), mTargetSize.y); } else { // This will be mTargetSize.y(). We can't exceed it. - mSize[1] = floorf(mSize[1] * resizeScale.y()); + mSize.y = floorf(mSize.y * resizeScale.y); // For SVG rasterization, always calculate width from rounded height (see comment // above). We need to make sure we're not creating an image larger than max size. - mSize[0] = - std::min((mSize[1] / textureSize.y()) * textureSize.x(), mTargetSize.x()); + mSize.x = std::min((mSize.y / textureSize.y) * textureSize.x, mTargetSize.x); } } else if (mTargetIsMin) { mSize = textureSize; - Vector2f resizeScale((mTargetSize.x() / mSize.x()), (mTargetSize.y() / mSize.y())); + glm::vec2 resizeScale((mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)); - if (resizeScale.x() > resizeScale.y()) { - mSize[0] *= resizeScale.x(); - mSize[1] *= resizeScale.x(); + if (resizeScale.x > resizeScale.y) { + mSize.x *= resizeScale.x; + mSize.y *= resizeScale.x; - float cropPercent = (mSize.y() - mTargetSize.y()) / (mSize.y() * 2); - crop(0, cropPercent, 0, cropPercent); + float cropPercent = (mSize.y - mTargetSize.y) / (mSize.y * 2.0f); + crop(0.0f, cropPercent, 0.0f, cropPercent); } else { - mSize[0] *= resizeScale.y(); - mSize[1] *= resizeScale.y(); + mSize.x *= resizeScale.y; + mSize.y *= resizeScale.y; - float cropPercent = (mSize.x() - mTargetSize.x()) / (mSize.x() * 2); - crop(cropPercent, 0, cropPercent, 0); + float cropPercent = (mSize.x - mTargetSize.x) / (mSize.x * 2.0f); + crop(cropPercent, 0.0f, cropPercent, 0.0f); } // For SVG rasterization, always calculate width from rounded height (see comment // above). We need to make sure we're not creating an image smaller than min size. - mSize[1] = std::max(floorf(mSize[1]), mTargetSize.y()); - mSize[0] = std::max((mSize[1] / textureSize.y()) * textureSize.x(), mTargetSize.x()); + mSize.y = std::max(floorf(mSize.y), mTargetSize.y); + mSize.x = std::max((mSize.y / textureSize.y) * textureSize.x, mTargetSize.x); } else { // If both components are set, we just stretch. // If no components are set, we don't resize at all. - mSize = mTargetSize == Vector2f::Zero() ? textureSize : mTargetSize; + mSize = mTargetSize == glm::vec2({}) ? textureSize : mTargetSize; // If only one component is set, we resize in a way that maintains aspect ratio. // For SVG rasterization, we always calculate width from rounded height (see // comment above). - if (!mTargetSize.x() && mTargetSize.y()) { - mSize[1] = floorf(mTargetSize.y()); - mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); + if (!mTargetSize.x && mTargetSize.y) { + mSize.y = floorf(mTargetSize.y); + mSize.x = (mSize.y / textureSize.y) * textureSize.x; } - else if (mTargetSize.x() && !mTargetSize.y()) { - mSize[1] = floorf((mTargetSize.x() / textureSize.x()) * textureSize.y()); - mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); + else if (mTargetSize.x && !mTargetSize.y) { + mSize.y = floorf((mTargetSize.x / textureSize.x) * textureSize.y); + mSize.x = (mSize.y / textureSize.y) * textureSize.x; } } } - mSize[0] = floorf(mSize.x()); - mSize[1] = floorf(mSize.y()); + mSize.x = floorf(mSize.x); + mSize.y = floorf(mSize.y); // mSize.y() should already be rounded. - mTexture->rasterizeAt(static_cast(mSize.x()), static_cast(mSize.y())); + mTexture->rasterizeAt(static_cast(mSize.x), static_cast(mSize.y)); onSizeChanged(); } @@ -178,7 +177,7 @@ void ImageComponent::setImage(const std::shared_ptr& texture) void ImageComponent::setResize(float width, float height) { - mTargetSize = Vector2f(width, height); + mTargetSize = glm::vec2(width, height); mTargetIsMax = false; mTargetIsMin = false; resize(); @@ -186,7 +185,7 @@ void ImageComponent::setResize(float width, float height) void ImageComponent::setMaxSize(float width, float height) { - mTargetSize = Vector2f(width, height); + mTargetSize = glm::vec2(width, height); mTargetIsMax = true; mTargetIsMin = false; resize(); @@ -194,7 +193,7 @@ void ImageComponent::setMaxSize(float width, float height) void ImageComponent::setMinSize(float width, float height) { - mTargetSize = Vector2f(width, height); + mTargetSize = glm::vec2(width, height); mTargetIsMax = false; mTargetIsMin = true; resize(); @@ -203,25 +202,25 @@ void ImageComponent::setMinSize(float width, float height) void ImageComponent::cropLeft(float percent) { assert(percent >= 0.0f && percent <= 1.0f); - mTopLeftCrop.x() = percent; + mTopLeftCrop.x = percent; } void ImageComponent::cropTop(float percent) { assert(percent >= 0.0f && percent <= 1.0f); - mTopLeftCrop.y() = percent; + mTopLeftCrop.y = percent; } void ImageComponent::cropRight(float percent) { assert(percent >= 0.0f && percent <= 1.0f); - mBottomRightCrop.x() = 1.0f - percent; + mBottomRightCrop.x = 1.0f - percent; } void ImageComponent::cropBot(float percent) { assert(percent >= 0.0f && percent <= 1.0f); - mBottomRightCrop.y() = 1.0f - percent; + mBottomRightCrop.y = 1.0f - percent; } void ImageComponent::crop(float left, float top, float right, float bot) @@ -235,12 +234,12 @@ void ImageComponent::crop(float left, float top, float right, float bot) void ImageComponent::uncrop() { // Remove any applied crop. - crop(0, 0, 0, 0); + crop(0.0f, 0.0f, 0.0f, 0.0f); } void ImageComponent::cropTransparentPadding(float maxSizeX, float maxSizeY) { - if (mSize == 0) + if (mSize == glm::vec2({})) return; std::vector imageRGBA = mTexture.get()->getRawRGBAData(); @@ -260,7 +259,7 @@ void ImageComponent::cropTransparentPadding(float maxSizeX, float maxSizeY) // This will give us the coordinates for the fully transparent areas. Utils::CImg::getTransparentPaddingCoords(imageCImg, paddingCoords); - Vector2f originalSize = mSize; + glm::vec2 originalSize = mSize; float cropLeft = static_cast(paddingCoords[0]) / static_cast(imageSize.x()); float cropTop = static_cast(paddingCoords[1]) / static_cast(imageSize.y()); @@ -272,24 +271,24 @@ void ImageComponent::cropTransparentPadding(float maxSizeX, float maxSizeY) // Cropping the image obviously leads to a reduction in size, so we need to determine // how much to scale up after cropping to keep within the max size restrictions that // were passed as arguments. - mSize.x() -= mSize.x() * (cropLeft + cropRight); - mSize.y() -= mSize.y() * (cropTop + cropBottom); + mSize.x -= mSize.x * (cropLeft + cropRight); + mSize.y -= mSize.y * (cropTop + cropBottom); - float scaleFactor = originalSize.y() / mSize.y(); + float scaleFactor = originalSize.y / mSize.y; - if (scaleFactor * mSize.x() < maxSizeX) - scaleFactor = maxSizeX / mSize.x(); + if (scaleFactor * mSize.x < maxSizeX) + scaleFactor = maxSizeX / mSize.x; - if (scaleFactor * mSize.y() < maxSizeY) - scaleFactor = maxSizeY / mSize.y(); + if (scaleFactor * mSize.y < maxSizeY) + scaleFactor = maxSizeY / mSize.y; - if (scaleFactor * mSize.x() > maxSizeX) - scaleFactor = maxSizeX / mSize.x(); + if (scaleFactor * mSize.x > maxSizeX) + scaleFactor = maxSizeX / mSize.x; - if (scaleFactor * mSize.y() > maxSizeY) - scaleFactor = maxSizeY / mSize.y(); + if (scaleFactor * mSize.y > maxSizeY) + scaleFactor = maxSizeY / mSize.y; - setResize(mSize.x() * scaleFactor, mSize.y() * scaleFactor); + setResize(mSize.x * scaleFactor, mSize.y * scaleFactor); updateVertices(); } @@ -343,23 +342,23 @@ void ImageComponent::updateVertices() // We go through this mess to make sure everything is properly rounded. // If we just round vertices at the end, edge cases occur near sizes of 0.5. - const Vector2f topLeft = { 0, 0 }; - const Vector2f bottomRight = mSize; - const float px = mTexture->isTiled() ? mSize.x() / getTextureSize().x() : 1.0f; - const float py = mTexture->isTiled() ? mSize.y() / getTextureSize().y() : 1.0f; + const glm::vec2 topLeft = { 0.0f, 0.0f }; + const glm::vec2 bottomRight = mSize; + const float px = mTexture->isTiled() ? mSize.x / getTextureSize().x() : 1.0f; + const float py = mTexture->isTiled() ? mSize.y / getTextureSize().y() : 1.0f; // clang-format off - mVertices[0] = { { topLeft.x(), topLeft.y() }, { mTopLeftCrop.x(), py - mTopLeftCrop.y() }, 0 }; - mVertices[1] = { { topLeft.x(), bottomRight.y() }, { mTopLeftCrop.x(), 1.0f - mBottomRightCrop.y() }, 0 }; - mVertices[2] = { { bottomRight.x(), topLeft.y() }, { mBottomRightCrop.x() * px, py - mTopLeftCrop.y() }, 0 }; - mVertices[3] = { { bottomRight.x(), bottomRight.y() }, { mBottomRightCrop.x() * px, 1.0f - mBottomRightCrop.y() }, 0 }; + mVertices[0] = { { topLeft.x, topLeft.y }, { mTopLeftCrop.x, py - mTopLeftCrop.y }, 0 }; + mVertices[1] = { { topLeft.x, bottomRight.y }, { mTopLeftCrop.x, 1.0f - mBottomRightCrop.y }, 0 }; + mVertices[2] = { { bottomRight.x, topLeft.y }, { mBottomRightCrop.x * px, py - mTopLeftCrop.y }, 0 }; + mVertices[3] = { { bottomRight.x, bottomRight.y }, { mBottomRightCrop.x * px, 1.0f - mBottomRightCrop.y }, 0 }; // clang-format on updateColors(); // Round vertices. for (int i = 0; i < 4; i++) - mVertices[i].pos.round(); + mVertices[i].pos = glm::round(mVertices[i].pos); if (mFlipX) { for (int i = 0; i < 4; i++) @@ -397,10 +396,10 @@ void ImageComponent::render(const glm::mat4& parentTrans) if (mTexture && mOpacity > 0) { if (Settings::getInstance()->getBool("DebugImage")) { - Vector2f targetSizePos = (mTargetSize - mSize) * mOrigin * -1; - Renderer::drawRect(targetSizePos.x(), targetSizePos.y(), mTargetSize.x(), - mTargetSize.y(), 0xFF000033, 0xFF000033); - Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0xFF000033, 0xFF000033); + glm::vec2 targetSizePos = (mTargetSize - mSize) * mOrigin * glm::vec2(-1.0f); + Renderer::drawRect(targetSizePos.x, targetSizePos.y, mTargetSize.x, mTargetSize.y, + 0xFF000033, 0xFF000033); + Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, 0xFF000033, 0xFF000033); } // An image with zero size would normally indicate a corrupt image file. if (mTexture->isInitialized() && mTexture->getSize() != 0) { @@ -483,17 +482,17 @@ void ImageComponent::applyTheme(const std::shared_ptr& theme, if (!elem) return; - Vector2f scale = getParent() ? getParent()->getSize() : - Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 scale = getParent() ? getParent()->getSize() : + glm::vec2(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())); if (properties & ThemeFlags::SIZE) { if (elem->has("size")) - setResize(elem->get("size") * scale); + setResize(elem->get("size") * scale); else if (elem->has("maxSize")) - setMaxSize(elem->get("maxSize") * scale); + setMaxSize(elem->get("maxSize") * scale); else if (elem->has("minSize")) - setMinSize(elem->get("minSize") * scale); + setMinSize(elem->get("minSize") * scale); } if (elem->has("default")) diff --git a/es-core/src/components/ImageComponent.h b/es-core/src/components/ImageComponent.h index 718edacac..7d70561e8 100644 --- a/es-core/src/components/ImageComponent.h +++ b/es-core/src/components/ImageComponent.h @@ -39,18 +39,18 @@ public: // Can be set before or after an image is loaded. // setMaxSize() and setResize() are mutually exclusive. void setResize(float width, float height) override; - void setResize(const Vector2f& size) { setResize(size.x(), size.y()); } + void setResize(const glm::vec2& size) { setResize(size.x, size.y); } // Resize the image to be as large as possible but fit within a box of this size. // Can be set before or after an image is loaded. // Never breaks the aspect ratio. setMaxSize() and setResize() are mutually exclusive. void setMaxSize(float width, float height); - void setMaxSize(const Vector2f& size) { setMaxSize(size.x(), size.y()); } + void setMaxSize(const glm::vec2& size) { setMaxSize(size.x, size.y); } void setMinSize(float width, float height); - void setMinSize(const Vector2f& size) { setMinSize(size.x(), size.y()); } + void setMinSize(const glm::vec2& size) { setMinSize(size.x, size.y); } - Vector2f getRotationSize() const override { return mRotateByTargetSize ? mTargetSize : mSize; } + glm::vec2 getRotationSize() const override { return mRotateByTargetSize ? mTargetSize : mSize; } // Applied AFTER image positioning and sizing. // cropTop(0.2) will crop 20% of the top of the image. @@ -85,7 +85,7 @@ public: // May be different than drawn size (use getSize() for that). Vector2i getTextureSize() const; - Vector2f getSize() const override; + glm::vec2 getSize() const override; bool hasImage() { return static_cast(mTexture); } std::shared_ptr getTexture() { return mTexture; } @@ -100,7 +100,7 @@ public: virtual std::vector getHelpPrompts() override; private: - Vector2f mTargetSize; + glm::vec2 mTargetSize; bool mFlipX, mFlipY, mTargetIsMax, mTargetIsMin; @@ -127,8 +127,8 @@ private: bool mDynamic; bool mRotateByTargetSize; - Vector2f mTopLeftCrop; - Vector2f mBottomRightCrop; + glm::vec2 mTopLeftCrop; + glm::vec2 mBottomRightCrop; }; #endif // ES_CORE_COMPONENTS_IMAGE_COMPONENT_H diff --git a/es-core/src/components/ImageGridComponent.h b/es-core/src/components/ImageGridComponent.h index 0f6ef62af..042f4fa53 100644 --- a/es-core/src/components/ImageGridComponent.h +++ b/es-core/src/components/ImageGridComponent.h @@ -98,12 +98,12 @@ private: // Tiles. bool mLastRowPartial; - Vector2f mAutoLayout; + glm::vec2 mAutoLayout; float mAutoLayoutZoom; glm::vec4 mPadding; - Vector2f mMargin; - Vector2f mTileSize; + glm::vec2 mMargin; + glm::vec2 mTileSize; Vector2i mGridDimension; std::shared_ptr mTheme; std::vector> mTiles; @@ -126,14 +126,14 @@ template ImageGridComponent::ImageGridComponent(Window* window) : IList(window) { - Vector2f screen = Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 screen(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())); - mCamera = 0.0; - mCameraDirection = 1.0; + mCamera = 0.0f; + mCameraDirection = 1.0f; - mAutoLayout = Vector2f::Zero(); - mAutoLayoutZoom = 1.0; + mAutoLayout = glm::vec2({}); + mAutoLayoutZoom = 1.0f; mStartPosition = 0; @@ -213,10 +213,8 @@ template void ImageGridComponent::render(const glm::mat4& parent glm::mat4 trans = getTransform() * parentTrans; glm::mat4 tileTrans = trans; - float offsetX = - isVertical() ? 0.0f : mCamera * mCameraDirection * (mTileSize.x() + mMargin.x()); - float offsetY = - isVertical() ? mCamera * mCameraDirection * (mTileSize.y() + mMargin.y()) : 0.0f; + float offsetX = isVertical() ? 0.0f : mCamera * mCameraDirection * (mTileSize.x + mMargin.x); + float offsetY = isVertical() ? mCamera * mCameraDirection * (mTileSize.y + mMargin.y) : 0.0f; tileTrans = glm::translate(tileTrans, glm::vec3(offsetX, offsetY, 0.0f)); @@ -231,8 +229,8 @@ template void ImageGridComponent::render(const glm::mat4& parent Vector2i pos(static_cast(std::round(trans[3].x)), static_cast(std::round(trans[3].y))); - Vector2i size(static_cast(std::round(mSize.x() * scaleX)), - static_cast(std::round(mSize.y() * scaleY))); + Vector2i size(static_cast(std::round(mSize.x * scaleX)), + static_cast(std::round(mSize.y * scaleY))); Renderer::pushClipRect(pos, size); @@ -271,20 +269,20 @@ void ImageGridComponent::applyTheme(const std::shared_ptr& theme, // Keep the theme pointer to apply it on the tiles later on. mTheme = theme; - Vector2f screen = Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 screen(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())); const ThemeData::ThemeElement* elem = theme->getElement(view, element, "imagegrid"); if (elem) { if (elem->has("margin")) - mMargin = elem->get("margin") * screen; + mMargin = elem->get("margin") * screen; if (elem->has("padding")) - mPadding = elem->get("padding") * - glm::vec4(screen.x(), screen.y(), screen.x(), screen.y()); + mPadding = + elem->get("padding") * glm::vec4(screen.x, screen.y, screen.x, screen.y); if (elem->has("autoLayout")) - mAutoLayout = elem->get("autoLayout"); + mAutoLayout = elem->get("autoLayout"); if (elem->has("autoLayoutSelectedZoom")) mAutoLayoutZoom = elem->get("autoLayoutSelectedZoom"); @@ -369,7 +367,7 @@ void ImageGridComponent::applyTheme(const std::shared_ptr& theme, // grid dimension, and then (re)build the tiles. elem = theme->getElement(view, "default", "gridtile"); - mTileSize = elem && elem->has("size") ? elem->get("size") * screen : + mTileSize = elem && elem->has("size") ? elem->get("size") * screen : GridTileComponent::getDefaultTileSize(); // Apply size property which will trigger a call to onSizeChanged() which will build the tiles. @@ -457,7 +455,7 @@ template void ImageGridComponent::onCursorChanged(const CursorSt } if (newTile != nullptr) - newTile->setSelected(true, true, oldPos == glm::vec3 {} ? nullptr : &oldPos, true); + newTile->setSelected(true, true, oldPos == glm::vec3({}) ? nullptr : &oldPos, true); } int firstVisibleCol = mStartPosition / dimOpposite; @@ -535,22 +533,22 @@ template void ImageGridComponent::buildTiles() mStartPosition -= static_cast(floorf(dimScrollable / 2.0f)); } - Vector2f tileDistance = mTileSize + mMargin; + glm::vec2 tileDistance = mTileSize + mMargin; - if (mAutoLayout.x() != 0.0f && mAutoLayout.y() != 0.0f) { - auto x = (mSize.x() - (mMargin.x() * (mAutoLayout.x() - 1.0f)) - mPadding.x - mPadding.z) / - static_cast(mAutoLayout.x()); - auto y = (mSize.y() - (mMargin.y() * (mAutoLayout.y() - 1.0f)) - mPadding.y - mPadding.w) / - static_cast(mAutoLayout.y()); + if (mAutoLayout.x != 0.0f && mAutoLayout.y != 0.0f) { + auto x = (mSize.x - (mMargin.x * (mAutoLayout.x - 1.0f)) - mPadding.x - mPadding.z) / + static_cast(mAutoLayout.x); + auto y = (mSize.y - (mMargin.y * (mAutoLayout.y - 1.0f)) - mPadding.y - mPadding.w) / + static_cast(mAutoLayout.y); - mTileSize = Vector2f(x, y); + mTileSize = glm::vec2(x, y); tileDistance = mTileSize + mMargin; } bool vert = isVertical(); - Vector2f startPosition = mTileSize / 2.0f; - startPosition.x() += mPadding.x; - startPosition.y() += mPadding.y; + glm::vec2 startPosition = mTileSize / 2.0f; + startPosition.x += mPadding.x; + startPosition.y += mPadding.y; int X; int Y; @@ -566,15 +564,15 @@ template void ImageGridComponent::buildTiles() X = vert ? x : y - EXTRAITEMS; Y = vert ? y - EXTRAITEMS : x; - tile->setPosition(X * tileDistance.x() + startPosition.x(), - Y * tileDistance.y() + startPosition.y()); + tile->setPosition(X * tileDistance.x + startPosition.x, + Y * tileDistance.y + startPosition.y); tile->setOrigin(0.5f, 0.5f); tile->setImage(""); if (mTheme) tile->applyTheme(mTheme, "grid", "gridtile", ThemeFlags::ALL); - if (mAutoLayout.x() != 0 && mAutoLayout.y() != 0) + if (mAutoLayout.x != 0 && mAutoLayout.y != 0.0f) tile->forceSize(mTileSize, mAutoLayoutZoom); mTiles.push_back(tile); @@ -692,16 +690,16 @@ template void ImageGridComponent::calcGridDimension() { // grid_size = columns * tile_size + (columns - 1) * margin // <=> columns = (grid_size + margin) / (tile_size + margin) - Vector2f gridDimension = (mSize + mMargin) / (mTileSize + mMargin); + glm::vec2 gridDimension = (mSize + mMargin) / (mTileSize + mMargin); - if (mAutoLayout.x() != 0 && mAutoLayout.y() != 0) + if (mAutoLayout.x != 0.0f && mAutoLayout.y != 0.0f) gridDimension = mAutoLayout; - mLastRowPartial = floorf(gridDimension.y()) != gridDimension.y(); + mLastRowPartial = floorf(gridDimension.y) != gridDimension.y; // Ceil y dim so we can display partial last row. - mGridDimension = Vector2i(static_cast(gridDimension.x()), - static_cast(ceilf(gridDimension.y()))); + mGridDimension = Vector2i(static_cast(gridDimension.x), + static_cast(ceilf(gridDimension.y))); // Grid dimension validation. if (mGridDimension.x() < 1) { diff --git a/es-core/src/components/MenuComponent.cpp b/es-core/src/components/MenuComponent.cpp index eb2487785..83d2f3b8a 100644 --- a/es-core/src/components/MenuComponent.cpp +++ b/es-core/src/components/MenuComponent.cpp @@ -74,7 +74,7 @@ void MenuComponent::setTitle(std::string title, const std::shared_ptr& fon float MenuComponent::getButtonGridHeight() const { - return (mButtonGrid ? mButtonGrid->getSize().y() : + return (mButtonGrid ? mButtonGrid->getSize().y : Font::get(FONT_SIZE_MEDIUM)->getHeight() + (BUTTON_GRID_VERT_PADDING * Renderer::getScreenHeightModifier())); } @@ -106,11 +106,11 @@ void MenuComponent::updateSize() void MenuComponent::onSizeChanged() { - mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); // Update grid row/column sizes. - mGrid.setRowHeightPerc(0, TITLE_HEIGHT / mSize.y()); - mGrid.setRowHeightPerc(2, getButtonGridHeight() / mSize.y()); + mGrid.setRowHeightPerc(0, TITLE_HEIGHT / mSize.y); + mGrid.setRowHeightPerc(2, getButtonGridHeight() / mSize.y); mGrid.setSize(mSize); } @@ -149,19 +149,20 @@ std::shared_ptr makeButtonGrid( BUTTON_GRID_HORIZ_PADDING * Renderer::getScreenWidthModifier() * buttons.size(); for (int i = 0; i < static_cast(buttons.size()); i++) { buttonGrid->setEntry(buttons.at(i), Vector2i(i, 0), true, false); - buttonGridWidth += buttons.at(i)->getSize().x(); + buttonGridWidth += buttons.at(i)->getSize().x; } for (unsigned int i = 0; i < buttons.size(); i++) buttonGrid->setColWidthPerc( - i, (buttons.at(i)->getSize().x() + + i, (buttons.at(i)->getSize().x + BUTTON_GRID_HORIZ_PADDING * Renderer::getScreenWidthModifier()) / buttonGridWidth); buttonGrid->setSize(buttonGridWidth, - buttons.at(0)->getSize().y() + - (BUTTON_GRID_VERT_PADDING * Renderer::getScreenHeightModifier()) + 2); + buttons.at(0)->getSize().y + + (BUTTON_GRID_VERT_PADDING * Renderer::getScreenHeightModifier()) + + 2.0f); // Spacer row to deal with dropshadow to make buttons look centered. - buttonGrid->setRowHeightPerc(1, 2 / buttonGrid->getSize().y()); + buttonGrid->setRowHeightPerc(1, 2.0f / buttonGrid->getSize().y); return buttonGrid; } diff --git a/es-core/src/components/NinePatchComponent.cpp b/es-core/src/components/NinePatchComponent.cpp index fa4119ef9..a5a396a17 100644 --- a/es-core/src/components/NinePatchComponent.cpp +++ b/es-core/src/components/NinePatchComponent.cpp @@ -67,22 +67,22 @@ void NinePatchComponent::buildVertices() return; } - Vector2f texSize; + glm::vec2 texSize; mVertices = new Renderer::Vertex[6 * 9]; - texSize = Vector2f(static_cast(mTexture->getSize().x()), - static_cast(mTexture->getSize().y())); + texSize = glm::vec2(static_cast(mTexture->getSize().x()), + static_cast(mTexture->getSize().y())); // clang-format off - const float imgSizeX[3] = { mCornerSize.x(), mSize.x() - mCornerSize.x() * 2.0f, mCornerSize.x() }; - const float imgSizeY[3] = { mCornerSize.y(), mSize.y() - mCornerSize.y() * 2.0f, mCornerSize.y() }; + const float imgSizeX[3] = { mCornerSize.x, mSize.x - mCornerSize.x * 2.0f, mCornerSize.x }; + const float imgSizeY[3] = { mCornerSize.y, mSize.y - mCornerSize.y * 2.0f, mCornerSize.y }; const float imgPosX[3] = { 0, imgSizeX[0], imgSizeX[0] + imgSizeX[1] }; const float imgPosY[3] = { 0, imgSizeY[0], imgSizeY[0] + imgSizeY[1] }; // The "1 +" in posY and "-" in sizeY is to deal with texture coordinates having a bottom // left corner origin vs. verticies having a top left origin. - const float texSizeX[3] = { mCornerSize.x() / texSize.x(), (texSize.x() - mCornerSize.x() * 2.0f) / texSize.x(), mCornerSize.x() / texSize.x() }; - const float texSizeY[3] = { -mCornerSize.y() / texSize.y(), -(texSize.y() - mCornerSize.y() * 2.0f) / texSize.y(), -mCornerSize.y() / texSize.y() }; + const float texSizeX[3] = { mCornerSize.x / texSize.x, (texSize.x - mCornerSize.x * 2.0f) / texSize.x, mCornerSize.x / texSize.x }; + const float texSizeY[3] = { -mCornerSize.y / texSize.y, -(texSize.y - mCornerSize.y * 2.0f) / texSize.y, -mCornerSize.y / texSize.y }; const float texPosX[3] = { 0.0f, texSizeX[0], texSizeX[0] + texSizeX[1] }; const float texPosY[3] = { 1.0f, 1.0f + texSizeY[0], 1.0f + texSizeY[0] + texSizeY[1] }; // clang-format on @@ -92,21 +92,21 @@ void NinePatchComponent::buildVertices() for (int slice = 0; slice < 9; slice++) { const int sliceX = slice % 3; const int sliceY = slice / 3; - const Vector2f imgPos = Vector2f(imgPosX[sliceX], imgPosY[sliceY]); - const Vector2f imgSize = Vector2f(imgSizeX[sliceX], imgSizeY[sliceY]); - const Vector2f texPos = Vector2f(texPosX[sliceX], texPosY[sliceY]); - const Vector2f texSize = Vector2f(texSizeX[sliceX], texSizeY[sliceY]); + const glm::vec2 imgPos = glm::vec2(imgPosX[sliceX], imgPosY[sliceY]); + const glm::vec2 imgSize = glm::vec2(imgSizeX[sliceX], imgSizeY[sliceY]); + const glm::vec2 texPos = glm::vec2(texPosX[sliceX], texPosY[sliceY]); + const glm::vec2 texSize = glm::vec2(texSizeX[sliceX], texSizeY[sliceY]); // clang-format off - mVertices[v + 1] = { { imgPos.x() , imgPos.y() }, { texPos.x(), texPos.y() }, 0 }; - mVertices[v + 2] = { { imgPos.x() , imgPos.y() + imgSize.y() }, { texPos.x(), texPos.y() + texSize.y() }, 0 }; - mVertices[v + 3] = { { imgPos.x() + imgSize.x(), imgPos.y() }, { texPos.x() + texSize.x(), texPos.y() }, 0 }; - mVertices[v + 4] = { { imgPos.x() + imgSize.x(), imgPos.y() + imgSize.y() }, { texPos.x() + texSize.x(), texPos.y() + texSize.y() }, 0 }; + mVertices[v + 1] = { { imgPos.x , imgPos.y }, { texPos.x, texPos.y }, 0 }; + mVertices[v + 2] = { { imgPos.x , imgPos.y + imgSize.y }, { texPos.x, texPos.y + texSize.y }, 0 }; + mVertices[v + 3] = { { imgPos.x + imgSize.x, imgPos.y }, { texPos.x + texSize.x, texPos.y }, 0 }; + mVertices[v + 4] = { { imgPos.x + imgSize.x, imgPos.y + imgSize.y }, { texPos.x + texSize.x, texPos.y + texSize.y }, 0 }; // clang-format on // Round vertices. for (int i = 1; i < 5; i++) - mVertices[v + i].pos.round(); + mVertices[v + i].pos = glm::round(mVertices[v + i].pos); // Make duplicates of first and last vertex so this can be rendered as a triangle strip. mVertices[v + 0] = mVertices[v + 1]; @@ -146,15 +146,15 @@ void NinePatchComponent::render(const glm::mat4& parentTrans) void NinePatchComponent::onSizeChanged() { buildVertices(); } -void NinePatchComponent::fitTo(Vector2f size, glm::vec3 position, Vector2f padding) +void NinePatchComponent::fitTo(glm::vec2 size, glm::vec3 position, glm::vec2 padding) { size += padding; - position[0] -= padding.x() / 2.0f; - position[1] -= padding.y() / 2.0f; + position[0] -= padding.x / 2.0f; + position[1] -= padding.y / 2.0f; setSize(size + mCornerSize * 2.0f); - setPosition(position.x + Math::lerp(-mCornerSize.x(), mCornerSize.x(), mOrigin.x()), - position.y + Math::lerp(-mCornerSize.y(), mCornerSize.y(), mOrigin.y())); + setPosition(position.x + Math::lerp(-mCornerSize.x, mCornerSize.x, mOrigin.x), + position.y + Math::lerp(-mCornerSize.y, mCornerSize.y, mOrigin.y)); } void NinePatchComponent::setImagePath(const std::string& path) diff --git a/es-core/src/components/NinePatchComponent.h b/es-core/src/components/NinePatchComponent.h index 12ce091d7..b600f4be4 100644 --- a/es-core/src/components/NinePatchComponent.h +++ b/es-core/src/components/NinePatchComponent.h @@ -39,7 +39,7 @@ public: void onSizeChanged() override; - void fitTo(Vector2f size, glm::vec3 position = {}, Vector2f padding = Vector2f::Zero()); + void fitTo(glm::vec2 size, glm::vec3 position = {}, glm::vec2 padding = {}); void setImagePath(const std::string& path); // Apply a color shift to the "edge" parts of the ninepatch. @@ -52,8 +52,8 @@ public: const std::string& element, unsigned int properties) override; - const Vector2f& getCornerSize() const { return mCornerSize; } - void setCornerSize(const Vector2f& size) + const glm::vec2& getCornerSize() const { return mCornerSize; } + void setCornerSize(const glm::vec2& size) { mCornerSize = size; buildVertices(); @@ -66,7 +66,7 @@ private: Renderer::Vertex* mVertices; std::string mPath; - Vector2f mCornerSize; + glm::vec2 mCornerSize; unsigned int mEdgeColor; unsigned int mCenterColor; std::shared_ptr mTexture; diff --git a/es-core/src/components/OptionListComponent.h b/es-core/src/components/OptionListComponent.h index f65574860..4ce1c52cf 100644 --- a/es-core/src/components/OptionListComponent.h +++ b/es-core/src/components/OptionListComponent.h @@ -58,7 +58,7 @@ public: addChild(&mRightArrow); } - setSize(mLeftArrow.getSize().x() + mRightArrow.getSize().x(), font->getHeight()); + setSize(mLeftArrow.getSize().x + mRightArrow.getSize().x, font->getHeight()); } // Handles positioning/resizing of text and arrows. @@ -67,19 +67,19 @@ public: mLeftArrow.setResize(0, mText.getFont()->getLetterHeight()); mRightArrow.setResize(0, mText.getFont()->getLetterHeight()); - if (mSize.x() < (mLeftArrow.getSize().x() + mRightArrow.getSize().x())) { + if (mSize.x < (mLeftArrow.getSize().x + mRightArrow.getSize().x)) { LOG(LogWarning) << "OptionListComponent too narrow"; } - mText.setSize(mSize.x() - mLeftArrow.getSize().x() - mRightArrow.getSize().x(), + mText.setSize(mSize.x - mLeftArrow.getSize().x - mRightArrow.getSize().x, mText.getFont()->getHeight()); // Position. - mLeftArrow.setPosition(0.0f, (mSize.y() - mLeftArrow.getSize().y()) / 2.0f); - mText.setPosition(mLeftArrow.getPosition().x + mLeftArrow.getSize().x(), - (mSize.y() - mText.getSize().y()) / 2.0f); - mRightArrow.setPosition(mText.getPosition().x + mText.getSize().x(), - (mSize.y() - mRightArrow.getSize().y()) / 2.0f); + mLeftArrow.setPosition(0.0f, (mSize.y - mLeftArrow.getSize().y) / 2.0f); + mText.setPosition(mLeftArrow.getPosition().x + mLeftArrow.getSize().x, + (mSize.y - mText.getSize().y) / 2.0f); + mRightArrow.setPosition(mText.getPosition().x + mText.getSize().x, + (mSize.y - mRightArrow.getSize().y) / 2.0f); } bool input(InputConfig* config, Input input) override @@ -232,10 +232,10 @@ private: std::stringstream ss; ss << getSelectedObjects().size() << " SELECTED"; mText.setText(ss.str()); - mText.setSize(0, mText.getSize().y()); - setSize(mText.getSize().x() + mRightArrow.getSize().x() + - 24 * Renderer::getScreenWidthModifier(), - mText.getSize().y()); + mText.setSize(0, mText.getSize().y); + setSize(mText.getSize().x + mRightArrow.getSize().x + + 24.0f * Renderer::getScreenWidthModifier(), + mText.getSize().y); if (mParent) // Hack since there's no "on child size changed" callback. mParent->onSizeChanged(); } @@ -244,11 +244,10 @@ private: for (auto it = mEntries.cbegin(); it != mEntries.cend(); it++) { if (it->selected) { mText.setText(Utils::String::toUpper(it->name)); - mText.setSize(0, mText.getSize().y()); - setSize(mText.getSize().x() + mLeftArrow.getSize().x() + - mRightArrow.getSize().x() + + mText.setSize(0.0f, mText.getSize().y); + setSize(mText.getSize().x + mLeftArrow.getSize().x + mRightArrow.getSize().x + 24.0f * Renderer::getScreenWidthModifier(), - mText.getSize().y()); + mText.getSize().y); if (mParent) // Hack since there's no "on child size changed" callback. mParent->onSizeChanged(); break; @@ -356,7 +355,7 @@ private: }); } - mMenu.setPosition((Renderer::getScreenWidth() - mMenu.getSize().x()) / 2.0f, + mMenu.setPosition((Renderer::getScreenWidth() - mMenu.getSize().x) / 2.0f, Renderer::getScreenHeight() * 0.13f); addChild(&mMenu); } diff --git a/es-core/src/components/RatingComponent.cpp b/es-core/src/components/RatingComponent.cpp index 42c153b63..f5e8ad349 100644 --- a/es-core/src/components/RatingComponent.cpp +++ b/es-core/src/components/RatingComponent.cpp @@ -25,7 +25,7 @@ RatingComponent::RatingComponent(Window* window, bool colorizeChanges) mFilledTexture = TextureResource::get(":/graphics/star_filled.svg", true); mUnfilledTexture = TextureResource::get(":/graphics/star_unfilled.svg", true); mValue = 0.5f; - mSize = Vector2f(64.0f * NUM_RATING_STARS, 64.0f); + mSize = glm::vec2(64.0f * NUM_RATING_STARS, 64.0f); updateVertices(); updateColors(); } @@ -96,13 +96,13 @@ void RatingComponent::setColorShift(unsigned int color) void RatingComponent::onSizeChanged() { - if (mSize.y() == 0) - mSize[1] = mSize.x() / NUM_RATING_STARS; - else if (mSize.x() == 0) - mSize[0] = mSize.y() * NUM_RATING_STARS; + if (mSize.y == 0.0f) + mSize.y = mSize.x / NUM_RATING_STARS; + else if (mSize.x == 0.0f) + mSize.x = mSize.y * NUM_RATING_STARS; - if (mSize.y() > 0) { - size_t heightPx = static_cast(std::round(mSize.y())); + if (mSize.y > 0.0f) { + size_t heightPx = static_cast(std::round(mSize.y)); if (mFilledTexture) mFilledTexture->rasterizeAt(heightPx, heightPx); if (mUnfilledTexture) @@ -115,9 +115,9 @@ void RatingComponent::onSizeChanged() void RatingComponent::updateVertices() { const float numStars = NUM_RATING_STARS; - const float h = getSize().y(); // Ss the same as a single star's width. - const float w = getSize().y() * mValue * numStars; - const float fw = getSize().y() * numStars; + const float h = getSize().y; // Ss the same as a single star's width. + const float w = getSize().y * mValue * numStars; + const float fw = getSize().y * numStars; const unsigned int color = Renderer::convertRGBAToABGR(mColorShift); // clang-format off @@ -152,7 +152,7 @@ void RatingComponent::render(const glm::mat4& parentTrans) if (mOpacity > 0) { if (Settings::getInstance()->getBool("DebugImage")) { - Renderer::drawRect(0.0f, 0.0f, mSize.y() * NUM_RATING_STARS, mSize.y(), 0xFF000033, + Renderer::drawRect(0.0f, 0.0f, mSize.y * NUM_RATING_STARS, mSize.y, 0xFF000033, 0xFF000033); } diff --git a/es-core/src/components/RatingComponent.h b/es-core/src/components/RatingComponent.h index 322dcb42a..b533f14d2 100644 --- a/es-core/src/components/RatingComponent.h +++ b/es-core/src/components/RatingComponent.h @@ -48,8 +48,6 @@ public: virtual std::vector getHelpPrompts() override; private: - Vector2f mTargetSize; - void updateVertices(); void updateColors(); diff --git a/es-core/src/components/ScrollableContainer.cpp b/es-core/src/components/ScrollableContainer.cpp index 02eb3cb81..b0ff1a85a 100644 --- a/es-core/src/components/ScrollableContainer.cpp +++ b/es-core/src/components/ScrollableContainer.cpp @@ -45,7 +45,7 @@ ScrollableContainer::ScrollableContainer(Window* window) void ScrollableContainer::setAutoScroll(bool autoScroll) { if (autoScroll) { - mScrollDir = Vector2f(0, 1); + mScrollDir = glm::vec2(0.0f, 1.0f); mAutoScrollDelay = static_cast(mAutoScrollDelayConstant); mAutoScrollSpeed = mAutoScrollSpeedConstant; mAutoScrollSpeed = @@ -53,7 +53,7 @@ void ScrollableContainer::setAutoScroll(bool autoScroll) reset(); } else { - mScrollDir = Vector2f(0, 0); + mScrollDir = glm::vec2(0.0f, 0.0f); mAutoScrollDelay = 0; mAutoScrollSpeed = 0; mAutoScrollAccumulator = 0; @@ -71,7 +71,7 @@ void ScrollableContainer::setScrollParameters(float autoScrollDelayConstant, void ScrollableContainer::reset() { - mScrollPos = Vector2f(0, 0); + mScrollPos = glm::vec2(0.0f, 0.0f); mAutoScrollResetAccumulator = 0; mAutoScrollAccumulator = -mAutoScrollDelay + mAutoScrollSpeed; mAtEnd = false; @@ -82,16 +82,16 @@ void ScrollableContainer::update(int deltaTime) // Don't scroll if the media viewer or screensaver is active or if text scrolling is disabled; if (mWindow->isMediaViewerActive() || mWindow->isScreensaverActive() || !mWindow->getAllowTextScrolling()) { - if (mScrollPos != 0 && !mWindow->isLaunchScreenDisplayed()) + if (mScrollPos != glm::vec2({}) && !mWindow->isLaunchScreenDisplayed()) reset(); return; } - const Vector2f contentSize = getContentSize(); + const glm::vec2 contentSize = getContentSize(); int adjustedAutoScrollSpeed = mAutoScrollSpeed; // Adjust the scrolling speed based on the width of the container. - float widthModifier = contentSize.x() / static_cast(Renderer::getScreenWidth()); + float widthModifier = contentSize.x / static_cast(Renderer::getScreenWidth()); adjustedAutoScrollSpeed = static_cast(adjustedAutoScrollSpeed * widthModifier); // Also adjust the scrolling speed based on the size of the font. @@ -105,28 +105,28 @@ void ScrollableContainer::update(int deltaTime) if (adjustedAutoScrollSpeed != 0) { mAutoScrollAccumulator += deltaTime; while (mAutoScrollAccumulator >= adjustedAutoScrollSpeed) { - if (contentSize.y() > mSize.y()) + if (contentSize.y > mSize.y) mScrollPos += mScrollDir; mAutoScrollAccumulator -= adjustedAutoScrollSpeed; } } // Clip scrolling within bounds. - if (mScrollPos.x() < 0) - mScrollPos[0] = 0; - if (mScrollPos.y() < 0) - mScrollPos[1] = 0; + if (mScrollPos.x < 0.0f) + mScrollPos.x = 0.0f; + if (mScrollPos.y < 0.0f) + mScrollPos.y = 0.0f; - if (mScrollPos.x() + getSize().x() > contentSize.x()) { - mScrollPos[0] = contentSize.x() - getSize().x(); + if (mScrollPos.x + getSize().x > contentSize.x) { + mScrollPos.x = contentSize.x - getSize().x; mAtEnd = true; } - if (contentSize.y() < getSize().y()) { - mScrollPos[1] = 0; + if (contentSize.y < getSize().y) { + mScrollPos.y = 0.0f; } - else if (mScrollPos.y() + getSize().y() > contentSize.y()) { - mScrollPos[1] = contentSize.y() - getSize().y(); + else if (mScrollPos.y + getSize().y > contentSize.y) { + mScrollPos.y = contentSize.y - getSize().y; mAtEnd = true; } @@ -136,7 +136,7 @@ void ScrollableContainer::update(int deltaTime) // Fade in the text as it resets to the start position. auto func = [this](float t) { this->setOpacity(static_cast(Math::lerp(0.0f, 1.0f, t) * 255)); - mScrollPos = Vector2f(0, 0); + mScrollPos = glm::vec2(0.0f, 0.0f); mAutoScrollResetAccumulator = 0; mAutoScrollAccumulator = -mAutoScrollDelay + mAutoScrollSpeed; mAtEnd = false; @@ -159,31 +159,31 @@ void ScrollableContainer::render(const glm::mat4& parentTrans) glm::vec3 dimScaled {}; - dimScaled.x = std::fabs(trans[3].x + mSize.x()); - dimScaled.y = std::fabs(trans[3].y + mSize.y()); + dimScaled.x = std::fabs(trans[3].x + mSize.x); + dimScaled.y = std::fabs(trans[3].y + mSize.y); Vector2i clipDim(static_cast(dimScaled.x - trans[3].x), static_cast(dimScaled.y - trans[3].y)); Renderer::pushClipRect(clipPos, clipDim); - trans = glm::translate(trans, -glm::vec3(mScrollPos.x(), mScrollPos.y(), 0.0f)); + trans = glm::translate(trans, -glm::vec3(mScrollPos.x, mScrollPos.y, 0.0f)); Renderer::setMatrix(trans); GuiComponent::renderChildren(trans); Renderer::popClipRect(); } -Vector2f ScrollableContainer::getContentSize() +glm::vec2 ScrollableContainer::getContentSize() { - Vector2f max(0, 0); + glm::vec2 max(0.0f, 0.0f); for (unsigned int i = 0; i < mChildren.size(); i++) { - Vector2f pos(mChildren.at(i)->getPosition()[0], mChildren.at(i)->getPosition()[1]); - Vector2f bottomRight = mChildren.at(i)->getSize() + pos; - if (bottomRight.x() > max.x()) - max.x() = bottomRight.x(); - if (bottomRight.y() > max.y()) - max.y() = bottomRight.y(); + glm::vec2 pos(mChildren.at(i)->getPosition().x, mChildren.at(i)->getPosition().y); + glm::vec2 bottomRight = mChildren.at(i)->getSize() + pos; + if (bottomRight.x > max.x) + max.x = bottomRight.x; + if (bottomRight.y > max.y) + max.y = bottomRight.y; if (!mFontSize) mFontSize = static_cast(mChildren.at(i)->getFont()->getSize()); } diff --git a/es-core/src/components/ScrollableContainer.h b/es-core/src/components/ScrollableContainer.h index f6df4955f..548d65b03 100644 --- a/es-core/src/components/ScrollableContainer.h +++ b/es-core/src/components/ScrollableContainer.h @@ -24,8 +24,8 @@ class ScrollableContainer : public GuiComponent public: ScrollableContainer(Window* window); - Vector2f getScrollPos() const { return mScrollPos; } - void setScrollPos(const Vector2f& pos) { mScrollPos = pos; } + glm::vec2 getScrollPos() const { return mScrollPos; } + void setScrollPos(const glm::vec2& pos) { mScrollPos = pos; } void setAutoScroll(bool autoScroll); void setScrollParameters(float autoScrollDelayConstant, @@ -37,10 +37,10 @@ public: void render(const glm::mat4& parentTrans) override; private: - Vector2f getContentSize(); + glm::vec2 getContentSize(); - Vector2f mScrollPos; - Vector2f mScrollDir; + glm::vec2 mScrollPos; + glm::vec2 mScrollDir; float mFontSize; float mSmallFontSize; diff --git a/es-core/src/components/SliderComponent.cpp b/es-core/src/components/SliderComponent.cpp index d1dfd2f1b..71dbe6fb8 100644 --- a/es-core/src/components/SliderComponent.cpp +++ b/es-core/src/components/SliderComponent.cpp @@ -84,13 +84,13 @@ void SliderComponent::render(const glm::mat4& parentTrans) mFont->renderTextCache(mValueCache.get()); float width = - mSize.x() - mKnob.getSize().x() - - (mValueCache ? mValueCache->metrics.size.x() + (4.0f * Renderer::getScreenWidthModifier()) : - 0); + mSize.x - mKnob.getSize().x - + (mValueCache ? mValueCache->metrics.size.x + (4.0f * Renderer::getScreenWidthModifier()) : + 0.0f); // Render line. const float lineWidth = 2.0f * Renderer::getScreenHeightModifier(); - Renderer::drawRect(mKnob.getSize().x() / 2.0f, mSize.y() / 2.0f - lineWidth / 2.0f, width, + Renderer::drawRect(mKnob.getSize().x / 2.0f, mSize.y / 2.0f - lineWidth / 2.0f, width, lineWidth, 0x777777FF, 0x777777FF); // Render knob. @@ -115,7 +115,7 @@ float SliderComponent::getValue() { return mValue; } void SliderComponent::onSizeChanged() { if (!mSuffix.empty()) - mFont = Font::get(static_cast(mSize.y()), FONT_PATH_LIGHT); + mFont = Font::get(static_cast(mSize.y), FONT_PATH_LIGHT); onValueChanged(); } @@ -139,21 +139,21 @@ void SliderComponent::onValueChanged() ss << mSuffix; const std::string max = ss.str(); - Vector2f textSize = mFont->sizeText(max); + glm::vec2 textSize = mFont->sizeText(max); mValueCache = std::shared_ptr(mFont->buildTextCache( - val, mSize.x() - textSize.x(), (mSize.y() - textSize.y()) / 2.0f, 0x777777FF)); - mValueCache->metrics.size[0] = textSize.x(); // Fudge the width. + val, mSize.x - textSize.x, (mSize.y - textSize.y) / 2.0f, 0x777777FF)); + mValueCache->metrics.size.x = textSize.x; // Fudge the width. } // Update knob position/size. - mKnob.setResize(0, mSize.y() * 0.7f); + mKnob.setResize(0, mSize.y * 0.7f); float lineLength = - mSize.x() - mKnob.getSize().x() - - (mValueCache ? mValueCache->metrics.size.x() + (4.0f * Renderer::getScreenWidthModifier()) : - 0); + mSize.x - mKnob.getSize().x - + (mValueCache ? mValueCache->metrics.size.x + (4.0f * Renderer::getScreenWidthModifier()) : + 0.0f); - mKnob.setPosition(((mValue - mMin / 2.0f) / mMax) * lineLength + mKnob.getSize().x() / 2.0f, - mSize.y() / 2.0f); + mKnob.setPosition(((mValue - mMin / 2.0f) / mMax) * lineLength + mKnob.getSize().x / 2.0f, + mSize.y / 2.0f); } std::vector SliderComponent::getHelpPrompts() diff --git a/es-core/src/components/TextComponent.cpp b/es-core/src/components/TextComponent.cpp index 0ca01fa57..6e8191dda 100644 --- a/es-core/src/components/TextComponent.cpp +++ b/es-core/src/components/TextComponent.cpp @@ -34,7 +34,7 @@ TextComponent::TextComponent(Window* window, unsigned int color, Alignment align, glm::vec3 pos, - Vector2f size, + glm::vec2 size, unsigned int bgcolor, float margin) : GuiComponent(window) @@ -60,7 +60,7 @@ TextComponent::TextComponent(Window* window, void TextComponent::onSizeChanged() { - mAutoCalcExtent = Vector2i((getSize().x() == 0), (getSize().y() == 0)); + mAutoCalcExtent = Vector2i((getSize().x == 0), (getSize().y == 0)); onTextChanged(); } @@ -124,23 +124,23 @@ void TextComponent::render(const glm::mat4& parentTrans) if (mRenderBackground) { Renderer::setMatrix(trans); - Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), mBgColor, mBgColor); + Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, mBgColor, mBgColor); } if (mTextCache) { - const Vector2f& textSize = mTextCache->metrics.size; - float yOff = 0; + const glm::vec2& textSize = mTextCache->metrics.size; + float yOff = 0.0f; switch (mVerticalAlignment) { case ALIGN_TOP: { - yOff = 0; + yOff = 0.0f; break; } case ALIGN_BOTTOM: { - yOff = (getSize().y() - textSize.y()); + yOff = (getSize().y - textSize.y); break; } case ALIGN_CENTER: { - yOff = (getSize().y() - textSize.y()) / 2.0f; + yOff = (getSize().y - textSize.y) / 2.0f; break; } default: { @@ -152,7 +152,7 @@ void TextComponent::render(const glm::mat4& parentTrans) if (Settings::getInstance()->getBool("DebugText")) { // Draw the "textbox" area, what we are aligned within. Renderer::setMatrix(trans); - Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0x0000FF33, 0x0000FF33); + Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, 0x0000FF33, 0x0000FF33); } trans = glm::translate(trans, off); @@ -162,19 +162,19 @@ void TextComponent::render(const glm::mat4& parentTrans) if (Settings::getInstance()->getBool("DebugText")) { switch (mHorizontalAlignment) { case ALIGN_LEFT: { - Renderer::drawRect(0.0f, 0.0f, mTextCache->metrics.size.x(), - mTextCache->metrics.size.y(), 0x00000033, 0x00000033); + Renderer::drawRect(0.0f, 0.0f, mTextCache->metrics.size.x, + mTextCache->metrics.size.y, 0x00000033, 0x00000033); break; } case ALIGN_CENTER: { - Renderer::drawRect((mSize.x() - mTextCache->metrics.size.x()) / 2.0f, 0.0f, - mTextCache->metrics.size.x(), mTextCache->metrics.size.y(), + Renderer::drawRect((mSize.x - mTextCache->metrics.size.x) / 2.0f, 0.0f, + mTextCache->metrics.size.x, mTextCache->metrics.size.y, 0x00000033, 0x00000033); break; } case ALIGN_RIGHT: { - Renderer::drawRect(mSize.x() - mTextCache->metrics.size.x(), 0.0f, - mTextCache->metrics.size.x(), mTextCache->metrics.size.y(), + Renderer::drawRect(mSize.x - mTextCache->metrics.size.x, 0.0f, + mTextCache->metrics.size.x, mTextCache->metrics.size.y, 0x00000033, 0x00000033); break; } @@ -194,10 +194,10 @@ void TextComponent::calculateExtent() } else { if (mAutoCalcExtent.y()) - mSize[1] = mFont - ->sizeWrappedText(mUppercase ? Utils::String::toUpper(mText) : mText, - getSize().x(), mLineSpacing) - .y(); + mSize.y = mFont + ->sizeWrappedText(mUppercase ? Utils::String::toUpper(mText) : mText, + getSize().x, mLineSpacing) + .y; } } @@ -213,7 +213,7 @@ void TextComponent::onTextChanged() std::string text = mUppercase ? Utils::String::toUpper(mText) : mText; std::shared_ptr f = mFont; - const bool isMultiline = (mSize.y() == 0 || mSize.y() > f->getHeight() * 1.2f); + const bool isMultiline = (mSize.y == 0.0f || mSize.y > f->getHeight() * 1.2f); bool addAbbrev = false; if (!isMultiline) { @@ -223,15 +223,15 @@ void TextComponent::onTextChanged() addAbbrev = newline != std::string::npos; } - Vector2f size = f->sizeText(text); - if (!isMultiline && mSize.x() > 0.0f && text.size() && (size.x() > mSize.x() || addAbbrev)) { + glm::vec2 size = f->sizeText(text); + if (!isMultiline && mSize.x > 0.0f && text.size() && (size.x > mSize.x || addAbbrev)) { // Abbreviate text. const std::string abbrev = "..."; - Vector2f abbrevSize = f->sizeText(abbrev); + glm::vec2 abbrevSize = f->sizeText(abbrev); // mMargin adds a margin around the text if it's abbreviated. - float marginAdjustedSize = mSize.x() - (mSize.x() * mMargin); + float marginAdjustedSize = mSize.x - (mSize.x * mMargin); - while (text.size() && size.x() + abbrevSize.x() > marginAdjustedSize) { + while (text.size() && size.x + abbrevSize.x > marginAdjustedSize) { size_t newSize = Utils::String::prevCursor(text, text.size()); text.erase(newSize, text.size() - newSize); size = f->sizeText(text); @@ -240,12 +240,12 @@ void TextComponent::onTextChanged() text.append(abbrev); mTextCache = std::shared_ptr( - f->buildTextCache(text, Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), + f->buildTextCache(text, glm::vec2({}), (mColor >> 8 << 8) | mOpacity, mSize.x, mHorizontalAlignment, mLineSpacing, mNoTopMargin)); } else { mTextCache = std::shared_ptr(f->buildTextCache( - f->wrapText(text, mSize.x()), Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), + f->wrapText(text, mSize.x), glm::vec2({}), (mColor >> 8 << 8) | mOpacity, mSize.x, mHorizontalAlignment, mLineSpacing, mNoTopMargin)); } } diff --git a/es-core/src/components/TextComponent.h b/es-core/src/components/TextComponent.h index 05cbdb72a..8bf4cd0ed 100644 --- a/es-core/src/components/TextComponent.h +++ b/es-core/src/components/TextComponent.h @@ -31,7 +31,7 @@ public: unsigned int color = 0x000000FF, Alignment align = ALIGN_LEFT, glm::vec3 pos = {}, - Vector2f size = Vector2f::Zero(), + glm::vec2 size = {}, unsigned int bgcolor = 0x00000000, float margin = 0.0f); diff --git a/es-core/src/components/TextEditComponent.cpp b/es-core/src/components/TextEditComponent.cpp index c0a5572cf..8d0c2f0e4 100644 --- a/es-core/src/components/TextEditComponent.cpp +++ b/es-core/src/components/TextEditComponent.cpp @@ -28,7 +28,7 @@ TextEditComponent::TextEditComponent(Window* window) { addChild(&mBox); onFocusLost(); - mResolutionAdjustment = -(34 * Renderer::getScreenWidthModifier() - 34); + mResolutionAdjustment = -(34.0f * Renderer::getScreenWidthModifier() - 34.0f); setSize(4096, mFont->getHeight() + (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier())); } @@ -46,9 +46,9 @@ void TextEditComponent::onFocusLost() void TextEditComponent::onSizeChanged() { - mBox.fitTo(mSize, {}, - Vector2f(-34 + mResolutionAdjustment, - -32 - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier()))); + mBox.fitTo(mSize, glm::vec3({}), + glm::vec2(-34.0f + mResolutionAdjustment, + -32.0f - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier()))); onTextChanged(); // Wrap point probably changed. } @@ -239,10 +239,9 @@ void TextEditComponent::setCursor(size_t pos) void TextEditComponent::onTextChanged() { - std::string wrappedText = - (isMultiline() ? mFont->wrapText(mText, getTextAreaSize().x()) : mText); + std::string wrappedText = (isMultiline() ? mFont->wrapText(mText, getTextAreaSize().x) : mText); mTextCache = std::unique_ptr( - mFont->buildTextCache(wrappedText, 0, 0, 0x77777700 | getOpacity())); + mFont->buildTextCache(wrappedText, 0.0f, 0.0f, 0x77777700 | getOpacity())); if (mCursor > static_cast(mText.length())) mCursor = static_cast(mText.length()); @@ -251,23 +250,22 @@ void TextEditComponent::onTextChanged() void TextEditComponent::onCursorChanged() { if (isMultiline()) { - Vector2f textSize = - mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x(), mCursor); + glm::vec2 textSize = mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x, mCursor); // Need to scroll down? - if (mScrollOffset.y() + getTextAreaSize().y() < textSize.y() + mFont->getHeight()) - mScrollOffset[1] = textSize.y() - getTextAreaSize().y() + mFont->getHeight(); + if (mScrollOffset.y + getTextAreaSize().y < textSize.y + mFont->getHeight()) + mScrollOffset.y = textSize.y - getTextAreaSize().y + mFont->getHeight(); // Need to scroll up? - else if (mScrollOffset.y() > textSize.y()) - mScrollOffset[1] = textSize.y(); + else if (mScrollOffset.y > textSize.y) + mScrollOffset.y = textSize.y; } else { - Vector2f cursorPos = mFont->sizeText(mText.substr(0, mCursor)); + glm::vec2 cursorPos = mFont->sizeText(mText.substr(0, mCursor)); - if (mScrollOffset.x() + getTextAreaSize().x() < cursorPos.x()) - mScrollOffset[0] = cursorPos.x() - getTextAreaSize().x(); - else if (mScrollOffset.x() > cursorPos.x()) - mScrollOffset[0] = cursorPos.x(); + if (mScrollOffset.x + getTextAreaSize().x < cursorPos.x) + mScrollOffset.x = cursorPos.x - getTextAreaSize().x; + else if (mScrollOffset.x > cursorPos.x) + mScrollOffset.x = cursorPos.x; } } @@ -278,19 +276,19 @@ void TextEditComponent::render(const glm::mat4& parentTrans) // Text + cursor rendering. // Offset into our "text area" (padding). - trans = glm::translate(trans, glm::vec3(getTextAreaPos().x(), getTextAreaPos().y(), 0.0f)); + trans = glm::translate(trans, glm::vec3(getTextAreaPos().x, getTextAreaPos().y, 0.0f)); Vector2i clipPos(static_cast(trans[3].x), static_cast(trans[3].y)); // Use "text area" size for clipping. glm::vec3 dimScaled {}; - dimScaled.x = std::fabs(trans[3].x + getTextAreaSize().x()); - dimScaled.y = std::fabs(trans[3].y + getTextAreaSize().y()); + dimScaled.x = std::fabs(trans[3].x + getTextAreaSize().x); + dimScaled.y = std::fabs(trans[3].y + getTextAreaSize().y); Vector2i clipDim(static_cast(dimScaled.x - trans[3].x), static_cast(dimScaled.y - trans[3].y)); Renderer::pushClipRect(clipPos, clipDim); - trans = glm::translate(trans, glm::vec3(-mScrollOffset.x(), -mScrollOffset.y(), 0.0f)); + trans = glm::translate(trans, glm::vec3(-mScrollOffset.x, -mScrollOffset.y, 0.0f)); Renderer::setMatrix(trans); if (mTextCache) @@ -301,9 +299,9 @@ void TextEditComponent::render(const glm::mat4& parentTrans) // Draw cursor. if (mEditing) { - Vector2f cursorPos; + glm::vec2 cursorPos; if (isMultiline()) { - cursorPos = mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x(), mCursor); + cursorPos = mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x, mCursor); } else { cursorPos = mFont->sizeText(mText.substr(0, mCursor)); @@ -311,24 +309,24 @@ void TextEditComponent::render(const glm::mat4& parentTrans) } float cursorHeight = mFont->getHeight() * 0.8f; - Renderer::drawRect( - cursorPos.x(), cursorPos.y() + (mFont->getHeight() - cursorHeight) / 2.0f, - 2.0f * Renderer::getScreenWidthModifier(), cursorHeight, 0x000000FF, 0x000000FF); + Renderer::drawRect(cursorPos.x, cursorPos.y + (mFont->getHeight() - cursorHeight) / 2.0f, + 2.0f * Renderer::getScreenWidthModifier(), cursorHeight, 0x000000FF, + 0x000000FF); } } -Vector2f TextEditComponent::getTextAreaPos() const +glm::vec2 TextEditComponent::getTextAreaPos() const { - return Vector2f( + return glm::vec2( (-mResolutionAdjustment + (TEXT_PADDING_HORIZ * Renderer::getScreenWidthModifier())) / 2.0f, (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier()) / 2.0f); } -Vector2f TextEditComponent::getTextAreaSize() const +glm::vec2 TextEditComponent::getTextAreaSize() const { - return Vector2f(mSize.x() + mResolutionAdjustment - - (TEXT_PADDING_HORIZ * Renderer::getScreenWidthModifier()), - mSize.y() - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier())); + return glm::vec2(mSize.x + mResolutionAdjustment - + (TEXT_PADDING_HORIZ * Renderer::getScreenWidthModifier()), + mSize.y - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier())); } std::vector TextEditComponent::getHelpPrompts() diff --git a/es-core/src/components/TextEditComponent.h b/es-core/src/components/TextEditComponent.h index 36ad42c12..a350ed306 100644 --- a/es-core/src/components/TextEditComponent.h +++ b/es-core/src/components/TextEditComponent.h @@ -52,9 +52,9 @@ private: void updateCursorRepeat(int deltaTime); void moveCursor(int amt); - bool isMultiline() { return (getSize().y() > mFont->getHeight() * 1.25f); } - Vector2f getTextAreaPos() const; - Vector2f getTextAreaSize() const; + bool isMultiline() { return (getSize().y > mFont->getHeight() * 1.25f); } + glm::vec2 getTextAreaPos() const; + glm::vec2 getTextAreaSize() const; std::string mText; std::string mTextOrig; @@ -65,7 +65,7 @@ private: int mCursorRepeatTimer; int mCursorRepeatDir; - Vector2f mScrollOffset; + glm::vec2 mScrollOffset; NinePatchComponent mBox; float mResolutionAdjustment; diff --git a/es-core/src/components/TextListComponent.h b/es-core/src/components/TextListComponent.h index ced4d5e41..4b30a07ae 100644 --- a/es-core/src/components/TextListComponent.h +++ b/es-core/src/components/TextListComponent.h @@ -170,7 +170,7 @@ template void TextListComponent::render(const glm::mat4& parentT std::max(font->getHeight(1.0), static_cast(font->getSize())) * mLineSpacing; // Number of entries that can fit on the screen simultaneously. - int screenCount = static_cast(mSize.y() / entrySize + 0.5f); + int screenCount = static_cast(mSize.y / entrySize + 0.5f); if (size() >= screenCount) { startEntry = mCursor - screenCount / 2; @@ -193,20 +193,20 @@ template void TextListComponent::render(const glm::mat4& parentT } else { Renderer::setMatrix(trans); - Renderer::drawRect(0.0f, (mCursor - startEntry) * entrySize + mSelectorOffsetY, - mSize.x(), mSelectorHeight, mSelectorColor, mSelectorColorEnd, + Renderer::drawRect(0.0f, (mCursor - startEntry) * entrySize + mSelectorOffsetY, mSize.x, + mSelectorHeight, mSelectorColor, mSelectorColorEnd, mSelectorColorGradientHorizontal); } } if (Settings::getInstance()->getBool("DebugText")) { - Renderer::drawRect(mHorizontalMargin, 0.0f, mSize.x() - mHorizontalMargin * 2.0f, mSize.y(), + Renderer::drawRect(mHorizontalMargin, 0.0f, mSize.x - mHorizontalMargin * 2.0f, mSize.y, 0x00000033, 0x00000033); - Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0x0000FF33, 0x0000FF33); + Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, 0x0000FF33, 0x0000FF33); } // Clip to inside margins. - glm::vec3 dim(mSize.x(), mSize.y(), 0.0f); + glm::vec3 dim(mSize.x, mSize.y, 0.0f); dim.x = (trans[0].x * dim.x + trans[3].x) - trans[3].x; dim.y = (trans[1].y * dim.y + trans[3].y) - trans[3].y; @@ -244,12 +244,12 @@ template void TextListComponent::render(const glm::mat4& parentT break; case ALIGN_CENTER: offset.x = - static_cast((mSize.x() - entry.data.textCache->metrics.size.x()) / 2.0f); + static_cast((mSize.x - entry.data.textCache->metrics.size.x) / 2.0f); if (offset.x < mHorizontalMargin) offset.x = mHorizontalMargin; break; case ALIGN_RIGHT: - offset.x = (mSize.x() - entry.data.textCache->metrics.size.x()); + offset.x = (mSize.x - entry.data.textCache->metrics.size.x); offset.x -= mHorizontalMargin; if (offset.x < mHorizontalMargin) offset.x = mHorizontalMargin; @@ -349,13 +349,13 @@ template void TextListComponent::update(int deltaTime) const float textLength = mFont ->sizeText(Utils::String::toUpper( mEntries.at(static_cast(mCursor)).name)) - .x(); - const float limit = mSize.x() - mHorizontalMargin * 2.0f; + .x; + const float limit = mSize.x - mHorizontalMargin * 2.0f; if (textLength > limit) { // Loop. // Pixels per second (based on nes-mini font at 1920x1080 to produce a speed of 200). - const float speed = mFont->sizeText("ABCDEFGHIJKLMNOPQRSTUVWXYZ").x() * 0.247f; + const float speed = mFont->sizeText("ABCDEFGHIJKLMNOPQRSTUVWXYZ").x * 0.247f; const float delay = 3000.0f; const float scrollLength = textLength; const float returnLength = speed * 1.5f; @@ -452,7 +452,7 @@ void TextListComponent::applyTheme(const std::shared_ptr& theme, } if (elem->has("horizontalMargin")) { mHorizontalMargin = elem->get("horizontalMargin") * - (this->mParent ? this->mParent->getSize().x() : + (this->mParent ? this->mParent->getSize().x : static_cast(Renderer::getScreenWidth())); } } @@ -466,7 +466,7 @@ void TextListComponent::applyTheme(const std::shared_ptr& theme, if (elem->has("selectorHeight")) setSelectorHeight(elem->get("selectorHeight") * Renderer::getScreenHeight()); if (elem->has("selectorOffsetY")) { - float scale = this->mParent ? this->mParent->getSize().y() : + float scale = this->mParent ? this->mParent->getSize().y : static_cast(Renderer::getScreenHeight()); setSelectorOffsetY(elem->get("selectorOffsetY") * scale); } @@ -479,7 +479,7 @@ void TextListComponent::applyTheme(const std::shared_ptr& theme, std::string path = elem->get("selectorImagePath"); bool tile = elem->has("selectorImageTile") && elem->get("selectorImageTile"); mSelectorImage.setImage(path, tile); - mSelectorImage.setSize(mSize.x(), mSelectorHeight); + mSelectorImage.setSize(mSize.x, mSelectorHeight); mSelectorImage.setColorShift(mSelectorColor); mSelectorImage.setColorShiftEnd(mSelectorColorEnd); } diff --git a/es-core/src/components/VideoComponent.cpp b/es-core/src/components/VideoComponent.cpp index ad3567f71..0395add15 100644 --- a/es-core/src/components/VideoComponent.cpp +++ b/es-core/src/components/VideoComponent.cpp @@ -223,24 +223,24 @@ void VideoComponent::applyTheme(const std::shared_ptr& theme, if (!elem) return; - Vector2f scale = getParent() ? getParent()->getSize() : - Vector2f(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 scale = getParent() ? getParent()->getSize() : + glm::vec2(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())); if (properties & ThemeFlags::SIZE) { if (elem->has("size")) { - setResize(elem->get("size") * scale); - mVideoAreaSize = elem->get("size") * scale; + setResize(elem->get("size") * scale); + mVideoAreaSize = elem->get("size") * scale; } else if (elem->has("maxSize")) { - setMaxSize(elem->get("maxSize") * scale); - mVideoAreaSize = elem->get("maxSize") * scale; + setMaxSize(elem->get("maxSize") * scale); + mVideoAreaSize = elem->get("maxSize") * scale; } } if (properties & ThemeFlags::POSITION) { if (elem->has("pos")) - mVideoAreaPos = elem->get("pos") * scale; + mVideoAreaPos = elem->get("pos") * scale; } if (elem->has("default")) diff --git a/es-core/src/components/VideoComponent.h b/es-core/src/components/VideoComponent.h index f7c98ea8e..7f6ef5099 100644 --- a/es-core/src/components/VideoComponent.h +++ b/es-core/src/components/VideoComponent.h @@ -78,13 +78,13 @@ public: // zero, no resizing. This can be set before or after a video is loaded. // setMaxSize() and setResize() are mutually exclusive. virtual void setResize(float width, float height) override = 0; - void setResize(const Vector2f& size) { setResize(size.x(), size.y()); } + void setResize(const glm::vec2& size) { setResize(size.x, size.y); } // Resize the video to be as large as possible but fit within a box of this size. // This can be set before or after a video is loaded. // Never breaks the aspect ratio. setMaxSize() and setResize() are mutually exclusive. virtual void setMaxSize(float width, float height) = 0; - void setMaxSize(const Vector2f& size) { setMaxSize(size.x(), size.y()); } + void setMaxSize(const glm::vec2& size) { setMaxSize(size.x, size.y); } private: // Start the video immediately. @@ -110,9 +110,9 @@ protected: Window* mWindow; unsigned mVideoWidth; unsigned mVideoHeight; - Vector2f mTargetSize; - Vector2f mVideoAreaPos; - Vector2f mVideoAreaSize; + glm::vec2 mTargetSize; + glm::vec2 mVideoAreaPos; + glm::vec2 mVideoAreaSize; std::shared_ptr mTexture; std::string mStaticImagePath; ImageComponent mStaticImage; diff --git a/es-core/src/components/VideoFFmpegComponent.cpp b/es-core/src/components/VideoFFmpegComponent.cpp index e3e87e077..3f679b38d 100644 --- a/es-core/src/components/VideoFFmpegComponent.cpp +++ b/es-core/src/components/VideoFFmpegComponent.cpp @@ -57,7 +57,7 @@ VideoFFmpegComponent::~VideoFFmpegComponent() { stopVideo(); } void VideoFFmpegComponent::setResize(float width, float height) { // This resize function is used when stretching videos to full screen in the video screensaver. - mTargetSize = Vector2f(width, height); + mTargetSize = glm::vec2(width, height); mTargetIsMax = false; mStaticImage.setResize(width, height); resize(); @@ -67,7 +67,7 @@ void VideoFFmpegComponent::setMaxSize(float width, float height) { // This resize function is used in most instances, such as non-stretched video screensaver // and the gamelist videos. - mTargetSize = Vector2f(width, height); + mTargetSize = glm::vec2(width, height); mTargetIsMax = true; mStaticImage.setMaxSize(width, height); resize(); @@ -78,41 +78,41 @@ void VideoFFmpegComponent::resize() if (!mTexture) return; - const Vector2f textureSize(static_cast(mVideoWidth), static_cast(mVideoHeight)); + const glm::vec2 textureSize(static_cast(mVideoWidth), static_cast(mVideoHeight)); - if (textureSize == Vector2f::Zero()) + if (textureSize == glm::vec2({})) return; if (mTargetIsMax) { mSize = textureSize; - Vector2f resizeScale((mTargetSize.x() / mSize.x()), (mTargetSize.y() / mSize.y())); + glm::vec2 resizeScale((mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)); - if (resizeScale.x() < resizeScale.y()) { - mSize[0] *= resizeScale.x(); - mSize[1] *= resizeScale.x(); + if (resizeScale.x < resizeScale.y) { + mSize.x *= resizeScale.x; + mSize.y *= resizeScale.x; } else { - mSize[0] *= resizeScale.y(); - mSize[1] *= resizeScale.y(); + mSize.x *= resizeScale.y; + mSize.y *= resizeScale.y; } - mSize[1] = std::round(mSize[1]); - mSize[0] = (mSize[1] / textureSize.y()) * textureSize.x(); + mSize.y = std::round(mSize[1.0f]); + mSize.x = (mSize.y / textureSize.y) * textureSize.x; } else { // If both components are set, we just stretch. // If no components are set, we don't resize at all. - mSize = mTargetSize == Vector2f::Zero() ? textureSize : mTargetSize; + mSize = mTargetSize == glm::vec2({}) ? textureSize : mTargetSize; // If only one component is set, we resize in a way that maintains aspect ratio. - if (!mTargetSize.x() && mTargetSize.y()) { - mSize[1] = std::round(mTargetSize.y()); - mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); + if (!mTargetSize.x && mTargetSize.y) { + mSize.y = std::round(mTargetSize.y); + mSize.x = (mSize.y / textureSize.y) * textureSize.x; } - else if (mTargetSize.x() && !mTargetSize.y()) { - mSize[1] = std::round((mTargetSize.x() / textureSize.x()) * textureSize.y()); - mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); + else if (mTargetSize.x && !mTargetSize.y) { + mSize.y = std::round((mTargetSize.x / textureSize.x) * textureSize.y); + mSize.x = (mSize.y / textureSize.y) * textureSize.x; } } @@ -147,14 +147,14 @@ void VideoFFmpegComponent::render(const glm::mat4& parentTrans) // clang-format off vertices[0] = { { 0.0f , 0.0f }, { 0.0f, 0.0f }, color }; - vertices[1] = { { 0.0f , mSize.y() }, { 0.0f, 1.0f }, color }; - vertices[2] = { { mSize.x(), 0.0f }, { 1.0f, 0.0f }, color }; - vertices[3] = { { mSize.x(), mSize.y() }, { 1.0f, 1.0f }, color }; + vertices[1] = { { 0.0f , mSize.y }, { 0.0f, 1.0f }, color }; + vertices[2] = { { mSize.x , 0.0f }, { 1.0f, 0.0f }, color }; + vertices[3] = { { mSize.x , mSize.y }, { 1.0f, 1.0f }, color }; // clang-format on // Round vertices. for (int i = 0; i < 4; i++) - vertices[i].pos.round(); + vertices[i].pos = glm::round(vertices[i].pos); // This is needed to avoid a slight gap before the video starts playing. if (!mDecodedFrame) @@ -798,51 +798,49 @@ void VideoFFmpegComponent::calculateBlackRectangle() // otherwise it will exactly match the video size. The reason to add a black rectangle // behind videos in this second instance is that the scanline rendering will make the // video partially transparent so this may avoid some unforseen issues with some themes. - if (mVideoAreaPos != 0 && mVideoAreaSize != 0) { + if (mVideoAreaPos != glm::vec2({}) && mVideoAreaSize != glm::vec2({})) { mVideoRectangleCoords.clear(); if (Settings::getInstance()->getBool("GamelistVideoPillarbox")) { float rectHeight; float rectWidth; // Video is in landscape orientation. - if (mSize.x() > mSize.y()) { + if (mSize.x > mSize.y) { // Checking the Y size should not normally be required as landscape format // should mean the height can't be higher than the max size defined by the // theme. But as the height in mSize is provided by FFmpeg in integer format // and then scaled, there could be rounding errors that make the video height // slightly higher than allowed. It's only a single pixel or a few pixels, but // it's still visible for some videos. - if (mSize.y() < mVideoAreaSize.y() && mSize.y() / mVideoAreaSize.y() < 0.90) - rectHeight = mVideoAreaSize.y(); + if (mSize.y < mVideoAreaSize.y && mSize.y / mVideoAreaSize.y < 0.90f) + rectHeight = mVideoAreaSize.y; else - rectHeight = mSize.y(); + rectHeight = mSize.y; // Don't add a black border that is too narrow, that's what the 0.85 constant // takes care of. - if (mSize.x() < mVideoAreaSize.x() && mSize.x() / mVideoAreaSize.x() < 0.85) - rectWidth = mVideoAreaSize.x(); + if (mSize.x < mVideoAreaSize.x && mSize.x / mVideoAreaSize.x < 0.85f) + rectWidth = mVideoAreaSize.x; else - rectWidth = mSize.x(); + rectWidth = mSize.x; } // Video is in portrait orientation (or completely square). else { - rectWidth = mVideoAreaSize.x(); - rectHeight = mSize.y(); + rectWidth = mVideoAreaSize.x; + rectHeight = mSize.y; } // Populate the rectangle coordinates to be used in render(). - mVideoRectangleCoords.push_back( - std::round(mVideoAreaPos.x() - rectWidth * mOrigin.x())); - mVideoRectangleCoords.push_back( - std::round(mVideoAreaPos.y() - rectHeight * mOrigin.y())); + mVideoRectangleCoords.push_back(std::round(mVideoAreaPos.x - rectWidth * mOrigin.x)); + mVideoRectangleCoords.push_back(std::round(mVideoAreaPos.y - rectHeight * mOrigin.y)); mVideoRectangleCoords.push_back(std::round(rectWidth)); mVideoRectangleCoords.push_back(std::round(rectHeight)); } // If the option to display pillarboxes is disabled, then make the rectangle equivalent // to the size of the video. else { - mVideoRectangleCoords.push_back(std::round(mPosition.x - mSize.x() * mOrigin.x())); - mVideoRectangleCoords.push_back(std::round(mPosition.y - mSize.y() * mOrigin.y())); - mVideoRectangleCoords.push_back(std::round(mSize.x())); - mVideoRectangleCoords.push_back(std::round(mSize.y())); + mVideoRectangleCoords.push_back(std::round(mPosition.x - mSize.x * mOrigin.x)); + mVideoRectangleCoords.push_back(std::round(mPosition.y - mSize.y * mOrigin.y)); + mVideoRectangleCoords.push_back(std::round(mSize.x)); + mVideoRectangleCoords.push_back(std::round(mSize.y)); } } } diff --git a/es-core/src/components/VideoVlcComponent.cpp b/es-core/src/components/VideoVlcComponent.cpp index 03a48f3d2..0dfecda1c 100644 --- a/es-core/src/components/VideoVlcComponent.cpp +++ b/es-core/src/components/VideoVlcComponent.cpp @@ -63,7 +63,7 @@ void VideoVlcComponent::deinit() void VideoVlcComponent::setResize(float width, float height) { // This resize function is used when stretching videos to full screen in the video screensaver. - mTargetSize = Vector2f(width, height); + mTargetSize = glm::vec2(width, height); mTargetIsMax = false; mStaticImage.setResize(width, height); resize(); @@ -73,7 +73,7 @@ void VideoVlcComponent::setMaxSize(float width, float height) { // This resize function is used in most instances, such as non-stretched video screensaver // and the gamelist videos. - mTargetSize = Vector2f(width, height); + mTargetSize = glm::vec2(width, height); mTargetIsMax = true; mStaticImage.setMaxSize(width, height); resize(); @@ -127,41 +127,41 @@ void VideoVlcComponent::resize() if (!mTexture) return; - const Vector2f textureSize(static_cast(mVideoWidth), static_cast(mVideoHeight)); + const glm::vec2 textureSize(static_cast(mVideoWidth), static_cast(mVideoHeight)); - if (textureSize == Vector2f::Zero()) + if (textureSize == glm::vec2({})) return; if (mTargetIsMax) { mSize = textureSize; - Vector2f resizeScale((mTargetSize.x() / mSize.x()), (mTargetSize.y() / mSize.y())); + glm::vec2 resizeScale((mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)); - if (resizeScale.x() < resizeScale.y()) { - mSize[0] *= resizeScale.x(); - mSize[1] *= resizeScale.x(); + if (resizeScale.x < resizeScale.y) { + mSize.x *= resizeScale.x; + mSize.y *= resizeScale.x; } else { - mSize[0] *= resizeScale.y(); - mSize[1] *= resizeScale.y(); + mSize.x *= resizeScale.y; + mSize.y *= resizeScale.y; } - mSize[1] = std::round(mSize[1]); - mSize[0] = (mSize[1] / textureSize.y()) * textureSize.x(); + mSize.x = (mSize.y / textureSize.y) * textureSize.x; + mSize.y = std::round(mSize[1]); } else { // If both components are set, we just stretch. // If no components are set, we don't resize at all. - mSize = mTargetSize == Vector2f::Zero() ? textureSize : mTargetSize; + mSize = mTargetSize == glm::vec2({}) ? textureSize : mTargetSize; // If only one component is set, we resize in a way that maintains aspect ratio. - if (!mTargetSize.x() && mTargetSize.y()) { - mSize[1] = std::round(mTargetSize.y()); - mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); + if (!mTargetSize.x && mTargetSize.y) { + mSize.y = std::round(mTargetSize.y); + mSize.x = (mSize.y / textureSize.y) * textureSize.x; } - else if (mTargetSize.x() && !mTargetSize.y()) { - mSize[1] = std::round((mTargetSize.x() / textureSize.x()) * textureSize.y()); - mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); + else if (mTargetSize.x && !mTargetSize.y) { + mSize.y = std::round((mTargetSize.x / textureSize.x) * textureSize.y); + mSize.x = (mSize.y / textureSize.y) * textureSize.x; } } @@ -213,15 +213,15 @@ void VideoVlcComponent::render(const glm::mat4& parentTrans) } // clang-format off - vertices[0] = { { 0.0f , 0.0f }, { 0.0f, 0.0f }, color }; - vertices[1] = { { 0.0f , mSize.y() }, { 0.0f, 1.0f }, color }; - vertices[2] = { { mSize.x(), 0.0f }, { 1.0f, 0.0f }, color }; - vertices[3] = { { mSize.x(), mSize.y() }, { 1.0f, 1.0f }, color }; + vertices[0] = { { 0.0f , 0.0f }, { 0.0f, 0.0f }, color }; + vertices[1] = { { 0.0f , mSize.y }, { 0.0f, 1.0f }, color }; + vertices[2] = { { mSize.x, 0.0f }, { 1.0f, 0.0f }, color }; + vertices[3] = { { mSize.x, mSize.y }, { 1.0f, 1.0f }, color }; // clang-format on // Round vertices. for (int i = 0; i < 4; i++) - vertices[i].pos.round(); + vertices[i].pos = glm::round(vertices[i].pos); // Build a texture for the video frame. mTexture->initFromPixels(reinterpret_cast(mContext.surface->pixels), @@ -255,51 +255,49 @@ void VideoVlcComponent::calculateBlackRectangle() // otherwise it will exactly match the video size. The reason to add a black rectangle // behind videos in this second instance is that the scanline rendering will make the // video partially transparent so this may avoid some unforseen issues with some themes. - if (mVideoAreaPos != 0 && mVideoAreaSize != 0) { + if (mVideoAreaPos != glm::vec2({}) && mVideoAreaSize != glm::vec2({})) { mVideoRectangleCoords.clear(); if (Settings::getInstance()->getBool("GamelistVideoPillarbox")) { float rectHeight; float rectWidth; // Video is in landscape orientation. - if (mSize.x() > mSize.y()) { + if (mSize.x > mSize.y) { // Checking the Y size should not normally be required as landscape format // should mean the height can't be higher than the max size defined by the // theme. But as the height in mSize is provided by libVLC in integer format // and then scaled, there could be rounding errors that make the video height // slightly higher than allowed. It's only a single pixel or a few pixels, but // it's still visible for some videos. - if (mSize.y() < mVideoAreaSize.y() && mSize.y() / mVideoAreaSize.y() < 0.90) - rectHeight = mVideoAreaSize.y(); + if (mSize.y < mVideoAreaSize.y && mSize.y / mVideoAreaSize.y < 0.90f) + rectHeight = mVideoAreaSize.y; else - rectHeight = mSize.y(); + rectHeight = mSize.y; // Don't add a black border that is too narrow, that's what the 0.85 constant // takes care of. - if (mSize.x() < mVideoAreaSize.x() && mSize.x() / mVideoAreaSize.x() < 0.85) - rectWidth = mVideoAreaSize.x(); + if (mSize.x < mVideoAreaSize.x && mSize.x / mVideoAreaSize.x < 0.85f) + rectWidth = mVideoAreaSize.x; else - rectWidth = mSize.x(); + rectWidth = mSize.x; } // Video is in portrait orientation (or completely square). else { - rectWidth = mVideoAreaSize.x(); - rectHeight = mSize.y(); + rectWidth = mVideoAreaSize.x; + rectHeight = mSize.y; } // Populate the rectangle coordinates to be used in render(). - mVideoRectangleCoords.push_back( - std::round(mVideoAreaPos.x() - rectWidth * mOrigin.x())); - mVideoRectangleCoords.push_back( - std::round(mVideoAreaPos.y() - rectHeight * mOrigin.y())); + mVideoRectangleCoords.push_back(std::round(mVideoAreaPos.x - rectWidth * mOrigin.x)); + mVideoRectangleCoords.push_back(std::round(mVideoAreaPos.y - rectHeight * mOrigin.y)); mVideoRectangleCoords.push_back(std::round(rectWidth)); mVideoRectangleCoords.push_back(std::round(rectHeight)); } // If the option to display pillarboxes is disabled, then make the rectangle equivalent // to the size of the video. else { - mVideoRectangleCoords.push_back(std::round(mPosition.x - mSize.x() * mOrigin.x())); - mVideoRectangleCoords.push_back(std::round(mPosition.y - mSize.y() * mOrigin.y())); - mVideoRectangleCoords.push_back(std::round(mSize.x())); - mVideoRectangleCoords.push_back(std::round(mSize.y())); + mVideoRectangleCoords.push_back(std::round(mPosition.x - mSize.x * mOrigin.x)); + mVideoRectangleCoords.push_back(std::round(mPosition.y - mSize.y * mOrigin.y)); + mVideoRectangleCoords.push_back(std::round(mSize.x)); + mVideoRectangleCoords.push_back(std::round(mSize.y)); } } } diff --git a/es-core/src/guis/GuiComplexTextEditPopup.cpp b/es-core/src/guis/GuiComplexTextEditPopup.cpp index 0d4905423..848ee62da 100644 --- a/es-core/src/guis/GuiComplexTextEditPopup.cpp +++ b/es-core/src/guis/GuiComplexTextEditPopup.cpp @@ -97,21 +97,21 @@ GuiComplexTextEditPopup::GuiComplexTextEditPopup( mText->setSize(0, textHeight); mInfoString2->setSize(infoWidth, mInfoString2->getFont()->getHeight()); - setSize(windowWidth, mTitle->getFont()->getHeight() + textHeight + mButtonGrid->getSize().y() + - mButtonGrid->getSize().y() * 1.85f); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - (Renderer::getScreenHeight() - mSize.y()) / 2.0f); + setSize(windowWidth, mTitle->getFont()->getHeight() + textHeight + mButtonGrid->getSize().y + + mButtonGrid->getSize().y * 1.85f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, + (Renderer::getScreenHeight() - mSize.y) / 2.0f); mText->startEditing(); } void GuiComplexTextEditPopup::onSizeChanged() { - mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); - mText->setSize(mSize.x() - 40.0f, mText->getSize().y()); + mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mText->setSize(mSize.x - 40.0f, mText->getSize().y); // Update grid. - mGrid.setRowHeightPerc(0, mTitle->getFont()->getHeight() / mSize.y()); - mGrid.setRowHeightPerc(2, mButtonGrid->getSize().y() / mSize.y()); + mGrid.setRowHeightPerc(0, mTitle->getFont()->getHeight() / mSize.y); + mGrid.setRowHeightPerc(2, mButtonGrid->getSize().y / mSize.y); mGrid.setSize(mSize); } diff --git a/es-core/src/guis/GuiDetectDevice.cpp b/es-core/src/guis/GuiDetectDevice.cpp index ae4292b63..7062f97b4 100644 --- a/es-core/src/guis/GuiDetectDevice.cpp +++ b/es-core/src/guis/GuiDetectDevice.cpp @@ -87,20 +87,20 @@ GuiDetectDevice::GuiDetectDevice(Window* window, float width = Math::clamp(0.60f * aspectValue, 0.50f, 0.80f) * Renderer::getScreenWidth(); setSize(width, Renderer::getScreenHeight() * 0.5f); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - (Renderer::getScreenHeight() - mSize.y()) / 2.0f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, + (Renderer::getScreenHeight() - mSize.y) / 2.0f); } void GuiDetectDevice::onSizeChanged() { - mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); // Grid. mGrid.setSize(mSize); - mGrid.setRowHeightPerc(0, mTitle->getFont()->getHeight() / mSize.y()); + mGrid.setRowHeightPerc(0, mTitle->getFont()->getHeight() / mSize.y); // mGrid.setRowHeightPerc(1, mDeviceInfo->getFont()->getHeight() / mSize.y()); - mGrid.setRowHeightPerc(2, mMsg1->getFont()->getHeight() / mSize.y()); - mGrid.setRowHeightPerc(3, mMsg2->getFont()->getHeight() / mSize.y()); + mGrid.setRowHeightPerc(2, mMsg1->getFont()->getHeight() / mSize.y); + mGrid.setRowHeightPerc(3, mMsg2->getFont()->getHeight() / mSize.y); // mGrid.setRowHeightPerc(4, mDeviceHeld->getFont()->getHeight() / mSize.y()); } diff --git a/es-core/src/guis/GuiInputConfig.cpp b/es-core/src/guis/GuiInputConfig.cpp index 79c3ebd01..997d570e2 100644 --- a/es-core/src/guis/GuiInputConfig.cpp +++ b/es-core/src/guis/GuiInputConfig.cpp @@ -192,8 +192,8 @@ GuiInputConfig::GuiInputConfig(Window* window, float width = Math::clamp(0.60f * aspectValue, 0.50f, 0.80f) * Renderer::getScreenWidth(); setSize(width, Renderer::getScreenHeight() * 0.75f); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - (Renderer::getScreenHeight() - mSize.y()) / 2.0f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, + (Renderer::getScreenHeight() - mSize.y) / 2.0f); } void GuiInputConfig::populateConfigList() @@ -293,16 +293,16 @@ void GuiInputConfig::update(int deltaTime) void GuiInputConfig::onSizeChanged() { - mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); // Update grid. mGrid.setSize(mSize); - mGrid.setRowHeightPerc(1, mTitle->getFont()->getHeight() * 0.75f / mSize.y()); - mGrid.setRowHeightPerc(2, mSubtitle1->getFont()->getHeight() / mSize.y()); - mGrid.setRowHeightPerc(3, mSubtitle2->getFont()->getHeight() / mSize.y()); - mGrid.setRowHeightPerc(5, (mList->getRowHeight(0) * 5 + 2) / mSize.y()); - mGrid.setRowHeightPerc(6, mButtonGrid->getSize().y() / mSize.y()); + mGrid.setRowHeightPerc(1, mTitle->getFont()->getHeight() * 0.75f / mSize.y); + mGrid.setRowHeightPerc(2, mSubtitle1->getFont()->getHeight() / mSize.y); + mGrid.setRowHeightPerc(3, mSubtitle2->getFont()->getHeight() / mSize.y); + mGrid.setRowHeightPerc(5, (mList->getRowHeight(0) * 5.0f + 2.0f) / mSize.y); + mGrid.setRowHeightPerc(6, mButtonGrid->getSize().y / mSize.y); } void GuiInputConfig::rowDone() diff --git a/es-core/src/guis/GuiMsgBox.cpp b/es-core/src/guis/GuiMsgBox.cpp index 69e8c5b20..a96e41c42 100644 --- a/es-core/src/guis/GuiMsgBox.cpp +++ b/es-core/src/guis/GuiMsgBox.cpp @@ -12,7 +12,7 @@ #include "components/ButtonComponent.h" #include "components/MenuComponent.h" -#define HORIZONTAL_PADDING_PX 20 +#define HORIZONTAL_PADDING_PX 20.0f GuiMsgBox::GuiMsgBox(Window* window, const HelpStyle& helpstyle, @@ -74,25 +74,25 @@ GuiMsgBox::GuiMsgBox(Window* window, mGrid.setEntry(mButtonGrid, Vector2i(0, 1), true, false, Vector2i(1, 1), GridFlags::BORDER_TOP); // Decide final width. - if (mMsg->getSize().x() < width && mButtonGrid->getSize().x() < width) { + if (mMsg->getSize().x < width && mButtonGrid->getSize().x < width) { // mMsg and buttons are narrower than width. - width = std::max(mButtonGrid->getSize().x(), mMsg->getSize().x()); + width = std::max(mButtonGrid->getSize().x, mMsg->getSize().x); width = std::max(width, minWidth); } - else if (mButtonGrid->getSize().x() > width) { - width = mButtonGrid->getSize().x(); + else if (mButtonGrid->getSize().x > width) { + width = mButtonGrid->getSize().x; } // Now that we know width, we can find height. - mMsg->setSize(width, 0); // mMsg->getSize.y() now returns the proper length. + mMsg->setSize(width, 0.0f); // mMsg->getSize.y() now returns the proper length. const float msgHeight = - std::max(Font::get(FONT_SIZE_LARGE)->getHeight(), mMsg->getSize().y() * 1.225f); - setSize(width + HORIZONTAL_PADDING_PX * 2 * Renderer::getScreenWidthModifier(), - msgHeight + mButtonGrid->getSize().y()); + std::max(Font::get(FONT_SIZE_LARGE)->getHeight(), mMsg->getSize().y * 1.225f); + setSize(width + HORIZONTAL_PADDING_PX * 2.0f * Renderer::getScreenWidthModifier(), + msgHeight + mButtonGrid->getSize().y); // Center for good measure. - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - (Renderer::getScreenHeight() - mSize.y()) / 2.0f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, + (Renderer::getScreenHeight() - mSize.y) / 2.0f); addChild(&mBackground); addChild(&mGrid); @@ -113,21 +113,21 @@ void GuiMsgBox::changeText(const std::string& newText) float minWidth = Renderer::getScreenWidth() * 0.3f; // Decide final width. - if (mMsg->getSize().x() < width && mButtonGrid->getSize().x() < width) { + if (mMsg->getSize().x < width && mButtonGrid->getSize().x < width) { // mMsg and buttons are narrower than width. - width = std::max(mButtonGrid->getSize().x(), mMsg->getSize().x()); + width = std::max(mButtonGrid->getSize().x, mMsg->getSize().x); width = std::max(width, minWidth); } - else if (mButtonGrid->getSize().x() > mSize.x()) { - width = mButtonGrid->getSize().x(); + else if (mButtonGrid->getSize().x > mSize.x) { + width = mButtonGrid->getSize().x; } // Now that we know width, we can find height. mMsg->setSize(width, 0); // mMsg->getSize.y() now returns the proper length. const float msgHeight = - std::max(Font::get(FONT_SIZE_LARGE)->getHeight(), mMsg->getSize().y() * 1.225f); - setSize(width + HORIZONTAL_PADDING_PX * 2 * Renderer::getScreenWidthModifier(), - msgHeight + mButtonGrid->getSize().y()); + std::max(Font::get(FONT_SIZE_LARGE)->getHeight(), mMsg->getSize().y * 1.225f); + setSize(width + HORIZONTAL_PADDING_PX * 2.0f * Renderer::getScreenWidthModifier(), + msgHeight + mButtonGrid->getSize().y); } bool GuiMsgBox::input(InputConfig* config, Input input) @@ -153,14 +153,14 @@ bool GuiMsgBox::input(InputConfig* config, Input input) void GuiMsgBox::onSizeChanged() { mGrid.setSize(mSize); - mGrid.setRowHeightPerc(1, mButtonGrid->getSize().y() / mSize.y()); + mGrid.setRowHeightPerc(1, mButtonGrid->getSize().y / mSize.y); // Update messagebox size. - mMsg->setSize(mSize.x() - HORIZONTAL_PADDING_PX * 2 * Renderer::getScreenWidthModifier(), + mMsg->setSize(mSize.x - HORIZONTAL_PADDING_PX * 2.0f * Renderer::getScreenWidthModifier(), mGrid.getRowHeight(0)); mGrid.onSizeChanged(); - mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); } void GuiMsgBox::deleteMeAndCall(const std::function& func) diff --git a/es-core/src/guis/GuiTextEditPopup.cpp b/es-core/src/guis/GuiTextEditPopup.cpp index 01e19ec58..0917845bb 100644 --- a/es-core/src/guis/GuiTextEditPopup.cpp +++ b/es-core/src/guis/GuiTextEditPopup.cpp @@ -69,22 +69,22 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window, float aspectValue = 1.778f / Renderer::getScreenAspectRatio(); float width = Math::clamp(0.50f * aspectValue, 0.40f, 0.70f) * Renderer::getScreenWidth(); - setSize(width, mTitle->getFont()->getHeight() + textHeight + mButtonGrid->getSize().y() + - mButtonGrid->getSize().y() / 2.0f); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, - (Renderer::getScreenHeight() - mSize.y()) / 2.0f); + setSize(width, mTitle->getFont()->getHeight() + textHeight + mButtonGrid->getSize().y + + mButtonGrid->getSize().y / 2.0f); + setPosition((Renderer::getScreenWidth() - mSize.x) / 2.0f, + (Renderer::getScreenHeight() - mSize.y) / 2.0f); mText->startEditing(); } void GuiTextEditPopup::onSizeChanged() { - mBackground.fitTo(mSize, {}, Vector2f(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); - mText->setSize(mSize.x() - 40, mText->getSize().y()); + mText->setSize(mSize.x - 40.0f, mText->getSize().y); // Update grid. - mGrid.setRowHeightPerc(0, mTitle->getFont()->getHeight() / mSize.y()); - mGrid.setRowHeightPerc(2, mButtonGrid->getSize().y() / mSize.y()); + mGrid.setRowHeightPerc(0, mTitle->getFont()->getHeight() / mSize.y); + mGrid.setRowHeightPerc(2, mButtonGrid->getSize().y / mSize.y); mGrid.setSize(mSize); } diff --git a/es-core/src/renderers/Renderer.cpp b/es-core/src/renderers/Renderer.cpp index efda256ad..893212ce6 100644 --- a/es-core/src/renderers/Renderer.cpp +++ b/es-core/src/renderers/Renderer.cpp @@ -493,7 +493,7 @@ namespace Renderer // Round vertices. for (int i = 0; i < 4; i++) - vertices[i].pos.round(); + vertices[i].pos = glm::round(vertices[i].pos); if (_opacity < 1.0) { vertices[0].shaders = SHADER_OPACITY; diff --git a/es-core/src/renderers/Renderer.h b/es-core/src/renderers/Renderer.h index e1ff28bdf..b9b4c3ac4 100644 --- a/es-core/src/renderers/Renderer.h +++ b/es-core/src/renderers/Renderer.h @@ -12,7 +12,6 @@ #include "Log.h" #include "Shader_GL21.h" #include "math/Misc.h" -#include "math/Vector2f.h" #include #include @@ -115,14 +114,14 @@ namespace Renderer struct Vertex { Vertex() {} - Vertex(const Vector2f& _pos, const Vector2f& _tex, const unsigned int _col) + Vertex(const glm::vec2& _pos, const glm::vec2& _tex, const unsigned int _col) : pos(_pos) , tex(_tex) , col(_col) { } - Vector2f pos; - Vector2f tex; + glm::vec2 pos; + glm::vec2 tex; unsigned int col; float saturation = 1.0; float opacity = 1.0; diff --git a/es-core/src/resources/Font.cpp b/es-core/src/resources/Font.cpp index 59011ce8f..e24216d4e 100644 --- a/es-core/src/resources/Font.cpp +++ b/es-core/src/resources/Font.cpp @@ -314,15 +314,15 @@ Font::Glyph* Font::getGlyph(unsigned int id) Glyph& glyph = mGlyphMap[id]; glyph.texture = tex; - glyph.texPos = Vector2f(cursor.x() / static_cast(tex->textureSize.x()), - cursor.y() / static_cast(tex->textureSize.y())); - glyph.texSize = Vector2f(glyphSize.x() / static_cast(tex->textureSize.x()), - glyphSize.y() / static_cast(tex->textureSize.y())); + glyph.texPos = glm::vec2(cursor.x() / static_cast(tex->textureSize.x()), + cursor.y() / static_cast(tex->textureSize.y())); + glyph.texSize = glm::vec2(glyphSize.x() / static_cast(tex->textureSize.x()), + glyphSize.y() / static_cast(tex->textureSize.y())); - glyph.advance = Vector2f(static_cast(g->metrics.horiAdvance) / 64.0f, - static_cast(g->metrics.vertAdvance) / 64.0f); - glyph.bearing = Vector2f(static_cast(g->metrics.horiBearingX) / 64.0f, - static_cast(g->metrics.horiBearingY) / 64.0f); + glyph.advance = glm::vec2(static_cast(g->metrics.horiAdvance) / 64.0f, + static_cast(g->metrics.vertAdvance) / 64.0f); + glyph.bearing = glm::vec2(static_cast(g->metrics.horiBearingX) / 64.0f, + static_cast(g->metrics.horiBearingY) / 64.0f); // Upload glyph bitmap to texture. Renderer::updateTexture(tex->textureId, Renderer::Texture::ALPHA, cursor.x(), cursor.y(), @@ -354,10 +354,10 @@ void Font::rebuildTextures() FontTexture* tex = it->second.texture; // Find the position/size. - Vector2i cursor(static_cast(it->second.texPos.x() * tex->textureSize.x()), - static_cast(it->second.texPos.y() * tex->textureSize.y())); - Vector2i glyphSize(static_cast(it->second.texSize.x() * tex->textureSize.x()), - static_cast(it->second.texSize.y() * tex->textureSize.y())); + Vector2i cursor(static_cast(it->second.texPos.x * tex->textureSize.x()), + static_cast(it->second.texPos.y * tex->textureSize.y())); + Vector2i glyphSize(static_cast(it->second.texSize.x * tex->textureSize.x()), + static_cast(it->second.texSize.y * tex->textureSize.y())); // Upload to texture. Renderer::updateTexture(tex->textureId, Renderer::Texture::ALPHA, cursor.x(), cursor.y(), @@ -383,7 +383,7 @@ void Font::renderTextCache(TextCache* cache) } } -Vector2f Font::sizeText(std::string text, float lineSpacing) +glm::vec2 Font::sizeText(std::string text, float lineSpacing) { float lineWidth = 0.0f; float highestWidth = 0.0f; @@ -406,21 +406,21 @@ Vector2f Font::sizeText(std::string text, float lineSpacing) Glyph* glyph = getGlyph(character); if (glyph) - lineWidth += glyph->advance.x(); + lineWidth += glyph->advance.x; } if (lineWidth > highestWidth) highestWidth = lineWidth; - return Vector2f(highestWidth, y); + return glm::vec2(highestWidth, y); } std::string Font::getTextMaxWidth(std::string text, float maxWidth) { - float width = sizeText(text).x(); + float width = sizeText(text).x; while (width > maxWidth) { text.pop_back(); - width = sizeText(text).x(); + width = sizeText(text).x; } return text; } @@ -435,7 +435,7 @@ float Font::getLetterHeight() { Glyph* glyph = getGlyph('S'); assert(glyph); - return glyph->texSize.y() * glyph->texture->textureSize.y(); + return glyph->texSize.y * glyph->texture->textureSize.y(); } // Breaks up a normal string with newlines to make it fit xLen. @@ -448,8 +448,8 @@ std::string Font::wrapText(std::string text, float xLen) std::string temp; size_t space; - Vector2f textSize; - float dotsSize = sizeText("...").x(); + glm::vec2 textSize; + float dotsSize = sizeText("...").x; // While there's text or we still have text to render. while (text.length() > 0) { @@ -465,7 +465,7 @@ std::string Font::wrapText(std::string text, float xLen) textSize = sizeText(temp); // If the word will fit on the line, add it to our line, and continue. - if (textSize.x() <= xLen) { + if (textSize.x <= xLen) { line = temp; continue; } @@ -473,7 +473,7 @@ std::string Font::wrapText(std::string text, float xLen) // The next word won't fit, so break here. // If the word is too long to fit within xLen, then abbreviate it. - if (xLen > 0 && sizeText(word).x() > xLen) { + if (xLen > 0 && sizeText(word).x > xLen) { float length = xLen - dotsSize; if (length < 0) length = 0; @@ -495,16 +495,16 @@ std::string Font::wrapText(std::string text, float xLen) return out; } -Vector2f Font::sizeWrappedText(std::string text, float xLen, float lineSpacing) +glm::vec2 Font::sizeWrappedText(std::string text, float xLen, float lineSpacing) { text = wrapText(text, xLen); return sizeText(text, lineSpacing); } -Vector2f Font::getWrappedTextCursorOffset(std::string text, - float xLen, - size_t stop, - float lineSpacing) +glm::vec2 Font::getWrappedTextCursorOffset(std::string text, + float xLen, + size_t stop, + float lineSpacing) { std::string wrappedText = wrapText(text, xLen); @@ -535,10 +535,10 @@ Vector2f Font::getWrappedTextCursorOffset(std::string text, Glyph* glyph = getGlyph(character); if (glyph) - lineWidth += glyph->advance.x(); + lineWidth += glyph->advance.x; } - return Vector2f(lineWidth, y); + return glm::vec2(lineWidth, y); } // @@ -560,7 +560,7 @@ float Font::getNewlineStartOffset(const std::string& text, return (xLen - sizeText(text.substr(charStart, endChar != std::string::npos ? endChar - charStart : endChar)) - .x()) / + .x) / 2.0f; } case ALIGN_RIGHT: { @@ -568,7 +568,7 @@ float Font::getNewlineStartOffset(const std::string& text, return xLen - (sizeText(text.substr(charStart, endChar != std::string::npos ? endChar - charStart : endChar)) - .x()); + .x); } default: return 0; @@ -576,7 +576,7 @@ float Font::getNewlineStartOffset(const std::string& text, } TextCache* Font::buildTextCache(const std::string& text, - Vector2f offset, + glm::vec2 offset, unsigned int color, float xLen, Alignment alignment, @@ -592,7 +592,7 @@ TextCache* Font::buildTextCache(const std::string& text, yBot = getHeight(1.5); } else { - yTop = getGlyph('S')->bearing.y(); + yTop = getGlyph('S')->bearing.y; yBot = getHeight(lineSpacing); } @@ -631,37 +631,35 @@ TextCache* Font::buildTextCache(const std::string& text, verts.resize(oldVertSize + 6); Renderer::Vertex* vertices = verts.data() + oldVertSize; - const float glyphStartX = x + glyph->bearing.x(); + const float glyphStartX = x + glyph->bearing.x; const Vector2i& textureSize = glyph->texture->textureSize; const unsigned int convertedColor = Renderer::convertRGBAToABGR(color); - vertices[1] = { { glyphStartX, y - glyph->bearing.y() }, - { glyph->texPos.x(), glyph->texPos.y() }, + vertices[1] = { { glyphStartX, y - glyph->bearing.y }, + { glyph->texPos.x, glyph->texPos.y }, convertedColor }; vertices[2] = { { glyphStartX, - y - glyph->bearing.y() + (glyph->texSize.y() * textureSize.y()) }, - { glyph->texPos.x(), glyph->texPos.y() + glyph->texSize.y() }, + y - glyph->bearing.y + (glyph->texSize.y * textureSize.y()) }, + { glyph->texPos.x, glyph->texPos.y + glyph->texSize.y }, convertedColor }; - vertices[3] = { { glyphStartX + glyph->texSize.x() * textureSize.x(), - y - glyph->bearing.y() }, - { glyph->texPos.x() + glyph->texSize.x(), glyph->texPos.y() }, + vertices[3] = { { glyphStartX + glyph->texSize.x * textureSize.x(), y - glyph->bearing.y }, + { glyph->texPos.x + glyph->texSize.x, glyph->texPos.y }, convertedColor }; - vertices[4] = { { glyphStartX + glyph->texSize.x() * textureSize.x(), - y - glyph->bearing.y() + (glyph->texSize.y() * textureSize.y()) }, - { glyph->texPos.x() + glyph->texSize.x(), - glyph->texPos.y() + glyph->texSize.y() }, + vertices[4] = { { glyphStartX + glyph->texSize.x * textureSize.x(), + y - glyph->bearing.y + (glyph->texSize.y * textureSize.y()) }, + { glyph->texPos.x + glyph->texSize.x, glyph->texPos.y + glyph->texSize.y }, convertedColor }; // Round vertices. for (int i = 1; i < 5; i++) - vertices[i].pos.round(); + vertices[i].pos = glm::round(vertices[i].pos); // Make duplicates of first and last vertex so this can be rendered as a triangle strip. vertices[0] = vertices[1]; vertices[5] = vertices[4]; // Advance. - x += glyph->advance.x(); + x += glyph->advance.x; } // TextCache::CacheMetrics metrics = { sizeText(text, lineSpacing) }; @@ -689,7 +687,7 @@ TextCache* Font::buildTextCache(const std::string& text, float lineSpacing, bool noTopMargin) { - return buildTextCache(text, Vector2f(offsetX, offsetY), color, 0.0f, ALIGN_LEFT, lineSpacing, + return buildTextCache(text, glm::vec2(offsetX, offsetY), color, 0.0f, ALIGN_LEFT, lineSpacing, noTopMargin); } diff --git a/es-core/src/resources/Font.h b/es-core/src/resources/Font.h index 63bc3a757..e7b99718f 100644 --- a/es-core/src/resources/Font.h +++ b/es-core/src/resources/Font.h @@ -11,7 +11,6 @@ #define ES_CORE_RESOURCES_FONT_H #include "ThemeData.h" -#include "math/Vector2f.h" #include "math/Vector2i.h" #include "renderers/Renderer.h" #include "resources/ResourceManager.h" @@ -54,7 +53,7 @@ public: static std::shared_ptr get(int size, const std::string& path = getDefaultPath()); // Returns the expected size of a string when rendered. Extra spacing is applied to the Y axis. - Vector2f sizeText(std::string text, float lineSpacing = 1.5f); + glm::vec2 sizeText(std::string text, float lineSpacing = 1.5f); // Returns the portion of a string that fits within the passed argument maxWidth. std::string getTextMaxWidth(std::string text, float maxWidth); @@ -67,7 +66,7 @@ public: bool noTopMargin = false); TextCache* buildTextCache(const std::string& text, - Vector2f offset, + glm::vec2 offset, unsigned int color, float xLen, Alignment alignment = ALIGN_LEFT, @@ -80,13 +79,13 @@ public: std::string wrapText(std::string text, float xLen); // Returns the expected size of a string after wrapping is applied. - Vector2f sizeWrappedText(std::string text, float xLen, float lineSpacing = 1.5f); + glm::vec2 sizeWrappedText(std::string text, float xLen, float lineSpacing = 1.5f); // Returns the position of the cursor after moving a "cursor" amount of characters. - Vector2f getWrappedTextCursorOffset(std::string text, - float xLen, - size_t cursor, - float lineSpacing = 1.5f); + glm::vec2 getWrappedTextCursorOffset(std::string text, + float xLen, + size_t cursor, + float lineSpacing = 1.5f); float getHeight(float lineSpacing = 1.5f) const; float getLetterHeight(); @@ -158,11 +157,11 @@ private: struct Glyph { FontTexture* texture; - Vector2f texPos; - Vector2f texSize; // In texels! + glm::vec2 texPos; + glm::vec2 texSize; // In texels. - Vector2f advance; - Vector2f bearing; + glm::vec2 advance; + glm::vec2 bearing; }; std::map mGlyphMap; @@ -202,7 +201,7 @@ protected: public: struct CacheMetrics { - Vector2f size; + glm::vec2 size; } metrics; void setColor(unsigned int color); diff --git a/es-core/src/resources/TextureResource.cpp b/es-core/src/resources/TextureResource.cpp index 268a98e52..cd18010fb 100644 --- a/es-core/src/resources/TextureResource.cpp +++ b/es-core/src/resources/TextureResource.cpp @@ -47,7 +47,7 @@ TextureResource::TextureResource(const std::string& path, } mSize = Vector2i(static_cast(data->width()), static_cast(data->height())); - mSourceSize = Vector2f(data->sourceWidth(), data->sourceHeight()); + mSourceSize = glm::vec2(data->sourceWidth(), data->sourceHeight()); } else { // Create a texture managed by this class because it cannot be dynamically @@ -76,7 +76,7 @@ void TextureResource::initFromPixels(const unsigned char* dataRGBA, size_t width mTextureData->initFromRGBA(dataRGBA, width, height); // Cache the image dimensions. mSize = Vector2i(static_cast(width), static_cast(height)); - mSourceSize = Vector2f(mTextureData->sourceWidth(), mTextureData->sourceHeight()); + mSourceSize = glm::vec2(mTextureData->sourceWidth(), mTextureData->sourceHeight()); } void TextureResource::initFromMemory(const char* data, size_t length) @@ -89,7 +89,7 @@ void TextureResource::initFromMemory(const char* data, size_t length) // Get the size from the texture data. mSize = Vector2i(static_cast(mTextureData->width()), static_cast(mTextureData->height())); - mSourceSize = Vector2f(mTextureData->sourceWidth(), mTextureData->sourceHeight()); + mSourceSize = glm::vec2(mTextureData->sourceWidth(), mTextureData->sourceHeight()); } void TextureResource::manualUnload(std::string path, bool tile) @@ -197,7 +197,7 @@ void TextureResource::rasterizeAt(size_t width, size_t height) data = mTextureData; else data = sTextureDataManager.get(this); - mSourceSize = Vector2f(static_cast(width), static_cast(height)); + mSourceSize = glm::vec2(static_cast(width), static_cast(height)); data->setSourceSize(static_cast(width), static_cast(height)); if (mForceLoad || (mTextureData != nullptr)) data->load(); diff --git a/es-core/src/resources/TextureResource.h b/es-core/src/resources/TextureResource.h index ef0eae958..6aee633a9 100644 --- a/es-core/src/resources/TextureResource.h +++ b/es-core/src/resources/TextureResource.h @@ -9,7 +9,7 @@ #ifndef ES_CORE_RESOURCES_TEXTURE_RESOURCE_H #define ES_CORE_RESOURCES_TEXTURE_RESOURCE_H -#include "math/Vector2f.h" +#include "math/Misc.h" #include "math/Vector2i.h" #include "resources/ResourceManager.h" #include "resources/TextureDataManager.h" @@ -45,7 +45,7 @@ public: // situations. An alternative is to set a scaling factor directly when loading the texture // using get(), by using the scaleDuringLoad parameter (which also works for raster graphics). void rasterizeAt(size_t width, size_t height); - Vector2f getSourceImageSize() const { return mSourceSize; } + glm::vec2 getSourceImageSize() const { return mSourceSize; } virtual ~TextureResource(); @@ -74,7 +74,7 @@ private: static TextureDataManager sTextureDataManager; Vector2i mSize; - Vector2f mSourceSize; + glm::vec2 mSourceSize; bool mForceLoad; typedef std::pair TextureKeyType; From 9a30e2da87ba05c90a593985dfed9df6b89775e5 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Tue, 17 Aug 2021 18:07:52 +0200 Subject: [PATCH 4/5] Changed two clang-format options related to braced lists. --- .clang-format | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.clang-format b/.clang-format index 71628c23e..335adde5d 100644 --- a/.clang-format +++ b/.clang-format @@ -66,7 +66,7 @@ CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 -Cpp11BracedListStyle: false +Cpp11BracedListStyle: true DeriveLineEnding: true DerivePointerAlignment: false DisableFormat: false @@ -119,7 +119,7 @@ SpaceAfterCStyleCast: false SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: true SpaceBeforeAssignmentOperators: true -SpaceBeforeCpp11BracedList: true +SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements From 7b5d6730502e86db01f59ef93975ad0940b36933 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Tue, 17 Aug 2021 18:41:45 +0200 Subject: [PATCH 5/5] Replaced the internal Vector2i data type and functions with the GLM library equivalent. Also applied some code formatting changes for braced lists using clang-format. --- es-app/src/CollectionSystemsManager.cpp | 12 +- es-app/src/FileData.cpp | 6 +- es-app/src/FileFilterIndex.cpp | 47 ++- es-app/src/FileSorts.cpp | 3 +- es-app/src/Gamelist.cpp | 4 +- es-app/src/MediaViewer.cpp | 6 +- es-app/src/MiximageGenerator.cpp | 2 +- es-app/src/SystemData.cpp | 4 +- es-app/src/SystemScreensaver.cpp | 10 +- .../src/guis/GuiCollectionSystemsOptions.cpp | 6 +- es-app/src/guis/GuiGameScraper.cpp | 12 +- es-app/src/guis/GuiGamelistFilter.cpp | 2 +- es-app/src/guis/GuiInfoPopup.cpp | 8 +- es-app/src/guis/GuiLaunchScreen.cpp | 46 +-- es-app/src/guis/GuiMenu.cpp | 2 +- es-app/src/guis/GuiMetaDataEd.cpp | 30 +- es-app/src/guis/GuiOfflineGenerator.cpp | 56 +-- es-app/src/guis/GuiScraperMulti.cpp | 14 +- es-app/src/guis/GuiScraperSearch.cpp | 50 +-- es-app/src/guis/GuiSettings.cpp | 2 +- es-app/src/main.cpp | 2 +- es-app/src/scrapers/GamesDBJSONScraper.cpp | 168 ++++----- es-app/src/scrapers/Scraper.cpp | 7 +- es-app/src/scrapers/ScreenScraper.cpp | 229 ++++++----- es-app/src/scrapers/ScreenScraper.h | 8 +- es-app/src/views/SystemView.cpp | 44 +-- es-app/src/views/UIModeController.h | 4 +- es-app/src/views/ViewController.cpp | 33 +- .../views/gamelist/DetailedGameListView.cpp | 25 +- .../src/views/gamelist/GridGameListView.cpp | 25 +- es-app/src/views/gamelist/IGameListView.cpp | 10 +- .../src/views/gamelist/VideoGameListView.cpp | 25 +- es-core/src/GuiComponent.cpp | 38 +- es-core/src/GuiComponent.h | 4 +- es-core/src/HelpStyle.cpp | 8 +- es-core/src/Log.h | 11 +- es-core/src/MameNames.cpp | 4 +- es-core/src/Platform.cpp | 2 +- es-core/src/Settings.cpp | 272 ++++++------- es-core/src/ThemeData.cpp | 357 +++++++++--------- es-core/src/ThemeData.h | 4 +- es-core/src/Window.cpp | 36 +- es-core/src/components/BusyComponent.cpp | 26 +- es-core/src/components/ButtonComponent.cpp | 8 +- es-core/src/components/ComponentGrid.cpp | 105 +++--- es-core/src/components/ComponentGrid.h | 25 +- es-core/src/components/ComponentList.cpp | 12 +- .../src/components/DateTimeEditComponent.cpp | 16 +- es-core/src/components/GridTileComponent.cpp | 18 +- es-core/src/components/HelpComponent.cpp | 12 +- es-core/src/components/IList.h | 10 +- es-core/src/components/ImageComponent.cpp | 66 ++-- es-core/src/components/ImageComponent.h | 3 +- es-core/src/components/ImageGridComponent.h | 83 ++-- es-core/src/components/MenuComponent.cpp | 14 +- es-core/src/components/NinePatchComponent.cpp | 49 ++- es-core/src/components/NinePatchComponent.h | 3 +- es-core/src/components/RatingComponent.cpp | 20 +- .../src/components/ScrollableContainer.cpp | 32 +- es-core/src/components/SliderComponent.cpp | 12 +- es-core/src/components/SwitchComponent.cpp | 2 +- es-core/src/components/TextComponent.cpp | 20 +- es-core/src/components/TextComponent.h | 2 +- es-core/src/components/TextEditComponent.cpp | 32 +- es-core/src/components/TextListComponent.h | 26 +- es-core/src/components/VideoComponent.cpp | 8 +- .../src/components/VideoFFmpegComponent.cpp | 32 +- es-core/src/components/VideoVlcComponent.cpp | 24 +- es-core/src/guis/GuiComplexTextEditPopup.cpp | 14 +- es-core/src/guis/GuiDetectDevice.cpp | 15 +- es-core/src/guis/GuiInputConfig.cpp | 114 +++--- es-core/src/guis/GuiMsgBox.cpp | 9 +- es-core/src/guis/GuiTextEditPopup.cpp | 10 +- es-core/src/math/Transform4x4f.h | 2 +- es-core/src/math/Vector2f.h | 6 +- es-core/src/math/Vector2i.h | 6 +- es-core/src/math/Vector3f.h | 8 +- es-core/src/math/Vector4f.h | 10 +- es-core/src/renderers/Renderer.cpp | 29 +- es-core/src/renderers/Renderer.h | 10 +- es-core/src/renderers/Renderer_GL21.cpp | 10 +- es-core/src/renderers/Renderer_GLES10.cpp | 4 +- es-core/src/resources/Font.cpp | 117 +++--- es-core/src/resources/Font.h | 11 +- es-core/src/resources/ResourceManager.cpp | 4 +- es-core/src/resources/TextureResource.cpp | 22 +- es-core/src/resources/TextureResource.h | 5 +- es-core/src/utils/StringUtil.cpp | 8 +- es-core/src/utils/TimeUtil.cpp | 10 +- 89 files changed, 1346 insertions(+), 1376 deletions(-) diff --git a/es-app/src/CollectionSystemsManager.cpp b/es-app/src/CollectionSystemsManager.cpp index 3d8950288..60c4846fd 100644 --- a/es-app/src/CollectionSystemsManager.cpp +++ b/es-app/src/CollectionSystemsManager.cpp @@ -52,11 +52,11 @@ CollectionSystemsManager::CollectionSystemsManager(Window* window) { // clang-format off CollectionSystemDecl systemDecls[] = { - // Type Name Long name Theme folder isCustom - { AUTO_ALL_GAMES, "all", "all games", "auto-allgames", false }, - { AUTO_LAST_PLAYED, "recent", "last played", "auto-lastplayed", false }, - { AUTO_FAVORITES, "favorites", "favorites", "auto-favorites", false }, - { CUSTOM_COLLECTION, myCollectionsName, "collections", "custom-collections", true } + // Type Name Long name Theme folder isCustom + {AUTO_ALL_GAMES, "all", "all games", "auto-allgames", false}, + {AUTO_LAST_PLAYED, "recent", "last played", "auto-lastplayed", false}, + {AUTO_FAVORITES, "favorites", "favorites", "auto-favorites", false}, + {CUSTOM_COLLECTION, myCollectionsName, "collections", "custom-collections", true } }; // clang-format on @@ -791,7 +791,7 @@ FileData* CollectionSystemsManager::updateCollectionFolderMetadata(SystemData* s if (gameCount > 1) { std::random_device randDev; // Mersenne Twister pseudorandom number generator. - std::mt19937 engine { randDev() }; + std::mt19937 engine{randDev()}; unsigned int target; for (unsigned int i = 0; i < 3; i++) { diff --git a/es-app/src/FileData.cpp b/es-app/src/FileData.cpp index 834cbaae3..9ca4b0a8d 100644 --- a/es-app/src/FileData.cpp +++ b/es-app/src/FileData.cpp @@ -212,7 +212,7 @@ const std::string FileData::getMediaDirectory() const std::string FileData::getMediafilePath(std::string subdirectory, std::string mediatype) const { - const std::vector extList = { ".png", ".jpg" }; + const std::vector extList = {".png", ".jpg"}; std::string subFolders; // Extract possible subfolders from the path. @@ -287,7 +287,7 @@ const std::string FileData::getThumbnailPath() const const std::string FileData::getVideoPath() const { - const std::vector extList = { ".avi", ".mkv", ".mov", ".mp4", ".wmv" }; + const std::vector extList = {".avi", ".mkv", ".mov", ".mp4", ".wmv"}; std::string subFolders; // Extract possible subfolders from the path. @@ -1158,7 +1158,7 @@ std::string FileData::findEmulatorPath(std::string& command) HKEY registryKey; LSTATUS keyStatus = -1; LSTATUS pathStatus = -1; - char registryPath[1024] {}; + char registryPath[1024]{}; DWORD pathSize = 1024; // First look in HKEY_CURRENT_USER. diff --git a/es-app/src/FileFilterIndex.cpp b/es-app/src/FileFilterIndex.cpp index 0f83b7990..7042e509b 100644 --- a/es-app/src/FileFilterIndex.cpp +++ b/es-app/src/FileFilterIndex.cpp @@ -37,15 +37,15 @@ FileFilterIndex::FileFilterIndex() // clang-format off FilterDataDecl filterDecls[] = { //type //allKeys //filteredBy //filteredKeys //primaryKey //hasSecondaryKey //secondaryKey //menuLabel - { FAVORITES_FILTER, &mFavoritesIndexAllKeys, &mFilterByFavorites, &mFavoritesIndexFilteredKeys, "favorite", false, "", "FAVORITES" }, - { GENRE_FILTER, &mGenreIndexAllKeys, &mFilterByGenre, &mGenreIndexFilteredKeys, "genre", true, "genre", "GENRE" }, - { PLAYER_FILTER, &mPlayersIndexAllKeys, &mFilterByPlayers, &mPlayersIndexFilteredKeys, "players", false, "", "PLAYERS" }, - { PUBDEV_FILTER, &mPubDevIndexAllKeys, &mFilterByPubDev, &mPubDevIndexFilteredKeys, "developer", true, "publisher", "PUBLISHER / DEVELOPER" }, - { RATINGS_FILTER, &mRatingsIndexAllKeys, &mFilterByRatings, &mRatingsIndexFilteredKeys, "rating", false, "", "RATING" }, - { KIDGAME_FILTER, &mKidGameIndexAllKeys, &mFilterByKidGame, &mKidGameIndexFilteredKeys, "kidgame", false, "", "KIDGAME" }, - { COMPLETED_FILTER, &mCompletedIndexAllKeys, &mFilterByCompleted, &mCompletedIndexFilteredKeys, "completed", false, "", "COMPLETED" }, - { BROKEN_FILTER, &mBrokenIndexAllKeys, &mFilterByBroken, &mBrokenIndexFilteredKeys, "broken", false, "", "BROKEN" }, - { HIDDEN_FILTER, &mHiddenIndexAllKeys, &mFilterByHidden, &mHiddenIndexFilteredKeys, "hidden", false, "", "HIDDEN" } + {FAVORITES_FILTER, &mFavoritesIndexAllKeys, &mFilterByFavorites, &mFavoritesIndexFilteredKeys, "favorite", false, "", "FAVORITES"}, + {GENRE_FILTER, &mGenreIndexAllKeys, &mFilterByGenre, &mGenreIndexFilteredKeys, "genre", true, "genre", "GENRE"}, + {PLAYER_FILTER, &mPlayersIndexAllKeys, &mFilterByPlayers, &mPlayersIndexFilteredKeys, "players", false, "", "PLAYERS"}, + {PUBDEV_FILTER, &mPubDevIndexAllKeys, &mFilterByPubDev, &mPubDevIndexFilteredKeys, "developer", true, "publisher", "PUBLISHER / DEVELOPER"}, + {RATINGS_FILTER, &mRatingsIndexAllKeys, &mFilterByRatings, &mRatingsIndexFilteredKeys, "rating", false, "", "RATING"}, + {KIDGAME_FILTER, &mKidGameIndexAllKeys, &mFilterByKidGame, &mKidGameIndexFilteredKeys, "kidgame", false, "", "KIDGAME"}, + {COMPLETED_FILTER, &mCompletedIndexAllKeys, &mFilterByCompleted, &mCompletedIndexFilteredKeys, "completed", false, "", "COMPLETED"}, + {BROKEN_FILTER, &mBrokenIndexAllKeys, &mFilterByBroken, &mBrokenIndexFilteredKeys, "broken", false, "", "BROKEN"}, + {HIDDEN_FILTER, &mHiddenIndexAllKeys, &mFilterByHidden, &mHiddenIndexFilteredKeys, "hidden", false, "", "HIDDEN"} }; // clang-format on @@ -67,15 +67,15 @@ void FileFilterIndex::importIndex(FileFilterIndex* indexToImport) }; IndexImportStructure indexStructDecls[] = { - { &mFavoritesIndexAllKeys, &(indexToImport->mFavoritesIndexAllKeys) }, - { &mGenreIndexAllKeys, &(indexToImport->mGenreIndexAllKeys) }, - { &mPlayersIndexAllKeys, &(indexToImport->mPlayersIndexAllKeys) }, - { &mPubDevIndexAllKeys, &(indexToImport->mPubDevIndexAllKeys) }, - { &mRatingsIndexAllKeys, &(indexToImport->mRatingsIndexAllKeys) }, - { &mKidGameIndexAllKeys, &(indexToImport->mKidGameIndexAllKeys) }, - { &mCompletedIndexAllKeys, &(indexToImport->mCompletedIndexAllKeys) }, - { &mBrokenIndexAllKeys, &(indexToImport->mBrokenIndexAllKeys) }, - { &mHiddenIndexAllKeys, &(indexToImport->mHiddenIndexAllKeys) }, + {&mFavoritesIndexAllKeys, &(indexToImport->mFavoritesIndexAllKeys)}, + {&mGenreIndexAllKeys, &(indexToImport->mGenreIndexAllKeys)}, + {&mPlayersIndexAllKeys, &(indexToImport->mPlayersIndexAllKeys)}, + {&mPubDevIndexAllKeys, &(indexToImport->mPubDevIndexAllKeys)}, + {&mRatingsIndexAllKeys, &(indexToImport->mRatingsIndexAllKeys)}, + {&mKidGameIndexAllKeys, &(indexToImport->mKidGameIndexAllKeys)}, + {&mCompletedIndexAllKeys, &(indexToImport->mCompletedIndexAllKeys)}, + {&mBrokenIndexAllKeys, &(indexToImport->mBrokenIndexAllKeys)}, + {&mHiddenIndexAllKeys, &(indexToImport->mHiddenIndexAllKeys)}, }; std::vector indexImportDecl = std::vector( @@ -304,7 +304,7 @@ void FileFilterIndex::setKidModeFilters() { if (UIModeController::getInstance()->isUIModeKid()) { mFilterByKidGame = true; - std::vector val = { "TRUE" }; + std::vector val = {"TRUE"}; setFilter(KIDGAME_FILTER, &val); } } @@ -419,14 +419,13 @@ bool FileFilterIndex::isFiltered() bool FileFilterIndex::isKeyBeingFilteredBy(std::string key, FilterIndexType type) { - const FilterIndexType filterTypes[9] = { FAVORITES_FILTER, GENRE_FILTER, PLAYER_FILTER, - PUBDEV_FILTER, RATINGS_FILTER, KIDGAME_FILTER, - COMPLETED_FILTER, BROKEN_FILTER, HIDDEN_FILTER }; + const FilterIndexType filterTypes[9] = {FAVORITES_FILTER, GENRE_FILTER, PLAYER_FILTER, + PUBDEV_FILTER, RATINGS_FILTER, KIDGAME_FILTER, + COMPLETED_FILTER, BROKEN_FILTER, HIDDEN_FILTER}; std::vector filterKeysList[9] = { mFavoritesIndexFilteredKeys, mGenreIndexFilteredKeys, mPlayersIndexFilteredKeys, mPubDevIndexFilteredKeys, mRatingsIndexFilteredKeys, mKidGameIndexFilteredKeys, - mCompletedIndexFilteredKeys, mBrokenIndexFilteredKeys, mHiddenIndexFilteredKeys - }; + mCompletedIndexFilteredKeys, mBrokenIndexFilteredKeys, mHiddenIndexFilteredKeys}; for (int i = 0; i < 9; i++) { if (filterTypes[i] == type) { diff --git a/es-app/src/FileSorts.cpp b/es-app/src/FileSorts.cpp index 8c84f3d78..84479b8f3 100644 --- a/es-app/src/FileSorts.cpp +++ b/es-app/src/FileSorts.cpp @@ -45,8 +45,7 @@ namespace FileSorts FileData::SortType(&compareTimesPlayedDescending, "times played, descending"), FileData::SortType(&compareSystem, "system, ascending"), - FileData::SortType(&compareSystemDescending, "system, descending") - }; + FileData::SortType(&compareSystemDescending, "system, descending")}; const std::vector SortTypes(typesArr, typesArr + diff --git a/es-app/src/Gamelist.cpp b/es-app/src/Gamelist.cpp index 31ac2b9e8..c541db582 100644 --- a/es-app/src/Gamelist.cpp +++ b/es-app/src/Gamelist.cpp @@ -120,8 +120,8 @@ void parseGamelist(SystemData* system) std::string relativeTo = system->getStartPath(); bool showHiddenFiles = Settings::getInstance()->getBool("ShowHiddenFiles"); - std::vector tagList = { "game", "folder" }; - FileType typeList[2] = { GAME, FOLDER }; + std::vector tagList = {"game", "folder"}; + FileType typeList[2] = {GAME, FOLDER}; for (int i = 0; i < 2; i++) { std::string tag = tagList[i]; FileType type = typeList[i]; diff --git a/es-app/src/MediaViewer.cpp b/es-app/src/MediaViewer.cpp index 82ccecdc6..f79caacf3 100644 --- a/es-app/src/MediaViewer.cpp +++ b/es-app/src/MediaViewer.cpp @@ -83,7 +83,7 @@ void MediaViewer::update(int deltaTime) void MediaViewer::render() { - glm::mat4 trans = Renderer::getIdentity(); + glm::mat4 trans{Renderer::getIdentity()}; Renderer::setMatrix(trans); // Render a black background below the game media. @@ -95,7 +95,7 @@ void MediaViewer::render() #if defined(USE_OPENGL_21) Renderer::shaderParameters videoParameters; - unsigned int shaders = 0; + unsigned int shaders{0}; if (Settings::getInstance()->getBool("MediaViewerVideoScanlines")) shaders = Renderer::SHADER_SCANLINES; if (Settings::getInstance()->getBool("MediaViewerVideoBlur")) { @@ -121,7 +121,7 @@ void MediaViewer::render() Renderer::shaderPostprocessing(shaders, videoParameters); #endif } - else if (mImage && mImage->hasImage() && mImage->getSize() != glm::vec2({})) { + else if (mImage && mImage->hasImage() && mImage->getSize() != glm::vec2{}) { mImage->render(trans); #if defined(USE_OPENGL_21) diff --git a/es-app/src/MiximageGenerator.cpp b/es-app/src/MiximageGenerator.cpp index 12e2f6f4a..5f9b5bf5a 100644 --- a/es-app/src/MiximageGenerator.cpp +++ b/es-app/src/MiximageGenerator.cpp @@ -472,7 +472,7 @@ bool MiximageGenerator::generateImage() frameImageAlpha.draw_image(xPosMarquee, yPosMarquee, marqueeImageAlpha); // Set a frame color based on an average of the screenshot contents. - unsigned char frameColor[] = { 0, 0, 0, 0 }; + unsigned char frameColor[] = {0, 0, 0, 0}; sampleFrameColor(screenshotImage, frameColor); // Upper / lower frame. diff --git a/es-app/src/SystemData.cpp b/es-app/src/SystemData.cpp index 6f95bf97a..643cd1923 100644 --- a/es-app/src/SystemData.cpp +++ b/es-app/src/SystemData.cpp @@ -919,7 +919,7 @@ SystemData* SystemData::getRandomSystem(const SystemData* currentSystem) // Get a random number in range. std::random_device randDev; // Mersenne Twister pseudorandom number generator. - std::mt19937 engine { randDev() }; + std::mt19937 engine{randDev()}; std::uniform_int_distribution uniform_dist(0, total - 1); int target = uniform_dist(engine); @@ -998,7 +998,7 @@ FileData* SystemData::getRandomGame(const FileData* currentGame) // Get a random number in range. std::random_device randDev; // Mersenne Twister pseudorandom number generator. - std::mt19937 engine { randDev() }; + std::mt19937 engine{randDev()}; std::uniform_int_distribution uniform_dist(0, total - 1); target = uniform_dist(engine); } while (currentGame && gameList.at(target) == currentGame); diff --git a/es-app/src/SystemScreensaver.cpp b/es-app/src/SystemScreensaver.cpp index dfdc27c4e..f27d25b5a 100644 --- a/es-app/src/SystemScreensaver.cpp +++ b/es-app/src/SystemScreensaver.cpp @@ -254,7 +254,7 @@ void SystemScreensaver::renderScreensaver() // Only render the video if the state requires it. if (static_cast(mState) >= STATE_FADE_IN_VIDEO) { - glm::mat4 trans = Renderer::getIdentity(); + glm::mat4 trans{Renderer::getIdentity()}; mVideoScreensaver->render(trans); } } @@ -268,7 +268,7 @@ void SystemScreensaver::renderScreensaver() if (static_cast(mState) >= STATE_FADE_IN_VIDEO) { if (mImageScreensaver->hasImage()) { mImageScreensaver->setOpacity(255 - static_cast(mOpacity * 255)); - glm::mat4 trans = Renderer::getIdentity(); + glm::mat4 trans{Renderer::getIdentity()}; mImageScreensaver->render(trans); } } @@ -514,7 +514,7 @@ void SystemScreensaver::pickRandomImage(std::string& path) // Get a random number in range. std::random_device randDev; // Mersenne Twister pseudorandom number generator. - std::mt19937 engine { randDev() }; + std::mt19937 engine{randDev()}; std::uniform_int_distribution uniform_dist(0, static_cast(mImageFiles.size()) - 1); index = uniform_dist(engine); @@ -548,7 +548,7 @@ void SystemScreensaver::pickRandomVideo(std::string& path) // Get a random number in range. std::random_device randDev; // Mersenne Twister pseudorandom number generator. - std::mt19937 engine { randDev() }; + std::mt19937 engine{randDev()}; std::uniform_int_distribution uniform_dist(0, static_cast(mVideoFiles.size()) - 1); index = uniform_dist(engine); @@ -576,7 +576,7 @@ void SystemScreensaver::pickRandomCustomImage(std::string& path) // Get a random number in range. std::random_device randDev; // Mersenne Twister pseudorandom number generator. - std::mt19937 engine { randDev() }; + std::mt19937 engine{randDev()}; std::uniform_int_distribution uniform_dist( 0, static_cast(mImageCustomFiles.size()) - 1); index = uniform_dist(engine); diff --git a/es-app/src/guis/GuiCollectionSystemsOptions.cpp b/es-app/src/guis/GuiCollectionSystemsOptions.cpp index 76b2d27de..73c77b2fa 100644 --- a/es-app/src/guis/GuiCollectionSystemsOptions.cpp +++ b/es-app/src/guis/GuiCollectionSystemsOptions.cpp @@ -158,7 +158,7 @@ GuiCollectionSystemsOptions::GuiCollectionSystemsOptions(Window* window, std::st auto bracketThemeCollection = std::make_shared(mWindow); bracketThemeCollection->setImage(":/graphics/arrow.svg"); bracketThemeCollection->setResize( - glm::vec2(0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + glm::vec2{0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight()}); row.addElement(themeCollection, true); row.addElement(bracketThemeCollection, false); row.makeAcceptInputHandler([this, unusedFolders] { @@ -196,7 +196,7 @@ GuiCollectionSystemsOptions::GuiCollectionSystemsOptions(Window* window, std::st auto bracketNewCollection = std::make_shared(mWindow); bracketNewCollection->setImage(":/graphics/arrow.svg"); bracketNewCollection->setResize( - glm::vec2(0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + glm::vec2{0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight()}); row.addElement(newCollection, true); row.addElement(bracketNewCollection, false); auto createCollectionCall = [this](const std::string& newVal) { @@ -221,7 +221,7 @@ GuiCollectionSystemsOptions::GuiCollectionSystemsOptions(Window* window, std::st auto bracketDeleteCollection = std::make_shared(mWindow); bracketDeleteCollection->setImage(":/graphics/arrow.svg"); bracketDeleteCollection->setResize( - glm::vec2(0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + glm::vec2{0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight()}); row.addElement(deleteCollection, true); row.addElement(bracketDeleteCollection, false); row.makeAcceptInputHandler([this, customSystems] { diff --git a/es-app/src/guis/GuiGameScraper.cpp b/es-app/src/guis/GuiGameScraper.cpp index 38d5594f4..b50676029 100644 --- a/es-app/src/guis/GuiGameScraper.cpp +++ b/es-app/src/guis/GuiGameScraper.cpp @@ -22,7 +22,7 @@ GuiGameScraper::GuiGameScraper(Window* window, ScraperSearchParams params, std::function doneFunc) : GuiComponent(window) - , mGrid(window, Vector2i(1, 7)) + , mGrid(window, glm::ivec2{1, 7}) , mBox(window, ":/graphics/frame.svg") , mSearchParams(params) , mClose(false) @@ -52,20 +52,20 @@ GuiGameScraper::GuiGameScraper(Window* window, scrapeName + ((mSearchParams.game->getType() == FOLDER) ? " " + ViewController::FOLDER_CHAR : ""), Font::get(FONT_SIZE_MEDIUM), 0x777777FF, ALIGN_CENTER); - mGrid.setEntry(mGameName, Vector2i(0, 1), false, true); + mGrid.setEntry(mGameName, glm::ivec2{0, 1}, false, true); // Row 2 is a spacer. mSystemName = std::make_shared( mWindow, Utils::String::toUpper(mSearchParams.system->getFullName()), Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_CENTER); - mGrid.setEntry(mSystemName, Vector2i(0, 3), false, true); + mGrid.setEntry(mSystemName, glm::ivec2{0, 3}, false, true); // Row 4 is a spacer. // GuiScraperSearch. mSearch = std::make_shared(window, GuiScraperSearch::NEVER_AUTO_ACCEPT, 1); - mGrid.setEntry(mSearch, Vector2i(0, 5), true); + mGrid.setEntry(mSearch, glm::ivec2{0, 5}, true); // Buttons std::vector> buttons; @@ -92,7 +92,7 @@ GuiGameScraper::GuiGameScraper(Window* window, })); mButtonGrid = makeButtonGrid(mWindow, buttons); - mGrid.setEntry(mButtonGrid, Vector2i(0, 6), true, false); + mGrid.setEntry(mButtonGrid, glm::ivec2{0, 6}, true, false); mSearch->setAcceptCallback([this, doneFunc](const ScraperSearchResult& result) { doneFunc(result); @@ -115,7 +115,7 @@ GuiGameScraper::GuiGameScraper(Window* window, void GuiGameScraper::onSizeChanged() { - mBox.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBox.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); mGrid.setRowHeightPerc(0, 0.04f, false); mGrid.setRowHeightPerc(1, mGameName->getFont()->getLetterHeight() / mSize.y, false); diff --git a/es-app/src/guis/GuiGamelistFilter.cpp b/es-app/src/guis/GuiGamelistFilter.cpp index a6d19091f..61a7361c2 100644 --- a/es-app/src/guis/GuiGamelistFilter.cpp +++ b/es-app/src/guis/GuiGamelistFilter.cpp @@ -106,7 +106,7 @@ void GuiGamelistFilter::addFiltersToMenu() auto bracket = std::make_shared(mWindow); bracket->setImage(":/graphics/arrow.svg"); - bracket->setResize(glm::vec2(0.0f, lbl->getFont()->getLetterHeight())); + bracket->setResize(glm::vec2{0.0f, lbl->getFont()->getLetterHeight()}); row.addElement(bracket, false); mTextFilterField->setValue(mFilterIndex->getTextFilter()); diff --git a/es-app/src/guis/GuiInfoPopup.cpp b/es-app/src/guis/GuiInfoPopup.cpp index 0137d4ff4..2491c7e49 100644 --- a/es-app/src/guis/GuiInfoPopup.cpp +++ b/es-app/src/guis/GuiInfoPopup.cpp @@ -54,15 +54,15 @@ GuiInfoPopup::GuiInfoPopup(Window* window, std::string message, int duration) setPosition(posX, posY, 0); mFrame->setImagePath(":/graphics/frame.svg"); - mFrame->fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mFrame->fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); addChild(mFrame); // We only initialize the actual time when we first start to render. mStartTime = 0; - mGrid = new ComponentGrid(window, Vector2i(1, 3)); + mGrid = new ComponentGrid(window, glm::ivec2{1, 3}); mGrid->setSize(mSize); - mGrid->setEntry(s, Vector2i(0, 1), false, true); + mGrid->setEntry(s, glm::ivec2{0, 1}, false, true); addChild(mGrid); } @@ -75,7 +75,7 @@ GuiInfoPopup::~GuiInfoPopup() void GuiInfoPopup::render(const glm::mat4& /*parentTrans*/) { // We use getIdentity() as we want to render on a specific window position, not on the view. - glm::mat4 trans = getTransform() * Renderer::getIdentity(); + glm::mat4 trans{getTransform() * Renderer::getIdentity()}; if (mRunning && updateState()) { // If we're still supposed to be rendering it. Renderer::setMatrix(trans); diff --git a/es-app/src/guis/GuiLaunchScreen.cpp b/es-app/src/guis/GuiLaunchScreen.cpp index 590ee78d0..3ec4434ba 100644 --- a/es-app/src/guis/GuiLaunchScreen.cpp +++ b/es-app/src/guis/GuiLaunchScreen.cpp @@ -34,7 +34,7 @@ GuiLaunchScreen::~GuiLaunchScreen() void GuiLaunchScreen::displayLaunchScreen(FileData* game) { - mGrid = new ComponentGrid(mWindow, Vector2i(3, 8)); + mGrid = new ComponentGrid(mWindow, glm::ivec2{3, 8}); addChild(mGrid); mImagePath = game->getMarqueePath(); @@ -51,8 +51,8 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) const float gameNameFontSize = 0.073f; // Spacer row. - mGrid->setEntry(std::make_shared(mWindow), Vector2i(1, 0), false, false, - Vector2i(1, 1)); + mGrid->setEntry(std::make_shared(mWindow), glm::ivec2{1, 0}, false, false, + glm::ivec2{1, 1}); // Title. mTitle = std::make_shared( @@ -60,19 +60,19 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) Font::get(static_cast( titleFontSize * std::min(Renderer::getScreenHeight(), Renderer::getScreenWidth()))), 0x666666FF, ALIGN_CENTER); - mGrid->setEntry(mTitle, Vector2i(1, 1), false, true, Vector2i(1, 1)); + mGrid->setEntry(mTitle, glm::ivec2{1, 1}, false, true, glm::ivec2{1, 1}); // Spacer row. - mGrid->setEntry(std::make_shared(mWindow), Vector2i(1, 2), false, false, - Vector2i(1, 1)); + mGrid->setEntry(std::make_shared(mWindow), glm::ivec2{1, 2}, false, false, + glm::ivec2{1, 1}); // Row for the marquee. - mGrid->setEntry(std::make_shared(mWindow), Vector2i(1, 3), false, false, - Vector2i(1, 1)); + mGrid->setEntry(std::make_shared(mWindow), glm::ivec2{1, 3}, false, false, + glm::ivec2{1, 1}); // Spacer row. - mGrid->setEntry(std::make_shared(mWindow), Vector2i(1, 4), false, false, - Vector2i(1, 1)); + mGrid->setEntry(std::make_shared(mWindow), glm::ivec2{1, 4}, false, false, + glm::ivec2{1, 1}); // Game name. mGameName = std::make_shared( @@ -80,24 +80,24 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) Font::get(static_cast( gameNameFontSize * std::min(Renderer::getScreenHeight(), Renderer::getScreenWidth()))), 0x444444FF, ALIGN_CENTER); - mGrid->setEntry(mGameName, Vector2i(1, 5), false, true, Vector2i(1, 1)); + mGrid->setEntry(mGameName, glm::ivec2{1, 5}, false, true, glm::ivec2{1, 1}); // System name. mSystemName = std::make_shared( mWindow, "SYSTEM NAME", Font::get(FONT_SIZE_MEDIUM), 0x666666FF, ALIGN_CENTER); - mGrid->setEntry(mSystemName, Vector2i(1, 6), false, true, Vector2i(1, 1)); + mGrid->setEntry(mSystemName, glm::ivec2{1, 6}, false, true, glm::ivec2{1, 1}); // Spacer row. - mGrid->setEntry(std::make_shared(mWindow), Vector2i(1, 7), false, false, - Vector2i(1, 1)); + mGrid->setEntry(std::make_shared(mWindow), glm::ivec2{1, 7}, false, false, + glm::ivec2{1, 1}); // Left spacer. - mGrid->setEntry(std::make_shared(mWindow), Vector2i(0, 0), false, false, - Vector2i(1, 8)); + mGrid->setEntry(std::make_shared(mWindow), glm::ivec2{0, 0}, false, false, + glm::ivec2{1, 8}); // Right spacer. - mGrid->setEntry(std::make_shared(mWindow), Vector2i(2, 0), false, false, - Vector2i(1, 8)); + mGrid->setEntry(std::make_shared(mWindow), glm::ivec2{2, 0}, false, false, + glm::ivec2{1, 8}); // Adjust the width depending on the aspect ratio of the screen, to make the screen look // somewhat coherent regardless of screen type. The 1.778 aspect ratio value is the 16:9 @@ -169,8 +169,8 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) mGrid->getRowHeight(3)); mMarquee->setOrigin(0.5f, 0.5f); - glm::vec3 currentPos = mMarquee->getPosition(); - glm::vec2 currentSize = mMarquee->getSize(); + glm::vec3 currentPos{mMarquee->getPosition()}; + glm::vec2 currentSize{mMarquee->getSize()}; // Position the image in the middle of row four. currentPos.x = mSize.x / 2.0f; @@ -179,13 +179,13 @@ void GuiLaunchScreen::displayLaunchScreen(FileData* game) mMarquee->setPosition(currentPos); } - setOrigin({ 0.5f, 0.5f }); + setOrigin({0.5f, 0.5f}); // Center on the X axis and keep slightly off-center on the Y axis. setPosition(static_cast(Renderer::getScreenWidth()) / 2.0f, static_cast(Renderer::getScreenHeight()) / 2.25f); - mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); mBackground.setEdgeColor(0xEEEEEEFF); } @@ -228,7 +228,7 @@ void GuiLaunchScreen::render() if (mScaleUp < 1.0f) setScale(mScaleUp); - glm::mat4 trans = Renderer::getIdentity() * getTransform(); + glm::mat4 trans{Renderer::getIdentity() * getTransform()}; Renderer::setMatrix(trans); GuiComponent::renderChildren(trans); diff --git a/es-app/src/guis/GuiMenu.cpp b/es-app/src/guis/GuiMenu.cpp index a7ff2208a..0451b0d80 100644 --- a/es-app/src/guis/GuiMenu.cpp +++ b/es-app/src/guis/GuiMenu.cpp @@ -898,7 +898,7 @@ void GuiMenu::openOtherOptions() auto bracketMediaDirectory = std::make_shared(mWindow); bracketMediaDirectory->setImage(":/graphics/arrow.svg"); bracketMediaDirectory->setResize( - glm::vec2(0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + glm::vec2{0.0f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight()}); rowMediaDir.addElement(media_directory, true); rowMediaDir.addElement(bracketMediaDirectory, false); std::string titleMediaDir = "ENTER GAME MEDIA DIRECTORY"; diff --git a/es-app/src/guis/GuiMetaDataEd.cpp b/es-app/src/guis/GuiMetaDataEd.cpp index fbb7506e1..31cabc75b 100644 --- a/es-app/src/guis/GuiMetaDataEd.cpp +++ b/es-app/src/guis/GuiMetaDataEd.cpp @@ -42,7 +42,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, : GuiComponent(window) , mScraperParams(scraperParams) , mBackground(window, ":/graphics/frame.svg") - , mGrid(window, Vector2i(1, 3)) + , mGrid(window, glm::ivec2{1, 3}) , mMetaDataDecl(mdd) , mMetaData(md) , mSavedCallback(saveCallback) @@ -53,7 +53,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, addChild(&mBackground); addChild(&mGrid); - mHeaderGrid = std::make_shared(mWindow, Vector2i(1, 5)); + mHeaderGrid = std::make_shared(mWindow, glm::ivec2{1, 5}); mTitle = std::make_shared(mWindow, "EDIT METADATA", Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); @@ -78,15 +78,15 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, folderPath + Utils::FileSystem::getFileName(scraperParams.game->getPath()) + " [" + Utils::String::toUpper(scraperParams.system->getName()) + "]" + (scraperParams.game->getType() == FOLDER ? " " + ViewController::FOLDER_CHAR : ""), - Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER, glm::vec3({}), glm::vec2({}), - 0x00000000, 0.05f); - mHeaderGrid->setEntry(mTitle, Vector2i(0, 1), false, true); - mHeaderGrid->setEntry(mSubtitle, Vector2i(0, 3), false, true); + Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER, glm::vec3{}, glm::vec2{}, 0x00000000, + 0.05f); + mHeaderGrid->setEntry(mTitle, glm::ivec2{0, 1}, false, true); + mHeaderGrid->setEntry(mSubtitle, glm::ivec2{0, 3}, false, true); - mGrid.setEntry(mHeaderGrid, Vector2i(0, 0), false, true); + mGrid.setEntry(mHeaderGrid, glm::ivec2{0, 0}, false, true); mList = std::make_shared(mWindow); - mGrid.setEntry(mList, Vector2i(0, 1), true, true); + mGrid.setEntry(mList, glm::ivec2{0, 1}, true, true); // Populate list. for (auto iter = mdd.cbegin(); iter != mdd.cend(); iter++) { @@ -123,7 +123,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, case MD_BOOL: { ed = std::make_shared(window); // Make the switches slightly smaller. - glm::vec2 switchSize = ed->getSize() * 0.9f; + glm::vec2 switchSize{ed->getSize() * 0.9f}; ed->setResize(switchSize.x, switchSize.y); ed->setOrigin(-0.05f, -0.09f); @@ -182,7 +182,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, auto bracket = std::make_shared(mWindow); bracket->setImage(":/graphics/arrow.svg"); - bracket->setResize(glm::vec2(0.0f, lbl->getFont()->getLetterHeight())); + bracket->setResize(glm::vec2{0.0f, lbl->getFont()->getLetterHeight()}); row.addElement(bracket, false); bool multiLine = false; @@ -223,7 +223,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, auto bracket = std::make_shared(mWindow); bracket->setImage(":/graphics/arrow.svg"); - bracket->setResize(glm::vec2(0.0f, lbl->getFont()->getLetterHeight())); + bracket->setResize(glm::vec2{0.0f, lbl->getFont()->getLetterHeight()}); row.addElement(bracket, false); bool multiLine = iter->type == MD_MULTILINE_STRING; @@ -346,7 +346,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, } mButtons = makeButtonGrid(mWindow, buttons); - mGrid.setEntry(mButtons, Vector2i(0, 2), true, false); + mGrid.setEntry(mButtons, glm::ivec2{0, 2}, true, false); // Resize + center. float width = @@ -386,12 +386,12 @@ void GuiMetaDataEd::onSizeChanged() // Adjust the size of the list and window. float heightAdjustment = listSize - listHeight; mList->setSize(mList->getSize().x, listHeight); - glm::vec2 newWindowSize = mSize; + glm::vec2 newWindowSize{mSize}; newWindowSize.y -= heightAdjustment; - mBackground.fitTo(newWindowSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(newWindowSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); // Move the buttons up as well to make the layout align correctly after the resize. - glm::vec3 newButtonPos = mButtons->getPosition(); + glm::vec3 newButtonPos{mButtons->getPosition()}; newButtonPos.y -= heightAdjustment; mButtons->setPosition(newButtonPos); diff --git a/es-app/src/guis/GuiOfflineGenerator.cpp b/es-app/src/guis/GuiOfflineGenerator.cpp index 16c8bc85c..4bd6f84b8 100644 --- a/es-app/src/guis/GuiOfflineGenerator.cpp +++ b/es-app/src/guis/GuiOfflineGenerator.cpp @@ -16,7 +16,7 @@ GuiOfflineGenerator::GuiOfflineGenerator(Window* window, const std::queue& gameQueue) : GuiComponent(window) , mBackground(window, ":/graphics/frame.svg") - , mGrid(window, Vector2i(6, 13)) + , mGrid(window, glm::ivec2{6, 13}) , mGameQueue(gameQueue) { addChild(&mBackground); @@ -38,100 +38,100 @@ GuiOfflineGenerator::GuiOfflineGenerator(Window* window, const std::queue(mWindow, "MIXIMAGE OFFLINE GENERATOR", Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); - mGrid.setEntry(mTitle, Vector2i(0, 0), false, true, Vector2i(6, 1)); + mGrid.setEntry(mTitle, glm::ivec2{0, 0}, false, true, glm::ivec2{6, 1}); mStatus = std::make_shared(mWindow, "NOT STARTED", Font::get(FONT_SIZE_MEDIUM), 0x777777FF, ALIGN_CENTER); - mGrid.setEntry(mStatus, Vector2i(0, 1), false, true, Vector2i(6, 1)); + mGrid.setEntry(mStatus, glm::ivec2{0, 1}, false, true, glm::ivec2{6, 1}); mGameCounter = std::make_shared( mWindow, std::to_string(mGamesProcessed) + " OF " + std::to_string(mTotalGames) + (mTotalGames == 1 ? " GAME " : " GAMES ") + "PROCESSED", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_CENTER); - mGrid.setEntry(mGameCounter, Vector2i(0, 2), false, true, Vector2i(6, 1)); + mGrid.setEntry(mGameCounter, glm::ivec2{0, 2}, false, true, glm::ivec2{6, 1}); // Spacer row with top border. - mGrid.setEntry(std::make_shared(mWindow), Vector2i(0, 3), false, false, - Vector2i(6, 1), GridFlags::BORDER_TOP); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{0, 3}, false, false, + glm::ivec2{6, 1}, GridFlags::BORDER_TOP); // Left spacer. - mGrid.setEntry(std::make_shared(mWindow), Vector2i(0, 4), false, false, - Vector2i(1, 7)); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{0, 4}, false, false, + glm::ivec2{1, 7}); // Generated label. mGeneratedLbl = std::make_shared( mWindow, "Generated:", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mGeneratedLbl, Vector2i(1, 4), false, true, Vector2i(1, 1)); + mGrid.setEntry(mGeneratedLbl, glm::ivec2{1, 4}, false, true, glm::ivec2{1, 1}); // Generated value/counter. mGeneratedVal = std::make_shared(mWindow, std::to_string(mGamesProcessed), Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mGeneratedVal, Vector2i(2, 4), false, true, Vector2i(1, 1)); + mGrid.setEntry(mGeneratedVal, glm::ivec2{2, 4}, false, true, glm::ivec2{1, 1}); // Overwritten label. mOverwrittenLbl = std::make_shared( mWindow, "Overwritten:", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mOverwrittenLbl, Vector2i(1, 5), false, true, Vector2i(1, 1)); + mGrid.setEntry(mOverwrittenLbl, glm::ivec2{1, 5}, false, true, glm::ivec2{1, 1}); // Overwritten value/counter. mOverwrittenVal = std::make_shared(mWindow, std::to_string(mImagesOverwritten), Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mOverwrittenVal, Vector2i(2, 5), false, true, Vector2i(1, 1)); + mGrid.setEntry(mOverwrittenVal, glm::ivec2{2, 5}, false, true, glm::ivec2{1, 1}); // Skipping label. mSkippedLbl = std::make_shared( mWindow, "Skipped (existing):", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mSkippedLbl, Vector2i(1, 6), false, true, Vector2i(1, 1)); + mGrid.setEntry(mSkippedLbl, glm::ivec2{1, 6}, false, true, glm::ivec2{1, 1}); // Skipping value/counter. mSkippedVal = std::make_shared( mWindow, std::to_string(mGamesSkipped), Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mSkippedVal, Vector2i(2, 6), false, true, Vector2i(1, 1)); + mGrid.setEntry(mSkippedVal, glm::ivec2{2, 6}, false, true, glm::ivec2{1, 1}); // Failed label. mFailedLbl = std::make_shared(mWindow, "Failed:", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mFailedLbl, Vector2i(1, 7), false, true, Vector2i(1, 1)); + mGrid.setEntry(mFailedLbl, glm::ivec2{1, 7}, false, true, glm::ivec2{1, 1}); // Failed value/counter. mFailedVal = std::make_shared( mWindow, std::to_string(mGamesFailed), Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mFailedVal, Vector2i(2, 7), false, true, Vector2i(1, 1)); + mGrid.setEntry(mFailedVal, glm::ivec2{2, 7}, false, true, glm::ivec2{1, 1}); // Processing label. mProcessingLbl = std::make_shared( mWindow, "Processing: ", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mProcessingLbl, Vector2i(3, 4), false, true, Vector2i(1, 1)); + mGrid.setEntry(mProcessingLbl, glm::ivec2{3, 4}, false, true, glm::ivec2{1, 1}); // Processing value. mProcessingVal = std::make_shared(mWindow, "", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mProcessingVal, Vector2i(4, 4), false, true, Vector2i(1, 1)); + mGrid.setEntry(mProcessingVal, glm::ivec2{4, 4}, false, true, glm::ivec2{1, 1}); // Spacer row. - mGrid.setEntry(std::make_shared(mWindow), Vector2i(1, 8), false, false, - Vector2i(4, 1)); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{1, 8}, false, false, + glm::ivec2{4, 1}); // Last error message label. mLastErrorLbl = std::make_shared( mWindow, "Last error message:", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mLastErrorLbl, Vector2i(1, 9), false, true, Vector2i(4, 1)); + mGrid.setEntry(mLastErrorLbl, glm::ivec2{1, 9}, false, true, glm::ivec2{4, 1}); // Last error message value. mLastErrorVal = std::make_shared(mWindow, "", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_LEFT); - mGrid.setEntry(mLastErrorVal, Vector2i(1, 10), false, true, Vector2i(4, 1)); + mGrid.setEntry(mLastErrorVal, glm::ivec2{1, 10}, false, true, glm::ivec2{4, 1}); // Right spacer. - mGrid.setEntry(std::make_shared(mWindow), Vector2i(5, 4), false, false, - Vector2i(1, 7)); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{5, 4}, false, false, + glm::ivec2{1, 7}); // Spacer row with bottom border. - mGrid.setEntry(std::make_shared(mWindow), Vector2i(0, 11), false, false, - Vector2i(6, 1), GridFlags::BORDER_BOTTOM); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{0, 11}, false, false, + glm::ivec2{6, 1}, GridFlags::BORDER_BOTTOM); // Buttons. std::vector> buttons; @@ -177,7 +177,7 @@ GuiOfflineGenerator::GuiOfflineGenerator(Window* window, const std::queuegetFont()->getLetterHeight() * 1.9725f / mSize.y, false); diff --git a/es-app/src/guis/GuiScraperMulti.cpp b/es-app/src/guis/GuiScraperMulti.cpp index 70233e14e..7206d5492 100644 --- a/es-app/src/guis/GuiScraperMulti.cpp +++ b/es-app/src/guis/GuiScraperMulti.cpp @@ -28,7 +28,7 @@ GuiScraperMulti::GuiScraperMulti(Window* window, bool approveResults) : GuiComponent(window) , mBackground(window, ":/graphics/frame.svg") - , mGrid(window, Vector2i(1, 5)) + , mGrid(window, glm::ivec2{1, 5}) , mSearchQueue(searches) , mApproveResults(approveResults) { @@ -47,15 +47,15 @@ GuiScraperMulti::GuiScraperMulti(Window* window, // Set up grid. mTitle = std::make_shared(mWindow, "SCRAPING IN PROGRESS", Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); - mGrid.setEntry(mTitle, Vector2i(0, 0), false, true); + mGrid.setEntry(mTitle, glm::ivec2{0, 0}, false, true); mSystem = std::make_shared(mWindow, "SYSTEM", Font::get(FONT_SIZE_MEDIUM), 0x777777FF, ALIGN_CENTER); - mGrid.setEntry(mSystem, Vector2i(0, 1), false, true); + mGrid.setEntry(mSystem, glm::ivec2{0, 1}, false, true); mSubtitle = std::make_shared( mWindow, "subtitle text", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_CENTER); - mGrid.setEntry(mSubtitle, Vector2i(0, 2), false, true); + mGrid.setEntry(mSubtitle, glm::ivec2{0, 2}, false, true); if (mApproveResults && !Settings::getInstance()->getBool("ScraperSemiautomatic")) mSearchComp = std::make_shared( @@ -70,7 +70,7 @@ GuiScraperMulti::GuiScraperMulti(Window* window, std::bind(&GuiScraperMulti::acceptResult, this, std::placeholders::_1)); mSearchComp->setSkipCallback(std::bind(&GuiScraperMulti::skip, this)); mSearchComp->setCancelCallback(std::bind(&GuiScraperMulti::finish, this)); - mGrid.setEntry(mSearchComp, Vector2i(0, 3), + mGrid.setEntry(mSearchComp, glm::ivec2{0, 3}, mSearchComp->getSearchType() != GuiScraperSearch::ALWAYS_ACCEPT_FIRST_RESULT, true); @@ -102,7 +102,7 @@ GuiScraperMulti::GuiScraperMulti(Window* window, std::bind(&GuiScraperMulti::finish, this))); mButtonGrid = makeButtonGrid(mWindow, buttons); - mGrid.setEntry(mButtonGrid, Vector2i(0, 4), true, false); + mGrid.setEntry(mButtonGrid, glm::ivec2{0, 4}, true, false); // Limit the width of the GUI on ultrawide monitors. The 1.778 aspect ratio value is // the 16:9 reference. @@ -130,7 +130,7 @@ GuiScraperMulti::~GuiScraperMulti() void GuiScraperMulti::onSizeChanged() { - mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); mGrid.setRowHeightPerc(0, mTitle->getFont()->getLetterHeight() * 1.9725f / mSize.y, false); mGrid.setRowHeightPerc(1, (mSystem->getFont()->getLetterHeight() + 2.0f) / mSize.y, false); diff --git a/es-app/src/guis/GuiScraperSearch.cpp b/es-app/src/guis/GuiScraperSearch.cpp index 262bff12b..e12edd803 100644 --- a/es-app/src/guis/GuiScraperSearch.cpp +++ b/es-app/src/guis/GuiScraperSearch.cpp @@ -38,7 +38,7 @@ GuiScraperSearch::GuiScraperSearch(Window* window, SearchType type, unsigned int scrapeCount) : GuiComponent(window) - , mGrid(window, Vector2i(4, 3)) + , mGrid(window, glm::ivec2{4, 3}) , mBusyAnim(window) , mSearchType(type) , mScrapeCount(scrapeCount) @@ -54,8 +54,8 @@ GuiScraperSearch::GuiScraperSearch(Window* window, SearchType type, unsigned int mRetryCount = 0; // Left spacer (empty component, needed for borders). - mGrid.setEntry(std::make_shared(mWindow), Vector2i(0, 0), false, false, - Vector2i(1, 3), GridFlags::BORDER_TOP | GridFlags::BORDER_BOTTOM); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{0, 0}, false, false, + glm::ivec2{1, 3}, GridFlags::BORDER_TOP | GridFlags::BORDER_BOTTOM); // Selected result name. mResultName = std::make_shared(mWindow, "Result name", @@ -63,7 +63,7 @@ GuiScraperSearch::GuiScraperSearch(Window* window, SearchType type, unsigned int // Selected result thumbnail. mResultThumbnail = std::make_shared(mWindow); - mGrid.setEntry(mResultThumbnail, Vector2i(1, 1), false, false, Vector2i(1, 1)); + mGrid.setEntry(mResultThumbnail, glm::ivec2{1, 1}, false, false, glm::ivec2{1, 1}); // Selected result description and container. mDescContainer = std::make_shared(mWindow); @@ -87,14 +87,14 @@ GuiScraperSearch::GuiScraperSearch(Window* window, SearchType type, unsigned int mMD_ReleaseDate = std::make_shared(mWindow); mMD_ReleaseDate->setColor(mdColor); mMD_ReleaseDate->setUppercase(true); - mMD_Developer = std::make_shared( - mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3({}), glm::vec2({}), 0x00000000, 0.02f); - mMD_Publisher = std::make_shared( - mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3({}), glm::vec2({}), 0x00000000, 0.02f); - mMD_Genre = std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, - glm::vec3({}), glm::vec2({}), 0x00000000, 0.02f); + mMD_Developer = std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, + glm::vec3{}, glm::vec2{}, 0x00000000, 0.02f); + mMD_Publisher = std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, + glm::vec3{}, glm::vec2{}, 0x00000000, 0.02f); + mMD_Genre = std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, glm::vec3{}, + glm::vec2{}, 0x00000000, 0.02f); mMD_Players = std::make_shared(mWindow, "", font, mdColor, ALIGN_LEFT, - glm::vec3({}), glm::vec2({}), 0x00000000, 0.02f); + glm::vec3{}, glm::vec2{}, 0x00000000, 0.02f); mMD_Filler = std::make_shared(mWindow, "", font, mdColor); if (Settings::getInstance()->getString("Scraper") != "thegamesdb") @@ -123,15 +123,15 @@ GuiScraperSearch::GuiScraperSearch(Window* window, SearchType type, unsigned int std::make_shared(mWindow, "", font, mdLblColor), mMD_Filler)); mMD_Grid = std::make_shared( - mWindow, Vector2i(2, static_cast(mMD_Pairs.size() * 2 - 1))); + mWindow, glm::ivec2{2, static_cast(mMD_Pairs.size() * 2 - 1)}); unsigned int i = 0; for (auto it = mMD_Pairs.cbegin(); it != mMD_Pairs.cend(); it++) { - mMD_Grid->setEntry(it->first, Vector2i(0, i), false, true); - mMD_Grid->setEntry(it->second, Vector2i(1, i), false, it->resize); + mMD_Grid->setEntry(it->first, glm::ivec2{0, i}, false, true); + mMD_Grid->setEntry(it->second, glm::ivec2{1, i}, false, it->resize); i += 2; } - mGrid.setEntry(mMD_Grid, Vector2i(2, 1), false, false); + mGrid.setEntry(mMD_Grid, glm::ivec2{2, 1}, false, false); // Result list. mResultList = std::make_shared(mWindow); @@ -229,7 +229,7 @@ void GuiScraperSearch::onSizeChanged() mResultDesc->setSize(mDescContainer->getSize().x, 0.0f); // Set the width of mResultName to the cell width so that text abbreviation will work correctly. - glm::vec2 resultNameSize = mResultName->getSize(); + glm::vec2 resultNameSize{mResultName->getSize()}; mResultName->setSize(mGrid.getColWidth(3), resultNameSize.y); mGrid.onSizeChanged(); @@ -288,30 +288,30 @@ void GuiScraperSearch::updateViewStyle() // Add them back depending on search type. if (mSearchType == ALWAYS_ACCEPT_FIRST_RESULT) { // Show name. - mGrid.setEntry(mResultName, Vector2i(1, 0), false, false, Vector2i(2, 1), + mGrid.setEntry(mResultName, glm::ivec2{1, 0}, false, false, glm::ivec2{2, 1}, GridFlags::BORDER_TOP); // Need a border on the bottom left. - mGrid.setEntry(std::make_shared(mWindow), Vector2i(0, 2), false, false, - Vector2i(3, 1), GridFlags::BORDER_BOTTOM); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{0, 2}, false, false, + glm::ivec2{3, 1}, GridFlags::BORDER_BOTTOM); // Show description on the right. - mGrid.setEntry(mDescContainer, Vector2i(3, 0), false, false, Vector2i(1, 3), + mGrid.setEntry(mDescContainer, glm::ivec2{3, 0}, false, false, glm::ivec2{1, 3}, GridFlags::BORDER_TOP | GridFlags::BORDER_BOTTOM); // Make description text wrap at edge of container. mResultDesc->setSize(mDescContainer->getSize().x, 0.0f); } else { // Fake row where name would be. - mGrid.setEntry(std::make_shared(mWindow), Vector2i(1, 0), false, true, - Vector2i(2, 1), GridFlags::BORDER_TOP); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{1, 0}, false, true, + glm::ivec2{2, 1}, GridFlags::BORDER_TOP); // Show result list on the right. - mGrid.setEntry(mResultList, Vector2i(3, 0), true, true, Vector2i(1, 3), + mGrid.setEntry(mResultList, glm::ivec2{3, 0}, true, true, glm::ivec2{1, 3}, GridFlags::BORDER_LEFT | GridFlags::BORDER_TOP | GridFlags::BORDER_BOTTOM); // Show description under image/info. - mGrid.setEntry(mDescContainer, Vector2i(1, 2), false, false, Vector2i(2, 1), + mGrid.setEntry(mDescContainer, glm::ivec2{1, 2}, false, false, glm::ivec2{2, 1}, GridFlags::BORDER_BOTTOM); // Make description text wrap at edge of container. mResultDesc->setSize(mDescContainer->getSize().x, 0); @@ -562,7 +562,7 @@ bool GuiScraperSearch::input(InputConfig* config, Input input) void GuiScraperSearch::render(const glm::mat4& parentTrans) { - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; renderChildren(trans); Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, 0x00000009, 0x00000009); diff --git a/es-app/src/guis/GuiSettings.cpp b/es-app/src/guis/GuiSettings.cpp index 87e000e27..b5827febb 100644 --- a/es-app/src/guis/GuiSettings.cpp +++ b/es-app/src/guis/GuiSettings.cpp @@ -170,7 +170,7 @@ void GuiSettings::addEditableTextComponent(const std::string label, auto bracket = std::make_shared(mWindow); bracket->setImage(":/graphics/arrow.svg"); - bracket->setResize(glm::vec2(0.0f, lbl->getFont()->getLetterHeight())); + bracket->setResize(glm::vec2{0.0f, lbl->getFont()->getLetterHeight()}); row.addElement(bracket, false); // OK callback (apply new value to ed). diff --git a/es-app/src/main.cpp b/es-app/src/main.cpp index fe243b8ae..97a0fa7ad 100644 --- a/es-app/src/main.cpp +++ b/es-app/src/main.cpp @@ -572,7 +572,7 @@ int main(int argc, char* argv[]) bool splashScreen = Settings::getInstance()->getBool("SplashScreen"); bool splashScreenProgress = Settings::getInstance()->getBool("SplashScreenProgress"); - SDL_Event event {}; + SDL_Event event{}; if (!window.init()) { LOG(LogError) << "Window failed to initialize"; diff --git a/es-app/src/scrapers/GamesDBJSONScraper.cpp b/es-app/src/scrapers/GamesDBJSONScraper.cpp index 7ca45b709..e92138254 100644 --- a/es-app/src/scrapers/GamesDBJSONScraper.cpp +++ b/es-app/src/scrapers/GamesDBJSONScraper.cpp @@ -33,90 +33,90 @@ namespace TheGamesDBJSONRequestResources resources; } -const std::map gamesdb_new_platformid_map { - { THREEDO, "25" }, - { COMMODORE_AMIGA, "4911" }, - { COMMODORE_AMIGA_CD32, "4947" }, - { AMSTRAD_CPC, "4914" }, - { APPLE_II, "4942" }, - { ARCADE, "23" }, - { ATARI_800, "4943" }, - { ATARI_2600, "22" }, - { ATARI_5200, "26" }, - { ATARI_7800, "27" }, - { ATARI_JAGUAR, "28" }, - { ATARI_JAGUAR_CD, "29" }, - { ATARI_LYNX, "4924" }, - { ATARI_ST, "4937" }, - { ATARI_XE, "30" }, - { CAVESTORY, "1" }, - { COLECOVISION, "31" }, - { COMMODORE_64, "40" }, - { DAPHNE, "23" }, - { INTELLIVISION, "32" }, - { APPLE_MACINTOSH, "37" }, - { MICROSOFT_XBOX, "14" }, - { MICROSOFT_XBOX_360, "15" }, - { MOONLIGHT, "1" }, - { MSX, "4929" }, - { MSX2, "4929" }, - { MSX_TURBO_R, "4929" }, - { SNK_NEO_GEO, "24" }, - { SNK_NEO_GEO_CD, "24" }, - { SNK_NEO_GEO_POCKET, "4922" }, - { SNK_NEO_GEO_POCKET_COLOR, "4923" }, - { NINTENDO_3DS, "4912" }, - { NINTENDO_64, "3" }, - { NINTENDO_DS, "8" }, - { NINTENDO_FAMICOM, "7" }, - { NINTENDO_FAMICOM_DISK_SYSTEM, "4936" }, - { NINTENDO_ENTERTAINMENT_SYSTEM, "7" }, - { NINTENDO_GAME_BOY, "4" }, - { NINTENDO_GAME_BOY_ADVANCE, "5" }, - { NINTENDO_GAME_BOY_COLOR, "41" }, - { NINTENDO_GAMECUBE, "2" }, - { NINTENDO_WII, "9" }, - { NINTENDO_WII_U, "38" }, - { NINTENDO_VIRTUAL_BOY, "4918" }, - { NINTENDO_GAME_AND_WATCH, "4950" }, - { NINTENDO_POKEMON_MINI, "4957" }, - { NINTENDO_SATELLAVIEW, "6" }, - { NINTENDO_SWITCH, "4971" }, - { BANDAI_SUFAMI_TURBO, "6" }, - { DOS, "1" }, - { PC, "1" }, - { VALVE_STEAM, "1" }, - { NEC_PCFX, "4930" }, - { SEGA_32X, "33" }, - { SEGA_CD, "21" }, - { SEGA_DREAMCAST, "16" }, - { SEGA_GAME_GEAR, "20" }, - { SEGA_GENESIS, "18" }, - { SEGA_MASTER_SYSTEM, "35" }, - { SEGA_MEGA_DRIVE, "36" }, - { SEGA_SATURN, "17" }, - { SEGA_SG1000, "4949" }, - { SONY_PLAYSTATION, "10" }, - { SONY_PLAYSTATION_2, "11" }, - { SONY_PLAYSTATION_3, "12" }, - { SONY_PLAYSTATION_4, "4919" }, - { SONY_PLAYSTATION_VITA, "39" }, - { SONY_PLAYSTATION_PORTABLE, "13" }, - { SUPER_NINTENDO, "6" }, - { SHARP_X1, "4977" }, - { SHARP_X68000, "4931" }, - { NEC_SUPERGRAFX, "34" }, - { NEC_PC_8800, "4933" }, - { NEC_PC_9800, "4934" }, - { NEC_PC_ENGINE, "34" }, - { NEC_PC_ENGINE_CD, "4955" }, - { BANDAI_WONDERSWAN, "4925" }, - { BANDAI_WONDERSWAN_COLOR, "4926" }, - { SINCLAIR_ZX_SPECTRUM, "4913" }, - { VIDEOPAC_ODYSSEY2, "4927" }, - { VECTREX, "4939" }, - { TANDY_COLOR_COMPUTER, "4941" }, - { TANDY_TRS80, "4941" }, +const std::map gamesdb_new_platformid_map{ + {THREEDO, "25"}, + {COMMODORE_AMIGA, "4911"}, + {COMMODORE_AMIGA_CD32, "4947"}, + {AMSTRAD_CPC, "4914"}, + {APPLE_II, "4942"}, + {ARCADE, "23"}, + {ATARI_800, "4943"}, + {ATARI_2600, "22"}, + {ATARI_5200, "26"}, + {ATARI_7800, "27"}, + {ATARI_JAGUAR, "28"}, + {ATARI_JAGUAR_CD, "29"}, + {ATARI_LYNX, "4924"}, + {ATARI_ST, "4937"}, + {ATARI_XE, "30"}, + {CAVESTORY, "1"}, + {COLECOVISION, "31"}, + {COMMODORE_64, "40"}, + {DAPHNE, "23"}, + {INTELLIVISION, "32"}, + {APPLE_MACINTOSH, "37"}, + {MICROSOFT_XBOX, "14"}, + {MICROSOFT_XBOX_360, "15"}, + {MOONLIGHT, "1"}, + {MSX, "4929"}, + {MSX2, "4929"}, + {MSX_TURBO_R, "4929"}, + {SNK_NEO_GEO, "24"}, + {SNK_NEO_GEO_CD, "24"}, + {SNK_NEO_GEO_POCKET, "4922"}, + {SNK_NEO_GEO_POCKET_COLOR, "4923"}, + {NINTENDO_3DS, "4912"}, + {NINTENDO_64, "3"}, + {NINTENDO_DS, "8"}, + {NINTENDO_FAMICOM, "7"}, + {NINTENDO_FAMICOM_DISK_SYSTEM, "4936"}, + {NINTENDO_ENTERTAINMENT_SYSTEM, "7"}, + {NINTENDO_GAME_BOY, "4"}, + {NINTENDO_GAME_BOY_ADVANCE, "5"}, + {NINTENDO_GAME_BOY_COLOR, "41"}, + {NINTENDO_GAMECUBE, "2"}, + {NINTENDO_WII, "9"}, + {NINTENDO_WII_U, "38"}, + {NINTENDO_VIRTUAL_BOY, "4918"}, + {NINTENDO_GAME_AND_WATCH, "4950"}, + {NINTENDO_POKEMON_MINI, "4957"}, + {NINTENDO_SATELLAVIEW, "6"}, + {NINTENDO_SWITCH, "4971"}, + {BANDAI_SUFAMI_TURBO, "6"}, + {DOS, "1"}, + {PC, "1"}, + {VALVE_STEAM, "1"}, + {NEC_PCFX, "4930"}, + {SEGA_32X, "33"}, + {SEGA_CD, "21"}, + {SEGA_DREAMCAST, "16"}, + {SEGA_GAME_GEAR, "20"}, + {SEGA_GENESIS, "18"}, + {SEGA_MASTER_SYSTEM, "35"}, + {SEGA_MEGA_DRIVE, "36"}, + {SEGA_SATURN, "17"}, + {SEGA_SG1000, "4949"}, + {SONY_PLAYSTATION, "10"}, + {SONY_PLAYSTATION_2, "11"}, + {SONY_PLAYSTATION_3, "12"}, + {SONY_PLAYSTATION_4, "4919"}, + {SONY_PLAYSTATION_VITA, "39"}, + {SONY_PLAYSTATION_PORTABLE, "13"}, + {SUPER_NINTENDO, "6"}, + {SHARP_X1, "4977"}, + {SHARP_X68000, "4931"}, + {NEC_SUPERGRAFX, "34"}, + {NEC_PC_8800, "4933"}, + {NEC_PC_9800, "4934"}, + {NEC_PC_ENGINE, "34"}, + {NEC_PC_ENGINE_CD, "4955"}, + {BANDAI_WONDERSWAN, "4925"}, + {BANDAI_WONDERSWAN_COLOR, "4926"}, + {SINCLAIR_ZX_SPECTRUM, "4913"}, + {VIDEOPAC_ODYSSEY2, "4927"}, + {VECTREX, "4939"}, + {TANDY_COLOR_COMPUTER, "4941"}, + {TANDY_TRS80, "4941"}, }; void thegamesdb_generate_json_scraper_requests( diff --git a/es-app/src/scrapers/Scraper.cpp b/es-app/src/scrapers/Scraper.cpp index 234fd8a6a..c768843a8 100644 --- a/es-app/src/scrapers/Scraper.cpp +++ b/es-app/src/scrapers/Scraper.cpp @@ -26,10 +26,9 @@ #include #include -const std::map scraper_request_funcs { - { "thegamesdb", &thegamesdb_generate_json_scraper_requests }, - { "screenscraper", &screenscraper_generate_scraper_requests } -}; +const std::map scraper_request_funcs{ + {"thegamesdb", &thegamesdb_generate_json_scraper_requests}, + {"screenscraper", &screenscraper_generate_scraper_requests}}; std::unique_ptr startScraperSearch(const ScraperSearchParams& params) { diff --git a/es-app/src/scrapers/ScreenScraper.cpp b/es-app/src/scrapers/ScreenScraper.cpp index 7135960a2..252388518 100644 --- a/es-app/src/scrapers/ScreenScraper.cpp +++ b/es-app/src/scrapers/ScreenScraper.cpp @@ -26,109 +26,108 @@ using namespace PlatformIds; // List of systems and their IDs from: // https://www.screenscraper.fr/api/systemesListe.php?devid=xxx&devpassword=yyy&softname=zzz&output=XML -const std::map screenscraper_platformid_map { - { THREEDO, 29 }, - { COMMODORE_AMIGA, 64 }, - { COMMODORE_AMIGA_CD32, 130 }, - { AMSTRAD_CPC, 65 }, - { AMSTRAD_GX4000, 87 }, - { APPLE_II, 86 }, - { APPLE_IIGS, 217 }, - { ARCADE, 75 }, - { ATARI_800, 43 }, - { ATARI_2600, 26 }, - { ATARI_5200, 40 }, - { ATARI_7800, 41 }, - { ATARI_JAGUAR, 27 }, - { ATARI_JAGUAR_CD, 171 }, - { ATARI_LYNX, 28 }, - { ATARI_ST, 42 }, - { ATARI_XE, 43 }, - { ATOMISWAVE, 53 }, - { BBC_MICRO, 37 }, - { CAVESTORY, 135 }, - { COLECOVISION, 48 }, - { COMMODORE_64, 66 }, - { COMMODORE_CDTV, 129 }, - { DAPHNE, 49 }, - { INTELLIVISION, 115 }, - { GAMEENGINE_LUTRO, 206 }, - { APPLE_MACINTOSH, 146 }, - { MICROSOFT_XBOX, 32 }, - { MICROSOFT_XBOX_360, 33 }, - { MOONLIGHT, 138 }, - { MSX, 113 }, - { MSX2, 116 }, - { MSX_TURBO_R, 118 }, - { SNK_NEO_GEO, 142 }, - { SNK_NEO_GEO_CD, 142 }, - { SNK_NEO_GEO_POCKET, 25 }, - { SNK_NEO_GEO_POCKET_COLOR, 82 }, - { NINTENDO_3DS, 17 }, - { NINTENDO_64, 14 }, - { NINTENDO_DS, 15 }, - { NINTENDO_FAMICOM, 3 }, - { NINTENDO_FAMICOM_DISK_SYSTEM, 106 }, - { NINTENDO_ENTERTAINMENT_SYSTEM, 3 }, - { FAIRCHILD_CHANNELF, 80 }, - { NINTENDO_GAME_BOY, 9 }, - { NINTENDO_GAME_BOY_ADVANCE, 12 }, - { NINTENDO_GAME_BOY_COLOR, 10 }, - { NINTENDO_GAMECUBE, 13 }, - { NINTENDO_WII, 16 }, - { NINTENDO_WII_U, 18 }, - { NINTENDO_VIRTUAL_BOY, 11 }, - { NINTENDO_GAME_AND_WATCH, 52 }, - { NINTENDO_POKEMON_MINI, 211 }, - { NINTENDO_SATELLAVIEW, 107 }, - { NINTENDO_SWITCH, 225 }, - { BANDAI_SUFAMI_TURBO, 108 }, - { DOS, 135 }, - { PC, 135 }, - { VALVE_STEAM, 135 }, - { NEC_PCFX, 72 }, - { GAMEENGINE_OPENBOR, 214 }, - { TANGERINE_ORIC, 131 }, - { GAMEENGINE_SCUMMVM, 123 }, - { SEGA_32X, 19 }, - { SEGA_CD, 20 }, - { SEGA_DREAMCAST, 23 }, - { SEGA_GAME_GEAR, 21 }, - { SEGA_GENESIS, 1 }, - { SEGA_MASTER_SYSTEM, 2 }, - { SEGA_MEGA_DRIVE, 1 }, - { SEGA_SATURN, 22 }, - { SEGA_SG1000, 109 }, - { SHARP_X1, 220 }, - { SHARP_X68000, 79 }, - { GAMEENGINE_SOLARUS, 223 }, - { SONY_PLAYSTATION, 57 }, - { SONY_PLAYSTATION_2, 58 }, - { SONY_PLAYSTATION_3, 59 }, - { SONY_PLAYSTATION_VITA, 62 }, - { SONY_PLAYSTATION_PORTABLE, 61 }, - { SAMCOUPE, 213 }, - { SUPER_NINTENDO, 4 }, - { NEC_SUPERGRAFX, 105 }, - { GAMEENGINE_TIC80, 222 }, - { NEC_PC_8800, 221 }, - { NEC_PC_9800, 208 }, - { NEC_PC_ENGINE, 31 }, - { NEC_PC_ENGINE_CD, 114 }, - { BANDAI_WONDERSWAN, 45 }, - { BANDAI_WONDERSWAN_COLOR, 46 }, - { SINCLAIR_ZX_SPECTRUM, 76 }, - { SINCLAIR_ZX81_SINCLAR, 77 }, - { VIDEOPAC_ODYSSEY2, 104 }, - { VECTREX, 102 }, - { TANDY_TRS80, 144 }, - { TANDY_COLOR_COMPUTER, 144 }, - { SEGA_NAOMI, 56 }, - { THOMSON_MOTO, 141 }, - { UZEBOX, 216 }, - { SPECTRAVIDEO, 218 }, - { PALM_OS, 219 } -}; +const std::map screenscraper_platformid_map{ + {THREEDO, 29}, + {COMMODORE_AMIGA, 64}, + {COMMODORE_AMIGA_CD32, 130}, + {AMSTRAD_CPC, 65}, + {AMSTRAD_GX4000, 87}, + {APPLE_II, 86}, + {APPLE_IIGS, 217}, + {ARCADE, 75}, + {ATARI_800, 43}, + {ATARI_2600, 26}, + {ATARI_5200, 40}, + {ATARI_7800, 41}, + {ATARI_JAGUAR, 27}, + {ATARI_JAGUAR_CD, 171}, + {ATARI_LYNX, 28}, + {ATARI_ST, 42}, + {ATARI_XE, 43}, + {ATOMISWAVE, 53}, + {BBC_MICRO, 37}, + {CAVESTORY, 135}, + {COLECOVISION, 48}, + {COMMODORE_64, 66}, + {COMMODORE_CDTV, 129}, + {DAPHNE, 49}, + {INTELLIVISION, 115}, + {GAMEENGINE_LUTRO, 206}, + {APPLE_MACINTOSH, 146}, + {MICROSOFT_XBOX, 32}, + {MICROSOFT_XBOX_360, 33}, + {MOONLIGHT, 138}, + {MSX, 113}, + {MSX2, 116}, + {MSX_TURBO_R, 118}, + {SNK_NEO_GEO, 142}, + {SNK_NEO_GEO_CD, 142}, + {SNK_NEO_GEO_POCKET, 25}, + {SNK_NEO_GEO_POCKET_COLOR, 82}, + {NINTENDO_3DS, 17}, + {NINTENDO_64, 14}, + {NINTENDO_DS, 15}, + {NINTENDO_FAMICOM, 3}, + {NINTENDO_FAMICOM_DISK_SYSTEM, 106}, + {NINTENDO_ENTERTAINMENT_SYSTEM, 3}, + {FAIRCHILD_CHANNELF, 80}, + {NINTENDO_GAME_BOY, 9}, + {NINTENDO_GAME_BOY_ADVANCE, 12}, + {NINTENDO_GAME_BOY_COLOR, 10}, + {NINTENDO_GAMECUBE, 13}, + {NINTENDO_WII, 16}, + {NINTENDO_WII_U, 18}, + {NINTENDO_VIRTUAL_BOY, 11}, + {NINTENDO_GAME_AND_WATCH, 52}, + {NINTENDO_POKEMON_MINI, 211}, + {NINTENDO_SATELLAVIEW, 107}, + {NINTENDO_SWITCH, 225}, + {BANDAI_SUFAMI_TURBO, 108}, + {DOS, 135}, + {PC, 135}, + {VALVE_STEAM, 135}, + {NEC_PCFX, 72}, + {GAMEENGINE_OPENBOR, 214}, + {TANGERINE_ORIC, 131}, + {GAMEENGINE_SCUMMVM, 123}, + {SEGA_32X, 19}, + {SEGA_CD, 20}, + {SEGA_DREAMCAST, 23}, + {SEGA_GAME_GEAR, 21}, + {SEGA_GENESIS, 1}, + {SEGA_MASTER_SYSTEM, 2}, + {SEGA_MEGA_DRIVE, 1}, + {SEGA_SATURN, 22}, + {SEGA_SG1000, 109}, + {SHARP_X1, 220}, + {SHARP_X68000, 79}, + {GAMEENGINE_SOLARUS, 223}, + {SONY_PLAYSTATION, 57}, + {SONY_PLAYSTATION_2, 58}, + {SONY_PLAYSTATION_3, 59}, + {SONY_PLAYSTATION_VITA, 62}, + {SONY_PLAYSTATION_PORTABLE, 61}, + {SAMCOUPE, 213}, + {SUPER_NINTENDO, 4}, + {NEC_SUPERGRAFX, 105}, + {GAMEENGINE_TIC80, 222}, + {NEC_PC_8800, 221}, + {NEC_PC_9800, 208}, + {NEC_PC_ENGINE, 31}, + {NEC_PC_ENGINE_CD, 114}, + {BANDAI_WONDERSWAN, 45}, + {BANDAI_WONDERSWAN_COLOR, 46}, + {SINCLAIR_ZX_SPECTRUM, 76}, + {SINCLAIR_ZX81_SINCLAR, 77}, + {VIDEOPAC_ODYSSEY2, 104}, + {VECTREX, 102}, + {TANDY_TRS80, 144}, + {TANDY_COLOR_COMPUTER, 144}, + {SEGA_NAOMI, 56}, + {THOMSON_MOTO, 141}, + {UZEBOX, 216}, + {SPECTRAVIDEO, 218}, + {PALM_OS, 219}}; // Helper XML parsing method, finding a node-by-name recursively. pugi::xml_node find_node_by_name_re(const pugi::xml_node& node, @@ -333,11 +332,10 @@ void ScreenScraperRequest::processGame(const pugi::xml_document& xmldoc, Utils::String::toLower(Settings::getInstance()->getString("ScraperLanguage")); // Name fallback: US, WOR(LD). (Xpath: Data/jeu[0]/noms/nom[*]). - result.mdl.set("name", - find_child_by_attribute_list(game.child("noms"), "nom", "region", - { region, "wor", "us", "ss", "eu", "jp" }) - .text() - .get()); + result.mdl.set("name", find_child_by_attribute_list(game.child("noms"), "nom", "region", + {region, "wor", "us", "ss", "eu", "jp"}) + .text() + .get()); LOG(LogDebug) << "ScreenScraperRequest::processGame(): Name: " << result.mdl.get("name"); // Validate rating. @@ -360,7 +358,7 @@ void ScreenScraperRequest::processGame(const pugi::xml_document& xmldoc, // Description fallback language: EN, WOR(LD). std::string description = find_child_by_attribute_list(game.child("synopsis"), "synopsis", - "langue", { language, "en", "wor" }) + "langue", {language, "en", "wor"}) .text() .get(); @@ -373,7 +371,7 @@ void ScreenScraperRequest::processGame(const pugi::xml_document& xmldoc, // Get the date proper. The API returns multiple 'date' children nodes to the 'dates' // main child of 'jeu'. Date fallback: WOR(LD), US, SS, JP, EU. std::string _date = find_child_by_attribute_list(game.child("dates"), "date", "region", - { region, "wor", "us", "ss", "jp", "eu" }) + {region, "wor", "us", "ss", "jp", "eu"}) .text() .get(); @@ -411,10 +409,10 @@ void ScreenScraperRequest::processGame(const pugi::xml_document& xmldoc, } // Genre fallback language: EN. (Xpath: Data/jeu[0]/genres/genre[*]). - std::string genre = find_child_by_attribute_list(game.child("genres"), "genre", "langue", - { language, "en" }) - .text() - .get(); + std::string genre = + find_child_by_attribute_list(game.child("genres"), "genre", "langue", {language, "en"}) + .text() + .get(); if (!genre.empty()) { result.mdl.set("genre", genre); LOG(LogDebug) << "ScreenScraperRequest::processGame(): Genre: " @@ -482,8 +480,7 @@ void ScreenScraperRequest::processMedia(ScraperSearchResult& result, } else { // Region fallback: WOR(LD), US, CUS(TOM?), JP, EU. - for (auto _region : - std::vector { region, "wor", "us", "cus", "jp", "eu" }) { + for (auto _region : std::vector{region, "wor", "us", "cus", "jp", "eu"}) { if (art) break; diff --git a/es-app/src/scrapers/ScreenScraper.h b/es-app/src/scrapers/ScreenScraper.h index 97295587b..3e07bf61b 100644 --- a/es-app/src/scrapers/ScreenScraper.h +++ b/es-app/src/scrapers/ScreenScraper.h @@ -46,10 +46,10 @@ public: std::string getGameSearchUrl(const std::string gameName) const; // Access to the API. - const std::string API_DEV_U = { 15, 21, 39, 22, 42, 40 }; - const std::string API_DEV_P = { 32, 70, 46, 54, 12, 5, 13, 120, 50, 66, 25 }; - const std::string API_DEV_KEY = { 67, 112, 72, 120, 121, 77, 119, 74, 84, 56, - 75, 122, 78, 98, 69, 86, 56, 120, 120, 49 }; + const std::string API_DEV_U = {15, 21, 39, 22, 42, 40}; + const std::string API_DEV_P = {32, 70, 46, 54, 12, 5, 13, 120, 50, 66, 25}; + const std::string API_DEV_KEY = {67, 112, 72, 120, 121, 77, 119, 74, 84, 56, + 75, 122, 78, 98, 69, 86, 56, 120, 120, 49}; const std::string API_URL_BASE = "https://www.screenscraper.fr/api2"; const std::string API_SOFT_NAME = "EmulationStation-DE " + static_cast(PROGRAM_VERSION_STRING); diff --git a/es-app/src/views/SystemView.cpp b/es-app/src/views/SystemView.cpp index eb9c285c4..916ac0526 100644 --- a/es-app/src/views/SystemView.cpp +++ b/es-app/src/views/SystemView.cpp @@ -23,8 +23,8 @@ #endif // Buffer values for scrolling velocity (left, stopped, right). -const int logoBuffersLeft[] = { -5, -2, -1 }; -const int logoBuffersRight[] = { 1, 2, 5 }; +const int logoBuffersLeft[] = {-5, -2, -1}; +const int logoBuffersRight[] = {1, 2, 5}; SystemView::SystemView(Window* window) : IList(window, LIST_SCROLL_STYLE_SLOW, LIST_ALWAYS_LOOP) @@ -123,7 +123,7 @@ void SystemView::populate() e.data.logo->setOrigin(0.5, 0.5); } - glm::vec2 denormalized = mCarousel.logoSize * e.data.logo->getOrigin(); + glm::vec2 denormalized{mCarousel.logoSize * e.data.logo->getOrigin()}; e.data.logo->setPosition(denormalized.x, denormalized.y, 0.0f); // Make background extras. @@ -401,7 +401,7 @@ void SystemView::render(const glm::mat4& parentTrans) if (size() == 0) return; // Nothing to render. - glm::mat4 trans = getTransform() * parentTrans; + glm::mat4 trans{getTransform() * parentTrans}; renderExtras(trans, INT16_MIN, INT16_MAX); @@ -475,17 +475,17 @@ void SystemView::getViewElements(const std::shared_ptr& theme) void SystemView::renderCarousel(const glm::mat4& trans) { // Background box behind logos. - glm::mat4 carouselTrans = trans; + glm::mat4 carouselTrans{trans}; carouselTrans = - glm::translate(carouselTrans, glm::vec3(mCarousel.pos.x, mCarousel.pos.y, 0.0f)); + glm::translate(carouselTrans, glm::vec3{mCarousel.pos.x, mCarousel.pos.y, 0.0f}); carouselTrans = glm::translate(carouselTrans, - glm::vec3(mCarousel.origin.x * mCarousel.size.x * -1.0f, - mCarousel.origin.y * mCarousel.size.y * -1.0f, 0.0f)); + glm::vec3{mCarousel.origin.x * mCarousel.size.x * -1.0f, + mCarousel.origin.y * mCarousel.size.y * -1.0f, 0.0f}); - glm::vec2 clipPos(carouselTrans[3].x, carouselTrans[3].y); + glm::vec2 clipPos{carouselTrans[3].x, carouselTrans[3].y}; Renderer::pushClipRect( - Vector2i(static_cast(clipPos.x), static_cast(clipPos.y)), - Vector2i(static_cast(mCarousel.size.x), static_cast(mCarousel.size.y))); + glm::ivec2{static_cast(clipPos.x), static_cast(clipPos.y)}, + glm::ivec2{static_cast(mCarousel.size.x), static_cast(mCarousel.size.y)}); Renderer::setMatrix(carouselTrans); Renderer::drawRect(0.0f, 0.0f, mCarousel.size.x, mCarousel.size.y, mCarousel.color, @@ -493,7 +493,7 @@ void SystemView::renderCarousel(const glm::mat4& trans) // Draw logos. // Note: logoSpacing will also include the size of the logo itself. - glm::vec2 logoSpacing(0.0f, 0.0f); + glm::vec2 logoSpacing{}; float xOff = 0.0f; float yOff = 0.0f; @@ -569,9 +569,9 @@ void SystemView::renderCarousel(const glm::mat4& trans) while (index >= static_cast(mEntries.size())) index -= static_cast(mEntries.size()); - glm::mat4 logoTrans = carouselTrans; + glm::mat4 logoTrans{carouselTrans}; logoTrans = glm::translate( - logoTrans, glm::vec3(i * logoSpacing.x + xOff, i * logoSpacing.y + yOff, 0.0f)); + logoTrans, glm::vec3{i * logoSpacing.x + xOff, i * logoSpacing.y + yOff, 0.0f}); float distance = i - mCamOffset; @@ -600,10 +600,10 @@ void SystemView::renderExtras(const glm::mat4& trans, float lower, float upper) int extrasCenter = static_cast(mExtrasCamOffset); // Adding texture loading buffers depending on scrolling speed and status. - int bufferIndex = getScrollingVelocity() + 1; + int bufferIndex{getScrollingVelocity() + 1}; - Renderer::pushClipRect(Vector2i::Zero(), - Vector2i(static_cast(mSize.x), static_cast(mSize.y))); + Renderer::pushClipRect(glm::ivec2{}, + glm::ivec2{static_cast(mSize.x), static_cast(mSize.y)}); for (int i = extrasCenter + logoBuffersLeft[bufferIndex]; i <= extrasCenter + logoBuffersRight[bufferIndex]; i++) { @@ -615,17 +615,17 @@ void SystemView::renderExtras(const glm::mat4& trans, float lower, float upper) // Only render selected system when not showing. if (mShowing || index == mCursor) { - glm::mat4 extrasTrans = trans; + glm::mat4 extrasTrans{trans}; if (mCarousel.type == HORIZONTAL || mCarousel.type == HORIZONTAL_WHEEL) extrasTrans = glm::translate( - extrasTrans, glm::vec3((i - mExtrasCamOffset) * mSize.x, 0.0f, 0.0f)); + extrasTrans, glm::vec3{(i - mExtrasCamOffset) * mSize.x, 0.0f, 0.0f}); else extrasTrans = glm::translate( - extrasTrans, glm::vec3(0.0f, (i - mExtrasCamOffset) * mSize.y, 0.0f)); + extrasTrans, glm::vec3{0.0f, (i - mExtrasCamOffset) * mSize.y, 0.0f}); Renderer::pushClipRect( - Vector2i(static_cast(extrasTrans[3].x), static_cast(extrasTrans[3].y)), - Vector2i(static_cast(mSize.x), static_cast(mSize.y))); + glm::ivec2{static_cast(extrasTrans[3].x), static_cast(extrasTrans[3].y)}, + glm::ivec2{static_cast(mSize.x), static_cast(mSize.y)}); SystemViewData data = mEntries.at(index).data; for (unsigned int j = 0; j < data.backgroundExtras.size(); j++) { GuiComponent* extra = data.backgroundExtras[j]; diff --git a/es-app/src/views/UIModeController.h b/es-app/src/views/UIModeController.h index f16c4257d..5fbc83721 100644 --- a/es-app/src/views/UIModeController.h +++ b/es-app/src/views/UIModeController.h @@ -58,9 +58,7 @@ private: int mPassKeyCounter; // These are Xbox button names, so they may be different in pracise on non-Xbox controllers. - const std::vector mInputVals = { - "up", "down", "left", "right", "a", "b", "x", "y" - }; + const std::vector mInputVals = {"up", "down", "left", "right", "a", "b", "x", "y"}; }; #endif // ES_APP_VIEWS_UI_MODE_CONTROLLER_H diff --git a/es-app/src/views/ViewController.cpp b/es-app/src/views/ViewController.cpp index a0ebb2889..e4c337335 100644 --- a/es-app/src/views/ViewController.cpp +++ b/es-app/src/views/ViewController.cpp @@ -285,7 +285,7 @@ int ViewController::getSystemId(SystemData* system) void ViewController::restoreViewPosition() { if (mPreviousView) { - glm::vec3 restorePosition = mPreviousView->getPosition(); + glm::vec3 restorePosition{mPreviousView->getPosition()}; restorePosition.x = mWrapPreviousPositionX; mPreviousView->setPosition(restorePosition); mWrapPreviousPositionX = 0; @@ -458,9 +458,9 @@ void ViewController::goToGameList(SystemData* system) // movements will be correct. This is accomplished by simply offsetting the X position // with the position of the first or last system plus the screen width. if (wrapFirstToLast) { - glm::vec3 currentPosition = mCurrentView->getPosition(); + glm::vec3 currentPosition{mCurrentView->getPosition()}; mWrapPreviousPositionX = currentPosition.x; - float offsetX = getGameListView(system)->getPosition().x; + float offsetX{getGameListView(system)->getPosition().x}; // This is needed to move the camera in the correct direction if there are only two systems. if (SystemData::sSystemVector.size() == 2 && mNextSystem) offsetX -= Renderer::getScreenWidth(); @@ -472,9 +472,9 @@ void ViewController::goToGameList(SystemData* system) mWrappedViews = true; } else if (wrapLastToFirst) { - glm::vec3 currentPosition = mCurrentView->getPosition(); + glm::vec3 currentPosition{mCurrentView->getPosition()}; mWrapPreviousPositionX = currentPosition.x; - float offsetX = getGameListView(system)->getPosition().x; + float offsetX{getGameListView(system)->getPosition().x}; if (SystemData::sSystemVector.size() == 2 && !mNextSystem) offsetX += Renderer::getScreenWidth(); else @@ -528,7 +528,7 @@ void ViewController::playViewTransition(bool instant) { mCancelledTransition = false; - glm::vec3 target {}; + glm::vec3 target{}; if (mCurrentView) target = mCurrentView->getPosition(); @@ -537,7 +537,7 @@ void ViewController::playViewTransition(bool instant) if (target == static_cast(-mCamera[3]) && !isAnimationPlaying(0)) return; - std::string transition_style = Settings::getInstance()->getString("TransitionStyle"); + std::string transition_style{Settings::getInstance()->getString("TransitionStyle")}; if (instant || transition_style == "instant") { setAnimation(new LambdaAnimation( @@ -854,15 +854,14 @@ void ViewController::update(int deltaTime) void ViewController::render(const glm::mat4& parentTrans) { - glm::mat4 trans = mCamera * parentTrans; - glm::mat4 transInverse; - transInverse = glm::inverse(trans); + glm::mat4 trans{mCamera * parentTrans}; + glm::mat4 transInverse{glm::inverse(trans)}; // Camera position, position + size. - glm::vec3 viewStart = transInverse[3]; - glm::vec3 viewEnd = { std::fabs(trans[3].x) + static_cast(Renderer::getScreenWidth()), - std::fabs(trans[3].y) + static_cast(Renderer::getScreenHeight()), - 0.0f }; + glm::vec3 viewStart{transInverse[3]}; + glm::vec3 viewEnd{std::fabs(trans[3].x) + static_cast(Renderer::getScreenWidth()), + std::fabs(trans[3].y) + static_cast(Renderer::getScreenHeight()), + 0.0f}; // Keep track of UI mode changes. UIModeController::getInstance()->monitorUIMode(); @@ -877,9 +876,9 @@ void ViewController::render(const glm::mat4& parentTrans) // Same thing as for the system view, limit the rendering only to what needs to be drawn. if (it->second == mCurrentView || (it->second == mPreviousView && isCameraMoving())) { // Clipping. - glm::vec3 guiStart = it->second->getPosition(); - glm::vec3 guiEnd = it->second->getPosition() + - glm::vec3(it->second->getSize().x, it->second->getSize().y, 0.0f); + glm::vec3 guiStart{it->second->getPosition()}; + glm::vec3 guiEnd{it->second->getPosition() + + glm::vec3{it->second->getSize().x, it->second->getSize().y, 0.0f}}; if (guiEnd.x >= viewStart.x && guiEnd.y >= viewStart.y && guiStart.x <= viewEnd.x && guiStart.y <= viewEnd.y) diff --git a/es-app/src/views/gamelist/DetailedGameListView.cpp b/es-app/src/views/gamelist/DetailedGameListView.cpp index e333e3203..cb18d2921 100644 --- a/es-app/src/views/gamelist/DetailedGameListView.cpp +++ b/es-app/src/views/gamelist/DetailedGameListView.cpp @@ -145,10 +145,9 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr& them initMDLabels(); std::vector labels = getMDLabels(); assert(labels.size() == 8); - std::vector lblElements = { "md_lbl_rating", "md_lbl_releasedate", - "md_lbl_developer", "md_lbl_publisher", - "md_lbl_genre", "md_lbl_players", - "md_lbl_lastplayed", "md_lbl_playcount" }; + std::vector lblElements = { + "md_lbl_rating", "md_lbl_releasedate", "md_lbl_developer", "md_lbl_publisher", + "md_lbl_genre", "md_lbl_players", "md_lbl_lastplayed", "md_lbl_playcount"}; for (unsigned int i = 0; i < labels.size(); i++) labels[i]->applyTheme(theme, getName(), lblElements[i], ALL); @@ -156,9 +155,9 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr& them initMDValues(); std::vector values = getMDValues(); assert(values.size() == 8); - std::vector valElements = { "md_rating", "md_releasedate", "md_developer", - "md_publisher", "md_genre", "md_players", - "md_lastplayed", "md_playcount" }; + std::vector valElements = {"md_rating", "md_releasedate", "md_developer", + "md_publisher", "md_genre", "md_players", + "md_lastplayed", "md_playcount"}; for (unsigned int i = 0; i < values.size(); i++) values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT); @@ -172,7 +171,7 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr& them mGamelistInfo.applyTheme(theme, getName(), "gamelistInfo", ALL ^ ThemeFlags::TEXT); // If there is no position defined in the theme for gamelistInfo, then hide it. - if (mGamelistInfo.getPosition() == glm::vec3 {}) + if (mGamelistInfo.getPosition() == glm::vec3{}) mGamelistInfo.setVisible(false); else mGamelistInfo.setVisible(true); @@ -187,21 +186,21 @@ void DetailedGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - glm::vec3 start(mSize.x * 0.01f, mSize.y * 0.625f, 0.0f); + glm::vec3 start{mSize.x * 0.01f, mSize.y * 0.625f, 0.0f}; const float colSize = (mSize.x * 0.48f) / colCount; const float rowPadding = 0.01f * mSize.y; for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; - glm::vec3 pos {}; + glm::vec3 pos{}; if (row == 0) { - pos = start + glm::vec3(colSize * (i / rowCount), 0.0f, 0.0f); + pos = start + glm::vec3{colSize * (i / rowCount), 0.0f, 0.0f}; } else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y + rowPadding, 0.0f); + pos = lc->getPosition() + glm::vec3{0.0f, lc->getSize().y + rowPadding, 0.0f}; } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); @@ -231,7 +230,7 @@ void DetailedGameListView::initMDValues() for (unsigned int i = 0; i < labels.size(); i++) { const float heightDiff = (labels[i]->getSize().y - values[i]->getSize().y) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - glm::vec3(labels[i]->getSize().x, heightDiff, 0.0f)); + glm::vec3{labels[i]->getSize().x, heightDiff, 0.0f}); values[i]->setSize(colSize - labels[i]->getSize().x, values[i]->getSize().y); values[i]->setDefaultZIndex(40.0f); diff --git a/es-app/src/views/gamelist/GridGameListView.cpp b/es-app/src/views/gamelist/GridGameListView.cpp index cb5331ff7..5744575f3 100644 --- a/es-app/src/views/gamelist/GridGameListView.cpp +++ b/es-app/src/views/gamelist/GridGameListView.cpp @@ -244,10 +244,9 @@ void GridGameListView::onThemeChanged(const std::shared_ptr& theme) initMDLabels(); std::vector labels = getMDLabels(); assert(labels.size() == 8); - std::vector lblElements = { "md_lbl_rating", "md_lbl_releasedate", - "md_lbl_developer", "md_lbl_publisher", - "md_lbl_genre", "md_lbl_players", - "md_lbl_lastplayed", "md_lbl_playcount" }; + std::vector lblElements = { + "md_lbl_rating", "md_lbl_releasedate", "md_lbl_developer", "md_lbl_publisher", + "md_lbl_genre", "md_lbl_players", "md_lbl_lastplayed", "md_lbl_playcount"}; for (unsigned int i = 0; i < labels.size(); i++) labels[i]->applyTheme(theme, getName(), lblElements[i], ALL); @@ -255,9 +254,9 @@ void GridGameListView::onThemeChanged(const std::shared_ptr& theme) initMDValues(); std::vector values = getMDValues(); assert(values.size() == 8); - std::vector valElements = { "md_rating", "md_releasedate", "md_developer", - "md_publisher", "md_genre", "md_players", - "md_lastplayed", "md_playcount" }; + std::vector valElements = {"md_rating", "md_releasedate", "md_developer", + "md_publisher", "md_genre", "md_players", + "md_lastplayed", "md_playcount"}; for (unsigned int i = 0; i < values.size(); i++) values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT); @@ -277,7 +276,7 @@ void GridGameListView::onThemeChanged(const std::shared_ptr& theme) mGamelistInfo.applyTheme(theme, getName(), "gamelistInfo", ALL ^ ThemeFlags::TEXT); // If there is no position defined in the theme for gamelistInfo, then hide it. - if (mGamelistInfo.getPosition() == glm::vec3({})) + if (mGamelistInfo.getPosition() == glm::vec3{}) mGamelistInfo.setVisible(false); else mGamelistInfo.setVisible(true); @@ -298,21 +297,21 @@ void GridGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - glm::vec3 start(mSize.x * 0.01f, mSize.y * 0.625f, 0.0f); + glm::vec3 start{mSize.x * 0.01f, mSize.y * 0.625f, 0.0f}; const float colSize = (mSize.x * 0.48f) / colCount; const float rowPadding = 0.01f * mSize.y; for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; - glm::vec3 pos {}; + glm::vec3 pos{}; if (row == 0) { - pos = start + glm::vec3(colSize * (i / rowCount), 0.0f, 0.0f); + pos = start + glm::vec3{colSize * (i / rowCount), 0.0f, 0.0f}; } else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y + rowPadding, 0.0f); + pos = lc->getPosition() + glm::vec3{0.0f, lc->getSize().y + rowPadding, 0.0f}; } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); @@ -342,7 +341,7 @@ void GridGameListView::initMDValues() for (unsigned int i = 0; i < labels.size(); i++) { const float heightDiff = (labels[i]->getSize().y - values[i]->getSize().y) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - glm::vec3(labels[i]->getSize().x, heightDiff, 0.0f)); + glm::vec3{labels[i]->getSize().x, heightDiff, 0.0f}); values[i]->setSize(colSize - labels[i]->getSize().x, values[i]->getSize().y); values[i]->setDefaultZIndex(40.0f); diff --git a/es-app/src/views/gamelist/IGameListView.cpp b/es-app/src/views/gamelist/IGameListView.cpp index 6f129dd9f..6412b7b9b 100644 --- a/es-app/src/views/gamelist/IGameListView.cpp +++ b/es-app/src/views/gamelist/IGameListView.cpp @@ -62,15 +62,15 @@ HelpStyle IGameListView::getHelpStyle() void IGameListView::render(const glm::mat4& parentTrans) { - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; float scaleX = trans[0].x; float scaleY = trans[1].y; - Vector2i pos(static_cast(std::round(trans[3].x)), - static_cast(std::round(trans[3].y))); - Vector2i size(static_cast(std::round(mSize.x * scaleX)), - static_cast(std::round(mSize.y * scaleY))); + glm::ivec2 pos{static_cast(std::round(trans[3].x)), + static_cast(std::round(trans[3].y))}; + glm::ivec2 size{static_cast(std::round(mSize.x * scaleX)), + static_cast(std::round(mSize.y * scaleY))}; Renderer::pushClipRect(pos, size); renderChildren(trans); diff --git a/es-app/src/views/gamelist/VideoGameListView.cpp b/es-app/src/views/gamelist/VideoGameListView.cpp index ab4cd8012..6f986f995 100644 --- a/es-app/src/views/gamelist/VideoGameListView.cpp +++ b/es-app/src/views/gamelist/VideoGameListView.cpp @@ -167,10 +167,9 @@ void VideoGameListView::onThemeChanged(const std::shared_ptr& theme) initMDLabels(); std::vector labels = getMDLabels(); assert(labels.size() == 8); - std::vector lblElements = { "md_lbl_rating", "md_lbl_releasedate", - "md_lbl_developer", "md_lbl_publisher", - "md_lbl_genre", "md_lbl_players", - "md_lbl_lastplayed", "md_lbl_playcount" }; + std::vector lblElements = { + "md_lbl_rating", "md_lbl_releasedate", "md_lbl_developer", "md_lbl_publisher", + "md_lbl_genre", "md_lbl_players", "md_lbl_lastplayed", "md_lbl_playcount"}; for (unsigned int i = 0; i < labels.size(); i++) labels[i]->applyTheme(theme, getName(), lblElements[i], ALL); @@ -178,9 +177,9 @@ void VideoGameListView::onThemeChanged(const std::shared_ptr& theme) initMDValues(); std::vector values = getMDValues(); assert(values.size() == 8); - std::vector valElements = { "md_rating", "md_releasedate", "md_developer", - "md_publisher", "md_genre", "md_players", - "md_lastplayed", "md_playcount" }; + std::vector valElements = {"md_rating", "md_releasedate", "md_developer", + "md_publisher", "md_genre", "md_players", + "md_lastplayed", "md_playcount"}; for (unsigned int i = 0; i < values.size(); i++) values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT); @@ -194,7 +193,7 @@ void VideoGameListView::onThemeChanged(const std::shared_ptr& theme) mGamelistInfo.applyTheme(theme, getName(), "gamelistInfo", ALL ^ ThemeFlags::TEXT); // If there is no position defined in the theme for gamelistInfo, then hide it. - if (mGamelistInfo.getPosition() == glm::vec3({})) + if (mGamelistInfo.getPosition() == glm::vec3{}) mGamelistInfo.setVisible(false); else mGamelistInfo.setVisible(true); @@ -209,21 +208,21 @@ void VideoGameListView::initMDLabels() const unsigned int colCount = 2; const unsigned int rowCount = static_cast(components.size() / 2); - glm::vec3 start(mSize.x * 0.01f, mSize.y * 0.625f, 0.0f); + glm::vec3 start{mSize.x * 0.01f, mSize.y * 0.625f, 0.0f}; const float colSize = (mSize.x * 0.48f) / colCount; const float rowPadding = 0.01f * mSize.y; for (unsigned int i = 0; i < components.size(); i++) { const unsigned int row = i % rowCount; - glm::vec3 pos {}; + glm::vec3 pos{}; if (row == 0) { - pos = start + glm::vec3(colSize * (i / rowCount), 0.0f, 0.0f); + pos = start + glm::vec3{colSize * (i / rowCount), 0.0f, 0.0f}; } else { // Work from the last component. GuiComponent* lc = components[i - 1]; - pos = lc->getPosition() + glm::vec3(0.0f, lc->getSize().y + rowPadding, 0.0f); + pos = lc->getPosition() + glm::vec3{0.0f, lc->getSize().y + rowPadding, 0.0f}; } components[i]->setFont(Font::get(FONT_SIZE_SMALL)); @@ -253,7 +252,7 @@ void VideoGameListView::initMDValues() for (unsigned int i = 0; i < labels.size(); i++) { const float heightDiff = (labels[i]->getSize().y - values[i]->getSize().y) / 2.0f; values[i]->setPosition(labels[i]->getPosition() + - glm::vec3(labels[i]->getSize().x, heightDiff, 0.0f)); + glm::vec3{labels[i]->getSize().x, heightDiff, 0.0f}); values[i]->setSize(colSize - labels[i]->getSize().x, values[i]->getSize().y); values[i]->setDefaultZIndex(40.0f); diff --git a/es-core/src/GuiComponent.cpp b/es-core/src/GuiComponent.cpp index 14848b379..d2e55030b 100644 --- a/es-core/src/GuiComponent.cpp +++ b/es-core/src/GuiComponent.cpp @@ -83,7 +83,7 @@ void GuiComponent::render(const glm::mat4& parentTrans) if (!isVisible()) return; - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; renderChildren(trans); } @@ -95,26 +95,26 @@ void GuiComponent::renderChildren(const glm::mat4& transform) const void GuiComponent::setPosition(float x, float y, float z) { - mPosition = glm::vec3(x, y, z); + mPosition = glm::vec3{x, y, z}; onPositionChanged(); } void GuiComponent::setOrigin(float x, float y) { - mOrigin = glm::vec2(x, y); + mOrigin = glm::vec2{x, y}; onOriginChanged(); } void GuiComponent::setSize(float w, float h) { - mSize = glm::vec2(w, h); + mSize = glm::vec2{w, h}; onSizeChanged(); } glm::vec2 GuiComponent::getCenter() const { - return glm::vec2(mPosition.x - (getSize().x * mOrigin.x) + getSize().x / 2.0f, - mPosition.y - (getSize().y * mOrigin.y) + getSize().y / 2.0f); + return glm::vec2{mPosition.x - (getSize().x * mOrigin.x) + getSize().x / 2.0f, + mPosition.y - (getSize().y * mOrigin.y) + getSize().y / 2.0f}; } void GuiComponent::addChild(GuiComponent* cmp) @@ -177,27 +177,27 @@ const glm::mat4& GuiComponent::getTransform() mTransform = glm::translate(mTransform, mPosition); if (mScale != 1.0f) - mTransform = glm::scale(mTransform, glm::vec3(mScale)); + mTransform = glm::scale(mTransform, glm::vec3{mScale}); if (mRotation != 0.0f) { // Calculate offset as difference between origin and rotation origin. - glm::vec2 rotationSize = getRotationSize(); - float xOff = (mOrigin.x - mRotationOrigin.x) * rotationSize.x; - float yOff = (mOrigin.y - mRotationOrigin.y) * rotationSize.y; + glm::vec2 rotationSize{getRotationSize()}; + float xOff{(mOrigin.x - mRotationOrigin.x) * rotationSize.x}; + float yOff{(mOrigin.y - mRotationOrigin.y) * rotationSize.y}; // Transform to offset point. if (xOff != 0.0f || yOff != 0.0f) - mTransform = glm::translate(mTransform, glm::vec3(xOff * -1.0f, yOff * -1.0f, 0.0f)); + mTransform = glm::translate(mTransform, glm::vec3{xOff * -1.0f, yOff * -1.0f, 0.0f}); // Apply rotation transform. - mTransform = glm::rotate(mTransform, mRotation, glm::vec3(0.0f, 0.0f, 1.0f)); + mTransform = glm::rotate(mTransform, mRotation, glm::vec3{0.0f, 0.0f, 1.0f}); // Transform back to original point. if (xOff != 0.0f || yOff != 0.0f) - mTransform = glm::translate(mTransform, glm::vec3(xOff, yOff, 0.0f)); + mTransform = glm::translate(mTransform, glm::vec3{xOff, yOff, 0.0f}); } mTransform = glm::translate( - mTransform, glm::vec3(mOrigin.x * mSize.x * -1.0f, mOrigin.y * mSize.y * -1.0f, 0.0f)); + mTransform, glm::vec3{mOrigin.x * mSize.x * -1.0f, mOrigin.y * mSize.y * -1.0f, 0.0f}); return mTransform; } @@ -302,9 +302,9 @@ void GuiComponent::applyTheme(const std::shared_ptr& theme, const std::string& element, unsigned int properties) { - glm::vec2 scale = getParent() ? getParent()->getSize() : - glm::vec2(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 scale{getParent() ? getParent()->getSize() : + glm::vec2{static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())}}; const ThemeData::ThemeElement* elem = theme->getElement(view, element, ""); if (!elem) @@ -312,8 +312,8 @@ void GuiComponent::applyTheme(const std::shared_ptr& theme, using namespace ThemeFlags; if (properties & POSITION && elem->has("pos")) { - glm::vec2 denormalized = elem->get("pos") * scale; - setPosition(glm::vec3(denormalized.x, denormalized.y, 0.0f)); + glm::vec2 denormalized{elem->get("pos") * scale}; + setPosition(glm::vec3{denormalized.x, denormalized.y, 0.0f}); } if (properties & ThemeFlags::SIZE && elem->has("size")) diff --git a/es-core/src/GuiComponent.h b/es-core/src/GuiComponent.h index 658418d13..ce506cc2d 100644 --- a/es-core/src/GuiComponent.h +++ b/es-core/src/GuiComponent.h @@ -58,7 +58,7 @@ public: // By default, just calls renderChildren(parentTrans * getTransform()) // Normally the following steps are required: // 1. Calculate the new transform that your component will draw at - // glm::mat4 trans = parentTrans * getTransform(); + // glm::mat4 trans {parentTrans * getTransform()}; // 2. Set the renderer to use that new transform as the model matrix // Renderer::setMatrix(trans); // 3. Draw your component @@ -83,7 +83,7 @@ public: // (e.g. (0, 0) is top left, (0.5, 0.5) is the center.) void setRotationOrigin(float originX, float originY) { - mRotationOrigin = glm::vec2(originX, originY); + mRotationOrigin = glm::vec2{originX, originY}; } void setRotationOrigin(glm::vec2 origin) { setRotationOrigin(origin.x, origin.y); } diff --git a/es-core/src/HelpStyle.cpp b/es-core/src/HelpStyle.cpp index 866ef4684..2a6cb917a 100644 --- a/es-core/src/HelpStyle.cpp +++ b/es-core/src/HelpStyle.cpp @@ -14,8 +14,8 @@ HelpStyle::HelpStyle() { position = - glm::vec2(Renderer::getScreenWidth() * 0.012f, Renderer::getScreenHeight() * 0.9515f); - origin = glm::vec2(0.0f, 0.0f); + glm::vec2{Renderer::getScreenWidth() * 0.012f, Renderer::getScreenHeight() * 0.9515f}; + origin = glm::vec2{}; iconColor = 0x777777FF; textColor = 0x777777FF; @@ -33,8 +33,8 @@ void HelpStyle::applyTheme(const std::shared_ptr& theme, const std::s if (elem->has("pos")) position = elem->get("pos") * - glm::vec2(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2{static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())}; if (elem->has("origin")) origin = elem->get("origin"); diff --git a/es-core/src/Log.h b/es-core/src/Log.h index da45efd9f..9d98951a0 100644 --- a/es-core/src/Log.h +++ b/es-core/src/Log.h @@ -49,12 +49,11 @@ protected: std::ostringstream os; private: - std::map logLevelMap { // Log level indicators. - { LogError, "Error" }, - { LogWarning, "Warn" }, - { LogInfo, "Info" }, - { LogDebug, "Debug" } - }; + std::map logLevelMap{// Log level indicators. + {LogError, "Error"}, + {LogWarning, "Warn"}, + {LogInfo, "Info"}, + {LogDebug, "Debug"}}; static LogLevel reportingLevel; LogLevel messageLevel; diff --git a/es-core/src/MameNames.cpp b/es-core/src/MameNames.cpp index 30b1f4748..a3ff474e3 100644 --- a/es-core/src/MameNames.cpp +++ b/es-core/src/MameNames.cpp @@ -68,8 +68,8 @@ MameNames::MameNames() for (pugi::xml_node gameNode = doc.child("game"); gameNode; gameNode = gameNode.next_sibling("game")) { - NamePair namePair = { gameNode.child("mamename").text().get(), - gameNode.child("realname").text().get() }; + NamePair namePair = {gameNode.child("mamename").text().get(), + gameNode.child("realname").text().get()}; mNamePairs.push_back(namePair); } diff --git a/es-core/src/Platform.cpp b/es-core/src/Platform.cpp index e0a70729c..8319555ba 100644 --- a/es-core/src/Platform.cpp +++ b/es-core/src/Platform.cpp @@ -139,7 +139,7 @@ int launchGameUnix(const std::string& cmd_utf8, bool runInBackground) int launchGameWindows(const std::wstring& cmd_utf16, bool runInBackground, bool hideWindow) { #if defined(_WIN64) - STARTUPINFOW si {}; + STARTUPINFOW si{}; PROCESS_INFORMATION pi; si.cb = sizeof(si); diff --git a/es-core/src/Settings.cpp b/es-core/src/Settings.cpp index 1d1822a54..633a25c9f 100644 --- a/es-core/src/Settings.cpp +++ b/es-core/src/Settings.cpp @@ -97,161 +97,161 @@ void Settings::setDefaults() // // Scraper. - mStringMap["Scraper"] = { "screenscraper", "screenscraper" }; - mBoolMap["ScraperUseAccountScreenScraper"] = { false, false }; - mStringMap["ScraperUsernameScreenScraper"] = { "", "" }; - mStringMap["ScraperPasswordScreenScraper"] = { "", "" }; + mStringMap["Scraper"] = {"screenscraper", "screenscraper"}; + mBoolMap["ScraperUseAccountScreenScraper"] = {false, false}; + mStringMap["ScraperUsernameScreenScraper"] = {"", ""}; + mStringMap["ScraperPasswordScreenScraper"] = {"", ""}; - mBoolMap["ScrapeGameNames"] = { true, true }; - mBoolMap["ScrapeRatings"] = { true, true }; - mBoolMap["ScrapeMetadata"] = { true, true }; - mBoolMap["ScrapeVideos"] = { true, true }; - mBoolMap["ScrapeScreenshots"] = { true, true }; - mBoolMap["ScrapeCovers"] = { true, true }; - mBoolMap["ScrapeMarquees"] = { true, true }; - mBoolMap["Scrape3DBoxes"] = { true, true }; + mBoolMap["ScrapeGameNames"] = {true, true}; + mBoolMap["ScrapeRatings"] = {true, true}; + mBoolMap["ScrapeMetadata"] = {true, true}; + mBoolMap["ScrapeVideos"] = {true, true}; + mBoolMap["ScrapeScreenshots"] = {true, true}; + mBoolMap["ScrapeCovers"] = {true, true}; + mBoolMap["ScrapeMarquees"] = {true, true}; + mBoolMap["Scrape3DBoxes"] = {true, true}; - mStringMap["MiximageResolution"] = { "1280x960", "1280x960" }; - mStringMap["MiximageScreenshotScaling"] = { "sharp", "sharp" }; - mBoolMap["MiximageGenerate"] = { true, true }; - mBoolMap["MiximageOverwrite"] = { true, true }; - mBoolMap["MiximageRemoveLetterboxes"] = { true, true }; - mBoolMap["MiximageRemovePillarboxes"] = { true, true }; - mBoolMap["MiximageIncludeMarquee"] = { true, true }; - mBoolMap["MiximageIncludeBox"] = { true, true }; - mBoolMap["MiximageCoverFallback"] = { true, true }; + mStringMap["MiximageResolution"] = {"1280x960", "1280x960"}; + mStringMap["MiximageScreenshotScaling"] = {"sharp", "sharp"}; + mBoolMap["MiximageGenerate"] = {true, true}; + mBoolMap["MiximageOverwrite"] = {true, true}; + mBoolMap["MiximageRemoveLetterboxes"] = {true, true}; + mBoolMap["MiximageRemovePillarboxes"] = {true, true}; + mBoolMap["MiximageIncludeMarquee"] = {true, true}; + mBoolMap["MiximageIncludeBox"] = {true, true}; + mBoolMap["MiximageCoverFallback"] = {true, true}; - mStringMap["ScraperRegion"] = { "eu", "eu" }; - mStringMap["ScraperLanguage"] = { "en", "en" }; - mBoolMap["ScraperOverwriteData"] = { true, true }; - mBoolMap["ScraperHaltOnInvalidMedia"] = { true, true }; - mBoolMap["ScraperSearchMetadataName"] = { true, true }; - mBoolMap["ScraperInteractive"] = { true, true }; - mBoolMap["ScraperSemiautomatic"] = { true, true }; - mBoolMap["ScraperRespectExclusions"] = { true, true }; - mBoolMap["ScraperExcludeRecursively"] = { true, true }; - mBoolMap["ScraperIncludeFolders"] = { false, false }; - mBoolMap["ScraperRetryPeerVerification"] = { false, false }; + mStringMap["ScraperRegion"] = {"eu", "eu"}; + mStringMap["ScraperLanguage"] = {"en", "en"}; + mBoolMap["ScraperOverwriteData"] = {true, true}; + mBoolMap["ScraperHaltOnInvalidMedia"] = {true, true}; + mBoolMap["ScraperSearchMetadataName"] = {true, true}; + mBoolMap["ScraperInteractive"] = {true, true}; + mBoolMap["ScraperSemiautomatic"] = {true, true}; + mBoolMap["ScraperRespectExclusions"] = {true, true}; + mBoolMap["ScraperExcludeRecursively"] = {true, true}; + mBoolMap["ScraperIncludeFolders"] = {false, false}; + mBoolMap["ScraperRetryPeerVerification"] = {false, false}; // UI settings. - mStringMap["StartupSystem"] = { "", "" }; - mStringMap["GamelistViewStyle"] = { "automatic", "automatic" }; - mStringMap["TransitionStyle"] = { "slide", "slide" }; - mStringMap["ThemeSet"] = { "rbsimple-DE", "rbsimple-DE" }; - mStringMap["UIMode"] = { "full", "full" }; - mStringMap["DefaultSortOrder"] = { "filename, ascending", "filename, ascending" }; - mStringMap["MenuOpeningEffect"] = { "scale-up", "scale-up" }; - mStringMap["LaunchScreenDuration"] = { "normal", "normal" }; - mBoolMap["MenuBlurBackground"] = { true, true }; - mBoolMap["GamelistVideoPillarbox"] = { true, true }; - mBoolMap["GamelistVideoScanlines"] = { false, false }; - mBoolMap["FoldersOnTop"] = { true, true }; - mBoolMap["FavoritesFirst"] = { true, true }; - mBoolMap["FavoritesStar"] = { true, true }; - mBoolMap["SpecialCharsASCII"] = { false, false }; - mBoolMap["ListScrollOverlay"] = { false, false }; - mBoolMap["FavoritesAddButton"] = { true, true }; - mBoolMap["RandomAddButton"] = { false, false }; - mBoolMap["GamelistFilters"] = { true, true }; - mBoolMap["QuickSystemSelect"] = { true, true }; - mBoolMap["ShowHelpPrompts"] = { true, true }; - mBoolMap["PlayVideosImmediately"] = { false, false }; - mBoolMap["EnableMenuKidMode"] = { false, false }; + mStringMap["StartupSystem"] = {"", ""}; + mStringMap["GamelistViewStyle"] = {"automatic", "automatic"}; + mStringMap["TransitionStyle"] = {"slide", "slide"}; + mStringMap["ThemeSet"] = {"rbsimple-DE", "rbsimple-DE"}; + mStringMap["UIMode"] = {"full", "full"}; + mStringMap["DefaultSortOrder"] = {"filename, ascending", "filename, ascending"}; + mStringMap["MenuOpeningEffect"] = {"scale-up", "scale-up"}; + mStringMap["LaunchScreenDuration"] = {"normal", "normal"}; + mBoolMap["MenuBlurBackground"] = {true, true}; + mBoolMap["GamelistVideoPillarbox"] = {true, true}; + mBoolMap["GamelistVideoScanlines"] = {false, false}; + mBoolMap["FoldersOnTop"] = {true, true}; + mBoolMap["FavoritesFirst"] = {true, true}; + mBoolMap["FavoritesStar"] = {true, true}; + mBoolMap["SpecialCharsASCII"] = {false, false}; + mBoolMap["ListScrollOverlay"] = {false, false}; + mBoolMap["FavoritesAddButton"] = {true, true}; + mBoolMap["RandomAddButton"] = {false, false}; + mBoolMap["GamelistFilters"] = {true, true}; + mBoolMap["QuickSystemSelect"] = {true, true}; + mBoolMap["ShowHelpPrompts"] = {true, true}; + mBoolMap["PlayVideosImmediately"] = {false, false}; + mBoolMap["EnableMenuKidMode"] = {false, false}; // UI settings -> media viewer settings. - mBoolMap["MediaViewerKeepVideoRunning"] = { true, true }; - mBoolMap["MediaViewerStretchVideos"] = { false, false }; - mBoolMap["MediaViewerVideoScanlines"] = { true, true }; - mBoolMap["MediaViewerVideoBlur"] = { false, false }; - mBoolMap["MediaViewerScreenshotScanlines"] = { true, true }; + mBoolMap["MediaViewerKeepVideoRunning"] = {true, true}; + mBoolMap["MediaViewerStretchVideos"] = {false, false}; + mBoolMap["MediaViewerVideoScanlines"] = {true, true}; + mBoolMap["MediaViewerVideoBlur"] = {false, false}; + mBoolMap["MediaViewerScreenshotScanlines"] = {true, true}; // UI settings -> screensaver settings. - mIntMap["ScreensaverTimer"] = { 5 * 60 * 1000, 5 * 60 * 1000 }; // 5 minutes. - mStringMap["ScreensaverType"] = { "video", "video" }; - mBoolMap["ScreensaverControls"] = { true, true }; + mIntMap["ScreensaverTimer"] = {5 * 60 * 1000, 5 * 60 * 1000}; // 5 minutes. + mStringMap["ScreensaverType"] = {"video", "video"}; + mBoolMap["ScreensaverControls"] = {true, true}; // UI settings -> screensaver settings -> slideshow screensaver settings. - mIntMap["ScreensaverSwapImageTimeout"] = { 10000, 10000 }; - mBoolMap["ScreensaverStretchImages"] = { false, false }; - mBoolMap["ScreensaverSlideshowGameInfo"] = { true, true }; - mBoolMap["ScreensaverSlideshowScanlines"] = { true, true }; - mBoolMap["ScreensaverSlideshowCustomImages"] = { false, false }; - mBoolMap["ScreensaverSlideshowRecurse"] = { false, false }; - mStringMap["ScreensaverSlideshowImageDir"] = { "~/.emulationstation/slideshow/custom_images", - "~/.emulationstation/slideshow/custom_images" }; + mIntMap["ScreensaverSwapImageTimeout"] = {10000, 10000}; + mBoolMap["ScreensaverStretchImages"] = {false, false}; + mBoolMap["ScreensaverSlideshowGameInfo"] = {true, true}; + mBoolMap["ScreensaverSlideshowScanlines"] = {true, true}; + mBoolMap["ScreensaverSlideshowCustomImages"] = {false, false}; + mBoolMap["ScreensaverSlideshowRecurse"] = {false, false}; + mStringMap["ScreensaverSlideshowImageDir"] = {"~/.emulationstation/slideshow/custom_images", + "~/.emulationstation/slideshow/custom_images"}; // UI settings -> screensaver settings -> video screensaver settings. - mIntMap["ScreensaverSwapVideoTimeout"] = { 0, 0 }; - mBoolMap["ScreensaverStretchVideos"] = { false, false }; - mBoolMap["ScreensaverVideoGameInfo"] = { true, true }; - mBoolMap["ScreensaverVideoScanlines"] = { true, true }; - mBoolMap["ScreensaverVideoBlur"] = { false, false }; + mIntMap["ScreensaverSwapVideoTimeout"] = {0, 0}; + mBoolMap["ScreensaverStretchVideos"] = {false, false}; + mBoolMap["ScreensaverVideoGameInfo"] = {true, true}; + mBoolMap["ScreensaverVideoScanlines"] = {true, true}; + mBoolMap["ScreensaverVideoBlur"] = {false, false}; // Sound settings. - mIntMap["SoundVolumeNavigation"] = { 80, 80 }; - mIntMap["SoundVolumeVideos"] = { 100, 100 }; - mBoolMap["GamelistVideoAudio"] = { true, true }; - mBoolMap["MediaViewerVideoAudio"] = { true, true }; - mBoolMap["ScreensaverVideoAudio"] = { false, false }; - mBoolMap["NavigationSounds"] = { true, true }; + mIntMap["SoundVolumeNavigation"] = {80, 80}; + mIntMap["SoundVolumeVideos"] = {100, 100}; + mBoolMap["GamelistVideoAudio"] = {true, true}; + mBoolMap["MediaViewerVideoAudio"] = {true, true}; + mBoolMap["ScreensaverVideoAudio"] = {false, false}; + mBoolMap["NavigationSounds"] = {true, true}; // Input device settings. - mStringMap["InputControllerType"] = { "xbox", "xbox" }; - mBoolMap["InputOnlyFirstController"] = { false, false }; + mStringMap["InputControllerType"] = {"xbox", "xbox"}; + mBoolMap["InputOnlyFirstController"] = {false, false}; // Game collection settings. - mStringMap["CollectionSystemsAuto"] = { "", "" }; - mStringMap["CollectionSystemsCustom"] = { "", "" }; - mBoolMap["FavFirstCustom"] = { false, false }; - mBoolMap["FavStarCustom"] = { false, false }; - mBoolMap["UseCustomCollectionsSystem"] = { true, true }; - mBoolMap["CollectionShowSystemInfo"] = { true, true }; + mStringMap["CollectionSystemsAuto"] = {"", ""}; + mStringMap["CollectionSystemsCustom"] = {"", ""}; + mBoolMap["FavFirstCustom"] = {false, false}; + mBoolMap["FavStarCustom"] = {false, false}; + mBoolMap["UseCustomCollectionsSystem"] = {true, true}; + mBoolMap["CollectionShowSystemInfo"] = {true, true}; // Other settings. #if defined(_RPI_) - mIntMap["MaxVRAM"] = { 80, 80 }; + mIntMap["MaxVRAM"] = {80, 80}; #else - mIntMap["MaxVRAM"] = { 256, 256 }; + mIntMap["MaxVRAM"] = {256, 256}; #endif - mIntMap["DisplayIndex"] = { 1, 1 }; + mIntMap["DisplayIndex"] = {1, 1}; #if defined(__unix__) - mStringMap["FullscreenMode"] = { "normal", "normal" }; + mStringMap["FullscreenMode"] = {"normal", "normal"}; #endif #if defined(BUILD_VLC_PLAYER) #if defined(_RPI_) // As the FFmpeg video player is not HW accelerated, use VLC as default on this weak device. - mStringMap["VideoPlayer"] = { "vlc", "vlc" }; + mStringMap["VideoPlayer"] = {"vlc", "vlc"}; #else - mStringMap["VideoPlayer"] = { "ffmpeg", "ffmpeg" }; + mStringMap["VideoPlayer"] = {"ffmpeg", "ffmpeg"}; #endif #endif - mStringMap["ExitButtonCombo"] = { "F4", "F4" }; - mStringMap["SaveGamelistsMode"] = { "always", "always" }; + mStringMap["ExitButtonCombo"] = {"F4", "F4"}; + mStringMap["SaveGamelistsMode"] = {"always", "always"}; #if defined(_WIN64) - mBoolMap["HideTaskbar"] = { false, false }; + mBoolMap["HideTaskbar"] = {false, false}; #endif - mBoolMap["RunInBackground"] = { false, false }; + mBoolMap["RunInBackground"] = {false, false}; #if defined(_WIN64) - mBoolMap["LaunchWorkaround"] = { true, true }; + mBoolMap["LaunchWorkaround"] = {true, true}; #endif - mStringMap["MediaDirectory"] = { "", "" }; + mStringMap["MediaDirectory"] = {"", ""}; #if !defined(_RPI_) - mBoolMap["VideoHardwareDecoding"] = { false, false }; + mBoolMap["VideoHardwareDecoding"] = {false, false}; #endif - mBoolMap["VideoUpscaleFrameRate"] = { false, false }; - mBoolMap["LaunchCommandOverride"] = { true, true }; - mBoolMap["ShowHiddenFiles"] = { true, true }; - mBoolMap["ShowHiddenGames"] = { true, true }; - mBoolMap["CustomEventScripts"] = { false, false }; - mBoolMap["ParseGamelistOnly"] = { false, false }; + mBoolMap["VideoUpscaleFrameRate"] = {false, false}; + mBoolMap["LaunchCommandOverride"] = {true, true}; + mBoolMap["ShowHiddenFiles"] = {true, true}; + mBoolMap["ShowHiddenGames"] = {true, true}; + mBoolMap["CustomEventScripts"] = {false, false}; + mBoolMap["ParseGamelistOnly"] = {false, false}; #if defined(__unix__) - mBoolMap["DisableComposition"] = { true, true }; + mBoolMap["DisableComposition"] = {true, true}; #endif - mBoolMap["DisplayGPUStatistics"] = { false, false }; + mBoolMap["DisplayGPUStatistics"] = {false, false}; // macOS requires root privileges to reboot and power off so it doesn't make much // sense to enable this setting and menu entry for that operating system. #if !defined(__APPLE__) - mBoolMap["ShowQuitMenu"] = { false, false }; + mBoolMap["ShowQuitMenu"] = {false, false}; #endif // @@ -259,45 +259,45 @@ void Settings::setDefaults() // // Options listed using --help - mBoolMap["Debug"] = { false, false }; - mBoolMap["ForceFull"] = { false, false }; - mBoolMap["ForceKid"] = { false, false }; - mBoolMap["ForceKiosk"] = { false, false }; - mBoolMap["IgnoreGamelist"] = { false, false }; - mBoolMap["SplashScreen"] = { true, true }; - mBoolMap["VSync"] = { true, true }; + mBoolMap["Debug"] = {false, false}; + mBoolMap["ForceFull"] = {false, false}; + mBoolMap["ForceKid"] = {false, false}; + mBoolMap["ForceKiosk"] = {false, false}; + mBoolMap["IgnoreGamelist"] = {false, false}; + mBoolMap["SplashScreen"] = {true, true}; + mBoolMap["VSync"] = {true, true}; #if !defined(_WIN64) - mBoolMap["Windowed"] = { false, false }; + mBoolMap["Windowed"] = {false, false}; #endif - mIntMap["WindowWidth"] = { 0, 0 }; - mIntMap["WindowHeight"] = { 0, 0 }; - mIntMap["ScreenWidth"] = { 0, 0 }; + mIntMap["WindowWidth"] = {0, 0}; + mIntMap["WindowHeight"] = {0, 0}; + mIntMap["ScreenWidth"] = {0, 0}; // Undocumented options. - mIntMap["ScreenHeight"] = { 0, 0 }; - mIntMap["ScreenOffsetX"] = { 0, 0 }; - mIntMap["ScreenOffsetY"] = { 0, 0 }; - mIntMap["ScreenRotate"] = { 0, 0 }; + mIntMap["ScreenHeight"] = {0, 0}; + mIntMap["ScreenOffsetX"] = {0, 0}; + mIntMap["ScreenOffsetY"] = {0, 0}; + mIntMap["ScreenRotate"] = {0, 0}; // // Settings that can be changed in es_settings.xml // but that are not configurable via the GUI. // - mBoolMap["DebugSkipInputLogging"] = { false, false }; - mStringMap["ROMDirectory"] = { "", "" }; - mStringMap["UIMode_passkey"] = { "uuddlrlrba", "uuddlrlrba" }; + mBoolMap["DebugSkipInputLogging"] = {false, false}; + mStringMap["ROMDirectory"] = {"", ""}; + mStringMap["UIMode_passkey"] = {"uuddlrlrba", "uuddlrlrba"}; // // Hardcoded or program-internal settings. // - mStringMap["ApplicationVersion"] = { "", "" }; - mBoolMap["DebugGrid"] = { false, false }; - mBoolMap["DebugText"] = { false, false }; - mBoolMap["DebugImage"] = { false, false }; - mBoolMap["SplashScreenProgress"] = { true, true }; - mIntMap["ScraperFilter"] = { 0, 0 }; + mStringMap["ApplicationVersion"] = {"", ""}; + mBoolMap["DebugGrid"] = {false, false}; + mBoolMap["DebugText"] = {false, false}; + mBoolMap["DebugImage"] = {false, false}; + mBoolMap["SplashScreenProgress"] = {true, true}; + mIntMap["ScraperFilter"] = {0, 0}; } template diff --git a/es-core/src/ThemeData.cpp b/es-core/src/ThemeData.cpp index 6bf6cda30..2af478067 100644 --- a/es-core/src/ThemeData.cpp +++ b/es-core/src/ThemeData.cpp @@ -21,178 +21,175 @@ #include #include -std::vector ThemeData::sSupportedViews { { "all" }, { "system" }, { "basic" }, - { "detailed" }, { "grid" }, { "video" } }; -std::vector ThemeData::sSupportedFeatures { - { "navigationsounds" }, { "video" }, { "carousel" }, { "z-index" }, { "visible" } -}; +std::vector ThemeData::sSupportedViews{{"all"}, {"system"}, {"basic"}, + {"detailed"}, {"grid"}, {"video"}}; +std::vector ThemeData::sSupportedFeatures{ + {"navigationsounds"}, {"video"}, {"carousel"}, {"z-index"}, {"visible"}}; -std::map> - ThemeData::sElementMap { - { "image", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "maxSize", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "rotation", FLOAT }, - { "rotationOrigin", NORMALIZED_PAIR }, - { "path", PATH }, - { "default", PATH }, - { "tile", BOOLEAN }, - { "color", COLOR }, - { "colorEnd", COLOR }, - { "gradientType", STRING }, - { "visible", BOOLEAN }, - { "zIndex", FLOAT } } }, - { "imagegrid", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "margin", NORMALIZED_PAIR }, - { "padding", NORMALIZED_RECT }, - { "autoLayout", NORMALIZED_PAIR }, - { "autoLayoutSelectedZoom", FLOAT }, - { "gameImage", PATH }, - { "folderImage", PATH }, - { "imageSource", STRING }, - { "scrollDirection", STRING }, - { "centerSelection", BOOLEAN }, - { "scrollLoop", BOOLEAN }, - { "animate", BOOLEAN }, - { "zIndex", FLOAT } } }, - { "gridtile", - { { "size", NORMALIZED_PAIR }, - { "padding", NORMALIZED_PAIR }, - { "imageColor", COLOR }, - { "backgroundImage", PATH }, - { "backgroundCornerSize", NORMALIZED_PAIR }, - { "backgroundColor", COLOR }, - { "backgroundCenterColor", COLOR }, - { "backgroundEdgeColor", COLOR } } }, - { "text", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "rotation", FLOAT }, - { "rotationOrigin", NORMALIZED_PAIR }, - { "text", STRING }, - { "backgroundColor", COLOR }, - { "fontPath", PATH }, - { "fontSize", FLOAT }, - { "color", COLOR }, - { "alignment", STRING }, - { "forceUppercase", BOOLEAN }, - { "lineSpacing", FLOAT }, - { "value", STRING }, - { "visible", BOOLEAN }, - { "zIndex", FLOAT } } }, - { "textlist", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "selectorHeight", FLOAT }, - { "selectorOffsetY", FLOAT }, - { "selectorColor", COLOR }, - { "selectorColorEnd", COLOR }, - { "selectorGradientType", STRING }, - { "selectorImagePath", PATH }, - { "selectorImageTile", BOOLEAN }, - { "selectedColor", COLOR }, - { "primaryColor", COLOR }, - { "secondaryColor", COLOR }, - { "fontPath", PATH }, - { "fontSize", FLOAT }, - { "scrollSound", PATH }, // For backward compatibility with old themes. - { "alignment", STRING }, - { "horizontalMargin", FLOAT }, - { "forceUppercase", BOOLEAN }, - { "lineSpacing", FLOAT }, - { "zIndex", FLOAT } } }, - { "container", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "visible", BOOLEAN }, - { "zIndex", FLOAT } } }, - { "ninepatch", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "path", PATH }, - { "visible", BOOLEAN }, - { "zIndex", FLOAT } } }, - { "datetime", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "rotation", FLOAT }, - { "rotationOrigin", NORMALIZED_PAIR }, - { "backgroundColor", COLOR }, - { "fontPath", PATH }, - { "fontSize", FLOAT }, - { "color", COLOR }, - { "alignment", STRING }, - { "forceUppercase", BOOLEAN }, - { "lineSpacing", FLOAT }, - { "value", STRING }, - { "format", STRING }, - { "displayRelative", BOOLEAN }, - { "visible", BOOLEAN }, - { "zIndex", FLOAT } } }, - { "rating", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "rotation", FLOAT }, - { "rotationOrigin", NORMALIZED_PAIR }, - { "color", COLOR }, - { "filledPath", PATH }, - { "unfilledPath", PATH }, - { "visible", BOOLEAN }, - { "zIndex", FLOAT } } }, - { "sound", { { "path", PATH } } }, - { "helpsystem", - { { "pos", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "textColor", COLOR }, - { "iconColor", COLOR }, - { "fontPath", PATH }, - { "fontSize", FLOAT } } }, - { "navigationsounds", - { { "systembrowseSound", PATH }, - { "quicksysselectSound", PATH }, - { "selectSound", PATH }, - { "backSound", PATH }, - { "scrollSound", PATH }, - { "favoriteSound", PATH }, - { "launchSound", PATH } } }, - { "video", - { { "pos", NORMALIZED_PAIR }, - { "size", NORMALIZED_PAIR }, - { "maxSize", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "rotation", FLOAT }, - { "rotationOrigin", NORMALIZED_PAIR }, - { "default", PATH }, - { "delay", FLOAT }, - { "visible", BOOLEAN }, - { "zIndex", FLOAT }, - { "showSnapshotNoVideo", BOOLEAN }, - { "showSnapshotDelay", BOOLEAN } } }, - { "carousel", - { { "type", STRING }, - { "size", NORMALIZED_PAIR }, - { "pos", NORMALIZED_PAIR }, - { "origin", NORMALIZED_PAIR }, - { "color", COLOR }, - { "colorEnd", COLOR }, - { "gradientType", STRING }, - { "logoScale", FLOAT }, - { "logoRotation", FLOAT }, - { "logoRotationOrigin", NORMALIZED_PAIR }, - { "logoSize", NORMALIZED_PAIR }, - { "logoAlignment", STRING }, - { "maxLogoCount", FLOAT }, - { "zIndex", FLOAT } } } - }; +std::map> ThemeData::sElementMap{ + {"image", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"maxSize", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"rotation", FLOAT}, + {"rotationOrigin", NORMALIZED_PAIR}, + {"path", PATH}, + {"default", PATH}, + {"tile", BOOLEAN}, + {"color", COLOR}, + {"colorEnd", COLOR}, + {"gradientType", STRING}, + {"visible", BOOLEAN}, + {"zIndex", FLOAT}}}, + {"imagegrid", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"margin", NORMALIZED_PAIR}, + {"padding", NORMALIZED_RECT}, + {"autoLayout", NORMALIZED_PAIR}, + {"autoLayoutSelectedZoom", FLOAT}, + {"gameImage", PATH}, + {"folderImage", PATH}, + {"imageSource", STRING}, + {"scrollDirection", STRING}, + {"centerSelection", BOOLEAN}, + {"scrollLoop", BOOLEAN}, + {"animate", BOOLEAN}, + {"zIndex", FLOAT}}}, + {"gridtile", + {{"size", NORMALIZED_PAIR}, + {"padding", NORMALIZED_PAIR}, + {"imageColor", COLOR}, + {"backgroundImage", PATH}, + {"backgroundCornerSize", NORMALIZED_PAIR}, + {"backgroundColor", COLOR}, + {"backgroundCenterColor", COLOR}, + {"backgroundEdgeColor", COLOR}}}, + {"text", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"rotation", FLOAT}, + {"rotationOrigin", NORMALIZED_PAIR}, + {"text", STRING}, + {"backgroundColor", COLOR}, + {"fontPath", PATH}, + {"fontSize", FLOAT}, + {"color", COLOR}, + {"alignment", STRING}, + {"forceUppercase", BOOLEAN}, + {"lineSpacing", FLOAT}, + {"value", STRING}, + {"visible", BOOLEAN}, + {"zIndex", FLOAT}}}, + {"textlist", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"selectorHeight", FLOAT}, + {"selectorOffsetY", FLOAT}, + {"selectorColor", COLOR}, + {"selectorColorEnd", COLOR}, + {"selectorGradientType", STRING}, + {"selectorImagePath", PATH}, + {"selectorImageTile", BOOLEAN}, + {"selectedColor", COLOR}, + {"primaryColor", COLOR}, + {"secondaryColor", COLOR}, + {"fontPath", PATH}, + {"fontSize", FLOAT}, + {"scrollSound", PATH}, // For backward compatibility with old themes. + {"alignment", STRING}, + {"horizontalMargin", FLOAT}, + {"forceUppercase", BOOLEAN}, + {"lineSpacing", FLOAT}, + {"zIndex", FLOAT}}}, + {"container", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"visible", BOOLEAN}, + {"zIndex", FLOAT}}}, + {"ninepatch", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"path", PATH}, + {"visible", BOOLEAN}, + {"zIndex", FLOAT}}}, + {"datetime", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"rotation", FLOAT}, + {"rotationOrigin", NORMALIZED_PAIR}, + {"backgroundColor", COLOR}, + {"fontPath", PATH}, + {"fontSize", FLOAT}, + {"color", COLOR}, + {"alignment", STRING}, + {"forceUppercase", BOOLEAN}, + {"lineSpacing", FLOAT}, + {"value", STRING}, + {"format", STRING}, + {"displayRelative", BOOLEAN}, + {"visible", BOOLEAN}, + {"zIndex", FLOAT}}}, + {"rating", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"rotation", FLOAT}, + {"rotationOrigin", NORMALIZED_PAIR}, + {"color", COLOR}, + {"filledPath", PATH}, + {"unfilledPath", PATH}, + {"visible", BOOLEAN}, + {"zIndex", FLOAT}}}, + {"sound", {{"path", PATH}}}, + {"helpsystem", + {{"pos", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"textColor", COLOR}, + {"iconColor", COLOR}, + {"fontPath", PATH}, + {"fontSize", FLOAT}}}, + {"navigationsounds", + {{"systembrowseSound", PATH}, + {"quicksysselectSound", PATH}, + {"selectSound", PATH}, + {"backSound", PATH}, + {"scrollSound", PATH}, + {"favoriteSound", PATH}, + {"launchSound", PATH}}}, + {"video", + {{"pos", NORMALIZED_PAIR}, + {"size", NORMALIZED_PAIR}, + {"maxSize", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"rotation", FLOAT}, + {"rotationOrigin", NORMALIZED_PAIR}, + {"default", PATH}, + {"delay", FLOAT}, + {"visible", BOOLEAN}, + {"zIndex", FLOAT}, + {"showSnapshotNoVideo", BOOLEAN}, + {"showSnapshotDelay", BOOLEAN}}}, + {"carousel", + {{"type", STRING}, + {"size", NORMALIZED_PAIR}, + {"pos", NORMALIZED_PAIR}, + {"origin", NORMALIZED_PAIR}, + {"color", COLOR}, + {"colorEnd", COLOR}, + {"gradientType", STRING}, + {"logoScale", FLOAT}, + {"logoRotation", FLOAT}, + {"logoRotationOrigin", NORMALIZED_PAIR}, + {"logoSize", NORMALIZED_PAIR}, + {"logoAlignment", STRING}, + {"maxLogoCount", FLOAT}, + {"zIndex", FLOAT}}}}; #define MINIMUM_THEME_FORMAT_VERSION 3 #define CURRENT_THEME_FORMAT_VERSION 6 @@ -454,16 +451,16 @@ void ThemeData::parseElement(const pugi::xml_node& root, auto splits = Utils::String::delimitedStringToVector(str, " "); if (splits.size() == 2) { - val = glm::vec4(static_cast(atof(splits.at(0).c_str())), + val = glm::vec4{static_cast(atof(splits.at(0).c_str())), static_cast(atof(splits.at(1).c_str())), static_cast(atof(splits.at(0).c_str())), - static_cast(atof(splits.at(1).c_str()))); + static_cast(atof(splits.at(1).c_str()))}; } else if (splits.size() == 4) { - val = glm::vec4(static_cast(atof(splits.at(0).c_str())), + val = glm::vec4{static_cast(atof(splits.at(0).c_str())), static_cast(atof(splits.at(1).c_str())), static_cast(atof(splits.at(2).c_str())), - static_cast(atof(splits.at(3).c_str()))); + static_cast(atof(splits.at(3).c_str()))}; } element.properties[node.name()] = val; @@ -475,11 +472,11 @@ void ThemeData::parseElement(const pugi::xml_node& root, throw error << "invalid normalized pair (property \"" << node.name() << "\", value \"" << str.c_str() << "\")"; - std::string first = str.substr(0, divider); - std::string second = str.substr(divider, std::string::npos); + std::string first{str.substr(0, divider)}; + std::string second{str.substr(divider, std::string::npos)}; - glm::vec2 val(static_cast(atof(first.c_str())), - static_cast(atof(second.c_str()))); + glm::vec2 val{static_cast(atof(first.c_str())), + static_cast(atof(second.c_str()))}; element.properties[node.name()] = val; break; @@ -643,7 +640,7 @@ std::map ThemeData::getThemeSets() for (Utils::FileSystem::stringList::const_iterator it = dirContent.cbegin(); it != dirContent.cend(); it++) { if (Utils::FileSystem::isDirectory(*it)) { - ThemeSet set = { *it }; + ThemeSet set = {*it}; sets[set.getName()] = set; } } diff --git a/es-core/src/ThemeData.h b/es-core/src/ThemeData.h index 5c2e41dac..70f3193a1 100644 --- a/es-core/src/ThemeData.h +++ b/es-core/src/ThemeData.h @@ -105,8 +105,8 @@ public: void operator=(const glm::vec4& value) { r = value; - const glm::vec4 initVector = value; - v = glm::vec2(initVector.x, initVector.y); + const glm::vec4 initVector{value}; + v = glm::vec2{initVector.x, initVector.y}; } void operator=(const glm::vec2& value) { v = value; } void operator=(const std::string& value) { s = value; } diff --git a/es-core/src/Window.cpp b/es-core/src/Window.cpp index 84fa29c33..352ba08f5 100644 --- a/es-core/src/Window.cpp +++ b/es-core/src/Window.cpp @@ -349,7 +349,7 @@ void Window::update(int deltaTime) void Window::render() { - glm::mat4 trans = Renderer::getIdentity(); + glm::mat4 trans{Renderer::getIdentity()}; mRenderedHelpPrompts = false; @@ -475,9 +475,9 @@ void Window::render() if (Settings::getInstance()->getString("MenuOpeningEffect") == "scale-up") { if (mTopScale < 1.0f) { mTopScale = Math::clamp(mTopScale + 0.07f, 0.0f, 1.0f); - glm::vec2 topCenter = top->getCenter(); - top->setOrigin({ 0.5f, 0.5f }); - top->setPosition({ topCenter.x, topCenter.y, 0.0f }); + glm::vec2 topCenter{top->getCenter()}; + top->setOrigin({0.5f, 0.5f}); + top->setPosition({topCenter.x, topCenter.y, 0.0f}); top->setScale(mTopScale); } } @@ -499,7 +499,7 @@ void Window::render() static_cast(Renderer::getScreenHeight()), 0x00000000 | mListScrollOpacity, 0x00000000 | mListScrollOpacity); - glm::vec2 offset = mListScrollFont->sizeText(mListScrollText); + glm::vec2 offset{mListScrollFont->sizeText(mListScrollText)}; offset.x = (Renderer::getScreenWidth() - offset.x) * 0.5f; offset.y = (Renderer::getScreenHeight() - offset.y) * 0.5f; @@ -558,7 +558,7 @@ void Window::render() void Window::renderLoadingScreen(std::string text) { - glm::mat4 trans = Renderer::getIdentity(); + glm::mat4 trans{Renderer::getIdentity()}; Renderer::setMatrix(trans); Renderer::drawRect(0.0f, 0.0f, static_cast(Renderer::getScreenWidth()), static_cast(Renderer::getScreenHeight()), 0x000000FF, 0x000000FF); @@ -575,7 +575,7 @@ void Window::renderLoadingScreen(std::string text) float x = std::round((Renderer::getScreenWidth() - cache->metrics.size.x) / 2.0f); float y = std::round(Renderer::getScreenHeight() * 0.835f); - trans = glm::translate(trans, glm::vec3(x, y, 0.0f)); + trans = glm::translate(trans, glm::vec3{x, y, 0.0f}); Renderer::setMatrix(trans); font->renderTextCache(cache); delete cache; @@ -634,17 +634,17 @@ void Window::setHelpPrompts(const std::vector& prompts, const HelpSt // Sort prompts so it goes [dpad_all] [dpad_u/d] [dpad_l/r] [a/b/x/y/l/r] [start/back]. std::sort(addPrompts.begin(), addPrompts.end(), [](const HelpPrompt& a, const HelpPrompt& b) -> bool { - static const std::vector map = { "up/down/left/right", - "up/down", - "left/right", - "a", - "b", - "x", - "y", - "l", - "r", - "start", - "back" }; + static const std::vector map = {"up/down/left/right", + "up/down", + "left/right", + "a", + "b", + "x", + "y", + "l", + "r", + "start", + "back"}; int i = 0; int aVal = 0; int bVal = 0; diff --git a/es-core/src/components/BusyComponent.cpp b/es-core/src/components/BusyComponent.cpp index f0db6f0be..4c66ac453 100644 --- a/es-core/src/components/BusyComponent.cpp +++ b/es-core/src/components/BusyComponent.cpp @@ -14,18 +14,18 @@ // Animation definition. AnimationFrame BUSY_ANIMATION_FRAMES[] = { - { ":/graphics/busy_0.svg", 300 }, - { ":/graphics/busy_1.svg", 300 }, - { ":/graphics/busy_2.svg", 300 }, - { ":/graphics/busy_3.svg", 300 }, + {":/graphics/busy_0.svg", 300}, + {":/graphics/busy_1.svg", 300}, + {":/graphics/busy_2.svg", 300}, + {":/graphics/busy_3.svg", 300}, }; -const AnimationDef BUSY_ANIMATION_DEF = { BUSY_ANIMATION_FRAMES, 4, true }; +const AnimationDef BUSY_ANIMATION_DEF = {BUSY_ANIMATION_FRAMES, 4, true}; BusyComponent::BusyComponent(Window* window) : GuiComponent(window) , mBackground(window, ":/graphics/frame.png") - , mGrid(window, Vector2i(5, 3)) + , mGrid(window, glm::ivec2{5, 3}) { mAnimation = std::make_shared(mWindow); mAnimation->load(&BUSY_ANIMATION_DEF); @@ -33,8 +33,8 @@ BusyComponent::BusyComponent(Window* window) 0x777777FF); // Col 0 = animation, col 1 = spacer, col 2 = text. - mGrid.setEntry(mAnimation, Vector2i(1, 1), false, true); - mGrid.setEntry(mText, Vector2i(3, 1), false, true); + mGrid.setEntry(mAnimation, glm::ivec2{1, 1}, false, true); + mGrid.setEntry(mText, glm::ivec2{3, 1}, false, true); addChild(&mBackground); addChild(&mGrid); @@ -58,11 +58,11 @@ void BusyComponent::onSizeChanged() mGrid.setRowHeightPerc(1, textHeight / mSize.y); - mBackground.setCornerSize({ 16.0f * Renderer::getScreenWidthModifier(), - 16.0f * Renderer::getScreenHeightModifier() }); - mBackground.fitTo(glm::vec2(mGrid.getColWidth(1) + mGrid.getColWidth(2) + mGrid.getColWidth(3), - textHeight + (2.0f * Renderer::getScreenHeightModifier())), - mAnimation->getPosition(), glm::vec2(0.0f, 0.0f)); + mBackground.setCornerSize( + {16.0f * Renderer::getScreenWidthModifier(), 16.0f * Renderer::getScreenHeightModifier()}); + mBackground.fitTo(glm::vec2{mGrid.getColWidth(1) + mGrid.getColWidth(2) + mGrid.getColWidth(3), + textHeight + (2.0f * Renderer::getScreenHeightModifier())}, + mAnimation->getPosition(), glm::vec2{}); } void BusyComponent::reset() diff --git a/es-core/src/components/ButtonComponent.cpp b/es-core/src/components/ButtonComponent.cpp index 81c7eb929..6ba641495 100644 --- a/es-core/src/components/ButtonComponent.cpp +++ b/es-core/src/components/ButtonComponent.cpp @@ -32,7 +32,7 @@ ButtonComponent::ButtonComponent(Window* window, void ButtonComponent::onSizeChanged() { // Fit to mBox. - mBox.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBox.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); } bool ButtonComponent::input(InputConfig* config, Input input) @@ -95,13 +95,13 @@ void ButtonComponent::updateImage() void ButtonComponent::render(const glm::mat4& parentTrans) { - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; mBox.render(trans); if (mTextCache) { - glm::vec3 centerOffset((mSize.x - mTextCache->metrics.size.x) / 2.0f, - (mSize.y - mTextCache->metrics.size.y) / 2.0f, 0.0f); + glm::vec3 centerOffset{(mSize.x - mTextCache->metrics.size.x) / 2.0f, + (mSize.y - mTextCache->metrics.size.y) / 2.0f, 0.0f}; trans = glm::translate(trans, centerOffset); if (Settings::getInstance()->getBool("DebugText")) { diff --git a/es-core/src/components/ComponentGrid.cpp b/es-core/src/components/ComponentGrid.cpp index 616804cea..496cda1fd 100644 --- a/es-core/src/components/ComponentGrid.cpp +++ b/es-core/src/components/ComponentGrid.cpp @@ -12,21 +12,21 @@ using namespace GridFlags; -ComponentGrid::ComponentGrid(Window* window, const Vector2i& gridDimensions) +ComponentGrid::ComponentGrid(Window* window, const glm::ivec2& gridDimensions) : GuiComponent(window) , mGridSize(gridDimensions) , mCursor(0, 0) { - assert(gridDimensions.x() > 0 && gridDimensions.y() > 0); + assert(gridDimensions.x > 0 && gridDimensions.y > 0); - mCells.reserve(gridDimensions.x() * gridDimensions.y()); + mCells.reserve(gridDimensions.x * gridDimensions.y); - mColWidths = new float[gridDimensions.x()]; - mRowHeights = new float[gridDimensions.y()]; + mColWidths = new float[gridDimensions.x]; + mRowHeights = new float[gridDimensions.y]; - for (int x = 0; x < gridDimensions.x(); x++) + for (int x = 0; x < gridDimensions.x; x++) mColWidths[x] = 0; - for (int y = 0; y < gridDimensions.y(); y++) + for (int y = 0; y < gridDimensions.y; y++) mRowHeights[y] = 0; } @@ -44,7 +44,7 @@ float ComponentGrid::getColWidth(int col) // Calculate automatic width. float freeWidthPerc = 1; int between = 0; - for (int x = 0; x < mGridSize.x(); x++) { + for (int x = 0; x < mGridSize.x; x++) { freeWidthPerc -= mColWidths[x]; // If it's 0 it won't do anything. if (mColWidths[x] == 0) between++; @@ -61,7 +61,7 @@ float ComponentGrid::getRowHeight(int row) // Calculate automatic height. float freeHeightPerc = 1; int between = 0; - for (int y = 0; y < mGridSize.y(); y++) { + for (int y = 0; y < mGridSize.y; y++) { freeHeightPerc -= mRowHeights[y]; // If it's 0 it won't do anything. if (mRowHeights[y] == 0) between++; @@ -72,7 +72,7 @@ float ComponentGrid::getRowHeight(int row) void ComponentGrid::setColWidthPerc(int col, float width, bool update) { - assert(col >= 0 && col < mGridSize.x()); + assert(col >= 0 && col < mGridSize.x); mColWidths[col] = width; if (update) @@ -82,7 +82,7 @@ void ComponentGrid::setColWidthPerc(int col, float width, bool update) void ComponentGrid::setRowHeightPerc(int row, float height, bool update) { assert(height >= 0 && height <= 1); - assert(row >= 0 && row < mGridSize.y()); + assert(row >= 0 && row < mGridSize.y); mRowHeights[row] = height; if (update) @@ -90,14 +90,14 @@ void ComponentGrid::setRowHeightPerc(int row, float height, bool update) } void ComponentGrid::setEntry(const std::shared_ptr& comp, - const Vector2i& pos, + const glm::ivec2& pos, bool canFocus, bool resize, - const Vector2i& size, + const glm::ivec2& size, unsigned int border, GridFlags::UpdateType updateType) { - assert(pos.x() >= 0 && pos.x() < mGridSize.x() && pos.y() >= 0 && pos.y() < mGridSize.y()); + assert(pos.x >= 0 && pos.x < mGridSize.x && pos.y >= 0 && pos.y < mGridSize.y); assert(comp != nullptr); assert(comp->getParent() == nullptr); @@ -132,20 +132,20 @@ bool ComponentGrid::removeEntry(const std::shared_ptr& comp) void ComponentGrid::updateCellComponent(const GridEntry& cell) { // Size. - glm::vec2 size(0.0f, 0.0f); - for (int x = cell.pos.x(); x < cell.pos.x() + cell.dim.x(); x++) + glm::vec2 size{0.0f}; + for (int x = cell.pos.x; x < cell.pos.x + cell.dim.x; x++) size.x += getColWidth(x); - for (int y = cell.pos.y(); y < cell.pos.y() + cell.dim.y(); y++) + for (int y = cell.pos.y; y < cell.pos.y + cell.dim.y; y++) size.y += getRowHeight(y); if (cell.resize) cell.component->setSize(size); // Find top left corner. - glm::vec3 pos {}; - for (int x = 0; x < cell.pos.x(); x++) + glm::vec3 pos{}; + for (int x = 0; x < cell.pos.x; x++) pos.x += getColWidth(x); - for (int y = 0; y < cell.pos.y(); y++) + for (int y = 0; y < cell.pos.y; y++) pos.y += getRowHeight(y); // Center component. @@ -169,18 +169,18 @@ void ComponentGrid::updateSeparators() continue; // Find component position + size. - pos = glm::vec2(0.0f, 0.0f); - size = glm::vec2(0.0f, 0.0f); - for (int x = 0; x < it->pos.x(); x++) + pos = glm::vec2{}; + size = glm::vec2{}; + for (int x = 0; x < it->pos.x; x++) pos[0] += getColWidth(x); - for (int y = 0; y < it->pos.y(); y++) + for (int y = 0; y < it->pos.y; y++) pos[1] += getRowHeight(y); - for (int x = it->pos.x(); x < it->pos.x() + it->dim.x(); x++) + for (int x = it->pos.x; x < it->pos.x + it->dim.x; x++) size[0] += getColWidth(x); - for (int y = it->pos.y(); y < it->pos.y() + it->dim.y(); y++) + for (int y = it->pos.y; y < it->pos.y + it->dim.y; y++) size[1] += getRowHeight(y); - if (size == glm::vec2({})) + if (size == glm::vec2{}) return; if (it->border & BORDER_TOP || drawAll) { @@ -228,13 +228,13 @@ void ComponentGrid::onSizeChanged() const ComponentGrid::GridEntry* ComponentGrid::getCellAt(int x, int y) const { - assert(x >= 0 && x < mGridSize.x() && y >= 0 && y < mGridSize.y()); + assert(x >= 0 && x < mGridSize.x && y >= 0 && y < mGridSize.y); for (auto it = mCells.cbegin(); it != mCells.cend(); it++) { - int xmin = it->pos.x(); - int xmax = xmin + it->dim.x(); - int ymin = it->pos.y(); - int ymax = ymin + it->dim.y(); + int xmin = it->pos.x; + int xmax = xmin + it->dim.x; + int ymin = it->pos.y; + int ymax = ymin + it->dim.y; if (x >= xmin && y >= ymin && x < xmax && y < ymax) return &(*it); @@ -253,16 +253,16 @@ bool ComponentGrid::input(InputConfig* config, Input input) return false; if (config->isMappedLike("down", input)) - return moveCursor(Vector2i(0, 1)); + return moveCursor(glm::ivec2{0, 1}); if (config->isMappedLike("up", input)) - return moveCursor(Vector2i(0, -1)); + return moveCursor(glm::ivec2{0, -1}); if (config->isMappedLike("left", input)) - return moveCursor(Vector2i(-1, 0)); + return moveCursor(glm::ivec2{-1, 0}); if (config->isMappedLike("right", input)) - return moveCursor(Vector2i(1, 0)); + return moveCursor(glm::ivec2{1, 0}); return false; } @@ -274,7 +274,7 @@ void ComponentGrid::resetCursor() for (auto it = mCells.cbegin(); it != mCells.cend(); it++) { if (it->canFocus) { - Vector2i origCursor = mCursor; + glm::ivec2 origCursor = mCursor; mCursor = it->pos; onCursorMoved(origCursor, mCursor); break; @@ -282,23 +282,22 @@ void ComponentGrid::resetCursor() } } -bool ComponentGrid::moveCursor(Vector2i dir) +bool ComponentGrid::moveCursor(glm::ivec2 dir) { - assert(dir.x() || dir.y()); + assert(dir.x || dir.y); - const Vector2i origCursor = mCursor; + const glm::ivec2 origCursor{mCursor}; const GridEntry* currentCursorEntry = getCellAt(mCursor); - Vector2i searchAxis(dir.x() == 0, dir.y() == 0); + glm::ivec2 searchAxis(dir.x == 0, dir.y == 0); - while (mCursor.x() >= 0 && mCursor.y() >= 0 && mCursor.x() < mGridSize.x() && - mCursor.y() < mGridSize.y()) { + while (mCursor.x >= 0 && mCursor.y >= 0 && mCursor.x < mGridSize.x && mCursor.y < mGridSize.y) { mCursor = mCursor + dir; - Vector2i curDirPos = mCursor; + glm::ivec2 curDirPos{mCursor}; const GridEntry* cursorEntry; // Spread out on search axis+ - while (mCursor.x() < mGridSize.x() && mCursor.y() < mGridSize.y() && mCursor.x() >= 0 && - mCursor.y() >= 0) { + while (mCursor.x < mGridSize.x && mCursor.y < mGridSize.y && mCursor.x >= 0 && + mCursor.y >= 0) { cursorEntry = getCellAt(mCursor); if (cursorEntry && cursorEntry->canFocus && cursorEntry != currentCursorEntry) { onCursorMoved(origCursor, mCursor); @@ -309,8 +308,8 @@ bool ComponentGrid::moveCursor(Vector2i dir) // Now again on search axis- mCursor = curDirPos; - while (mCursor.x() >= 0 && mCursor.y() >= 0 && mCursor.x() < mGridSize.x() && - mCursor.y() < mGridSize.y()) { + while (mCursor.x >= 0 && mCursor.y >= 0 && mCursor.x < mGridSize.x && + mCursor.y < mGridSize.y) { cursorEntry = getCellAt(mCursor); if (cursorEntry && cursorEntry->canFocus && cursorEntry != currentCursorEntry) { @@ -361,7 +360,7 @@ void ComponentGrid::update(int deltaTime) void ComponentGrid::render(const glm::mat4& parentTrans) { - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; renderChildren(trans); @@ -380,7 +379,7 @@ void ComponentGrid::textInput(const std::string& text) selectedEntry->component->textInput(text); } -void ComponentGrid::onCursorMoved(Vector2i from, Vector2i to) +void ComponentGrid::onCursorMoved(glm::ivec2 from, glm::ivec2 to) { const GridEntry* cell = getCellAt(from); if (cell) @@ -397,7 +396,7 @@ void ComponentGrid::setCursorTo(const std::shared_ptr& comp) { for (auto it = mCells.cbegin(); it != mCells.cend(); it++) { if (it->component == comp) { - Vector2i oldCursor = mCursor; + glm::ivec2 oldCursor{mCursor}; mCursor = it->pos; onCursorMoved(oldCursor, mCursor); return; @@ -415,8 +414,8 @@ std::vector ComponentGrid::getHelpPrompts() if (e) prompts = e->component->getHelpPrompts(); - bool canScrollVert = mGridSize.y() > 1; - bool canScrollHoriz = mGridSize.x() > 1; + bool canScrollVert = mGridSize.y > 1; + bool canScrollHoriz = mGridSize.x > 1; for (auto it = prompts.cbegin(); it != prompts.cend(); it++) { if (it->first == "up/down/left/right") { canScrollHoriz = false; diff --git a/es-core/src/components/ComponentGrid.h b/es-core/src/components/ComponentGrid.h index 8d0b8a86a..c52e8271a 100644 --- a/es-core/src/components/ComponentGrid.h +++ b/es-core/src/components/ComponentGrid.h @@ -10,7 +10,6 @@ #define ES_CORE_COMPONENTS_COMPONENT_GRID_H #include "GuiComponent.h" -#include "math/Vector2i.h" #include "renderers/Renderer.h" namespace GridFlags @@ -34,16 +33,16 @@ namespace GridFlags class ComponentGrid : public GuiComponent { public: - ComponentGrid(Window* window, const Vector2i& gridDimensions); + ComponentGrid(Window* window, const glm::ivec2& gridDimensions); virtual ~ComponentGrid(); bool removeEntry(const std::shared_ptr& comp); void setEntry(const std::shared_ptr& comp, - const Vector2i& pos, + const glm::ivec2& pos, bool canFocus, bool resize = true, - const Vector2i& size = Vector2i(1, 1), + const glm::ivec2& size = glm::ivec2{1, 1}, unsigned int border = GridFlags::BORDER_NONE, GridFlags::UpdateType updateType = GridFlags::UPDATE_ALWAYS); @@ -65,7 +64,7 @@ public: // Dito. void setRowHeightPerc(int row, float height, bool update = true); - bool moveCursor(Vector2i dir); + bool moveCursor(glm::ivec2 dir); void setCursorTo(const std::shared_ptr& comp); std::shared_ptr getSelectedComponent() @@ -86,16 +85,16 @@ private: class GridEntry { public: - Vector2i pos; - Vector2i dim; + glm::ivec2 pos; + glm::ivec2 dim; std::shared_ptr component; bool canFocus; bool resize; GridFlags::UpdateType updateType; unsigned int border; - GridEntry(const Vector2i& p = Vector2i::Zero(), - const Vector2i& d = Vector2i::Zero(), + GridEntry(const glm::ivec2& p = glm::ivec2{}, + const glm::ivec2& d = glm::ivec2{}, const std::shared_ptr& cmp = nullptr, bool f = false, bool r = true, @@ -118,14 +117,14 @@ private: void updateCellComponent(const GridEntry& cell); void updateSeparators(); - void onCursorMoved(Vector2i from, Vector2i to); + void onCursorMoved(glm::ivec2 from, glm::ivec2 to); const GridEntry* getCellAt(int x, int y) const; - const GridEntry* getCellAt(const Vector2i& pos) const { return getCellAt(pos.x(), pos.y()); } + const GridEntry* getCellAt(const glm::ivec2& pos) const { return getCellAt(pos.x, pos.y); } std::vector> mSeparators; - Vector2i mGridSize; + glm::ivec2 mGridSize; std::vector mCells; - Vector2i mCursor; + glm::ivec2 mCursor; float* mRowHeights; float* mColWidths; diff --git a/es-core/src/components/ComponentList.cpp b/es-core/src/components/ComponentList.cpp index 948e193bd..ab58e661e 100644 --- a/es-core/src/components/ComponentList.cpp +++ b/es-core/src/components/ComponentList.cpp @@ -172,20 +172,20 @@ void ComponentList::render(const glm::mat4& parentTrans) if (!size()) return; - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; // Clip everything to be inside our bounds. - glm::vec3 dim(mSize.x, mSize.y, 0.0f); + glm::vec3 dim{mSize.x, mSize.y, 0.0f}; dim.x = (trans[0].x * dim.x + trans[3].x) - trans[3].x; dim.y = (trans[1].y * dim.y + trans[3].y) - trans[3].y; Renderer::pushClipRect( - Vector2i(static_cast(std::round(trans[3].x)), - static_cast(std::round(trans[3].y))), - Vector2i(static_cast(std::round(dim.x)), static_cast(std::round(dim.y)))); + glm::ivec2{static_cast(std::round(trans[3].x)), + static_cast(std::round(trans[3].y))}, + glm::ivec2{static_cast(std::round(dim.x)), static_cast(std::round(dim.y))}); // Scroll the camera. - trans = glm::translate(trans, glm::vec3(0.0f, -std::round(mCameraOffset), 0.0f)); + trans = glm::translate(trans, glm::vec3{0.0f, -std::round(mCameraOffset), 0.0f}); // Draw our entries. std::vector drawAfterCursor; diff --git a/es-core/src/components/DateTimeEditComponent.cpp b/es-core/src/components/DateTimeEditComponent.cpp index 9818b0ec3..5796f7621 100644 --- a/es-core/src/components/DateTimeEditComponent.cpp +++ b/es-core/src/components/DateTimeEditComponent.cpp @@ -156,7 +156,7 @@ void DateTimeEditComponent::update(int deltaTime) void DateTimeEditComponent::render(const glm::mat4& parentTrans) { - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; if (mTextCache) { std::shared_ptr font = getFont(); @@ -170,7 +170,7 @@ void DateTimeEditComponent::render(const glm::mat4& parentTrans) } // Vertically center. - glm::vec3 off(0.0f, (mSize.y - mTextCache->metrics.size.y) / 2.0f, 0.0f); + glm::vec3 off{0.0f, (mSize.y - mTextCache->metrics.size.y) / 2.0f, 0.0f}; if (mAlignRight) off.x += referenceSize - mTextCache->metrics.size.x; @@ -300,22 +300,22 @@ void DateTimeEditComponent::updateTextCache() return; // Year. - glm::vec2 start(0.0f, 0.0f); - glm::vec2 end = font->sizeText(dispString.substr(0, 4)); - glm::vec2 diff = end - start; - mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); + glm::vec2 start{}; + glm::vec2 end{font->sizeText(dispString.substr(0, 4))}; + glm::vec2 diff{end - start}; + mCursorBoxes.push_back(glm::vec4{start[0], start[1], diff[0], diff[1]}); // Month. start[0] = font->sizeText(dispString.substr(0, 5)).x; end = font->sizeText(dispString.substr(0, 7)); diff = end - start; - mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); + mCursorBoxes.push_back(glm::vec4{start[0], start[1], diff[0], diff[1]}); // Day. start[0] = font->sizeText(dispString.substr(0, 8)).x; end = font->sizeText(dispString.substr(0, 10)); diff = end - start; - mCursorBoxes.push_back(glm::vec4(start[0], start[1], diff[0], diff[1])); + mCursorBoxes.push_back(glm::vec4{start[0], start[1], diff[0], diff[1]}); // The logic for handling time for 'mode = DISP_DATE_TIME' is missing, but // nobody will use it anyway so it's not worthwhile implementing. diff --git a/es-core/src/components/GridTileComponent.cpp b/es-core/src/components/GridTileComponent.cpp index 3269751d1..903520aaf 100644 --- a/es-core/src/components/GridTileComponent.cpp +++ b/es-core/src/components/GridTileComponent.cpp @@ -17,12 +17,12 @@ GridTileComponent::GridTileComponent(Window* window) , mBackground(window, ":/graphics/frame.png") { mDefaultProperties.mSize = getDefaultTileSize(); - mDefaultProperties.mPadding = glm::vec2(16.0f * Renderer::getScreenWidthModifier(), - 16.0f * Renderer::getScreenHeightModifier()); + mDefaultProperties.mPadding = glm::vec2{16.0f * Renderer::getScreenWidthModifier(), + 16.0f * Renderer::getScreenHeightModifier()}; mDefaultProperties.mImageColor = 0xAAAAAABB; // Attempting to use frame.svg instead causes quite severe performance problems. mDefaultProperties.mBackgroundImage = ":/graphics/frame.png"; - mDefaultProperties.mBackgroundCornerSize = glm::vec2(16.0f, 16.0f); + mDefaultProperties.mBackgroundCornerSize = glm::vec2{16.0f, 16.0f}; mDefaultProperties.mBackgroundCenterColor = 0xAAAAEEFF; mDefaultProperties.mBackgroundEdgeColor = 0xAAAAEEFF; @@ -52,7 +52,7 @@ GridTileComponent::GridTileComponent(Window* window) void GridTileComponent::render(const glm::mat4& parentTrans) { - glm::mat4 trans = getTransform() * parentTrans; + glm::mat4 trans{getTransform() * parentTrans}; if (mVisible) renderChildren(trans); @@ -76,8 +76,8 @@ void GridTileComponent::update(int deltaTime) void applyThemeToProperties(const ThemeData::ThemeElement* elem, GridTileProperties* properties) { - glm::vec2 screen(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 screen{static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())}; if (elem->has("size")) properties->mSize = elem->get("size") * screen; @@ -132,8 +132,8 @@ void GridTileComponent::applyTheme(const std::shared_ptr& theme, glm::vec2 GridTileComponent::getDefaultTileSize() { - glm::vec2 screen = glm::vec2(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 screen{glm::vec2(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight()))}; return screen * 0.22f; } @@ -186,7 +186,7 @@ void GridTileComponent::setSelected(bool selected, resize(); } else { - mAnimPosition = glm::vec3(pPosition->x, pPosition->y, pPosition->z); + mAnimPosition = glm::vec3{pPosition->x, pPosition->y, pPosition->z}; auto func = [this](float t) { t -= 1; diff --git a/es-core/src/components/HelpComponent.cpp b/es-core/src/components/HelpComponent.cpp index 8f654c20a..d04218bab 100644 --- a/es-core/src/components/HelpComponent.cpp +++ b/es-core/src/components/HelpComponent.cpp @@ -19,7 +19,7 @@ #define ICON_TEXT_SPACING 8.0f // Space between [icon] and [text] (px). #define ENTRY_SPACING 16.0f // Space between [text] and next [icon] (px). -static std::map sIconPathMap {}; +static std::map sIconPathMap{}; HelpComponent::HelpComponent(Window* window) : GuiComponent(window) @@ -114,7 +114,7 @@ void HelpComponent::updateGrid() std::shared_ptr& font = mStyle.font; mGrid = std::make_shared(mWindow, - Vector2i(static_cast(mPrompts.size()) * 4, 1)); + glm::ivec2{static_cast(mPrompts.size()) * 4, 1}); // [icon] [spacer1] [text] [spacer2] @@ -148,11 +148,11 @@ void HelpComponent::updateGrid() (ICON_TEXT_SPACING * Renderer::getScreenWidthModifier()) / width); mGrid->setColWidthPerc(col + 2, labels.at(i)->getSize().x / width); - mGrid->setEntry(icons.at(i), Vector2i(col, 0), false, false); - mGrid->setEntry(labels.at(i), Vector2i(col + 2, 0), false, false); + mGrid->setEntry(icons.at(i), glm::ivec2{col, 0}, false, false); + mGrid->setEntry(labels.at(i), glm::ivec2{col + 2, 0}, false, false); } - mGrid->setPosition({ mStyle.position.x, mStyle.position.y, 0.0f }); + mGrid->setPosition({mStyle.position.x, mStyle.position.y, 0.0f}); mGrid->setOrigin(mStyle.origin); } @@ -189,7 +189,7 @@ void HelpComponent::setOpacity(unsigned char opacity) void HelpComponent::render(const glm::mat4& parentTrans) { - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; if (mGrid) mGrid->render(trans); diff --git a/es-core/src/components/IList.h b/es-core/src/components/IList.h index 8a573540d..566c34137 100644 --- a/es-core/src/components/IList.h +++ b/es-core/src/components/IList.h @@ -37,9 +37,9 @@ struct ScrollTierList { // Default scroll tiers. // clang-format off const ScrollTier QUICK_SCROLL_TIERS[] = { - { 500, 500 }, - { 1200, 114 }, - { 0, 16 } + {500, 500}, + {1200, 114}, + {0, 16} }; const ScrollTierList LIST_SCROLL_STYLE_QUICK = { 3, @@ -47,8 +47,8 @@ const ScrollTierList LIST_SCROLL_STYLE_QUICK = { }; const ScrollTier SLOW_SCROLL_TIERS[] = { - { 500, 500 }, - { 0, 200 } + {500, 500}, + {0, 200} }; const ScrollTierList LIST_SCROLL_STYLE_SLOW = { diff --git a/es-core/src/components/ImageComponent.cpp b/es-core/src/components/ImageComponent.cpp index cb56ea754..88fb97f19 100644 --- a/es-core/src/components/ImageComponent.cpp +++ b/es-core/src/components/ImageComponent.cpp @@ -14,12 +14,12 @@ #include "resources/TextureResource.h" #include "utils/CImgUtil.h" -Vector2i ImageComponent::getTextureSize() const +glm::ivec2 ImageComponent::getTextureSize() const { if (mTexture) return mTexture->getSize(); else - return Vector2i::Zero(); + return glm::ivec2{}; } glm::vec2 ImageComponent::getSize() const @@ -53,8 +53,8 @@ void ImageComponent::resize() if (!mTexture) return; - const glm::vec2 textureSize = mTexture->getSourceImageSize(); - if (textureSize == glm::vec2({})) + const glm::vec2 textureSize{mTexture->getSourceImageSize()}; + if (textureSize == glm::vec2{}) return; if (mTexture->isTiled()) { @@ -71,7 +71,7 @@ void ImageComponent::resize() if (mTargetIsMax) { mSize = textureSize; - glm::vec2 resizeScale((mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)); + glm::vec2 resizeScale{(mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)}; if (resizeScale.x < resizeScale.y) { // This will be mTargetSize.x. We can't exceed it, nor be lower than it. @@ -90,7 +90,7 @@ void ImageComponent::resize() else if (mTargetIsMin) { mSize = textureSize; - glm::vec2 resizeScale((mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)); + glm::vec2 resizeScale{(mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)}; if (resizeScale.x > resizeScale.y) { mSize.x *= resizeScale.x; @@ -114,7 +114,7 @@ void ImageComponent::resize() else { // If both components are set, we just stretch. // If no components are set, we don't resize at all. - mSize = mTargetSize == glm::vec2({}) ? textureSize : mTargetSize; + mSize = mTargetSize == glm::vec2{} ? textureSize : mTargetSize; // If only one component is set, we resize in a way that maintains aspect ratio. // For SVG rasterization, we always calculate width from rounded height (see @@ -177,7 +177,7 @@ void ImageComponent::setImage(const std::shared_ptr& texture) void ImageComponent::setResize(float width, float height) { - mTargetSize = glm::vec2(width, height); + mTargetSize = glm::vec2{width, height}; mTargetIsMax = false; mTargetIsMin = false; resize(); @@ -185,7 +185,7 @@ void ImageComponent::setResize(float width, float height) void ImageComponent::setMaxSize(float width, float height) { - mTargetSize = glm::vec2(width, height); + mTargetSize = glm::vec2{width, height}; mTargetIsMax = true; mTargetIsMin = false; resize(); @@ -193,7 +193,7 @@ void ImageComponent::setMaxSize(float width, float height) void ImageComponent::setMinSize(float width, float height) { - mTargetSize = glm::vec2(width, height); + mTargetSize = glm::vec2{width, height}; mTargetIsMax = false; mTargetIsMin = true; resize(); @@ -239,7 +239,7 @@ void ImageComponent::uncrop() void ImageComponent::cropTransparentPadding(float maxSizeX, float maxSizeY) { - if (mSize == glm::vec2({})) + if (mSize == glm::vec2{}) return; std::vector imageRGBA = mTexture.get()->getRawRGBAData(); @@ -247,10 +247,10 @@ void ImageComponent::cropTransparentPadding(float maxSizeX, float maxSizeY) if (imageRGBA.size() == 0) return; - Vector2i imageSize = mTexture.get()->getSize(); - cimg_library::CImg imageCImg(imageSize.x(), imageSize.y(), 1, 4, 0); + glm::ivec2 imageSize{mTexture.get()->getSize()}; + cimg_library::CImg imageCImg(imageSize.x, imageSize.y, 1, 4, 0); - int paddingCoords[4] = {}; + int paddingCoords[4]{}; // We need to convert our RGBA data to the CImg internal format as CImg does not interleave // the pixels (as in RGBARGBARGBA). @@ -259,12 +259,12 @@ void ImageComponent::cropTransparentPadding(float maxSizeX, float maxSizeY) // This will give us the coordinates for the fully transparent areas. Utils::CImg::getTransparentPaddingCoords(imageCImg, paddingCoords); - glm::vec2 originalSize = mSize; + glm::vec2 originalSize{mSize}; - float cropLeft = static_cast(paddingCoords[0]) / static_cast(imageSize.x()); - float cropTop = static_cast(paddingCoords[1]) / static_cast(imageSize.y()); - float cropRight = static_cast(paddingCoords[2]) / static_cast(imageSize.x()); - float cropBottom = static_cast(paddingCoords[3]) / static_cast(imageSize.y()); + float cropLeft{static_cast(paddingCoords[0]) / static_cast(imageSize.x)}; + float cropTop{static_cast(paddingCoords[1]) / static_cast(imageSize.y)}; + float cropRight{static_cast(paddingCoords[2]) / static_cast(imageSize.x)}; + float cropBottom{static_cast(paddingCoords[3]) / static_cast(imageSize.y)}; crop(cropLeft, cropTop, cropRight, cropBottom); @@ -342,16 +342,16 @@ void ImageComponent::updateVertices() // We go through this mess to make sure everything is properly rounded. // If we just round vertices at the end, edge cases occur near sizes of 0.5. - const glm::vec2 topLeft = { 0.0f, 0.0f }; - const glm::vec2 bottomRight = mSize; - const float px = mTexture->isTiled() ? mSize.x / getTextureSize().x() : 1.0f; - const float py = mTexture->isTiled() ? mSize.y / getTextureSize().y() : 1.0f; + const glm::vec2 topLeft{}; + const glm::vec2 bottomRight{mSize}; + const float px{mTexture->isTiled() ? mSize.x / getTextureSize().x : 1.0f}; + const float py{mTexture->isTiled() ? mSize.y / getTextureSize().y : 1.0f}; // clang-format off - mVertices[0] = { { topLeft.x, topLeft.y }, { mTopLeftCrop.x, py - mTopLeftCrop.y }, 0 }; - mVertices[1] = { { topLeft.x, bottomRight.y }, { mTopLeftCrop.x, 1.0f - mBottomRightCrop.y }, 0 }; - mVertices[2] = { { bottomRight.x, topLeft.y }, { mBottomRightCrop.x * px, py - mTopLeftCrop.y }, 0 }; - mVertices[3] = { { bottomRight.x, bottomRight.y }, { mBottomRightCrop.x * px, 1.0f - mBottomRightCrop.y }, 0 }; + mVertices[0] = {{topLeft.x, topLeft.y }, {mTopLeftCrop.x, py - mTopLeftCrop.y }, 0}; + mVertices[1] = {{topLeft.x, bottomRight.y}, {mTopLeftCrop.x, 1.0f - mBottomRightCrop.y}, 0}; + mVertices[2] = {{bottomRight.x, topLeft.y }, {mBottomRightCrop.x * px, py - mTopLeftCrop.y }, 0}; + mVertices[3] = {{bottomRight.x, bottomRight.y}, {mBottomRightCrop.x * px, 1.0f - mBottomRightCrop.y}, 0}; // clang-format on updateColors(); @@ -391,18 +391,18 @@ void ImageComponent::render(const glm::mat4& parentTrans) if (!isVisible()) return; - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; Renderer::setMatrix(trans); if (mTexture && mOpacity > 0) { if (Settings::getInstance()->getBool("DebugImage")) { - glm::vec2 targetSizePos = (mTargetSize - mSize) * mOrigin * glm::vec2(-1.0f); + glm::vec2 targetSizePos{(mTargetSize - mSize) * mOrigin * glm::vec2{-1.0f}}; Renderer::drawRect(targetSizePos.x, targetSizePos.y, mTargetSize.x, mTargetSize.y, 0xFF000033, 0xFF000033); Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, 0xFF000033, 0xFF000033); } // An image with zero size would normally indicate a corrupt image file. - if (mTexture->isInitialized() && mTexture->getSize() != 0) { + if (mTexture->isInitialized() && mTexture->getSize() != glm::ivec2{}) { // Actually draw the image. // The bind() function returns false if the texture is not currently loaded. A blank // texture is bound in this case but we want to handle a fade so it doesn't just @@ -482,9 +482,9 @@ void ImageComponent::applyTheme(const std::shared_ptr& theme, if (!elem) return; - glm::vec2 scale = getParent() ? getParent()->getSize() : - glm::vec2(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 scale{getParent() ? getParent()->getSize() : + glm::vec2(static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight()))}; if (properties & ThemeFlags::SIZE) { if (elem->has("size")) diff --git a/es-core/src/components/ImageComponent.h b/es-core/src/components/ImageComponent.h index 7d70561e8..56f45acf3 100644 --- a/es-core/src/components/ImageComponent.h +++ b/es-core/src/components/ImageComponent.h @@ -10,7 +10,6 @@ #define ES_CORE_COMPONENTS_IMAGE_COMPONENT_H #include "GuiComponent.h" -#include "math/Vector2i.h" #include "renderers/Renderer.h" class TextureResource; @@ -83,7 +82,7 @@ public: // Returns the size of the current texture, or (0, 0) if none is loaded. // May be different than drawn size (use getSize() for that). - Vector2i getTextureSize() const; + glm::ivec2 getTextureSize() const; glm::vec2 getSize() const override; diff --git a/es-core/src/components/ImageGridComponent.h b/es-core/src/components/ImageGridComponent.h index 042f4fa53..77ab6998b 100644 --- a/es-core/src/components/ImageGridComponent.h +++ b/es-core/src/components/ImageGridComponent.h @@ -104,7 +104,7 @@ private: glm::vec4 mPadding; glm::vec2 mMargin; glm::vec2 mTileSize; - Vector2i mGridDimension; + glm::ivec2 mGridDimension; std::shared_ptr mTheme; std::vector> mTiles; @@ -126,13 +126,13 @@ template ImageGridComponent::ImageGridComponent(Window* window) : IList(window) { - glm::vec2 screen(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 screen{static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())}; mCamera = 0.0f; mCameraDirection = 1.0f; - mAutoLayout = glm::vec2({}); + mAutoLayout = glm::vec2{}; mAutoLayoutZoom = 1.0f; mStartPosition = 0; @@ -171,7 +171,7 @@ template bool ImageGridComponent::input(InputConfig* config, Inp if (input.value != 0) { int idx = isVertical() ? 0 : 1; - Vector2i dir = Vector2i::Zero(); + glm::ivec2 dir{}; if (config->isMappedLike("up", input)) dir[1 ^ idx] = -1; else if (config->isMappedLike("down", input)) @@ -181,11 +181,11 @@ template bool ImageGridComponent::input(InputConfig* config, Inp else if (config->isMappedLike("right", input)) dir[0 ^ idx] = 1; - if (dir != Vector2i::Zero()) { + if (dir != glm::ivec2{}) { if (isVertical()) - listInput(dir.x() + dir.y() * mGridDimension.x()); + listInput(dir.x + dir.y * mGridDimension.x); else - listInput(dir.x() + dir.y() * mGridDimension.y()); + listInput(dir.x + dir.y * mGridDimension.y); return true; } } @@ -210,13 +210,13 @@ template void ImageGridComponent::update(int deltaTime) template void ImageGridComponent::render(const glm::mat4& parentTrans) { - glm::mat4 trans = getTransform() * parentTrans; - glm::mat4 tileTrans = trans; + glm::mat4 trans{getTransform() * parentTrans}; + glm::mat4 tileTrans{trans}; - float offsetX = isVertical() ? 0.0f : mCamera * mCameraDirection * (mTileSize.x + mMargin.x); - float offsetY = isVertical() ? mCamera * mCameraDirection * (mTileSize.y + mMargin.y) : 0.0f; + float offsetX{isVertical() ? 0.0f : mCamera * mCameraDirection * (mTileSize.x + mMargin.x)}; + float offsetY{isVertical() ? mCamera * mCameraDirection * (mTileSize.y + mMargin.y) : 0.0f}; - tileTrans = glm::translate(tileTrans, glm::vec3(offsetX, offsetY, 0.0f)); + tileTrans = glm::translate(tileTrans, glm::vec3{offsetX, offsetY, 0.0f}); if (mEntriesDirty) { updateTiles(); @@ -227,10 +227,10 @@ template void ImageGridComponent::render(const glm::mat4& parent float scaleX = trans[0].x; float scaleY = trans[1].y; - Vector2i pos(static_cast(std::round(trans[3].x)), - static_cast(std::round(trans[3].y))); - Vector2i size(static_cast(std::round(mSize.x * scaleX)), - static_cast(std::round(mSize.y * scaleY))); + glm::ivec2 pos{static_cast(std::round(trans[3].x)), + static_cast(std::round(trans[3].y))}; + glm::ivec2 size{static_cast(std::round(mSize.x * scaleX)), + static_cast(std::round(mSize.y * scaleY))}; Renderer::pushClipRect(pos, size); @@ -269,8 +269,8 @@ void ImageGridComponent::applyTheme(const std::shared_ptr& theme, // Keep the theme pointer to apply it on the tiles later on. mTheme = theme; - glm::vec2 screen(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 screen{static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())}; const ThemeData::ThemeElement* elem = theme->getElement(view, element, "imagegrid"); if (elem) { @@ -279,7 +279,7 @@ void ImageGridComponent::applyTheme(const std::shared_ptr& theme, if (elem->has("padding")) mPadding = - elem->get("padding") * glm::vec4(screen.x, screen.y, screen.x, screen.y); + elem->get("padding") * glm::vec4{screen.x, screen.y, screen.x, screen.y}; if (elem->has("autoLayout")) mAutoLayout = elem->get("autoLayout"); @@ -399,8 +399,8 @@ template void ImageGridComponent::onCursorChanged(const CursorSt int oldStart = mStartPosition; - int dimScrollable = (isVertical() ? mGridDimension.y() : mGridDimension.x()) - 2 * EXTRAITEMS; - int dimOpposite = isVertical() ? mGridDimension.x() : mGridDimension.y(); + int dimScrollable = (isVertical() ? mGridDimension.y : mGridDimension.x) - 2 * EXTRAITEMS; + int dimOpposite = isVertical() ? mGridDimension.x : mGridDimension.y; int centralCol = static_cast((static_cast(dimScrollable) - 0.5f) / 2.0f); int maxCentralCol = dimScrollable / 2; @@ -447,7 +447,7 @@ template void ImageGridComponent::onCursorChanged(const CursorSt } } - glm::vec3 oldPos {}; + glm::vec3 oldPos{}; if (oldTile != nullptr && oldTile != newTile) { oldPos = oldTile->getBackgroundPosition(); @@ -455,7 +455,7 @@ template void ImageGridComponent::onCursorChanged(const CursorSt } if (newTile != nullptr) - newTile->setSelected(true, true, oldPos == glm::vec3({}) ? nullptr : &oldPos, true); + newTile->setSelected(true, true, oldPos == glm::vec3{} ? nullptr : &oldPos, true); } int firstVisibleCol = mStartPosition / dimOpposite; @@ -528,12 +528,11 @@ template void ImageGridComponent::buildTiles() calcGridDimension(); if (mCenterSelection) { - int dimScrollable = - (isVertical() ? mGridDimension.y() : mGridDimension.x()) - 2 * EXTRAITEMS; + int dimScrollable = (isVertical() ? mGridDimension.y : mGridDimension.x) - 2 * EXTRAITEMS; mStartPosition -= static_cast(floorf(dimScrollable / 2.0f)); } - glm::vec2 tileDistance = mTileSize + mMargin; + glm::vec2 tileDistance{mTileSize + mMargin}; if (mAutoLayout.x != 0.0f && mAutoLayout.y != 0.0f) { auto x = (mSize.x - (mMargin.x * (mAutoLayout.x - 1.0f)) - mPadding.x - mPadding.z) / @@ -541,12 +540,12 @@ template void ImageGridComponent::buildTiles() auto y = (mSize.y - (mMargin.y * (mAutoLayout.y - 1.0f)) - mPadding.y - mPadding.w) / static_cast(mAutoLayout.y); - mTileSize = glm::vec2(x, y); + mTileSize = glm::vec2{x, y}; tileDistance = mTileSize + mMargin; } bool vert = isVertical(); - glm::vec2 startPosition = mTileSize / 2.0f; + glm::vec2 startPosition{mTileSize / 2.0f}; startPosition.x += mPadding.x; startPosition.y += mPadding.y; @@ -554,8 +553,8 @@ template void ImageGridComponent::buildTiles() int Y; // Layout tile size and position. - for (int y = 0; y < (vert ? mGridDimension.y() : mGridDimension.x()); y++) { - for (int x = 0; x < (vert ? mGridDimension.x() : mGridDimension.y()); x++) { + for (int y = 0; y < (vert ? mGridDimension.y : mGridDimension.x); y++) { + for (int x = 0; x < (vert ? mGridDimension.x : mGridDimension.y); x++) { // Create tiles. auto tile = std::make_shared(mWindow); @@ -614,7 +613,7 @@ void ImageGridComponent::updateTiles(bool ascending, int end = ascending ? static_cast(mTiles.size()) : -1; int img = mStartPosition + ti; - img -= EXTRAITEMS * (isVertical() ? mGridDimension.x() : mGridDimension.y()); + img -= EXTRAITEMS * (isVertical() ? mGridDimension.x : mGridDimension.y); // Update the tiles. while (ti != end) { @@ -674,7 +673,7 @@ void ImageGridComponent::updateTileAtPos(int tilePos, if (idx < 0 || idx >= mTiles.size()) idx = 0; - glm::vec3 pos = mTiles.at(idx)->getBackgroundPosition(); + glm::vec3 pos{mTiles.at(idx)->getBackgroundPosition()}; tile->setSelected(true, allowAnimation, &pos); } else { @@ -690,7 +689,7 @@ template void ImageGridComponent::calcGridDimension() { // grid_size = columns * tile_size + (columns - 1) * margin // <=> columns = (grid_size + margin) / (tile_size + margin) - glm::vec2 gridDimension = (mSize + mMargin) / (mTileSize + mMargin); + glm::vec2 gridDimension{(mSize + mMargin) / (mTileSize + mMargin)}; if (mAutoLayout.x != 0.0f && mAutoLayout.y != 0.0f) gridDimension = mAutoLayout; @@ -698,22 +697,22 @@ template void ImageGridComponent::calcGridDimension() mLastRowPartial = floorf(gridDimension.y) != gridDimension.y; // Ceil y dim so we can display partial last row. - mGridDimension = Vector2i(static_cast(gridDimension.x), - static_cast(ceilf(gridDimension.y))); + mGridDimension = glm::ivec2{static_cast(gridDimension.x), + static_cast(ceilf(gridDimension.y))}; // Grid dimension validation. - if (mGridDimension.x() < 1) { + if (mGridDimension.x < 1) { LOG(LogError) << "Theme defined grid X dimension below 1"; } - if (mGridDimension.y() < 1) { + if (mGridDimension.y < 1) { LOG(LogError) << "Theme defined grid Y dimension below 1"; } // Add extra tiles to both sides. if (isVertical()) - mGridDimension.y() += 2 * EXTRAITEMS; + mGridDimension.y += 2 * EXTRAITEMS; else - mGridDimension.x() += 2 * EXTRAITEMS; + mGridDimension.x += 2 * EXTRAITEMS; } template bool ImageGridComponent::isScrollLoop() @@ -721,8 +720,8 @@ template bool ImageGridComponent::isScrollLoop() if (!mScrollLoop) return false; if (isVertical()) - return (mGridDimension.x() * (mGridDimension.y() - 2 * EXTRAITEMS)) <= mEntries.size(); - return (mGridDimension.y() * (mGridDimension.x() - 2 * EXTRAITEMS)) <= mEntries.size(); + return (mGridDimension.x * (mGridDimension.y - 2 * EXTRAITEMS)) <= mEntries.size(); + return (mGridDimension.y * (mGridDimension.x - 2 * EXTRAITEMS)) <= mEntries.size(); } #endif // ES_CORE_COMPONENTS_IMAGE_GRID_COMPONENT_H diff --git a/es-core/src/components/MenuComponent.cpp b/es-core/src/components/MenuComponent.cpp index 83d2f3b8a..3d5b49e9d 100644 --- a/es-core/src/components/MenuComponent.cpp +++ b/es-core/src/components/MenuComponent.cpp @@ -21,7 +21,7 @@ MenuComponent::MenuComponent(Window* window, const std::shared_ptr& titleFont) : GuiComponent(window) , mBackground(window) - , mGrid(window, Vector2i(1, 3)) + , mGrid(window, glm::ivec2{1, 3}) , mNeedsSaving(false) { addChild(&mBackground); @@ -34,11 +34,11 @@ MenuComponent::MenuComponent(Window* window, mTitle->setHorizontalAlignment(ALIGN_CENTER); mTitle->setColor(0x555555FF); setTitle(title, titleFont); - mGrid.setEntry(mTitle, Vector2i(0, 0), false); + mGrid.setEntry(mTitle, glm::ivec2{}, false); // Set up list which will never change (externally, anyway). mList = std::make_shared(mWindow); - mGrid.setEntry(mList, Vector2i(0, 1), true); + mGrid.setEntry(mList, glm::ivec2{0, 1}, true); updateGrid(); updateSize(); @@ -106,7 +106,7 @@ void MenuComponent::updateSize() void MenuComponent::onSizeChanged() { - mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); // Update grid row/column sizes. mGrid.setRowHeightPerc(0, TITLE_HEIGHT / mSize.y); @@ -134,7 +134,7 @@ void MenuComponent::updateGrid() if (mButtons.size()) { mButtonGrid = makeButtonGrid(mWindow, mButtons); - mGrid.setEntry(mButtonGrid, Vector2i(0, 2), true, false); + mGrid.setEntry(mButtonGrid, glm::ivec2{0, 2}, true, false); } } @@ -142,13 +142,13 @@ std::shared_ptr makeButtonGrid( Window* window, const std::vector>& buttons) { std::shared_ptr buttonGrid = - std::make_shared(window, Vector2i(static_cast(buttons.size()), 2)); + std::make_shared(window, glm::ivec2{static_cast(buttons.size()), 2}); // Initialize to padding. float buttonGridWidth = BUTTON_GRID_HORIZ_PADDING * Renderer::getScreenWidthModifier() * buttons.size(); for (int i = 0; i < static_cast(buttons.size()); i++) { - buttonGrid->setEntry(buttons.at(i), Vector2i(i, 0), true, false); + buttonGrid->setEntry(buttons.at(i), glm::ivec2{i, 0}, true, false); buttonGridWidth += buttons.at(i)->getSize().x; } for (unsigned int i = 0; i < buttons.size(); i++) diff --git a/es-core/src/components/NinePatchComponent.cpp b/es-core/src/components/NinePatchComponent.cpp index a5a396a17..9d4abbde4 100644 --- a/es-core/src/components/NinePatchComponent.cpp +++ b/es-core/src/components/NinePatchComponent.cpp @@ -61,47 +61,46 @@ void NinePatchComponent::buildVertices() mTexture = TextureResource::get(mPath, false, false, true, scaleFactor); - if (mTexture->getSize() == Vector2i::Zero()) { + if (mTexture->getSize() == glm::ivec2{}) { mVertices = nullptr; LOG(LogWarning) << "NinePatchComponent has no texture"; return; } - glm::vec2 texSize; mVertices = new Renderer::Vertex[6 * 9]; - texSize = glm::vec2(static_cast(mTexture->getSize().x()), - static_cast(mTexture->getSize().y())); + glm::vec2 texSize{static_cast(mTexture->getSize().x), + static_cast(mTexture->getSize().y)}; - // clang-format off - const float imgSizeX[3] = { mCornerSize.x, mSize.x - mCornerSize.x * 2.0f, mCornerSize.x }; - const float imgSizeY[3] = { mCornerSize.y, mSize.y - mCornerSize.y * 2.0f, mCornerSize.y }; - const float imgPosX[3] = { 0, imgSizeX[0], imgSizeX[0] + imgSizeX[1] }; - const float imgPosY[3] = { 0, imgSizeY[0], imgSizeY[0] + imgSizeY[1] }; + const float imgSizeX[3]{mCornerSize.x, mSize.x - mCornerSize.x * 2.0f, mCornerSize.x}; + const float imgSizeY[3]{mCornerSize.y, mSize.y - mCornerSize.y * 2.0f, mCornerSize.y}; + const float imgPosX[3]{0, imgSizeX[0], imgSizeX[0] + imgSizeX[1]}; + const float imgPosY[3]{0, imgSizeY[0], imgSizeY[0] + imgSizeY[1]}; // The "1 +" in posY and "-" in sizeY is to deal with texture coordinates having a bottom // left corner origin vs. verticies having a top left origin. - const float texSizeX[3] = { mCornerSize.x / texSize.x, (texSize.x - mCornerSize.x * 2.0f) / texSize.x, mCornerSize.x / texSize.x }; - const float texSizeY[3] = { -mCornerSize.y / texSize.y, -(texSize.y - mCornerSize.y * 2.0f) / texSize.y, -mCornerSize.y / texSize.y }; - const float texPosX[3] = { 0.0f, texSizeX[0], texSizeX[0] + texSizeX[1] }; - const float texPosY[3] = { 1.0f, 1.0f + texSizeY[0], 1.0f + texSizeY[0] + texSizeY[1] }; + const float texSizeX[3]{mCornerSize.x / texSize.x, (texSize.x - mCornerSize.x * 2.0f) / texSize.x, mCornerSize.x / texSize.x}; + const float texSizeY[3]{-mCornerSize.y / texSize.y, -(texSize.y - mCornerSize.y * 2.0f) / texSize.y, -mCornerSize.y / texSize.y}; + + const float texPosX[3]{0.0f, texSizeX[0], texSizeX[0] + texSizeX[1]}; + const float texPosY[3]{1.0f, 1.0f + texSizeY[0], 1.0f + texSizeY[0] + texSizeY[1]}; // clang-format on int v = 0; for (int slice = 0; slice < 9; slice++) { - const int sliceX = slice % 3; - const int sliceY = slice / 3; - const glm::vec2 imgPos = glm::vec2(imgPosX[sliceX], imgPosY[sliceY]); - const glm::vec2 imgSize = glm::vec2(imgSizeX[sliceX], imgSizeY[sliceY]); - const glm::vec2 texPos = glm::vec2(texPosX[sliceX], texPosY[sliceY]); - const glm::vec2 texSize = glm::vec2(texSizeX[sliceX], texSizeY[sliceY]); + const int sliceX{slice % 3}; + const int sliceY{slice / 3}; + const glm::vec2 imgPos{imgPosX[sliceX], imgPosY[sliceY]}; + const glm::vec2 imgSize{imgSizeX[sliceX], imgSizeY[sliceY]}; + const glm::vec2 texPos{texPosX[sliceX], texPosY[sliceY]}; + const glm::vec2 texSize{texSizeX[sliceX], texSizeY[sliceY]}; // clang-format off - mVertices[v + 1] = { { imgPos.x , imgPos.y }, { texPos.x, texPos.y }, 0 }; - mVertices[v + 2] = { { imgPos.x , imgPos.y + imgSize.y }, { texPos.x, texPos.y + texSize.y }, 0 }; - mVertices[v + 3] = { { imgPos.x + imgSize.x, imgPos.y }, { texPos.x + texSize.x, texPos.y }, 0 }; - mVertices[v + 4] = { { imgPos.x + imgSize.x, imgPos.y + imgSize.y }, { texPos.x + texSize.x, texPos.y + texSize.y }, 0 }; + mVertices[v + 1] = {{imgPos.x , imgPos.y }, {texPos.x, texPos.y }, 0}; + mVertices[v + 2] = {{imgPos.x , imgPos.y + imgSize.y}, {texPos.x, texPos.y + texSize.y}, 0}; + mVertices[v + 3] = {{imgPos.x + imgSize.x, imgPos.y }, {texPos.x + texSize.x, texPos.y }, 0}; + mVertices[v + 4] = {{imgPos.x + imgSize.x, imgPos.y + imgSize.y}, {texPos.x + texSize.x, texPos.y + texSize.y}, 0}; // clang-format on // Round vertices. @@ -123,7 +122,7 @@ void NinePatchComponent::render(const glm::mat4& parentTrans) if (!isVisible()) return; - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; if (mTexture && mVertices != nullptr) { Renderer::setMatrix(trans); @@ -144,8 +143,6 @@ void NinePatchComponent::render(const glm::mat4& parentTrans) renderChildren(trans); } -void NinePatchComponent::onSizeChanged() { buildVertices(); } - void NinePatchComponent::fitTo(glm::vec2 size, glm::vec3 position, glm::vec2 padding) { size += padding; diff --git a/es-core/src/components/NinePatchComponent.h b/es-core/src/components/NinePatchComponent.h index b600f4be4..a02009eb2 100644 --- a/es-core/src/components/NinePatchComponent.h +++ b/es-core/src/components/NinePatchComponent.h @@ -37,8 +37,7 @@ public: void render(const glm::mat4& parentTrans) override; - void onSizeChanged() override; - + void onSizeChanged() override { buildVertices(); } void fitTo(glm::vec2 size, glm::vec3 position = {}, glm::vec2 padding = {}); void setImagePath(const std::string& path); diff --git a/es-core/src/components/RatingComponent.cpp b/es-core/src/components/RatingComponent.cpp index f5e8ad349..1751d0f46 100644 --- a/es-core/src/components/RatingComponent.cpp +++ b/es-core/src/components/RatingComponent.cpp @@ -25,7 +25,7 @@ RatingComponent::RatingComponent(Window* window, bool colorizeChanges) mFilledTexture = TextureResource::get(":/graphics/star_filled.svg", true); mUnfilledTexture = TextureResource::get(":/graphics/star_unfilled.svg", true); mValue = 0.5f; - mSize = glm::vec2(64.0f * NUM_RATING_STARS, 64.0f); + mSize = glm::vec2{64.0f * NUM_RATING_STARS, 64.0f}; updateVertices(); updateColors(); } @@ -121,15 +121,15 @@ void RatingComponent::updateVertices() const unsigned int color = Renderer::convertRGBAToABGR(mColorShift); // clang-format off - mVertices[0] = { { 0.0f, 0.0f }, { 0.0f, 1.0f }, color }; - mVertices[1] = { { 0.0f, h }, { 0.0f, 0.0f }, color }; - mVertices[2] = { { w, 0.0f }, { mValue * numStars, 1.0f }, color }; - mVertices[3] = { { w, h }, { mValue * numStars, 0.0f }, color }; + mVertices[0] = {{0.0f, 0.0f}, {0.0f, 1.0f}, color}; + mVertices[1] = {{0.0f, h }, {0.0f, 0.0f}, color}; + mVertices[2] = {{w, 0.0f}, {mValue * numStars, 1.0f}, color}; + mVertices[3] = {{w, h }, {mValue * numStars, 0.0f}, color}; - mVertices[4] = { { 0.0f, 0.0f }, { 0.0f, 1.0f }, color }; - mVertices[5] = { { 0.0f, h }, { 0.0f, 0.0f }, color }; - mVertices[6] = { { fw, 0.0f }, { numStars, 1.0f }, color }; - mVertices[7] = { { fw, h }, { numStars, 0.0f }, color }; + mVertices[4] = {{0.0f, 0.0f}, {0.0f, 1.0f}, color}; + mVertices[5] = {{0.0f, h }, {0.0f, 0.0f}, color}; + mVertices[6] = {{fw, 0.0f}, {numStars, 1.0f}, color}; + mVertices[7] = {{fw, h }, {numStars, 0.0f}, color}; // clang-format on } @@ -146,7 +146,7 @@ void RatingComponent::render(const glm::mat4& parentTrans) if (!isVisible() || mFilledTexture == nullptr || mUnfilledTexture == nullptr) return; - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; Renderer::setMatrix(trans); diff --git a/es-core/src/components/ScrollableContainer.cpp b/es-core/src/components/ScrollableContainer.cpp index b0ff1a85a..53c5e436d 100644 --- a/es-core/src/components/ScrollableContainer.cpp +++ b/es-core/src/components/ScrollableContainer.cpp @@ -11,7 +11,6 @@ #include "Window.h" #include "animations/LambdaAnimation.h" -#include "math/Vector2i.h" #include "renderers/Renderer.h" #include "resources/Font.h" @@ -45,7 +44,7 @@ ScrollableContainer::ScrollableContainer(Window* window) void ScrollableContainer::setAutoScroll(bool autoScroll) { if (autoScroll) { - mScrollDir = glm::vec2(0.0f, 1.0f); + mScrollDir = glm::vec2{0.0f, 1.0f}; mAutoScrollDelay = static_cast(mAutoScrollDelayConstant); mAutoScrollSpeed = mAutoScrollSpeedConstant; mAutoScrollSpeed = @@ -53,7 +52,7 @@ void ScrollableContainer::setAutoScroll(bool autoScroll) reset(); } else { - mScrollDir = glm::vec2(0.0f, 0.0f); + mScrollDir = glm::vec2{}; mAutoScrollDelay = 0; mAutoScrollSpeed = 0; mAutoScrollAccumulator = 0; @@ -71,7 +70,7 @@ void ScrollableContainer::setScrollParameters(float autoScrollDelayConstant, void ScrollableContainer::reset() { - mScrollPos = glm::vec2(0.0f, 0.0f); + mScrollPos = glm::vec2{}; mAutoScrollResetAccumulator = 0; mAutoScrollAccumulator = -mAutoScrollDelay + mAutoScrollSpeed; mAtEnd = false; @@ -82,12 +81,12 @@ void ScrollableContainer::update(int deltaTime) // Don't scroll if the media viewer or screensaver is active or if text scrolling is disabled; if (mWindow->isMediaViewerActive() || mWindow->isScreensaverActive() || !mWindow->getAllowTextScrolling()) { - if (mScrollPos != glm::vec2({}) && !mWindow->isLaunchScreenDisplayed()) + if (mScrollPos != glm::vec2{} && !mWindow->isLaunchScreenDisplayed()) reset(); return; } - const glm::vec2 contentSize = getContentSize(); + const glm::vec2 contentSize{getContentSize()}; int adjustedAutoScrollSpeed = mAutoScrollSpeed; // Adjust the scrolling speed based on the width of the container. @@ -136,7 +135,7 @@ void ScrollableContainer::update(int deltaTime) // Fade in the text as it resets to the start position. auto func = [this](float t) { this->setOpacity(static_cast(Math::lerp(0.0f, 1.0f, t) * 255)); - mScrollPos = glm::vec2(0.0f, 0.0f); + mScrollPos = glm::vec2{}; mAutoScrollResetAccumulator = 0; mAutoScrollAccumulator = -mAutoScrollDelay + mAutoScrollSpeed; mAtEnd = false; @@ -153,21 +152,20 @@ void ScrollableContainer::render(const glm::mat4& parentTrans) if (!isVisible()) return; - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; - Vector2i clipPos(static_cast(trans[3].x), static_cast(trans[3].y)); - - glm::vec3 dimScaled {}; + glm::ivec2 clipPos{static_cast(trans[3].x), static_cast(trans[3].y)}; + glm::vec3 dimScaled{}; dimScaled.x = std::fabs(trans[3].x + mSize.x); dimScaled.y = std::fabs(trans[3].y + mSize.y); - Vector2i clipDim(static_cast(dimScaled.x - trans[3].x), - static_cast(dimScaled.y - trans[3].y)); + glm::ivec2 clipDim{static_cast(dimScaled.x - trans[3].x), + static_cast(dimScaled.y - trans[3].y)}; Renderer::pushClipRect(clipPos, clipDim); - trans = glm::translate(trans, -glm::vec3(mScrollPos.x, mScrollPos.y, 0.0f)); + trans = glm::translate(trans, -glm::vec3{mScrollPos.x, mScrollPos.y, 0.0f}); Renderer::setMatrix(trans); GuiComponent::renderChildren(trans); @@ -176,10 +174,10 @@ void ScrollableContainer::render(const glm::mat4& parentTrans) glm::vec2 ScrollableContainer::getContentSize() { - glm::vec2 max(0.0f, 0.0f); + glm::vec2 max{}; for (unsigned int i = 0; i < mChildren.size(); i++) { - glm::vec2 pos(mChildren.at(i)->getPosition().x, mChildren.at(i)->getPosition().y); - glm::vec2 bottomRight = mChildren.at(i)->getSize() + pos; + glm::vec2 pos{mChildren.at(i)->getPosition().x, mChildren.at(i)->getPosition().y}; + glm::vec2 bottomRight{mChildren.at(i)->getSize() + pos}; if (bottomRight.x > max.x) max.x = bottomRight.x; if (bottomRight.y > max.y) diff --git a/es-core/src/components/SliderComponent.cpp b/es-core/src/components/SliderComponent.cpp index 71dbe6fb8..35c84a26a 100644 --- a/es-core/src/components/SliderComponent.cpp +++ b/es-core/src/components/SliderComponent.cpp @@ -76,20 +76,20 @@ void SliderComponent::update(int deltaTime) void SliderComponent::render(const glm::mat4& parentTrans) { - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; Renderer::setMatrix(trans); // Render suffix. if (mValueCache) mFont->renderTextCache(mValueCache.get()); - float width = - mSize.x - mKnob.getSize().x - - (mValueCache ? mValueCache->metrics.size.x + (4.0f * Renderer::getScreenWidthModifier()) : - 0.0f); + float width{mSize.x - mKnob.getSize().x - + (mValueCache ? + mValueCache->metrics.size.x + (4.0f * Renderer::getScreenWidthModifier()) : + 0.0f)}; // Render line. - const float lineWidth = 2.0f * Renderer::getScreenHeightModifier(); + const float lineWidth{2.0f * Renderer::getScreenHeightModifier()}; Renderer::drawRect(mKnob.getSize().x / 2.0f, mSize.y / 2.0f - lineWidth / 2.0f, width, lineWidth, 0x777777FF, 0x777777FF); diff --git a/es-core/src/components/SwitchComponent.cpp b/es-core/src/components/SwitchComponent.cpp index 975496a27..23f64dd24 100644 --- a/es-core/src/components/SwitchComponent.cpp +++ b/es-core/src/components/SwitchComponent.cpp @@ -44,7 +44,7 @@ bool SwitchComponent::input(InputConfig* config, Input input) void SwitchComponent::render(const glm::mat4& parentTrans) { - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; mImage.render(trans); renderChildren(trans); } diff --git a/es-core/src/components/TextComponent.cpp b/es-core/src/components/TextComponent.cpp index 6e8191dda..3b268955e 100644 --- a/es-core/src/components/TextComponent.cpp +++ b/es-core/src/components/TextComponent.cpp @@ -60,7 +60,7 @@ TextComponent::TextComponent(Window* window, void TextComponent::onSizeChanged() { - mAutoCalcExtent = Vector2i((getSize().x == 0), (getSize().y == 0)); + mAutoCalcExtent = glm::ivec2{(getSize().x == 0), (getSize().y == 0)}; onTextChanged(); } @@ -120,7 +120,7 @@ void TextComponent::render(const glm::mat4& parentTrans) if (!isVisible()) return; - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; if (mRenderBackground) { Renderer::setMatrix(trans); @@ -128,7 +128,7 @@ void TextComponent::render(const glm::mat4& parentTrans) } if (mTextCache) { - const glm::vec2& textSize = mTextCache->metrics.size; + const glm::vec2& textSize{mTextCache->metrics.size}; float yOff = 0.0f; switch (mVerticalAlignment) { case ALIGN_TOP: { @@ -147,7 +147,7 @@ void TextComponent::render(const glm::mat4& parentTrans) break; } } - glm::vec3 off(0.0f, yOff, 0.0f); + glm::vec3 off{0.0f, yOff, 0.0f}; if (Settings::getInstance()->getBool("DebugText")) { // Draw the "textbox" area, what we are aligned within. @@ -189,11 +189,11 @@ void TextComponent::render(const glm::mat4& parentTrans) void TextComponent::calculateExtent() { - if (mAutoCalcExtent.x()) { + if (mAutoCalcExtent.x) { mSize = mFont->sizeText(mUppercase ? Utils::String::toUpper(mText) : mText, mLineSpacing); } else { - if (mAutoCalcExtent.y()) + if (mAutoCalcExtent.y) mSize.y = mFont ->sizeWrappedText(mUppercase ? Utils::String::toUpper(mText) : mText, getSize().x, mLineSpacing) @@ -223,11 +223,11 @@ void TextComponent::onTextChanged() addAbbrev = newline != std::string::npos; } - glm::vec2 size = f->sizeText(text); + glm::vec2 size{f->sizeText(text)}; if (!isMultiline && mSize.x > 0.0f && text.size() && (size.x > mSize.x || addAbbrev)) { // Abbreviate text. const std::string abbrev = "..."; - glm::vec2 abbrevSize = f->sizeText(abbrev); + glm::vec2 abbrevSize{f->sizeText(abbrev)}; // mMargin adds a margin around the text if it's abbreviated. float marginAdjustedSize = mSize.x - (mSize.x * mMargin); @@ -240,12 +240,12 @@ void TextComponent::onTextChanged() text.append(abbrev); mTextCache = std::shared_ptr( - f->buildTextCache(text, glm::vec2({}), (mColor >> 8 << 8) | mOpacity, mSize.x, + f->buildTextCache(text, glm::vec2{}, (mColor >> 8 << 8) | mOpacity, mSize.x, mHorizontalAlignment, mLineSpacing, mNoTopMargin)); } else { mTextCache = std::shared_ptr(f->buildTextCache( - f->wrapText(text, mSize.x), glm::vec2({}), (mColor >> 8 << 8) | mOpacity, mSize.x, + f->wrapText(text, mSize.x), glm::vec2{}, (mColor >> 8 << 8) | mOpacity, mSize.x, mHorizontalAlignment, mLineSpacing, mNoTopMargin)); } } diff --git a/es-core/src/components/TextComponent.h b/es-core/src/components/TextComponent.h index 8bf4cd0ed..58ac31f69 100644 --- a/es-core/src/components/TextComponent.h +++ b/es-core/src/components/TextComponent.h @@ -88,7 +88,7 @@ private: bool mRenderBackground; bool mUppercase; - Vector2i mAutoCalcExtent; + glm::ivec2 mAutoCalcExtent; std::shared_ptr mTextCache; Alignment mHorizontalAlignment; Alignment mVerticalAlignment; diff --git a/es-core/src/components/TextEditComponent.cpp b/es-core/src/components/TextEditComponent.cpp index 8d0c2f0e4..7ed097944 100644 --- a/es-core/src/components/TextEditComponent.cpp +++ b/es-core/src/components/TextEditComponent.cpp @@ -46,9 +46,9 @@ void TextEditComponent::onFocusLost() void TextEditComponent::onSizeChanged() { - mBox.fitTo(mSize, glm::vec3({}), - glm::vec2(-34.0f + mResolutionAdjustment, - -32.0f - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier()))); + mBox.fitTo(mSize, glm::vec3{}, + glm::vec2{-34.0f + mResolutionAdjustment, + -32.0f - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier())}); onTextChanged(); // Wrap point probably changed. } @@ -250,7 +250,7 @@ void TextEditComponent::onTextChanged() void TextEditComponent::onCursorChanged() { if (isMultiline()) { - glm::vec2 textSize = mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x, mCursor); + glm::vec2 textSize{mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x, mCursor)}; // Need to scroll down? if (mScrollOffset.y + getTextAreaSize().y < textSize.y + mFont->getHeight()) @@ -260,7 +260,7 @@ void TextEditComponent::onCursorChanged() mScrollOffset.y = textSize.y; } else { - glm::vec2 cursorPos = mFont->sizeText(mText.substr(0, mCursor)); + glm::vec2 cursorPos{mFont->sizeText(mText.substr(0, mCursor))}; if (mScrollOffset.x + getTextAreaSize().x < cursorPos.x) mScrollOffset.x = cursorPos.x - getTextAreaSize().x; @@ -271,24 +271,24 @@ void TextEditComponent::onCursorChanged() void TextEditComponent::render(const glm::mat4& parentTrans) { - glm::mat4 trans = getTransform() * parentTrans; + glm::mat4 trans{getTransform() * parentTrans}; renderChildren(trans); // Text + cursor rendering. // Offset into our "text area" (padding). - trans = glm::translate(trans, glm::vec3(getTextAreaPos().x, getTextAreaPos().y, 0.0f)); + trans = glm::translate(trans, glm::vec3{getTextAreaPos().x, getTextAreaPos().y, 0.0f}); - Vector2i clipPos(static_cast(trans[3].x), static_cast(trans[3].y)); + glm::ivec2 clipPos{static_cast(trans[3].x), static_cast(trans[3].y)}; // Use "text area" size for clipping. - glm::vec3 dimScaled {}; + glm::vec3 dimScaled{}; dimScaled.x = std::fabs(trans[3].x + getTextAreaSize().x); dimScaled.y = std::fabs(trans[3].y + getTextAreaSize().y); - Vector2i clipDim(static_cast(dimScaled.x - trans[3].x), - static_cast(dimScaled.y - trans[3].y)); + glm::ivec2 clipDim{static_cast(dimScaled.x - trans[3].x), + static_cast(dimScaled.y - trans[3].y)}; Renderer::pushClipRect(clipPos, clipDim); - trans = glm::translate(trans, glm::vec3(-mScrollOffset.x, -mScrollOffset.y, 0.0f)); + trans = glm::translate(trans, glm::vec3{-mScrollOffset.x, -mScrollOffset.y, 0.0f}); Renderer::setMatrix(trans); if (mTextCache) @@ -317,16 +317,16 @@ void TextEditComponent::render(const glm::mat4& parentTrans) glm::vec2 TextEditComponent::getTextAreaPos() const { - return glm::vec2( + return glm::vec2{ (-mResolutionAdjustment + (TEXT_PADDING_HORIZ * Renderer::getScreenWidthModifier())) / 2.0f, - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier()) / 2.0f); + (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier()) / 2.0f}; } glm::vec2 TextEditComponent::getTextAreaSize() const { - return glm::vec2(mSize.x + mResolutionAdjustment - + return glm::vec2{mSize.x + mResolutionAdjustment - (TEXT_PADDING_HORIZ * Renderer::getScreenWidthModifier()), - mSize.y - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier())); + mSize.y - (TEXT_PADDING_VERT * Renderer::getScreenHeightModifier())}; } std::vector TextEditComponent::getHelpPrompts() diff --git a/es-core/src/components/TextListComponent.h b/es-core/src/components/TextListComponent.h index 4b30a07ae..670c7b4ae 100644 --- a/es-core/src/components/TextListComponent.h +++ b/es-core/src/components/TextListComponent.h @@ -160,14 +160,14 @@ template void TextListComponent::render(const glm::mat4& parentT if (size() == 0) return; - glm::mat4 trans = parentTrans * getTransform(); - std::shared_ptr& font = mFont; + glm::mat4 trans{parentTrans * getTransform()}; + std::shared_ptr& font{mFont}; - int startEntry = 0; - float y = 0; + int startEntry{0}; + float y{0.0f}; - const float entrySize = - std::max(font->getHeight(1.0), static_cast(font->getSize())) * mLineSpacing; + const float entrySize{std::max(font->getHeight(1.0), static_cast(font->getSize())) * + mLineSpacing}; // Number of entries that can fit on the screen simultaneously. int screenCount = static_cast(mSize.y / entrySize + 0.5f); @@ -206,13 +206,13 @@ template void TextListComponent::render(const glm::mat4& parentT } // Clip to inside margins. - glm::vec3 dim(mSize.x, mSize.y, 0.0f); + glm::vec3 dim{mSize.x, mSize.y, 0.0f}; dim.x = (trans[0].x * dim.x + trans[3].x) - trans[3].x; dim.y = (trans[1].y * dim.y + trans[3].y) - trans[3].y; Renderer::pushClipRect( - Vector2i(static_cast(trans[3].x + mHorizontalMargin), static_cast(trans[3].y)), - Vector2i(static_cast(dim.x - mHorizontalMargin * 2.0f), static_cast(dim.y))); + glm::ivec2{static_cast(trans[3].x + mHorizontalMargin), static_cast(trans[3].y)}, + glm::ivec2{static_cast(dim.x - mHorizontalMargin * 2.0f), static_cast(dim.y)}); for (int i = startEntry; i < listCutoff; i++) { typename IList::Entry& entry = mEntries.at(static_cast(i)); @@ -236,7 +236,7 @@ template void TextListComponent::render(const glm::mat4& parentT else entry.data.textCache->setColor(color); - glm::vec3 offset(0.0f, y, 0.0f); + glm::vec3 offset{0.0f, y, 0.0f}; switch (mAlignment) { case ALIGN_LEFT: @@ -257,12 +257,12 @@ template void TextListComponent::render(const glm::mat4& parentT } // Render text. - glm::mat4 drawTrans = trans; + glm::mat4 drawTrans{trans}; // Currently selected item text might be scrolling. if (mCursor == i && mMarqueeOffset > 0) drawTrans = glm::translate( - drawTrans, offset - glm::vec3(static_cast(mMarqueeOffset), 0.0f, 0.0f)); + drawTrans, offset - glm::vec3{static_cast(mMarqueeOffset), 0.0f, 0.0f}); else drawTrans = glm::translate(drawTrans, offset); @@ -278,7 +278,7 @@ template void TextListComponent::render(const glm::mat4& parentT mMarqueeScroll = true; drawTrans = trans; drawTrans = glm::translate( - drawTrans, offset - glm::vec3(static_cast(mMarqueeOffset2), 0.0f, 0.0f)); + drawTrans, offset - glm::vec3{static_cast(mMarqueeOffset2), 0.0f, 0.0f}); Renderer::setMatrix(drawTrans); font->renderTextCache(entry.data.textCache.get()); } diff --git a/es-core/src/components/VideoComponent.cpp b/es-core/src/components/VideoComponent.cpp index 0395add15..3e4cb1700 100644 --- a/es-core/src/components/VideoComponent.cpp +++ b/es-core/src/components/VideoComponent.cpp @@ -176,7 +176,7 @@ void VideoComponent::render(const glm::mat4& parentTrans) if (!isVisible()) return; - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; GuiComponent::renderChildren(trans); Renderer::setMatrix(trans); @@ -223,9 +223,9 @@ void VideoComponent::applyTheme(const std::shared_ptr& theme, if (!elem) return; - glm::vec2 scale = getParent() ? getParent()->getSize() : - glm::vec2(static_cast(Renderer::getScreenWidth()), - static_cast(Renderer::getScreenHeight())); + glm::vec2 scale{getParent() ? getParent()->getSize() : + glm::vec2{static_cast(Renderer::getScreenWidth()), + static_cast(Renderer::getScreenHeight())}}; if (properties & ThemeFlags::SIZE) { if (elem->has("size")) { diff --git a/es-core/src/components/VideoFFmpegComponent.cpp b/es-core/src/components/VideoFFmpegComponent.cpp index 3f679b38d..4209ff996 100644 --- a/es-core/src/components/VideoFFmpegComponent.cpp +++ b/es-core/src/components/VideoFFmpegComponent.cpp @@ -57,7 +57,7 @@ VideoFFmpegComponent::~VideoFFmpegComponent() { stopVideo(); } void VideoFFmpegComponent::setResize(float width, float height) { // This resize function is used when stretching videos to full screen in the video screensaver. - mTargetSize = glm::vec2(width, height); + mTargetSize = glm::vec2{width, height}; mTargetIsMax = false; mStaticImage.setResize(width, height); resize(); @@ -67,7 +67,7 @@ void VideoFFmpegComponent::setMaxSize(float width, float height) { // This resize function is used in most instances, such as non-stretched video screensaver // and the gamelist videos. - mTargetSize = glm::vec2(width, height); + mTargetSize = glm::vec2{width, height}; mTargetIsMax = true; mStaticImage.setMaxSize(width, height); resize(); @@ -78,15 +78,15 @@ void VideoFFmpegComponent::resize() if (!mTexture) return; - const glm::vec2 textureSize(static_cast(mVideoWidth), static_cast(mVideoHeight)); + const glm::vec2 textureSize{static_cast(mVideoWidth), static_cast(mVideoHeight)}; - if (textureSize == glm::vec2({})) + if (textureSize == glm::vec2{}) return; if (mTargetIsMax) { mSize = textureSize; - glm::vec2 resizeScale((mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)); + glm::vec2 resizeScale{(mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)}; if (resizeScale.x < resizeScale.y) { mSize.x *= resizeScale.x; @@ -97,13 +97,13 @@ void VideoFFmpegComponent::resize() mSize.y *= resizeScale.y; } - mSize.y = std::round(mSize[1.0f]); + mSize.y = std::round(mSize.y); mSize.x = (mSize.y / textureSize.y) * textureSize.x; } else { // If both components are set, we just stretch. // If no components are set, we don't resize at all. - mSize = mTargetSize == glm::vec2({}) ? textureSize : mTargetSize; + mSize = mTargetSize == glm::vec2{} ? textureSize : mTargetSize; // If only one component is set, we resize in a way that maintains aspect ratio. if (!mTargetSize.x && mTargetSize.y) { @@ -122,7 +122,7 @@ void VideoFFmpegComponent::resize() void VideoFFmpegComponent::render(const glm::mat4& parentTrans) { VideoComponent::render(parentTrans); - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; GuiComponent::renderChildren(trans); if (mIsPlaying && mFormatContext) { @@ -146,10 +146,10 @@ void VideoFFmpegComponent::render(const glm::mat4& parentTrans) } // clang-format off - vertices[0] = { { 0.0f , 0.0f }, { 0.0f, 0.0f }, color }; - vertices[1] = { { 0.0f , mSize.y }, { 0.0f, 1.0f }, color }; - vertices[2] = { { mSize.x , 0.0f }, { 1.0f, 0.0f }, color }; - vertices[3] = { { mSize.x , mSize.y }, { 1.0f, 1.0f }, color }; + vertices[0] = {{0.0f , 0.0f }, {0.0f, 0.0f}, color}; + vertices[1] = {{0.0f , mSize.y}, {0.0f, 1.0f}, color}; + vertices[2] = {{mSize.x , 0.0f }, {1.0f, 0.0f}, color}; + vertices[3] = {{mSize.x , mSize.y}, {1.0f, 1.0f}, color}; // clang-format on // Round vertices. @@ -290,7 +290,7 @@ bool VideoFFmpegComponent::setupVideoFilters() { int returnValue = 0; char errorMessage[512]; - const enum AVPixelFormat outPixFormats[] = { AV_PIX_FMT_RGBA, AV_PIX_FMT_NONE }; + const enum AVPixelFormat outPixFormats[] = {AV_PIX_FMT_RGBA, AV_PIX_FMT_NONE}; mVFilterInputs = avfilter_inout_alloc(); mVFilterOutputs = avfilter_inout_alloc(); @@ -416,8 +416,8 @@ bool VideoFFmpegComponent::setupAudioFilters() { int returnValue = 0; char errorMessage[512]; - const int outSampleRates[] = { AudioManager::getInstance()->sAudioFormat.freq, -1 }; - const enum AVSampleFormat outSampleFormats[] = { AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_NONE }; + const int outSampleRates[] = {AudioManager::getInstance()->sAudioFormat.freq, -1}; + const enum AVSampleFormat outSampleFormats[] = {AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_NONE}; mAFilterInputs = avfilter_inout_alloc(); mAFilterOutputs = avfilter_inout_alloc(); @@ -798,7 +798,7 @@ void VideoFFmpegComponent::calculateBlackRectangle() // otherwise it will exactly match the video size. The reason to add a black rectangle // behind videos in this second instance is that the scanline rendering will make the // video partially transparent so this may avoid some unforseen issues with some themes. - if (mVideoAreaPos != glm::vec2({}) && mVideoAreaSize != glm::vec2({})) { + if (mVideoAreaPos != glm::vec2{} && mVideoAreaSize != glm::vec2{}) { mVideoRectangleCoords.clear(); if (Settings::getInstance()->getBool("GamelistVideoPillarbox")) { diff --git a/es-core/src/components/VideoVlcComponent.cpp b/es-core/src/components/VideoVlcComponent.cpp index 0dfecda1c..9c3fc3084 100644 --- a/es-core/src/components/VideoVlcComponent.cpp +++ b/es-core/src/components/VideoVlcComponent.cpp @@ -63,7 +63,7 @@ void VideoVlcComponent::deinit() void VideoVlcComponent::setResize(float width, float height) { // This resize function is used when stretching videos to full screen in the video screensaver. - mTargetSize = glm::vec2(width, height); + mTargetSize = glm::vec2{width, height}; mTargetIsMax = false; mStaticImage.setResize(width, height); resize(); @@ -73,7 +73,7 @@ void VideoVlcComponent::setMaxSize(float width, float height) { // This resize function is used in most instances, such as non-stretched video screensaver // and the gamelist videos. - mTargetSize = glm::vec2(width, height); + mTargetSize = glm::vec2{width, height}; mTargetIsMax = true; mStaticImage.setMaxSize(width, height); resize(); @@ -83,7 +83,7 @@ void VideoVlcComponent::setupVLC() { // If VLC hasn't been initialised yet then do it now. if (!mVLC) { - const char* args[] = { "--quiet" }; + const char* args[] = {"--quiet"}; #if defined(__APPLE__) // It's required to set the VLC_PLUGIN_PATH variable on macOS, or the libVLC @@ -129,13 +129,13 @@ void VideoVlcComponent::resize() const glm::vec2 textureSize(static_cast(mVideoWidth), static_cast(mVideoHeight)); - if (textureSize == glm::vec2({})) + if (textureSize == glm::vec2{}) return; if (mTargetIsMax) { mSize = textureSize; - glm::vec2 resizeScale((mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)); + glm::vec2 resizeScale{(mTargetSize.x / mSize.x), (mTargetSize.y / mSize.y)}; if (resizeScale.x < resizeScale.y) { mSize.x *= resizeScale.x; @@ -152,7 +152,7 @@ void VideoVlcComponent::resize() else { // If both components are set, we just stretch. // If no components are set, we don't resize at all. - mSize = mTargetSize == glm::vec2({}) ? textureSize : mTargetSize; + mSize = mTargetSize == glm::vec2{} ? textureSize : mTargetSize; // If only one component is set, we resize in a way that maintains aspect ratio. if (!mTargetSize.x && mTargetSize.y) { @@ -179,7 +179,7 @@ void VideoVlcComponent::render(const glm::mat4& parentTrans) setAudioVolume(); VideoComponent::render(parentTrans); - glm::mat4 trans = parentTrans * getTransform(); + glm::mat4 trans{parentTrans * getTransform()}; GuiComponent::renderChildren(trans); // Check the actual VLC state, i.e. if the video is really playing rather than @@ -213,10 +213,10 @@ void VideoVlcComponent::render(const glm::mat4& parentTrans) } // clang-format off - vertices[0] = { { 0.0f , 0.0f }, { 0.0f, 0.0f }, color }; - vertices[1] = { { 0.0f , mSize.y }, { 0.0f, 1.0f }, color }; - vertices[2] = { { mSize.x, 0.0f }, { 1.0f, 0.0f }, color }; - vertices[3] = { { mSize.x, mSize.y }, { 1.0f, 1.0f }, color }; + vertices[0] = {{0.0f , 0.0f }, {0.0f, 0.0f}, color}; + vertices[1] = {{0.0f , mSize.y}, {0.0f, 1.0f}, color}; + vertices[2] = {{mSize.x, 0.0f }, {1.0f, 0.0f}, color}; + vertices[3] = {{mSize.x, mSize.y}, {1.0f, 1.0f}, color}; // clang-format on // Round vertices. @@ -255,7 +255,7 @@ void VideoVlcComponent::calculateBlackRectangle() // otherwise it will exactly match the video size. The reason to add a black rectangle // behind videos in this second instance is that the scanline rendering will make the // video partially transparent so this may avoid some unforseen issues with some themes. - if (mVideoAreaPos != glm::vec2({}) && mVideoAreaSize != glm::vec2({})) { + if (mVideoAreaPos != glm::vec2{} && mVideoAreaSize != glm::vec2{}) { mVideoRectangleCoords.clear(); if (Settings::getInstance()->getBool("GamelistVideoPillarbox")) { diff --git a/es-core/src/guis/GuiComplexTextEditPopup.cpp b/es-core/src/guis/GuiComplexTextEditPopup.cpp index 848ee62da..15f16b781 100644 --- a/es-core/src/guis/GuiComplexTextEditPopup.cpp +++ b/es-core/src/guis/GuiComplexTextEditPopup.cpp @@ -35,7 +35,7 @@ GuiComplexTextEditPopup::GuiComplexTextEditPopup( : GuiComponent(window) , mHelpStyle(helpstyle) , mBackground(window, ":/graphics/frame.svg") - , mGrid(window, Vector2i(1, 5)) + , mGrid(window, glm::ivec2{1, 5}) , mMultiLine(multiLine) , mInitValue(initValue) , mOkCallback(okCallback) @@ -75,12 +75,12 @@ GuiComplexTextEditPopup::GuiComplexTextEditPopup( mButtonGrid = makeButtonGrid(mWindow, buttons); - mGrid.setEntry(mTitle, Vector2i(0, 0), false, true); - mGrid.setEntry(mInfoString1, Vector2i(0, 1), false, true); - mGrid.setEntry(mInfoString2, Vector2i(0, 2), false, false); - mGrid.setEntry(mText, Vector2i(0, 3), true, false, Vector2i(1, 1), + mGrid.setEntry(mTitle, glm::ivec2{0, 0}, false, true); + mGrid.setEntry(mInfoString1, glm::ivec2{0, 1}, false, true); + mGrid.setEntry(mInfoString2, glm::ivec2{0, 2}, false, false); + mGrid.setEntry(mText, glm::ivec2{0, 3}, true, false, glm::ivec2{1, 1}, GridFlags::BORDER_TOP | GridFlags::BORDER_BOTTOM); - mGrid.setEntry(mButtonGrid, Vector2i(0, 4), true, false); + mGrid.setEntry(mButtonGrid, glm::ivec2{0, 4}, true, false); mGrid.setRowHeightPerc(1, 0.15f, true); float textHeight = mText->getFont()->getHeight(); @@ -106,7 +106,7 @@ GuiComplexTextEditPopup::GuiComplexTextEditPopup( void GuiComplexTextEditPopup::onSizeChanged() { - mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); mText->setSize(mSize.x - 40.0f, mText->getSize().y); // Update grid. diff --git a/es-core/src/guis/GuiDetectDevice.cpp b/es-core/src/guis/GuiDetectDevice.cpp index 7062f97b4..8159f9bb2 100644 --- a/es-core/src/guis/GuiDetectDevice.cpp +++ b/es-core/src/guis/GuiDetectDevice.cpp @@ -25,7 +25,7 @@ GuiDetectDevice::GuiDetectDevice(Window* window, , mFirstRun(firstRun) , mForcedConfig(forcedConfig) , mBackground(window, ":/graphics/frame.svg") - , mGrid(window, Vector2i(1, 5)) + , mGrid(window, glm::ivec2{1, 5}) { mHoldingConfig = nullptr; mHoldTime = 0; @@ -38,7 +38,8 @@ GuiDetectDevice::GuiDetectDevice(Window* window, mTitle = std::make_shared(mWindow, firstRun ? "WELCOME" : "CONFIGURE INPUT DEVICE", Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); - mGrid.setEntry(mTitle, Vector2i(0, 0), false, true, Vector2i(1, 1), GridFlags::BORDER_BOTTOM); + mGrid.setEntry(mTitle, glm::ivec2{0, 0}, false, true, glm::ivec2{1, 1}, + GridFlags::BORDER_BOTTOM); // Device info. std::stringstream deviceInfo; @@ -54,7 +55,7 @@ GuiDetectDevice::GuiDetectDevice(Window* window, mDeviceInfo = std::make_shared( mWindow, deviceInfo.str(), Font::get(FONT_SIZE_SMALL), 0x999999FF, ALIGN_CENTER); - mGrid.setEntry(mDeviceInfo, Vector2i(0, 1), false, true); + mGrid.setEntry(mDeviceInfo, glm::ivec2{0, 1}, false, true); // Message. if (numDevices > 0) { @@ -68,18 +69,18 @@ GuiDetectDevice::GuiDetectDevice(Window* window, 0x777777FF, ALIGN_CENTER); } - mGrid.setEntry(mMsg1, Vector2i(0, 2), false, true); + mGrid.setEntry(mMsg1, glm::ivec2{0, 2}, false, true); const std::string msg2str = firstRun ? "PRESS ESC TO SKIP (OR F4 TO QUIT AT ANY TIME)" : "PRESS ESC TO CANCEL"; mMsg2 = std::make_shared(mWindow, msg2str, Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER); - mGrid.setEntry(mMsg2, Vector2i(0, 3), false, true); + mGrid.setEntry(mMsg2, glm::ivec2{0, 3}, false, true); // Currently held device. mDeviceHeld = std::make_shared(mWindow, "", Font::get(FONT_SIZE_MEDIUM), 0xFFFFFFFF, ALIGN_CENTER); - mGrid.setEntry(mDeviceHeld, Vector2i(0, 4), false, true); + mGrid.setEntry(mDeviceHeld, glm::ivec2{0, 4}, false, true); // Adjust the width relative to the aspect ratio of the screen to make the GUI look coherent // regardless of screen type. The 1.778 aspect ratio value is the 16:9 reference. @@ -93,7 +94,7 @@ GuiDetectDevice::GuiDetectDevice(Window* window, void GuiDetectDevice::onSizeChanged() { - mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); // Grid. mGrid.setSize(mSize); diff --git a/es-core/src/guis/GuiInputConfig.cpp b/es-core/src/guis/GuiInputConfig.cpp index 997d570e2..cac72bc45 100644 --- a/es-core/src/guis/GuiInputConfig.cpp +++ b/es-core/src/guis/GuiInputConfig.cpp @@ -33,7 +33,7 @@ GuiInputConfig::GuiInputConfig(Window* window, const std::function& okCallback) : GuiComponent(window) , mBackground(window, ":/graphics/frame.svg") - , mGrid(window, Vector2i(1, 7)) + , mGrid(window, glm::ivec2{1, 7}) , mTargetConfig(target) , mHoldingInput(false) { @@ -54,11 +54,11 @@ GuiInputConfig::GuiInputConfig(Window* window, addChild(&mGrid); // 0 is a spacer row. - mGrid.setEntry(std::make_shared(mWindow), Vector2i(0, 0), false); + mGrid.setEntry(std::make_shared(mWindow), glm::ivec2{0, 0}, false); mTitle = std::make_shared(mWindow, "CONFIGURING", Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); - mGrid.setEntry(mTitle, Vector2i(0, 1), false, true); + mGrid.setEntry(mTitle, glm::ivec2{0, 1}, false, true); std::stringstream ss; if (target->getDeviceId() == DEVICE_KEYBOARD) @@ -70,7 +70,7 @@ GuiInputConfig::GuiInputConfig(Window* window, mSubtitle1 = std::make_shared(mWindow, Utils::String::toUpper(ss.str()), Font::get(FONT_SIZE_MEDIUM), 0x555555FF, ALIGN_CENTER); - mGrid.setEntry(mSubtitle1, Vector2i(0, 2), false, true); + mGrid.setEntry(mSubtitle1, glm::ivec2{0, 2}, false, true); mSubtitle2 = std::make_shared(mWindow, "HOLD ANY BUTTON 1 SECOND TO SKIP", @@ -78,11 +78,11 @@ GuiInputConfig::GuiInputConfig(Window* window, // The opacity will be set to visible for any row that is skippable. mSubtitle2->setOpacity(0); - mGrid.setEntry(mSubtitle2, Vector2i(0, 3), false, true); + mGrid.setEntry(mSubtitle2, glm::ivec2{0, 3}, false, true); // 4 is a spacer row. mList = std::make_shared(mWindow); - mGrid.setEntry(mList, Vector2i(0, 5), true, true); + mGrid.setEntry(mList, glm::ivec2{0, 5}, true, true); for (int i = 0; i < inputCount; i++) { ComponentListRow row; @@ -184,7 +184,7 @@ GuiInputConfig::GuiInputConfig(Window* window, [this, okFunction] { okFunction(); })); mButtonGrid = makeButtonGrid(mWindow, buttons); - mGrid.setEntry(mButtonGrid, Vector2i(0, 6), true, false); + mGrid.setEntry(mButtonGrid, glm::ivec2{0, 6}, true, false); // Adjust the width relative to the aspect ratio of the screen to make the GUI look coherent // regardless of screen type. The 1.778 aspect ratio value is the 16:9 reference. @@ -201,67 +201,67 @@ void GuiInputConfig::populateConfigList() std::string controllerType = Settings::getInstance()->getString("InputControllerType"); // clang-format off - sGuiInputConfigList[0] = { "Up", false, "D-PAD UP", ":/help/dpad_up.svg" }; - sGuiInputConfigList[1] = { "Down", false, "D-PAD DOWN", ":/help/dpad_down.svg" }; - sGuiInputConfigList[2] = { "Left", false, "D-PAD LEFT", ":/help/dpad_left.svg" }; - sGuiInputConfigList[3] = { "Right", false, "D-PAD RIGHT", ":/help/dpad_right.svg" }; + sGuiInputConfigList[0] = {"Up", false, "D-PAD UP", ":/help/dpad_up.svg"}; + sGuiInputConfigList[1] = {"Down", false, "D-PAD DOWN", ":/help/dpad_down.svg"}; + sGuiInputConfigList[2] = {"Left", false, "D-PAD LEFT", ":/help/dpad_left.svg"}; + sGuiInputConfigList[3] = {"Right", false, "D-PAD RIGHT", ":/help/dpad_right.svg"}; if (controllerType == "snes") { - sGuiInputConfigList[4] = { "Back", false, "SELECT", ":/help/button_back_SNES.svg" }; - sGuiInputConfigList[5] = { "Start", false, "START", ":/help/button_start_SNES.svg" }; - sGuiInputConfigList[6] = { "A", false, "B", ":/help/mbuttons_a_SNES.svg" }; - sGuiInputConfigList[7] = { "B", false, "A", ":/help/mbuttons_b_SNES.svg" }; - sGuiInputConfigList[8] = { "X", true, "Y", ":/help/mbuttons_x_SNES.svg" }; - sGuiInputConfigList[9] = { "Y", true, "X", ":/help/mbuttons_y_SNES.svg" }; + sGuiInputConfigList[4] = {"Back", false, "SELECT", ":/help/button_back_SNES.svg"}; + sGuiInputConfigList[5] = {"Start", false, "START", ":/help/button_start_SNES.svg"}; + sGuiInputConfigList[6] = {"A", false, "B", ":/help/mbuttons_a_SNES.svg"}; + sGuiInputConfigList[7] = {"B", false, "A", ":/help/mbuttons_b_SNES.svg"}; + sGuiInputConfigList[8] = {"X", true, "Y", ":/help/mbuttons_x_SNES.svg"}; + sGuiInputConfigList[9] = {"Y", true, "X", ":/help/mbuttons_y_SNES.svg"}; } else if (controllerType == "ps4") { - sGuiInputConfigList[4] = { "Back", false, "SHARE", ":/help/button_back_PS4.svg" }; - sGuiInputConfigList[5] = { "Start", false, "OPTIONS", ":/help/button_start_PS4.svg" }; - sGuiInputConfigList[6] = { "A", false, "CROSS", ":/help/mbuttons_a_PS.svg" }; - sGuiInputConfigList[7] = { "B", false, "CIRCLE", ":/help/mbuttons_b_PS.svg" }; - sGuiInputConfigList[8] = { "X", true, "SQUARE", ":/help/mbuttons_x_PS.svg" }; - sGuiInputConfigList[9] = { "Y", true, "TRIANGLE", ":/help/mbuttons_y_PS.svg" }; + sGuiInputConfigList[4] = {"Back", false, "SHARE", ":/help/button_back_PS4.svg"}; + sGuiInputConfigList[5] = {"Start", false, "OPTIONS", ":/help/button_start_PS4.svg"}; + sGuiInputConfigList[6] = {"A", false, "CROSS", ":/help/mbuttons_a_PS.svg"}; + sGuiInputConfigList[7] = {"B", false, "CIRCLE", ":/help/mbuttons_b_PS.svg"}; + sGuiInputConfigList[8] = {"X", true, "SQUARE", ":/help/mbuttons_x_PS.svg"}; + sGuiInputConfigList[9] = {"Y", true, "TRIANGLE", ":/help/mbuttons_y_PS.svg"}; } else if (controllerType == "ps5") { - sGuiInputConfigList[4] = { "Back", false, "CREATE", ":/help/button_back_PS5.svg" }; - sGuiInputConfigList[5] = { "Start", false, "OPTIONS", ":/help/button_start_PS5.svg" }; - sGuiInputConfigList[6] = { "A", false, "CROSS", ":/help/mbuttons_a_PS.svg" }; - sGuiInputConfigList[7] = { "B", false, "CIRCLE", ":/help/mbuttons_b_PS.svg" }; - sGuiInputConfigList[8] = { "X", true, "SQUARE", ":/help/mbuttons_x_PS.svg" }; - sGuiInputConfigList[9] = { "Y", true, "TRIANGLE", ":/help/mbuttons_y_PS.svg" }; + sGuiInputConfigList[4] = {"Back", false, "CREATE", ":/help/button_back_PS5.svg"}; + sGuiInputConfigList[5] = {"Start", false, "OPTIONS", ":/help/button_start_PS5.svg"}; + sGuiInputConfigList[6] = {"A", false, "CROSS", ":/help/mbuttons_a_PS.svg"}; + sGuiInputConfigList[7] = {"B", false, "CIRCLE", ":/help/mbuttons_b_PS.svg"}; + sGuiInputConfigList[8] = {"X", true, "SQUARE", ":/help/mbuttons_x_PS.svg"}; + sGuiInputConfigList[9] = {"Y", true, "TRIANGLE", ":/help/mbuttons_y_PS.svg"}; } else if (controllerType == "xbox360") { - sGuiInputConfigList[4] = { "Back", false, "BACK", ":/help/button_back_XBOX360.svg" }; - sGuiInputConfigList[5] = { "Start", false, "START", ":/help/button_start_XBOX360.svg" }; - sGuiInputConfigList[6] = { "A", false, "A", ":/help/mbuttons_a_XBOX.svg" }; - sGuiInputConfigList[7] = { "B", false, "B", ":/help/mbuttons_b_XBOX.svg" }; - sGuiInputConfigList[8] = { "X", true, "X", ":/help/mbuttons_x_XBOX.svg" }; - sGuiInputConfigList[9] = { "Y", true, "Y", ":/help/mbuttons_y_XBOX.svg" }; + sGuiInputConfigList[4] = {"Back", false, "BACK", ":/help/button_back_XBOX360.svg"}; + sGuiInputConfigList[5] = {"Start", false, "START", ":/help/button_start_XBOX360.svg"}; + sGuiInputConfigList[6] = {"A", false, "A", ":/help/mbuttons_a_XBOX.svg"}; + sGuiInputConfigList[7] = {"B", false, "B", ":/help/mbuttons_b_XBOX.svg"}; + sGuiInputConfigList[8] = {"X", true, "X", ":/help/mbuttons_x_XBOX.svg"}; + sGuiInputConfigList[9] = {"Y", true, "Y", ":/help/mbuttons_y_XBOX.svg"}; } else { // Xbox One and later. - sGuiInputConfigList[4] = { "Back", false, "VIEW", ":/help/button_back_XBOX.svg" }; - sGuiInputConfigList[5] = { "Start", false, "MENU", ":/help/button_start_XBOX.svg" }; - sGuiInputConfigList[6] = { "A", false, "A", ":/help/mbuttons_a_XBOX.svg" }; - sGuiInputConfigList[7] = { "B", false, "B", ":/help/mbuttons_b_XBOX.svg" }; - sGuiInputConfigList[8] = { "X", true, "X", ":/help/mbuttons_x_XBOX.svg" }; - sGuiInputConfigList[9] = { "Y", true, "Y", ":/help/mbuttons_y_XBOX.svg" }; + sGuiInputConfigList[4] = {"Back", false, "VIEW", ":/help/button_back_XBOX.svg"}; + sGuiInputConfigList[5] = {"Start", false, "MENU", ":/help/button_start_XBOX.svg"}; + sGuiInputConfigList[6] = {"A", false, "A", ":/help/mbuttons_a_XBOX.svg"}; + sGuiInputConfigList[7] = {"B", false, "B", ":/help/mbuttons_b_XBOX.svg"}; + sGuiInputConfigList[8] = {"X", true, "X", ":/help/mbuttons_x_XBOX.svg"}; + sGuiInputConfigList[9] = {"Y", true, "Y", ":/help/mbuttons_y_XBOX.svg"}; } - sGuiInputConfigList[10] = { "LeftShoulder", true, "LEFT SHOULDER", ":/help/button_l.svg" }; - sGuiInputConfigList[11] = { "RightShoulder", true, "RIGHT SHOULDER", ":/help/button_r.svg" }; - sGuiInputConfigList[12] = { "LeftTrigger", true, "LEFT TRIGGER", ":/help/button_lt.svg" }; - sGuiInputConfigList[13] = { "RightTrigger", true, "RIGHT TRIGGER", ":/help/button_rt.svg" }; - sGuiInputConfigList[14] = { "LeftThumbstickUp", true, "LEFT THUMBSTICK UP", ":/help/thumbstick_up.svg" }; - sGuiInputConfigList[15] = { "LeftThumbstickDown", true, "LEFT THUMBSTICK DOWN", ":/help/thumbstick_down.svg" }; - sGuiInputConfigList[16] = { "LeftThumbstickLeft", true, "LEFT THUMBSTICK LEFT", ":/help/thumbstick_left.svg" }; - sGuiInputConfigList[17] = { "LeftThumbstickRight", true, "LEFT THUMBSTICK RIGHT", ":/help/thumbstick_right.svg" }; - sGuiInputConfigList[18] = { "LeftThumbstickClick", true, "LEFT THUMBSTICK CLICK", ":/help/thumbstick_click.svg" }; - sGuiInputConfigList[19] = { "RightThumbstickUp", true, "RIGHT THUMBSTICK UP", ":/help/thumbstick_up.svg" }; - sGuiInputConfigList[20] = { "RightThumbstickDown", true, "RIGHT THUMBSTICK DOWN", ":/help/thumbstick_down.svg" }; - sGuiInputConfigList[21] = { "RightThumbstickLeft", true, "RIGHT THUMBSTICK LEFT", ":/help/thumbstick_left.svg" }; - sGuiInputConfigList[22] = { "RightThumbstickRight", true, "RIGHT THUMBSTICK RIGHT", ":/help/thumbstick_right.svg" }; - sGuiInputConfigList[23] = { "RightThumbstickClick", true, "RIGHT THUMBSTICK CLICK", ":/help/thumbstick_click.svg" }; + sGuiInputConfigList[10] = {"LeftShoulder", true, "LEFT SHOULDER", ":/help/button_l.svg"}; + sGuiInputConfigList[11] = {"RightShoulder", true, "RIGHT SHOULDER", ":/help/button_r.svg"}; + sGuiInputConfigList[12] = {"LeftTrigger", true, "LEFT TRIGGER", ":/help/button_lt.svg"}; + sGuiInputConfigList[13] = {"RightTrigger", true, "RIGHT TRIGGER", ":/help/button_rt.svg"}; + sGuiInputConfigList[14] = {"LeftThumbstickUp", true, "LEFT THUMBSTICK UP", ":/help/thumbstick_up.svg"}; + sGuiInputConfigList[15] = {"LeftThumbstickDown", true, "LEFT THUMBSTICK DOWN", ":/help/thumbstick_down.svg"}; + sGuiInputConfigList[16] = {"LeftThumbstickLeft", true, "LEFT THUMBSTICK LEFT", ":/help/thumbstick_left.svg"}; + sGuiInputConfigList[17] = {"LeftThumbstickRight", true, "LEFT THUMBSTICK RIGHT", ":/help/thumbstick_right.svg"}; + sGuiInputConfigList[18] = {"LeftThumbstickClick", true, "LEFT THUMBSTICK CLICK", ":/help/thumbstick_click.svg"}; + sGuiInputConfigList[19] = {"RightThumbstickUp", true, "RIGHT THUMBSTICK UP", ":/help/thumbstick_up.svg"}; + sGuiInputConfigList[20] = {"RightThumbstickDown", true, "RIGHT THUMBSTICK DOWN", ":/help/thumbstick_down.svg"}; + sGuiInputConfigList[21] = {"RightThumbstickLeft", true, "RIGHT THUMBSTICK LEFT", ":/help/thumbstick_left.svg"}; + sGuiInputConfigList[22] = {"RightThumbstickRight", true, "RIGHT THUMBSTICK RIGHT", ":/help/thumbstick_right.svg"}; + sGuiInputConfigList[23] = {"RightThumbstickClick", true, "RIGHT THUMBSTICK CLICK", ":/help/thumbstick_click.svg"}; // clang-format on } @@ -293,7 +293,7 @@ void GuiInputConfig::update(int deltaTime) void GuiInputConfig::onSizeChanged() { - mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); // Update grid. mGrid.setSize(mSize); @@ -313,7 +313,7 @@ void GuiInputConfig::rowDone() // At bottom of list, we're done. mConfiguringAll = false; mConfiguringRow = false; - mGrid.moveCursor(Vector2i(0, 1)); + mGrid.moveCursor(glm::ivec2{0, 1}); } else { // On another row. diff --git a/es-core/src/guis/GuiMsgBox.cpp b/es-core/src/guis/GuiMsgBox.cpp index a96e41c42..fa7dc2823 100644 --- a/es-core/src/guis/GuiMsgBox.cpp +++ b/es-core/src/guis/GuiMsgBox.cpp @@ -28,7 +28,7 @@ GuiMsgBox::GuiMsgBox(Window* window, : GuiComponent(window) , mHelpStyle(helpstyle) , mBackground(window, ":/graphics/frame.svg") - , mGrid(window, Vector2i(1, 2)) + , mGrid(window, glm::ivec2{1, 2}) , mDisableBackButton(disableBackButton) , mDeleteOnButtonPress(deleteOnButtonPress) { @@ -43,7 +43,7 @@ GuiMsgBox::GuiMsgBox(Window* window, mMsg = std::make_shared(mWindow, text, Font::get(FONT_SIZE_MEDIUM), 0x777777FF, ALIGN_CENTER); - mGrid.setEntry(mMsg, Vector2i(0, 0), false, false); + mGrid.setEntry(mMsg, glm::ivec2{0, 0}, false, false); // Create the buttons. mButtons.push_back(std::make_shared( @@ -71,7 +71,8 @@ GuiMsgBox::GuiMsgBox(Window* window, // Put the buttons into a ComponentGrid. mButtonGrid = makeButtonGrid(mWindow, mButtons); - mGrid.setEntry(mButtonGrid, Vector2i(0, 1), true, false, Vector2i(1, 1), GridFlags::BORDER_TOP); + mGrid.setEntry(mButtonGrid, glm::ivec2{0, 1}, true, false, glm::ivec2{1, 1}, + GridFlags::BORDER_TOP); // Decide final width. if (mMsg->getSize().x < width && mButtonGrid->getSize().x < width) { @@ -160,7 +161,7 @@ void GuiMsgBox::onSizeChanged() mGrid.getRowHeight(0)); mGrid.onSizeChanged(); - mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); } void GuiMsgBox::deleteMeAndCall(const std::function& func) diff --git a/es-core/src/guis/GuiTextEditPopup.cpp b/es-core/src/guis/GuiTextEditPopup.cpp index 0917845bb..ffadf4ed7 100644 --- a/es-core/src/guis/GuiTextEditPopup.cpp +++ b/es-core/src/guis/GuiTextEditPopup.cpp @@ -25,7 +25,7 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window, : GuiComponent(window) , mHelpStyle(helpstyle) , mBackground(window, ":/graphics/frame.svg") - , mGrid(window, Vector2i(1, 3)) + , mGrid(window, glm::ivec2{1, 3}) , mMultiLine(multiLine) , mInitValue(initValue) , mOkCallback(okCallback) @@ -53,10 +53,10 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window, mButtonGrid = makeButtonGrid(mWindow, buttons); - mGrid.setEntry(mTitle, Vector2i(0, 0), false, true); - mGrid.setEntry(mText, Vector2i(0, 1), true, false, Vector2i(1, 1), + mGrid.setEntry(mTitle, glm::ivec2{0, 0}, false, true); + mGrid.setEntry(mText, glm::ivec2{0, 1}, true, false, glm::ivec2{1, 1}, GridFlags::BORDER_TOP | GridFlags::BORDER_BOTTOM); - mGrid.setEntry(mButtonGrid, Vector2i(0, 2), true, false); + mGrid.setEntry(mButtonGrid, glm::ivec2{0, 2}, true, false); float textHeight = mText->getFont()->getHeight(); @@ -78,7 +78,7 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window, void GuiTextEditPopup::onSizeChanged() { - mBackground.fitTo(mSize, glm::vec3({}), glm::vec2(-32.0f, -32.0f)); + mBackground.fitTo(mSize, glm::vec3{}, glm::vec2{-32.0f, -32.0f}); mText->setSize(mSize.x - 40.0f, mText->getSize().y); diff --git a/es-core/src/math/Transform4x4f.h b/es-core/src/math/Transform4x4f.h index c9f07da13..b0e1b7089 100644 --- a/es-core/src/math/Transform4x4f.h +++ b/es-core/src/math/Transform4x4f.h @@ -60,7 +60,7 @@ public: static const Transform4x4f Identity() { - return { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } }; + return {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}}; } protected: diff --git a/es-core/src/math/Vector2f.h b/es-core/src/math/Vector2f.h index 193776e68..6d697c7c6 100644 --- a/es-core/src/math/Vector2f.h +++ b/es-core/src/math/Vector2f.h @@ -87,9 +87,9 @@ public: Vector2f& round(); Vector2f& lerp(const Vector2f& _start, const Vector2f& _end, const float _fraction); - static const Vector2f Zero() { return { 0.0f, 0.0f }; } - static const Vector2f UnitX() { return { 1.0f, 0.0f }; } - static const Vector2f UnitY() { return { 0.0f, 1.0f }; } + static const Vector2f Zero() { return {0.0f, 0.0f}; } + static const Vector2f UnitX() { return {1.0f, 0.0f}; } + static const Vector2f UnitY() { return {0.0f, 1.0f}; } private: float mX; diff --git a/es-core/src/math/Vector2i.h b/es-core/src/math/Vector2i.h index 1924852d6..802af6ced 100644 --- a/es-core/src/math/Vector2i.h +++ b/es-core/src/math/Vector2i.h @@ -69,9 +69,9 @@ public: const int& x() const { return mX; } const int& y() const { return mY; } - static const Vector2i Zero() { return { 0, 0 }; } - static const Vector2i UnitX() { return { 1, 0 }; } - static const Vector2i UnitY() { return { 0, 1 }; } + static const Vector2i Zero() { return {0, 0}; } + static const Vector2i UnitX() { return {1, 0}; } + static const Vector2i UnitY() { return {0, 1}; } private: int mX; diff --git a/es-core/src/math/Vector3f.h b/es-core/src/math/Vector3f.h index 73a05f71d..9d98899f5 100644 --- a/es-core/src/math/Vector3f.h +++ b/es-core/src/math/Vector3f.h @@ -106,10 +106,10 @@ public: Vector3f& round(); Vector3f& lerp(const Vector3f& _start, const Vector3f& _end, const float _fraction); - static const Vector3f Zero() { return { 0.0f, 0.0f, 0.0f }; } - static const Vector3f UnitX() { return { 1.0f, 0.0f, 0.0f }; } - static const Vector3f UnitY() { return { 0.0f, 1.0f, 0.0f }; } - static const Vector3f UnitZ() { return { 0.0f, 0.0f, 1.0f }; } + static const Vector3f Zero() { return {0.0f, 0.0f, 0.0f}; } + static const Vector3f UnitX() { return {1.0f, 0.0f, 0.0f}; } + static const Vector3f UnitY() { return {0.0f, 1.0f, 0.0f}; } + static const Vector3f UnitZ() { return {0.0f, 0.0f, 1.0f}; } private: float mX; diff --git a/es-core/src/math/Vector4f.h b/es-core/src/math/Vector4f.h index 000684ada..9db7541ed 100644 --- a/es-core/src/math/Vector4f.h +++ b/es-core/src/math/Vector4f.h @@ -132,11 +132,11 @@ public: Vector4f& round(); Vector4f& lerp(const Vector4f& _start, const Vector4f& _end, const float _fraction); - static const Vector4f Zero() { return { 0.0f, 0.0f, 0.0f, 0.0f }; } - static const Vector4f UnitX() { return { 1.0f, 0.0f, 0.0f, 0.0f }; } - static const Vector4f UnitY() { return { 0.0f, 1.0f, 0.0f, 0.0f }; } - static const Vector4f UnitZ() { return { 0.0f, 0.0f, 1.0f, 0.0f }; } - static const Vector4f UnitW() { return { 0.0f, 0.0f, 0.0f, 1.0f }; } + static const Vector4f Zero() { return {0.0f, 0.0f, 0.0f, 0.0f}; } + static const Vector4f UnitX() { return {1.0f, 0.0f, 0.0f, 0.0f}; } + static const Vector4f UnitY() { return {0.0f, 1.0f, 0.0f, 0.0f}; } + static const Vector4f UnitZ() { return {0.0f, 0.0f, 1.0f, 0.0f}; } + static const Vector4f UnitW() { return {0.0f, 0.0f, 0.0f, 1.0f}; } private: float mX; diff --git a/es-core/src/renderers/Renderer.cpp b/es-core/src/renderers/Renderer.cpp index 893212ce6..b5230a610 100644 --- a/es-core/src/renderers/Renderer.cpp +++ b/es-core/src/renderers/Renderer.cpp @@ -12,7 +12,6 @@ #include "Log.h" #include "Settings.h" #include "Shader_GL21.h" -#include "math/Vector2i.h" #include "resources/ResourceManager.h" #include @@ -325,8 +324,8 @@ namespace Renderer if (!createWindow()) return false; - glm::mat4 projection = getIdentity(); - Rect viewport = Rect(0, 0, 0, 0); + glm::mat4 projection{getIdentity()}; + Rect viewport{0, 0, 0, 0}; switch (screenRotate) { case 1: { @@ -336,8 +335,8 @@ namespace Renderer viewport.h = screenWidth; projection = glm::ortho(0.0f, static_cast(screenHeight), static_cast(screenWidth), 0.0f, -1.0f, 1.0f); - projection = glm::rotate(projection, glm::radians(90.0f), { 0.0f, 0.0f, 1.0f }); - projection = glm::translate(projection, { 0.0f, screenHeight * -1.0f, 0.0f }); + projection = glm::rotate(projection, glm::radians(90.0f), {0.0f, 0.0f, 1.0f}); + projection = glm::translate(projection, {0.0f, screenHeight * -1.0f, 0.0f}); break; } case 2: { @@ -347,9 +346,9 @@ namespace Renderer viewport.h = screenHeight; projection = glm::ortho(0.0f, static_cast(screenWidth), static_cast(screenHeight), 0.0f, -1.0f, 1.0f); - projection = glm::rotate(projection, glm::radians(180.0f), { 0.0f, 0.0f, 1.0f }); + projection = glm::rotate(projection, glm::radians(180.0f), {0.0f, 0.0f, 1.0f}); projection = - glm::translate(projection, { screenWidth * -1.0f, screenHeight * -1.0f, 0.0f }); + glm::translate(projection, {screenWidth * -1.0f, screenHeight * -1.0f, 0.0f}); break; } case 3: { @@ -359,8 +358,8 @@ namespace Renderer viewport.h = screenWidth; projection = glm::ortho(0.0f, static_cast(screenHeight), static_cast(screenWidth), 0.0f, -1.0f, 1.0f); - projection = glm::rotate(projection, glm::radians(270.0f), { 0.0f, 0.0f, 1.0f }); - projection = glm::translate(projection, { screenWidth * -1.0f, 0.0f, 0.0f }); + projection = glm::rotate(projection, glm::radians(270.0f), {0.0f, 0.0f, 1.0f}); + projection = glm::translate(projection, {screenWidth * -1.0f, 0.0f, 0.0f}); break; } default: { @@ -393,9 +392,9 @@ namespace Renderer destroyWindow(); } - void pushClipRect(const Vector2i& _pos, const Vector2i& _size) + void pushClipRect(const glm::ivec2& _pos, const glm::ivec2& _size) { - Rect box(_pos.x(), _pos.y(), _size.x(), _size.y()); + Rect box(_pos.x, _pos.y, _size.x, _size.y); if (box.w == 0) box.w = screenWidth - box.x; @@ -485,10 +484,10 @@ namespace Renderer _hL = 1.0f; // clang-format off - vertices[0] = { { _x , _y }, { 0.0f, 0.0f }, color }; - vertices[1] = { { _x , _y + _hL }, { 0.0f, 0.0f }, horizontalGradient ? colorEnd : color }; - vertices[2] = { { _x + _wL, _y }, { 0.0f, 0.0f }, horizontalGradient ? color : colorEnd }; - vertices[3] = { { _x + _wL, _y + _hL }, { 0.0f, 0.0f }, colorEnd }; + vertices[0] = {{_x , _y }, {0.0f, 0.0f}, color}; + vertices[1] = {{_x , _y + _hL}, {0.0f, 0.0f}, horizontalGradient ? colorEnd : color}; + vertices[2] = {{_x + _wL, _y }, {0.0f, 0.0f}, horizontalGradient ? color : colorEnd}; + vertices[3] = {{_x + _wL, _y + _hL}, {0.0f, 0.0f}, colorEnd}; // clang-format on // Round vertices. diff --git a/es-core/src/renderers/Renderer.h b/es-core/src/renderers/Renderer.h index b9b4c3ac4..ec6aac4b4 100644 --- a/es-core/src/renderers/Renderer.h +++ b/es-core/src/renderers/Renderer.h @@ -18,8 +18,6 @@ struct SDL_Window; -class Vector2i; - namespace Renderer { const unsigned int SHADER_DESATURATE = 1; @@ -38,8 +36,8 @@ namespace Renderer unsigned int blurPasses; shaderParameters() - : textureSize({ 0.0f, 0.0f }) - , textureCoordinates({ 0.0f, 0.0f, 0.0f, 0.0f }) + : textureSize({0.0f, 0.0f}) + , textureCoordinates({0.0f, 0.0f, 0.0f, 0.0f}) , fragmentSaturation(1.0f) , fragmentDimValue(0.4f) , fragmentOpacity(1.0f) @@ -51,7 +49,7 @@ namespace Renderer static std::vector sShaderProgramVector; static GLuint shaderFBO; static glm::mat4 mProjectionMatrix; - static constexpr glm::mat4 getIdentity() { return glm::mat4(1.0f); } + static constexpr glm::mat4 getIdentity() { return glm::mat4{1.0f}; } #if !defined(NDEBUG) #define GL_CHECK_ERROR(Function) (Function, _GLCheckError(#Function)) @@ -130,7 +128,7 @@ namespace Renderer bool init(); void deinit(); - void pushClipRect(const Vector2i& _pos, const Vector2i& _size); + void pushClipRect(const glm::ivec2& _pos, const glm::ivec2& _size); void popClipRect(); void drawRect(const float _x, const float _y, diff --git a/es-core/src/renderers/Renderer_GL21.cpp b/es-core/src/renderers/Renderer_GL21.cpp index f40d65bce..130393e46 100644 --- a/es-core/src/renderers/Renderer_GL21.cpp +++ b/es-core/src/renderers/Renderer_GL21.cpp @@ -137,7 +137,7 @@ namespace Renderer return false; } - uint8_t data[4] = { 255, 255, 255, 255 }; + uint8_t data[4] = {255, 255, 255, 255}; whiteTexture = createTexture(Texture::RGBA, false, true, 1, 1, data); GL_CHECK_ERROR(glClearColor(0.0f, 0.0f, 0.0f, 1.0f)); @@ -301,7 +301,7 @@ namespace Renderer if (runShader) { runShader->activateShaders(); runShader->setModelViewProjectionMatrix(getProjectionMatrix() * _trans); - runShader->setTextureSize({ width, height }); + runShader->setTextureSize({width, height}); GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVertices)); runShader->deactivateShaders(); } @@ -312,7 +312,7 @@ namespace Renderer if (runShader) { runShader->activateShaders(); runShader->setModelViewProjectionMatrix(getProjectionMatrix() * _trans); - runShader->setTextureSize({ width, height }); + runShader->setTextureSize({width, height}); GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVertices)); runShader->deactivateShaders(); } @@ -343,7 +343,7 @@ namespace Renderer if (runShader) { runShader->activateShaders(); runShader->setModelViewProjectionMatrix(getProjectionMatrix() * _trans); - runShader->setTextureSize({ shaderWidth, shaderHeight }); + runShader->setTextureSize({shaderWidth, shaderHeight}); GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVertices)); runShader->deactivateShaders(); } @@ -360,7 +360,7 @@ namespace Renderer void setMatrix(const glm::mat4& _matrix) { - glm::mat4 matrix = _matrix; + glm::mat4 matrix{_matrix}; matrix[3] = glm::round(matrix[3]); GL_CHECK_ERROR(glMatrixMode(GL_MODELVIEW)); diff --git a/es-core/src/renderers/Renderer_GLES10.cpp b/es-core/src/renderers/Renderer_GLES10.cpp index 743c6f82a..7e36ea094 100644 --- a/es-core/src/renderers/Renderer_GLES10.cpp +++ b/es-core/src/renderers/Renderer_GLES10.cpp @@ -90,7 +90,7 @@ namespace Renderer << (extensions.find("GL_OES_texture_npot") != std::string::npos ? "OK" : "MISSING"); - uint8_t data[4] = { 255, 255, 255, 255 }; + uint8_t data[4] = {255, 255, 255, 255}; whiteTexture = createTexture(Texture::RGBA, false, true, 1, 1, data); GL_CHECK_ERROR(glClearColor(0.0f, 0.0f, 0.0f, 1.0f)); @@ -207,7 +207,7 @@ namespace Renderer void setMatrix(const glm::mat4& _matrix) { - glm::mat4 matrix = _matrix; + glm::mat4 matrix{_matrix}; matrix[3] = glm::round(matrix[3]); GL_CHECK_ERROR(glMatrixMode(GL_MODELVIEW)); diff --git a/es-core/src/resources/Font.cpp b/es-core/src/resources/Font.cpp index e24216d4e..e92b4d651 100644 --- a/es-core/src/resources/Font.cpp +++ b/es-core/src/resources/Font.cpp @@ -49,7 +49,7 @@ size_t Font::getMemUsage() const { size_t memUsage = 0; for (auto it = mTextures.cbegin(); it != mTextures.cend(); it++) - memUsage += it->textureSize.x() * it->textureSize.y() * 4; + memUsage += it->textureSize.x * it->textureSize.y * 4; for (auto it = mFaceCache.cbegin(); it != mFaceCache.cend(); it++) memUsage += it->second->data.length; @@ -137,8 +137,8 @@ Font::FontTexture::FontTexture(const int mSize) // I'm not entirely sure if the 16 and 6 constants are correct, but they seem to provide // a texture buffer large enough to hold the fonts (otherwise the application would crash). // This logic is obviously a hack though and needs to be properly reviewed and improved. - textureSize = Vector2i(mSize * 16, mSize * 6); - writePos = Vector2i::Zero(); + textureSize = glm::ivec2{mSize * 16, mSize * 6}; + writePos = glm::ivec2{}; rowHeight = 0; } @@ -148,28 +148,30 @@ Font::FontTexture::~FontTexture() deinitTexture(); } -bool Font::FontTexture::findEmpty(const Vector2i& size, Vector2i& cursor_out) +bool Font::FontTexture::findEmpty(const glm::ivec2& size, glm::ivec2& cursor_out) { - if (size.x() >= textureSize.x() || size.y() >= textureSize.y()) + if (size.x >= textureSize.x || size.y >= textureSize.y) return false; - if (writePos.x() + size.x() >= textureSize.x() && - writePos.y() + rowHeight + size.y() + 1 < textureSize.y()) { + if (writePos.x + size.x >= textureSize.x && + writePos.y + rowHeight + size.y + 1 < textureSize.y) { // Row full, but it should fit on the next row so move the cursor there. - writePos = Vector2i(0, writePos.y() + rowHeight + 1); // Leave 1px of space between glyphs. + // Leave 1px of space between glyphs. + writePos = glm::ivec2{0, writePos.y + rowHeight + 1}; rowHeight = 0; } - if (writePos.x() + size.x() >= textureSize.x() || writePos.y() + size.y() >= textureSize.y()) { + if (writePos.x + size.x >= textureSize.x || writePos.y + size.y >= textureSize.y) { // Nope, still won't fit. return false; } cursor_out = writePos; - writePos[0] += size.x() + 1; // Leave 1px of space between glyphs. + // Leave 1px of space between glyphs. + writePos.x += size.x + 1; - if (size.y() > rowHeight) - rowHeight = size.y(); + if (size.y > rowHeight) + rowHeight = size.y; return true; } @@ -177,8 +179,8 @@ bool Font::FontTexture::findEmpty(const Vector2i& size, Vector2i& cursor_out) void Font::FontTexture::initTexture() { assert(textureId == 0); - textureId = Renderer::createTexture(Renderer::Texture::ALPHA, false, false, textureSize.x(), - textureSize.y(), nullptr); + textureId = Renderer::createTexture(Renderer::Texture::ALPHA, false, false, textureSize.x, + textureSize.y, nullptr); } void Font::FontTexture::deinitTexture() @@ -189,9 +191,9 @@ void Font::FontTexture::deinitTexture() } } -void Font::getTextureForNewGlyph(const Vector2i& glyphSize, +void Font::getTextureForNewGlyph(const glm::ivec2& glyphSize, FontTexture*& tex_out, - Vector2i& cursor_out) + glm::ivec2& cursor_out) { if (mTextures.size()) { // Check if the most recent texture has space. @@ -210,7 +212,7 @@ void Font::getTextureForNewGlyph(const Vector2i& glyphSize, bool ok = tex_out->findEmpty(glyphSize, cursor_out); if (!ok) { LOG(LogError) << "Glyph too big to fit on a new texture (glyph size > " - << tex_out->textureSize.x() << ", " << tex_out->textureSize.y() << ")"; + << tex_out->textureSize.x << ", " << tex_out->textureSize.y << ")"; tex_out = nullptr; } } @@ -296,10 +298,10 @@ Font::Glyph* Font::getGlyph(unsigned int id) return nullptr; } - Vector2i glyphSize(g->bitmap.width, g->bitmap.rows); + glm::ivec2 glyphSize{g->bitmap.width, g->bitmap.rows}; FontTexture* tex = nullptr; - Vector2i cursor; + glm::ivec2 cursor; getTextureForNewGlyph(glyphSize, tex, cursor); // getTextureForNewGlyph can fail if the glyph is bigger than the max texture @@ -314,23 +316,23 @@ Font::Glyph* Font::getGlyph(unsigned int id) Glyph& glyph = mGlyphMap[id]; glyph.texture = tex; - glyph.texPos = glm::vec2(cursor.x() / static_cast(tex->textureSize.x()), - cursor.y() / static_cast(tex->textureSize.y())); - glyph.texSize = glm::vec2(glyphSize.x() / static_cast(tex->textureSize.x()), - glyphSize.y() / static_cast(tex->textureSize.y())); + glyph.texPos = glm::vec2{cursor.x / static_cast(tex->textureSize.x), + cursor.y / static_cast(tex->textureSize.y)}; + glyph.texSize = glm::vec2{glyphSize.x / static_cast(tex->textureSize.x), + glyphSize.y / static_cast(tex->textureSize.y)}; - glyph.advance = glm::vec2(static_cast(g->metrics.horiAdvance) / 64.0f, - static_cast(g->metrics.vertAdvance) / 64.0f); - glyph.bearing = glm::vec2(static_cast(g->metrics.horiBearingX) / 64.0f, - static_cast(g->metrics.horiBearingY) / 64.0f); + glyph.advance = glm::vec2{static_cast(g->metrics.horiAdvance) / 64.0f, + static_cast(g->metrics.vertAdvance) / 64.0f}; + glyph.bearing = glm::vec2{static_cast(g->metrics.horiBearingX) / 64.0f, + static_cast(g->metrics.horiBearingY) / 64.0f}; // Upload glyph bitmap to texture. - Renderer::updateTexture(tex->textureId, Renderer::Texture::ALPHA, cursor.x(), cursor.y(), - glyphSize.x(), glyphSize.y(), g->bitmap.buffer); + Renderer::updateTexture(tex->textureId, Renderer::Texture::ALPHA, cursor.x, cursor.y, + glyphSize.x, glyphSize.y, g->bitmap.buffer); // Update max glyph height. - if (glyphSize.y() > mMaxGlyphHeight) - mMaxGlyphHeight = glyphSize.y(); + if (glyphSize.y > mMaxGlyphHeight) + mMaxGlyphHeight = glyphSize.y; // Done. return &glyph; @@ -354,14 +356,14 @@ void Font::rebuildTextures() FontTexture* tex = it->second.texture; // Find the position/size. - Vector2i cursor(static_cast(it->second.texPos.x * tex->textureSize.x()), - static_cast(it->second.texPos.y * tex->textureSize.y())); - Vector2i glyphSize(static_cast(it->second.texSize.x * tex->textureSize.x()), - static_cast(it->second.texSize.y * tex->textureSize.y())); + glm::ivec2 cursor{static_cast(it->second.texPos.x * tex->textureSize.x), + static_cast(it->second.texPos.y * tex->textureSize.y)}; + glm::ivec2 glyphSize{static_cast(it->second.texSize.x * tex->textureSize.x), + static_cast(it->second.texSize.y * tex->textureSize.y)}; // Upload to texture. - Renderer::updateTexture(tex->textureId, Renderer::Texture::ALPHA, cursor.x(), cursor.y(), - glyphSize.x(), glyphSize.y(), glyphSlot->bitmap.buffer); + Renderer::updateTexture(tex->textureId, Renderer::Texture::ALPHA, cursor.x, cursor.y, + glyphSize.x, glyphSize.y, glyphSlot->bitmap.buffer); } } @@ -412,7 +414,7 @@ glm::vec2 Font::sizeText(std::string text, float lineSpacing) if (lineWidth > highestWidth) highestWidth = lineWidth; - return glm::vec2(highestWidth, y); + return glm::vec2{highestWidth, y}; } std::string Font::getTextMaxWidth(std::string text, float maxWidth) @@ -435,7 +437,7 @@ float Font::getLetterHeight() { Glyph* glyph = getGlyph('S'); assert(glyph); - return glyph->texSize.y * glyph->texture->textureSize.y(); + return glyph->texSize.y * glyph->texture->textureSize.y; } // Breaks up a normal string with newlines to make it fit xLen. @@ -538,7 +540,7 @@ glm::vec2 Font::getWrappedTextCursorOffset(std::string text, lineWidth += glyph->advance.x; } - return glm::vec2(lineWidth, y); + return glm::vec2{lineWidth, y}; } // @@ -631,24 +633,23 @@ TextCache* Font::buildTextCache(const std::string& text, verts.resize(oldVertSize + 6); Renderer::Vertex* vertices = verts.data() + oldVertSize; - const float glyphStartX = x + glyph->bearing.x; - const Vector2i& textureSize = glyph->texture->textureSize; + const float glyphStartX{x + glyph->bearing.x}; + const glm::ivec2& textureSize{glyph->texture->textureSize}; const unsigned int convertedColor = Renderer::convertRGBAToABGR(color); - vertices[1] = { { glyphStartX, y - glyph->bearing.y }, - { glyph->texPos.x, glyph->texPos.y }, - convertedColor }; - vertices[2] = { { glyphStartX, - y - glyph->bearing.y + (glyph->texSize.y * textureSize.y()) }, - { glyph->texPos.x, glyph->texPos.y + glyph->texSize.y }, - convertedColor }; - vertices[3] = { { glyphStartX + glyph->texSize.x * textureSize.x(), y - glyph->bearing.y }, - { glyph->texPos.x + glyph->texSize.x, glyph->texPos.y }, - convertedColor }; - vertices[4] = { { glyphStartX + glyph->texSize.x * textureSize.x(), - y - glyph->bearing.y + (glyph->texSize.y * textureSize.y()) }, - { glyph->texPos.x + glyph->texSize.x, glyph->texPos.y + glyph->texSize.y }, - convertedColor }; + vertices[1] = {{glyphStartX, y - glyph->bearing.y}, + {glyph->texPos.x, glyph->texPos.y}, + convertedColor}; + vertices[2] = {{glyphStartX, y - glyph->bearing.y + (glyph->texSize.y * textureSize.y)}, + {glyph->texPos.x, glyph->texPos.y + glyph->texSize.y}, + convertedColor}; + vertices[3] = {{glyphStartX + glyph->texSize.x * textureSize.x, y - glyph->bearing.y}, + {glyph->texPos.x + glyph->texSize.x, glyph->texPos.y}, + convertedColor}; + vertices[4] = {{glyphStartX + glyph->texSize.x * textureSize.x, + y - glyph->bearing.y + (glyph->texSize.y * textureSize.y)}, + {glyph->texPos.x + glyph->texSize.x, glyph->texPos.y + glyph->texSize.y}, + convertedColor}; // Round vertices. for (int i = 1; i < 5; i++) @@ -666,7 +667,7 @@ TextCache* Font::buildTextCache(const std::string& text, TextCache* cache = new TextCache(); cache->vertexLists.resize(vertMap.size()); - cache->metrics = { sizeText(text, lineSpacing) }; + cache->metrics = {sizeText(text, lineSpacing)}; unsigned int i = 0; for (auto it = vertMap.cbegin(); it != vertMap.cend(); it++) { @@ -687,7 +688,7 @@ TextCache* Font::buildTextCache(const std::string& text, float lineSpacing, bool noTopMargin) { - return buildTextCache(text, glm::vec2(offsetX, offsetY), color, 0.0f, ALIGN_LEFT, lineSpacing, + return buildTextCache(text, glm::vec2{offsetX, offsetY}, color, 0.0f, ALIGN_LEFT, lineSpacing, noTopMargin); } diff --git a/es-core/src/resources/Font.h b/es-core/src/resources/Font.h index e7b99718f..745285d14 100644 --- a/es-core/src/resources/Font.h +++ b/es-core/src/resources/Font.h @@ -11,7 +11,6 @@ #define ES_CORE_RESOURCES_FONT_H #include "ThemeData.h" -#include "math/Vector2i.h" #include "renderers/Renderer.h" #include "resources/ResourceManager.h" @@ -114,14 +113,14 @@ private: struct FontTexture { unsigned int textureId; - Vector2i textureSize; + glm::ivec2 textureSize; - Vector2i writePos; + glm::ivec2 writePos; int rowHeight; FontTexture(const int mSize); ~FontTexture(); - bool findEmpty(const Vector2i& size, Vector2i& cursor_out); + bool findEmpty(const glm::ivec2& size, glm::ivec2& cursor_out); // You must call initTexture() after creating a FontTexture to get a textureId. // Initializes the OpenGL texture according to this FontTexture's settings, @@ -146,9 +145,9 @@ private: std::vector mTextures; - void getTextureForNewGlyph(const Vector2i& glyphSize, + void getTextureForNewGlyph(const glm::ivec2& glyphSize, FontTexture*& tex_out, - Vector2i& cursor_out); + glm::ivec2& cursor_out); std::map> mFaceCache; FT_Face getFaceForChar(unsigned int id); diff --git a/es-core/src/resources/ResourceManager.cpp b/es-core/src/resources/ResourceManager.cpp index e61d69ea9..0f4072b09 100644 --- a/es-core/src/resources/ResourceManager.cpp +++ b/es-core/src/resources/ResourceManager.cpp @@ -107,7 +107,7 @@ const ResourceData ResourceManager::getFileData(const std::string& path) const } // If the file doesn't exist, return an "empty" ResourceData. - ResourceData data = { nullptr, 0 }; + ResourceData data = {nullptr, 0}; return data; } @@ -128,7 +128,7 @@ ResourceData ResourceManager::loadFile(const std::string& path) const stream.read(reinterpret_cast(data.get()), size); stream.close(); - ResourceData ret = { data, size }; + ResourceData ret = {data, size}; return ret; } diff --git a/es-core/src/resources/TextureResource.cpp b/es-core/src/resources/TextureResource.cpp index cd18010fb..ff2281044 100644 --- a/es-core/src/resources/TextureResource.cpp +++ b/es-core/src/resources/TextureResource.cpp @@ -46,15 +46,15 @@ TextureResource::TextureResource(const std::string& path, data->load(); } - mSize = Vector2i(static_cast(data->width()), static_cast(data->height())); - mSourceSize = glm::vec2(data->sourceWidth(), data->sourceHeight()); + mSize = glm::ivec2{static_cast(data->width()), static_cast(data->height())}; + mSourceSize = glm::vec2{data->sourceWidth(), data->sourceHeight()}; } else { // Create a texture managed by this class because it cannot be dynamically // loaded and unloaded. This would normally be a video texture, where the player // reserves a texture to later be used for the video rendering. mTextureData = std::shared_ptr(new TextureData(tile)); - mSize = Vector2i(0, 0); + mSize = glm::ivec2{}; } sAllTextures.insert(this); } @@ -75,8 +75,8 @@ void TextureResource::initFromPixels(const unsigned char* dataRGBA, size_t width mTextureData->releaseRAM(); mTextureData->initFromRGBA(dataRGBA, width, height); // Cache the image dimensions. - mSize = Vector2i(static_cast(width), static_cast(height)); - mSourceSize = glm::vec2(mTextureData->sourceWidth(), mTextureData->sourceHeight()); + mSize = glm::ivec2{static_cast(width), static_cast(height)}; + mSourceSize = glm::vec2{mTextureData->sourceWidth(), mTextureData->sourceHeight()}; } void TextureResource::initFromMemory(const char* data, size_t length) @@ -87,9 +87,9 @@ void TextureResource::initFromMemory(const char* data, size_t length) mTextureData->releaseRAM(); mTextureData->initImageFromMemory(reinterpret_cast(data), length); // Get the size from the texture data. - mSize = - Vector2i(static_cast(mTextureData->width()), static_cast(mTextureData->height())); - mSourceSize = glm::vec2(mTextureData->sourceWidth(), mTextureData->sourceHeight()); + mSize = glm::ivec2{static_cast(mTextureData->width()), + static_cast(mTextureData->height())}; + mSourceSize = glm::vec2{mTextureData->sourceWidth(), mTextureData->sourceHeight()}; } void TextureResource::manualUnload(std::string path, bool tile) @@ -197,7 +197,7 @@ void TextureResource::rasterizeAt(size_t width, size_t height) data = mTextureData; else data = sTextureDataManager.get(this); - mSourceSize = glm::vec2(static_cast(width), static_cast(height)); + mSourceSize = glm::vec2{static_cast(width), static_cast(height)}; data->setSourceSize(static_cast(width), static_cast(height)); if (mForceLoad || (mTextureData != nullptr)) data->load(); @@ -220,11 +220,11 @@ size_t TextureResource::getTotalMemUsage() size_t TextureResource::getTotalTextureSize() { - size_t total = 0; + size_t total{0}; // Count up all textures that manage their own texture data. for (auto tex : sAllTextures) { if (tex->mTextureData != nullptr) - total += tex->getSize().x() * tex->getSize().y() * 4; + total += tex->getSize().x * tex->getSize().y * 4; } // Now get the total memory from the manager. total += sTextureDataManager.getTotalSize(); diff --git a/es-core/src/resources/TextureResource.h b/es-core/src/resources/TextureResource.h index 6aee633a9..12319d81d 100644 --- a/es-core/src/resources/TextureResource.h +++ b/es-core/src/resources/TextureResource.h @@ -10,7 +10,6 @@ #define ES_CORE_RESOURCES_TEXTURE_RESOURCE_H #include "math/Misc.h" -#include "math/Vector2i.h" #include "resources/ResourceManager.h" #include "resources/TextureDataManager.h" @@ -52,7 +51,7 @@ public: bool isInitialized() const { return true; } bool isTiled() const; - const Vector2i getSize() const { return mSize; } + const glm::ivec2 getSize() const { return mSize; } bool bind(); // Returns an approximation of total VRAM used by textures (in bytes). @@ -73,7 +72,7 @@ private: // The texture data manager manages loading and unloading of filesystem based textures. static TextureDataManager sTextureDataManager; - Vector2i mSize; + glm::ivec2 mSize; glm::vec2 mSourceSize; bool mForceLoad; diff --git a/es-core/src/utils/StringUtil.cpp b/es-core/src/utils/StringUtil.cpp index 552b23d7b..556622138 100644 --- a/es-core/src/utils/StringUtil.cpp +++ b/es-core/src/utils/StringUtil.cpp @@ -153,8 +153,7 @@ namespace Utils (wchar_t)0xFF4B, (wchar_t)0xFF4C, (wchar_t)0xFF4D, (wchar_t)0xFF4E, (wchar_t)0xFF4F, (wchar_t)0xFF50, (wchar_t)0xFF51, (wchar_t)0xFF52, (wchar_t)0xFF53, (wchar_t)0xFF54, (wchar_t)0xFF55, (wchar_t)0xFF56, (wchar_t)0xFF57, (wchar_t)0xFF58, (wchar_t)0xFF59, - (wchar_t)0xFF5A - }; + (wchar_t)0xFF5A}; static wchar_t unicodeUppercase[] = { (wchar_t)0x0041, (wchar_t)0x0042, (wchar_t)0x0043, (wchar_t)0x0044, (wchar_t)0x0045, @@ -290,8 +289,7 @@ namespace Utils (wchar_t)0xFF2B, (wchar_t)0xFF2C, (wchar_t)0xFF2D, (wchar_t)0xFF2E, (wchar_t)0xFF2F, (wchar_t)0xFF30, (wchar_t)0xFF31, (wchar_t)0xFF32, (wchar_t)0xFF33, (wchar_t)0xFF34, (wchar_t)0xFF35, (wchar_t)0xFF36, (wchar_t)0xFF37, (wchar_t)0xFF38, (wchar_t)0xFF39, - (wchar_t)0xFF3A - }; + (wchar_t)0xFF3A}; unsigned int chars2Unicode(const std::string& stringArg, size_t& cursor) { @@ -592,7 +590,7 @@ namespace Utils std::string removeParenthesis(const std::string& stringArg) { - static std::vector remove = { '(', ')', '[', ']' }; + static std::vector remove = {'(', ')', '[', ']'}; std::string stringRemove = stringArg; size_t start; size_t end; diff --git a/es-core/src/utils/TimeUtil.cpp b/es-core/src/utils/TimeUtil.cpp index 6d4a46cb1..ef829d351 100644 --- a/es-core/src/utils/TimeUtil.cpp +++ b/es-core/src/utils/TimeUtil.cpp @@ -18,7 +18,7 @@ namespace Utils DateTime::DateTime() { mTime = 0; - mTimeStruct = { 0, 0, 0, 1, 0, 0, 0, 0, -1 }; + mTimeStruct = {0, 0, 0, 1, 0, 0, 0, 0, -1}; mIsoString = "00000000T000000"; } @@ -83,7 +83,7 @@ namespace Utils { const char* s = string.c_str(); const char* f = format.c_str(); - tm timeStruct = { 0, 0, 0, 1, 0, 0, 0, 0, -1 }; + tm timeStruct = {0, 0, 0, 1, 0, 0, 0, 0, -1}; size_t parsedChars = 0; if (string == "19700101T010000") @@ -172,7 +172,7 @@ namespace Utils #else localtime_r(&time, &timeStruct); #endif - char buf[256] = { '\0' }; + char buf[256] = {'\0'}; char* s = buf; while (*f) { @@ -231,7 +231,7 @@ namespace Utils int daysInMonth(const int year, const int month) { - tm timeStruct = { 0, 0, 0, 0, month, year - 1900, 0, 0, -1 }; + tm timeStruct = {0, 0, 0, 0, month, year - 1900, 0, 0, -1}; mktime(&timeStruct); return timeStruct.tm_mday; @@ -239,7 +239,7 @@ namespace Utils int daysInYear(const int year) { - tm timeStruct = { 0, 0, 0, 0, 0, year - 1900 + 1, 0, 0, -1 }; + tm timeStruct = {0, 0, 0, 0, 0, year - 1900 + 1, 0, 0, -1}; mktime(&timeStruct); return timeStruct.tm_yday + 1;