From 02cb0d584f03496ec8431d5aab34b4814ee69091 Mon Sep 17 00:00:00 2001 From: Pieter Hulshoff Date: Sun, 5 Jun 2016 17:29:52 +0200 Subject: [PATCH] Removed the use of NaN due to compiler issues. --- RetroFE/Source/Graphics/Animate/Tween.cpp | 9 +-- RetroFE/Source/Graphics/Animate/Tween.h | 2 +- .../Source/Graphics/Component/Component.cpp | 73 +++++++++---------- RetroFE/Source/Graphics/PageBuilder.cpp | 12 ++- 4 files changed, 44 insertions(+), 52 deletions(-) diff --git a/RetroFE/Source/Graphics/Animate/Tween.cpp b/RetroFE/Source/Graphics/Animate/Tween.cpp index 3db751c..8b8426f 100644 --- a/RetroFE/Source/Graphics/Animate/Tween.cpp +++ b/RetroFE/Source/Graphics/Animate/Tween.cpp @@ -24,10 +24,11 @@ std::map Tween::tweenPropertyMap_; Tween::Tween(TweenProperty property, TweenAlgorithm type, double start, double end, double duration) : property(property) -, duration(duration) + , duration(duration) , type(type) , start(start) , end(end) + , startDefined(true) { } @@ -374,9 +375,3 @@ double Tween::easeInOutCircular(double t, double d, double b, double c) t -= 2; return c/2 * (sqrt(1 - t*t) + 1) + b; } - - -double Tween::getStart() -{ - return start; -} \ No newline at end of file diff --git a/RetroFE/Source/Graphics/Animate/Tween.h b/RetroFE/Source/Graphics/Animate/Tween.h index 1ed2d36..3cf440e 100644 --- a/RetroFE/Source/Graphics/Animate/Tween.h +++ b/RetroFE/Source/Graphics/Animate/Tween.h @@ -33,7 +33,7 @@ public: static bool getTweenProperty(std::string name, TweenProperty &property); TweenProperty property; double duration; - double getStart(); + bool startDefined; private: static double easeInQuadratic(double elapsedTime, double duration, double b, double c); diff --git a/RetroFE/Source/Graphics/Component/Component.cpp b/RetroFE/Source/Graphics/Component/Component.cpp index 30bd4a6..fc6dfc6 100644 --- a/RetroFE/Source/Graphics/Component/Component.cpp +++ b/RetroFE/Source/Graphics/Component/Component.cpp @@ -18,7 +18,6 @@ #include "../../Graphics/ViewInfo.h" #include "../../Utility/Log.h" #include "../../SDL.h" -#include Component::Component(Page &p) : page(p) @@ -206,87 +205,87 @@ bool Component::animate() switch(tween->property) { case TWEEN_PROPERTY_X: - if (std::isnan( tween->getStart() )) - baseViewInfo.X = tween->animate(elapsedTime, storeViewInfo_.X); - else + if (tween->startDefined) baseViewInfo.X = tween->animate(elapsedTime); + else + baseViewInfo.X = tween->animate(elapsedTime, storeViewInfo_.X); break; case TWEEN_PROPERTY_Y: - if (std::isnan( tween->getStart() )) - baseViewInfo.Y = tween->animate(elapsedTime, storeViewInfo_.Y); - else + if (tween->startDefined) baseViewInfo.Y = tween->animate(elapsedTime); + else + baseViewInfo.Y = tween->animate(elapsedTime, storeViewInfo_.Y); break; case TWEEN_PROPERTY_HEIGHT: - if (std::isnan( tween->getStart() )) - baseViewInfo.Height = tween->animate(elapsedTime, storeViewInfo_.Height); - else + if (tween->startDefined) baseViewInfo.Height = tween->animate(elapsedTime); + else + baseViewInfo.Height = tween->animate(elapsedTime, storeViewInfo_.Height); break; case TWEEN_PROPERTY_WIDTH: - if (std::isnan( tween->getStart() )) - baseViewInfo.Width = tween->animate(elapsedTime, storeViewInfo_.Width); - else + if (tween->startDefined) baseViewInfo.Width = tween->animate(elapsedTime); + else + baseViewInfo.Width = tween->animate(elapsedTime, storeViewInfo_.Width); break; case TWEEN_PROPERTY_ANGLE: - if (std::isnan( tween->getStart() )) - baseViewInfo.Angle = tween->animate(elapsedTime, storeViewInfo_.Angle); - else + if (tween->startDefined) baseViewInfo.Angle = tween->animate(elapsedTime); + else + baseViewInfo.Angle = tween->animate(elapsedTime, storeViewInfo_.Angle); break; case TWEEN_PROPERTY_ALPHA: - if (std::isnan( tween->getStart() )) - baseViewInfo.Alpha = tween->animate(elapsedTime, storeViewInfo_.Alpha); - else + if (tween->startDefined) baseViewInfo.Alpha = tween->animate(elapsedTime); + else + baseViewInfo.Alpha = tween->animate(elapsedTime, storeViewInfo_.Alpha); break; case TWEEN_PROPERTY_X_ORIGIN: - if (std::isnan( tween->getStart() )) - baseViewInfo.XOrigin = tween->animate(elapsedTime, storeViewInfo_.XOrigin); - else + if (tween->startDefined) baseViewInfo.XOrigin = tween->animate(elapsedTime); + else + baseViewInfo.XOrigin = tween->animate(elapsedTime, storeViewInfo_.XOrigin); break; case TWEEN_PROPERTY_Y_ORIGIN: - if (std::isnan( tween->getStart() )) - baseViewInfo.YOrigin = tween->animate(elapsedTime, storeViewInfo_.YOrigin); - else + if (tween->startDefined) baseViewInfo.YOrigin = tween->animate(elapsedTime); + else + baseViewInfo.YOrigin = tween->animate(elapsedTime, storeViewInfo_.YOrigin); break; case TWEEN_PROPERTY_X_OFFSET: - if (std::isnan( tween->getStart() )) - baseViewInfo.XOffset = tween->animate(elapsedTime, storeViewInfo_.XOffset); - else + if (tween->startDefined) baseViewInfo.XOffset = tween->animate(elapsedTime); + else + baseViewInfo.XOffset = tween->animate(elapsedTime, storeViewInfo_.XOffset); break; case TWEEN_PROPERTY_Y_OFFSET: - if (std::isnan( tween->getStart() )) - baseViewInfo.YOffset = tween->animate(elapsedTime, storeViewInfo_.YOffset); - else + if (tween->startDefined) baseViewInfo.YOffset = tween->animate(elapsedTime); + else + baseViewInfo.YOffset = tween->animate(elapsedTime, storeViewInfo_.YOffset); break; case TWEEN_PROPERTY_FONT_SIZE: - if (std::isnan( tween->getStart() )) - baseViewInfo.FontSize = tween->animate(elapsedTime, storeViewInfo_.FontSize); - else + if (tween->startDefined) baseViewInfo.FontSize = tween->animate(elapsedTime); + else + baseViewInfo.FontSize = tween->animate(elapsedTime, storeViewInfo_.FontSize); break; case TWEEN_PROPERTY_BACKGROUND_ALPHA: - if (std::isnan( tween->getStart() )) - baseViewInfo.BackgroundAlpha = tween->animate(elapsedTime, storeViewInfo_.BackgroundAlpha); - else + if (tween->startDefined) baseViewInfo.BackgroundAlpha = tween->animate(elapsedTime); + else + baseViewInfo.BackgroundAlpha = tween->animate(elapsedTime, storeViewInfo_.BackgroundAlpha); break; } } diff --git a/RetroFE/Source/Graphics/PageBuilder.cpp b/RetroFE/Source/Graphics/PageBuilder.cpp index 111eefa..ed3ee4d 100644 --- a/RetroFE/Source/Graphics/PageBuilder.cpp +++ b/RetroFE/Source/Graphics/PageBuilder.cpp @@ -37,7 +37,6 @@ #include #include #include -#include using namespace rapidxml; @@ -959,15 +958,12 @@ void PageBuilder::getAnimationEvents(xml_node<> *node, TweenSet &tweens) } else { - float fromValue; + float fromValue = 0.0f; + bool fromDefined = true; if (from) - { fromValue = Utils::convertFloat(from->value()); - } else - { - fromValue = std::numeric_limits::quiet_NaN(); - } + fromDefined = false; float toValue = Utils::convertFloat(to->value()); float durationValue = Utils::convertFloat(durationXml->value()); @@ -1016,6 +1012,8 @@ void PageBuilder::getAnimationEvents(xml_node<> *node, TweenSet &tweens) } Tween *t = new Tween(property, algorithm, fromValue, toValue, durationValue); + if (!fromDefined) + t->startDefined = false; tweens.push(t); } else