From ebbf3a75f9b0f6af7ebdc6a02a68c15378e77342 Mon Sep 17 00:00:00 2001 From: Aki Date: Thu, 21 Mar 2024 02:23:44 +0100 Subject: 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 --- StarsEx/CMakeLists.txt | 1 - StarsEx/Color.cpp | 15 +++--- StarsEx/Fix.cpp | 22 --------- StarsEx/Fix.h | 120 ---------------------------------------------- StarsEx/TerrainClouds.cpp | 1 - StarsEx/Window.cpp | 1 - 6 files changed, 7 insertions(+), 153 deletions(-) delete mode 100644 StarsEx/Fix.cpp delete mode 100644 StarsEx/Fix.h (limited to 'StarsEx') 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(Red() * scale); if (r > 255) r = 255; + int g = static_cast(Green() * scale); if (g > 255) g = 255; + int b = static_cast(Blue() * scale); if (b > 255) b = 255; + int a = static_cast(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(Red() * scale); + int g = static_cast(Green() * scale); + int b = static_cast(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(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<(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<(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<(d); return *this; } - fix& operator/=(double d) { val/=static_cast(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" -- cgit v1.1