diff options
author | Aki <please@ignore.pl> | 2024-03-21 02:23:44 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2024-03-21 02:23:44 +0100 |
commit | ebbf3a75f9b0f6af7ebdc6a02a68c15378e77342 (patch) | |
tree | c1ae71d72382188738aa1f667a9bb23856fc1ccc | |
parent | 1a6f1241eb85c82d4fddf7b61a867a1bb828992e (diff) | |
download | starshatter-ebbf3a75f9b0f6af7ebdc6a02a68c15378e77342.zip starshatter-ebbf3a75f9b0f6af7ebdc6a02a68c15378e77342.tar.gz starshatter-ebbf3a75f9b0f6af7ebdc6a02a68c15378e77342.tar.bz2 |
Removed Fixed Point Arithmetic implementation
This will bite me in near future, won't it? Add it back to FoundationEx
at that point. Try handling it with some constepxr, too.
Keywords for grep: fix-point, fixed-point, fast_f2i, IntMask, FractMask,
fix::one, fix_sixty_five
-rw-r--r-- | StarsEx/CMakeLists.txt | 1 | ||||
-rw-r--r-- | StarsEx/Color.cpp | 15 | ||||
-rw-r--r-- | StarsEx/Fix.cpp | 22 | ||||
-rw-r--r-- | StarsEx/Fix.h | 120 | ||||
-rw-r--r-- | StarsEx/TerrainClouds.cpp | 1 | ||||
-rw-r--r-- | StarsEx/Window.cpp | 1 |
6 files changed, 7 insertions, 153 deletions
diff --git a/StarsEx/CMakeLists.txt b/StarsEx/CMakeLists.txt index 99ccabe..4541191 100644 --- a/StarsEx/CMakeLists.txt +++ b/StarsEx/CMakeLists.txt @@ -83,7 +83,6 @@ add_library( FighterAI.cpp FighterTacticalAI.cpp FirstTimeDlg.cpp - Fix.cpp FlightComp.cpp FlightDeck.cpp FlightPlanner.cpp diff --git a/StarsEx/Color.cpp b/StarsEx/Color.cpp index 8c468dd..5ed6257 100644 --- a/StarsEx/Color.cpp +++ b/StarsEx/Color.cpp @@ -14,7 +14,6 @@ #include "Color.h" #include "Video.h" #include "Pcx.h" -#include "Fix.h" #include "Utils.h" // +--------------------------------------------------------------------+ @@ -118,10 +117,10 @@ Color::operator*(const Color& c) const Color Color::operator*(double scale) const { - int r = fast_f2i(Red() * scale); if (r > 255) r = 255; - int g = fast_f2i(Green() * scale); if (g > 255) g = 255; - int b = fast_f2i(Blue() * scale); if (b > 255) b = 255; - int a = fast_f2i(Alpha() * scale); if (a > 255) a = 255; + int r = static_cast<int>(Red() * scale); if (r > 255) r = 255; + int g = static_cast<int>(Green() * scale); if (g > 255) g = 255; + int b = static_cast<int>(Blue() * scale); if (b > 255) b = 255; + int a = static_cast<int>(Alpha() * scale); if (a > 255) a = 255; return Color((BYTE) r, (BYTE) g, (BYTE) b, (BYTE) a); } @@ -129,9 +128,9 @@ Color::operator*(double scale) const Color Color::dim(double scale) const { - int r = fast_f2i(Red() * scale); - int g = fast_f2i(Green() * scale); - int b = fast_f2i(Blue() * scale); + int r = static_cast<int>(Red() * scale); + int g = static_cast<int>(Green() * scale); + int b = static_cast<int>(Blue() * scale); return Color((BYTE) r, (BYTE) g, (BYTE) b, (BYTE) Alpha()); } diff --git a/StarsEx/Fix.cpp b/StarsEx/Fix.cpp deleted file mode 100644 index e73fba7..0000000 --- a/StarsEx/Fix.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/* Starshatter: The Open Source Project - Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors - Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors - Copyright (c) 1997-2006, Destroyer Studios LLC. - - AUTHOR: John DiCamillo - - - OVERVIEW - ======== - Fixed point number class with 16 bits of fractional precision -*/ - -#include "Fix.h" - -// +--------------------------------------------------------------------+ - -const fix fix::one = fix(1); -const fix fix::two = fix(2); -const fix fix::three = fix(3); -const fix fix::five = fix(5); -const fix fix::ten = fix(10); diff --git a/StarsEx/Fix.h b/StarsEx/Fix.h deleted file mode 100644 index 84c5ac3..0000000 --- a/StarsEx/Fix.h +++ /dev/null @@ -1,120 +0,0 @@ -/* Starshatter: The Open Source Project - Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors - Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors - Copyright (c) 1997-2006, Destroyer Studios LLC. - - AUTHOR: John DiCamillo - - - OVERVIEW - ======== - Fixed point number class with 16 bits of fractional precision -*/ - -#ifndef Fix_h -#define Fix_h - -// +--------------------------------------------------------------------+ - -#include "Types.h" - -// +--------------------------------------------------------------------+ - -const double fix_sixty_five=65536.0; - -inline int fast_f2i(double d) -{ - return static_cast<int>(d); -} - -// +--------------------------------------------------------------------+ - -class fix -{ -public: - static const char* TYPENAME() { return "fix"; } - - enum FixDef { Precision=16, IntMask=0xffff0000, FractMask=0x0000ffff }; - static const fix one; - static const fix two; - static const fix three; - static const fix five; - static const fix ten; - - fix() : val(0) { } - fix(int n) : val(n<<Precision) { } - fix(double d) : val(static_cast<long>(d * fix_sixty_five)) { } - fix(const fix& f) : val(f.val) { } - - // conversion operators: - operator int () const { return (val>>Precision); } - operator float () const { return ((float) val) / ((float) fix_sixty_five); } - operator double() const { return ((double) val) / fix_sixty_five; } - - // assignment operators: - fix& operator=(const fix& f) { val=f.val; return *this; } - fix& operator=(int n) { val=(n<<Precision); return *this; } - fix& operator=(double d) { val = static_cast<long>(d * fix_sixty_five); return *this; } - - // comparison operators: - int operator==(const fix& f) const { return val==f.val; } - int operator!=(const fix& f) const { return val!=f.val; } - int operator<=(const fix& f) const { return val<=f.val; } - int operator>=(const fix& f) const { return val>=f.val; } - int operator< (const fix& f) const { return val< f.val; } - int operator> (const fix& f) const { return val> f.val; } - - // arithmetic operators: - fix operator+(const fix& f) const { fix r; r.val = val+f.val; return r; } - fix operator-(const fix& f) const { fix r; r.val = val-f.val; return r; } - fix operator*(const fix& f) const { - fix r; - r.val = (val * f.val) >> Precision; - return r; } - fix operator/(const fix& f) const { - fix r; - r.val = (val << Precision) / f.val; - return r; } - fix& operator+=(const fix& f) { val+=f.val; return *this; } - fix& operator-=(const fix& f) { val-=f.val; return *this; } - fix& operator*=(const fix& f) { - val = (val * f.val) >> Precision; - return *this; } - fix& operator/=(const fix& f) { - val = (val << Precision) / f.val; - return *this; } - - fix operator+(int n) const { fix r; r.val = val+(n<<Precision); return r; } - fix operator-(int n) const { fix r; r.val = val-(n<<Precision); return r; } - fix operator*(int n) const { fix r; r.val = val*n; return r; } - fix operator/(int n) const { fix r; r.val = val/n; return r; } - fix& operator+=(int n) { val+=(n<<Precision); return *this; } - fix& operator-=(int n) { val-=(n<<Precision); return *this; } - fix& operator*=(int n) { val*=n; return *this; } - fix& operator/=(int n) { val/=n; return *this; } - - fix operator+(double d) const { fix f(d); return (*this)+f; } - fix operator-(double d) const { fix f(d); return (*this)-f; } - fix operator*(double d) const { fix f(d); return (*this)*f; } - fix operator/(double d) const { fix f(d); return (*this)/f; } - fix& operator+=(double d) { fix f(d); val+=f.val; return *this; } - fix& operator-=(double d) { fix f(d); val-=f.val; return *this; } - fix& operator*=(double d) { val*=static_cast<long>(d); return *this; } - fix& operator/=(double d) { val/=static_cast<long>(d); return *this; } - - // misc. functions: - fix truncate() const { fix r; r.val = val&IntMask; return r; } - fix fraction() const { fix r; r.val = val-truncate().val; return r; } - fix floor() const { fix r; r.val = val&IntMask; return r; } - fix ceil() const { fix r; r.val = (val+FractMask)&IntMask; return r; } - fix adjust_up() const { fix r; r.val = val+FractMask; return r; } - fix adjust_down() const { fix r; r.val = val-FractMask; return r; } - - fix muldiv(const fix& num, const fix& den) const { return (*this) * num / den; } - - // data: - long val; -}; - -#endif // Fix_h - diff --git a/StarsEx/TerrainClouds.cpp b/StarsEx/TerrainClouds.cpp index 6f1ae73..bfad243 100644 --- a/StarsEx/TerrainClouds.cpp +++ b/StarsEx/TerrainClouds.cpp @@ -18,7 +18,6 @@ #include "CameraView.h" #include "Bitmap.h" #include "Game.h" -#include "Fix.h" #include "Scene.h" // +--------------------------------------------------------------------+ diff --git a/StarsEx/Window.cpp b/StarsEx/Window.cpp index 54015e5..110ca7c 100644 --- a/StarsEx/Window.cpp +++ b/StarsEx/Window.cpp @@ -14,7 +14,6 @@ #include "Window.h" #include "Bitmap.h" #include "Color.h" -#include "Fix.h" #include "Font.h" #include "Polygon.h" #include "Screen.h" |