Consolidate the three implementations of Decode5A3 found in Core into one. Fix some warnings.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2364 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard 2009-02-22 12:43:25 +00:00
parent 8276ca3b21
commit aff0f1fbe3
16 changed files with 156 additions and 217 deletions

View File

@ -554,6 +554,14 @@
RelativePath=".\Src\ChunkFile.h" RelativePath=".\Src\ChunkFile.h"
> >
</File> </File>
<File
RelativePath=".\Src\ColorUtil.cpp"
>
</File>
<File
RelativePath=".\Src\ColorUtil.h"
>
</File>
<File <File
RelativePath=".\Src\Common.h" RelativePath=".\Src\Common.h"
> >

View File

@ -0,0 +1,56 @@
// Copyright (C) 2003-2008 Dolphin Project.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "Common.h"
#include "ColorUtil.h"
namespace ColorUtil
{
const int lut5to8[] = { 0x00,0x08,0x10,0x18,0x20,0x29,0x31,0x39,
0x41,0x4A,0x52,0x5A,0x62,0x6A,0x73,0x7B,
0x83,0x8B,0x94,0x9C,0xA4,0xAC,0xB4,0xBD,
0xC5,0xCD,0xD5,0xDE,0xE6,0xEE,0xF6,0xFF };
const int lut4to8[] = { 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,
0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF };
const int lut3to8[] = { 0x00,0x24,0x48,0x6D,0x91,0xB6,0xDA,0xFF };
u32 Decode5A3(u16 val)
{
const u32 bg_color = 0x00000000;
int r, g, b, a;
if (val & 0x8000)
{
r = lut5to8[(val >> 10) & 0x1f];
g = lut5to8[(val >> 5) & 0x1f];
b = lut5to8[(val) & 0x1f];
a = 0xFF;
}
else
{
a = lut3to8[(val >> 12) & 0x7];
r = (lut4to8[(val >> 8) & 0xf] * a + (bg_color & 0xFF) * (255 - a)) / 255;
g = (lut4to8[(val >> 4) & 0xf] * a + ((bg_color >> 8) & 0xFF) * (255 - a)) / 255;
b = (lut4to8[(val) & 0xf] * a + ((bg_color >> 16) & 0xFF) * (255 - a)) / 255;
a = 0xFF;
}
return (a << 24) | (r << 16) | (g << 8) | b;
}
} // namespace

View File

@ -0,0 +1,28 @@
// Copyright (C) 2003-2008 Dolphin Project.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#ifndef _COLORUTIL_H
#define _COLORUTIL_H
namespace ColorUtil
{
u32 Decode5A3(u16 val);
} // namespace
#endif

View File

@ -76,7 +76,7 @@ u32 Ascii2Hex(std::string _Text)
u32 Result = 0; u32 Result = 0;
// Max 32-bit values are supported // Max 32-bit values are supported
int Length = _Text.length(); size_t Length = _Text.length();
if (Length > 4) if (Length > 4)
Length = 4; Length = 4;

View File

@ -36,17 +36,15 @@ u32 timeGetTime()
} }
#endif #endif
namespace Common namespace Common
{ {
////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////
// Initiate, Start, Stop, and Update the time // Initiate, Start, Stop, and Update the time
// --------------- // ---------------
// Set initial values for the class // Set initial values for the class
Timer::Timer(void) Timer::Timer()
: m_LastTime(0), m_StartTime(0), m_Running(false) : m_LastTime(0), m_StartTime(0), m_Running(false)
{ {
Update(); Update();
@ -72,7 +70,7 @@ void Timer::Stop()
} }
// Update the last time variable // Update the last time variable
void Timer::Update(void) void Timer::Update()
{ {
m_LastTime = timeGetTime(); m_LastTime = timeGetTime();
//TODO(ector) - QPF //TODO(ector) - QPF
@ -86,7 +84,7 @@ void Timer::Update(void)
// --------------- // ---------------
// Get the number of milliseconds since the last Update() // Get the number of milliseconds since the last Update()
s64 Timer::GetTimeDifference(void) s64 Timer::GetTimeDifference()
{ {
return(timeGetTime() - m_LastTime); return(timeGetTime() - m_LastTime);
} }
@ -104,7 +102,7 @@ void Timer::WindBackStartingTime(u64 WindBack)
} }
// Get the time elapsed since the Start() // Get the time elapsed since the Start()
u64 Timer::GetTimeElapsed(void) u64 Timer::GetTimeElapsed()
{ {
/* If we have not started yet return 1 (because then I don't have to change the FPS /* If we have not started yet return 1 (because then I don't have to change the FPS
calculation in CoreRerecording.cpp */ calculation in CoreRerecording.cpp */
@ -117,20 +115,20 @@ u64 Timer::GetTimeElapsed(void)
} }
// Get the formattet time elapsed since the Start() // Get the formattet time elapsed since the Start()
std::string Timer::GetTimeElapsedFormatted(void) std::string Timer::GetTimeElapsedFormatted() const
{ {
// If we have not started yet, return zero // If we have not started yet, return zero
if (m_StartTime == 0) if (m_StartTime == 0)
return "00:00:00:000"; return "00:00:00:000";
// The number of milliseconds since the start, use a different value if the timer is stopped // The number of milliseconds since the start, use a different value if the timer is stopped
u32 Milliseconds; u64 Milliseconds;
if (m_Running) if (m_Running)
Milliseconds = timeGetTime() - m_StartTime; Milliseconds = timeGetTime() - m_StartTime;
else else
Milliseconds = m_LastTime - m_StartTime; Milliseconds = m_LastTime - m_StartTime;
// Seconds // Seconds
u32 Seconds = Milliseconds / 1000; u32 Seconds = (u32)(Milliseconds / 1000);
// Minutes // Minutes
u32 Minutes = Seconds / 60; u32 Minutes = Seconds / 60;
// Hours // Hours
@ -172,14 +170,14 @@ void _time64(u64* t)
// Get the number of seconds since January 1 1970 // Get the number of seconds since January 1 1970
u64 Timer::GetTimeSinceJan1970(void) u64 Timer::GetTimeSinceJan1970()
{ {
time_t ltime; time_t ltime;
time(&ltime); time(&ltime);
return((u64)ltime); return((u64)ltime);
} }
u64 Timer::GetLocalTimeSinceJan1970(void) u64 Timer::GetLocalTimeSinceJan1970()
{ {
time_t sysTime, tzDiff; time_t sysTime, tzDiff;
struct tm * gmTime; struct tm * gmTime;
@ -193,7 +191,7 @@ u64 Timer::GetLocalTimeSinceJan1970(void)
} }
// Return the current time formatted as Minutes:Seconds:Milliseconds in the form 00:00:000 // Return the current time formatted as Minutes:Seconds:Milliseconds in the form 00:00:000
std::string Timer::GetTimeFormatted(void) std::string Timer::GetTimeFormatted()
{ {
struct timeb tp; struct timeb tp;
(void)::ftime(&tp); (void)::ftime(&tp);

View File

@ -25,8 +25,7 @@ namespace Common
{ {
class Timer class Timer
{ {
public: public:
Timer(); Timer();
void Start(); void Start();
@ -34,7 +33,7 @@ class Timer
void Update(); void Update();
// The time difference is always returned in milliseconds, regardless of alternative internal representation // The time difference is always returned in milliseconds, regardless of alternative internal representation
s64 GetTimeDifference(void); s64 GetTimeDifference();
void AddTimeDifference(); void AddTimeDifference();
void WindBackStartingTime(u64 WindBack); void WindBackStartingTime(u64 WindBack);
@ -44,19 +43,20 @@ class Timer
static u64 GetLocalTimeSinceJan1970(); static u64 GetLocalTimeSinceJan1970();
static std::string GetTimeFormatted(); static std::string GetTimeFormatted();
std::string GetTimeElapsedFormatted(); std::string GetTimeElapsedFormatted() const;
u64 GetTimeElapsed(); u64 GetTimeElapsed();
public: public:
u64 m_LastTime; u64 m_LastTime;
u64 m_StartTime; u64 m_StartTime;
u64 m_frequency; u64 m_frequency;
bool m_Running; bool m_Running;
}; };
} // end of namespace Common } // end of namespace Common
#ifdef __GNUC__ #ifdef __GNUC__
u32 timeGetTime(); u32 timeGetTime();
#endif #endif
#endif #endif

View File

@ -37,7 +37,7 @@ CDolLoader::CDolLoader(const char* _szFilename)
fread(tmpBuffer, size, 1, pStream); fread(tmpBuffer, size, 1, pStream);
fclose(pStream); fclose(pStream);
m_bInit = Initialize(tmpBuffer, size); m_bInit = Initialize(tmpBuffer, (u32)size);
delete [] tmpBuffer; delete [] tmpBuffer;
} }

View File

@ -20,6 +20,7 @@
// HyperIris: need clean code // HyperIris: need clean code
#include "../../Core/Src/ConfigManager.h" #include "../../Core/Src/ConfigManager.h"
#include "ColorUtil.h"
#include "BannerLoaderGC.h" #include "BannerLoaderGC.h"
namespace DiscIO namespace DiscIO
@ -28,22 +29,6 @@ CBannerLoaderGC::CBannerLoaderGC(DiscIO::IFileSystem& _rFileSystem)
: m_pBannerFile(NULL), : m_pBannerFile(NULL),
m_IsValid(false) m_IsValid(false)
{ {
// build LUT Table
for (int i = 0; i < 8; i++)
{
lut3to8[i] = (i * 255) / 7;
}
for (int i = 0; i < 16; i++)
{
lut4to8[i] = (i * 255) / 15;
}
for (int i = 0; i < 32; i++)
{
lut5to8[i] = (i * 255) / 31;
}
// load the opening.bnr // load the opening.bnr
size_t FileSize = (size_t) _rFileSystem.GetFileSize("opening.bnr"); size_t FileSize = (size_t) _rFileSystem.GetFileSize("opening.bnr");
@ -216,33 +201,6 @@ CBannerLoaderGC::GetDescription(std::string* _rDescription)
} }
u32
CBannerLoaderGC::decode5A3(u16 val)
{
u32 bannerBGColor = 0x00000000;
int r, g, b, a;
if ((val & 0x8000))
{
r = lut5to8[(val >> 10) & 0x1f];
g = lut5to8[(val >> 5) & 0x1f];
b = lut5to8[(val) & 0x1f];
a = 0xFF;
}
else
{
a = lut3to8[(val >> 12) & 0x7];
r = (lut4to8[(val >> 8) & 0xf] * a + (bannerBGColor & 0xFF) * (255 - a)) / 255;
g = (lut4to8[(val >> 4) & 0xf] * a + ((bannerBGColor >> 8) & 0xFF) * (255 - a)) / 255;
b = (lut4to8[(val) & 0xf] * a + ((bannerBGColor >> 16) & 0xFF) * (255 - a)) / 255;
a = 0xFF;
}
return((a << 24) | (r << 16) | (g << 8) | b);
}
void void
CBannerLoaderGC::decode5A3image(u32* dst, u16* src, int width, int height) CBannerLoaderGC::decode5A3image(u32* dst, u16* src, int width, int height)
{ {
@ -254,7 +212,7 @@ CBannerLoaderGC::decode5A3image(u32* dst, u16* src, int width, int height)
{ {
for (int ix = 0; ix < 4; ix++) for (int ix = 0; ix < 4; ix++)
{ {
u32 RGBA = decode5A3(Common::swap16(src[ix])); u32 RGBA = ColorUtil::Decode5A3(Common::swap16(src[ix]));
dst[(y + iy) * width + (x + ix)] = RGBA; dst[(y + iy) * width + (x + ix)] = RGBA;
} }
} }

View File

@ -26,24 +26,17 @@ class CBannerLoaderGC
: public IBannerLoader : public IBannerLoader
{ {
public: public:
CBannerLoaderGC(DiscIO::IFileSystem& _rFileSystem); CBannerLoaderGC(DiscIO::IFileSystem& _rFileSystem);
virtual ~CBannerLoaderGC(); virtual ~CBannerLoaderGC();
virtual bool IsValid(); virtual bool IsValid();
virtual bool GetBanner(u32* _pBannerImage); virtual bool GetBanner(u32* _pBannerImage);
virtual bool GetName(std::string* _rName); virtual bool GetName(std::string* _rName);
virtual bool GetCompany(std::string& _rCompany); virtual bool GetCompany(std::string& _rCompany);
virtual bool GetDescription(std::string* _rDescription); virtual bool GetDescription(std::string* _rDescription);
private: private:
enum enum
{ {
DVD_BANNER_WIDTH = 96, DVD_BANNER_WIDTH = 96,
@ -85,20 +78,13 @@ class CBannerLoaderGC
DVDBannerComment comment[6]; // Comments in six languages DVDBannerComment comment[6]; // Comments in six languages
}; };
// for banner decoding
int lut3to8[8];
int lut4to8[16];
int lut5to8[32];
u8* m_pBannerFile; u8* m_pBannerFile;
bool m_IsValid; bool m_IsValid;
u32 decode5A3(u16 val);
void decode5A3image(u32* dst, u16* src, int width, int height); void decode5A3image(u32* dst, u16* src, int width, int height);
BANNER_TYPE getBannerType(); BANNER_TYPE getBannerType();
}; };
} // namespace } // namespace
#endif #endif

View File

@ -20,6 +20,7 @@
#include <stdio.h> #include <stdio.h>
#include "Common.h" #include "Common.h"
#include "ColorUtil.h"
#include "BannerLoaderWii.h" #include "BannerLoaderWii.h"
#include "FileUtil.h" #include "FileUtil.h"
@ -29,8 +30,6 @@ CBannerLoaderWii::CBannerLoaderWii(DiscIO::IFileSystem& _rFileSystem)
: m_pBannerFile(NULL) : m_pBannerFile(NULL)
, m_IsValid(false) , m_IsValid(false)
{ {
InitLUTTable();
char Filename[260]; char Filename[260];
char TitleID[4]; char TitleID[4];
@ -143,54 +142,6 @@ CBannerLoaderWii::GetDescription(std::string* _rDescription)
return false; return false;
} }
void
CBannerLoaderWii::InitLUTTable()
{
// build LUT Table
for (int i = 0; i < 8; i++)
{
lut3to8[i] = (i * 255) / 7;
}
for (int i = 0; i < 16; i++)
{
lut4to8[i] = (i * 255) / 15;
}
for (int i = 0; i < 32; i++)
{
lut5to8[i] = (i * 255) / 31;
}
}
u32
CBannerLoaderWii::decode5A3(u16 val)
{
u32 bannerBGColor = 0x00000000;
int r, g, b, a;
if ((val & 0x8000))
{
r = lut5to8[(val >> 10) & 0x1f];
g = lut5to8[(val >> 5) & 0x1f];
b = lut5to8[(val) & 0x1f];
a = 0xFF;
}
else
{
a = lut3to8[(val >> 12) & 0x7];
r = (lut4to8[(val >> 8) & 0xf] * a + (bannerBGColor & 0xFF) * (255 - a)) / 255;
g = (lut4to8[(val >> 4) & 0xf] * a + ((bannerBGColor >> 8) & 0xFF) * (255 - a)) / 255;
b = (lut4to8[(val) & 0xf] * a + ((bannerBGColor >> 16) & 0xFF) * (255 - a)) / 255;
a = 0xFF;
}
return ((a << 24) | (r << 16) | (g << 8) | b);
}
void void
CBannerLoaderWii::decode5A3image(u32* dst, u16* src, int width, int height) CBannerLoaderWii::decode5A3image(u32* dst, u16* src, int width, int height)
{ {
@ -202,7 +153,7 @@ CBannerLoaderWii::decode5A3image(u32* dst, u16* src, int width, int height)
{ {
for (int ix = 0; ix < 4; ix++) for (int ix = 0; ix < 4; ix++)
{ {
u32 RGBA = decode5A3(Common::swap16(src[ix])); u32 RGBA = ColorUtil::Decode5A3(Common::swap16(src[ix]));
dst[(y + iy) * width + (x + ix)] = RGBA; dst[(y + iy) * width + (x + ix)] = RGBA;
} }
} }

View File

@ -61,17 +61,10 @@ class CBannerLoaderWii
u8 m_IconTexture[8][WII_BANNER_ICON_SIZE]; u8 m_IconTexture[8][WII_BANNER_ICON_SIZE];
} ; } ;
// for banner decoding
int lut3to8[8];
int lut4to8[16];
int lut5to8[32];
u8* m_pBannerFile; u8* m_pBannerFile;
bool m_IsValid; bool m_IsValid;
void InitLUTTable();
u32 decode5A3(u16 val);
void decode5A3image(u32* dst, u16* src, int width, int height); void decode5A3image(u32* dst, u16* src, int width, int height);
}; };
} // namespace } // namespace

View File

@ -15,6 +15,7 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include "GCMemcard.h" #include "GCMemcard.h"
#include "ColorUtil.h"
// i think there is support for this stuff in the common lib... if not there should be support // i think there is support for this stuff in the common lib... if not there should be support
@ -26,34 +27,6 @@ void ByteSwap(u8 *valueA, u8 *valueB)
*valueB = tmp; *valueB = tmp;
} }
u32 decode5A3(u16 val)
{
const int lut5to8[] = { 0x00,0x08,0x10,0x18,0x20,0x29,0x31,0x39,
0x41,0x4A,0x52,0x5A,0x62,0x6A,0x73,0x7B,
0x83,0x8B,0x94,0x9C,0xA4,0xAC,0xB4,0xBD,
0xC5,0xCD,0xD5,0xDE,0xE6,0xEE,0xF6,0xFF};
const int lut4to8[] = { 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,
0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF};
const int lut3to8[] = { 0x00,0x24,0x48,0x6D,0x91,0xB6,0xDA,0xFF};
int r,g,b,a;
if ((val&0x8000))
{
r=lut5to8[(val>>10) & 0x1f];
g=lut5to8[(val>>5 ) & 0x1f];
b=lut5to8[(val ) & 0x1f];
a=0xFF;
}
else
{
a=lut3to8[(val>>12) & 0x7];
r=lut4to8[(val>>8 ) & 0xf];
g=lut4to8[(val>>4 ) & 0xf];
b=lut4to8[(val ) & 0xf];
}
return (a<<24) | (r<<16) | (g<<8) | b;
}
void decode5A3image(u32* dst, u16* src, int width, int height) void decode5A3image(u32* dst, u16* src, int width, int height)
{ {
for (int y = 0; y < height; y += 4) for (int y = 0; y < height; y += 4)
@ -64,7 +37,7 @@ void decode5A3image(u32* dst, u16* src, int width, int height)
{ {
for (int ix = 0; ix < 4; ix++) for (int ix = 0; ix < 4; ix++)
{ {
u32 RGBA = decode5A3(Common::swap16(src[ix])); u32 RGBA = ColorUtil::Decode5A3(Common::swap16(src[ix]));
dst[(y + iy) * width + (x + ix)] = RGBA; dst[(y + iy) * width + (x + ix)] = RGBA;
} }
} }
@ -83,7 +56,8 @@ void decodeCI8image(u32* dst, u8* src, u16* pal, int width, int height)
u32 *tdst = dst+(y+iy)*width+x; u32 *tdst = dst+(y+iy)*width+x;
for (int ix = 0; ix < 8; ix++) for (int ix = 0; ix < 8; ix++)
{ {
tdst[ix] = decode5A3(Common::swap16(pal[src[ix]])); // huh, this seems wrong. CI8, not 5A3, no?
tdst[ix] = ColorUtil::Decode5A3(Common::swap16(pal[src[ix]]));
} }
} }
} }
@ -910,13 +884,13 @@ u32 GCMemcard::ExportGci(u8 index, const char *fileName, std::string *fileName2)
{ {
if (BE32(dir.Dir[index].Gamecode) == 0xFFFFFFFF) return SUCCESS; if (BE32(dir.Dir[index].Gamecode) == 0xFFFFFFFF) return SUCCESS;
int length = fileName2->length() + 42; size_t length = fileName2->length() + 42;
char *filename = new char[length]; char *filename = new char[length];
char GameCode[5]; char GameCode[5];
DEntry_GameCode(index, GameCode); DEntry_GameCode(index, GameCode);
sprintf(filename,"%s/%s_%s.gci",fileName2->c_str(), GameCode, dir.Dir[index].Filename); sprintf(filename, "%s/%s_%s.gci", fileName2->c_str(), GameCode, dir.Dir[index].Filename);
gci = fopen((const char *)filename, "wb"); gci = fopen((const char *)filename, "wb");
} }
else else
@ -955,7 +929,7 @@ u32 GCMemcard::ExportGci(u8 index, const char *fileName, std::string *fileName2)
if (fwrite(tempSaveData, 1, size, gci) != size) if (fwrite(tempSaveData, 1, size, gci) != size)
completeWrite = false; completeWrite = false;
fclose(gci); fclose(gci);
delete []tempSaveData; delete [] tempSaveData;
if (completeWrite) return SUCCESS; if (completeWrite) return SUCCESS;
else return WRITEFAIL; else return WRITEFAIL;

View File

@ -1,6 +1,7 @@
#include <shlobj.h> #include <shlobj.h>
#include <xstring> #include <xstring>
#include <string> #include <string>
#include "ShellUtil.h" #include "ShellUtil.h"
namespace W32Util namespace W32Util
@ -30,19 +31,14 @@ namespace W32Util
// function WinBrowseForFileName // function WinBrowseForFileName
//--------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------
bool BrowseForFileName (bool _bLoad, HWND _hParent, const char *_pTitle, bool BrowseForFileName (bool _bLoad, HWND _hParent, const char *_pTitle,
const char *_pInitialFolder,const char *_pFilter,const char *_pExtension, const char *_pInitialFolder, const char *_pFilter, const char *_pExtension,
std::string& _strFileName) std::string& _strFileName)
{ {
char szFile [MAX_PATH+1]; char szFile [MAX_PATH+1] = {0};
char szFileTitle [MAX_PATH+1]; char szFileTitle [MAX_PATH+1] = {0};
strcpy (szFile,"");
strcpy (szFileTitle,"");
OPENFILENAME ofn; OPENFILENAME ofn;
ZeroMemory (&ofn,sizeof (ofn)); ZeroMemory (&ofn,sizeof (ofn));
ofn.lStructSize = sizeof (OPENFILENAME); ofn.lStructSize = sizeof (OPENFILENAME);
ofn.lpstrInitialDir = _pInitialFolder; ofn.lpstrInitialDir = _pInitialFolder;
ofn.lpstrFilter = _pFilter; ofn.lpstrFilter = _pFilter;
@ -57,12 +53,11 @@ namespace W32Util
if (_strFileName.size () != 0) if (_strFileName.size () != 0)
ofn.lpstrFile = (char *)_strFileName.c_str(); ofn.lpstrFile = (char *)_strFileName.c_str();
if (((_bLoad)?GetOpenFileName (&ofn):GetSaveFileName (&ofn))) if (((_bLoad) ? GetOpenFileName(&ofn) : GetSaveFileName(&ofn)))
{ {
_strFileName = ofn.lpstrFile; _strFileName = ofn.lpstrFile;
return true; return true;
} }
else
return false; return false;
} }
@ -113,12 +108,6 @@ namespace W32Util
} }
return files; return files;
} }
else
return std::vector<std::string>(); // empty vector; return std::vector<std::string>(); // empty vector;
} }
} // namespace
}

View File

@ -807,8 +807,8 @@ void Renderer::Swap(const TRectangle& rc)
// Rc.right and rc.bottom is the original picture pixel size // Rc.right and rc.bottom is the original picture pixel size
/* There is a +1 in Rc (earlier called multirc, the input to this function), but these /* There is a +1 in Rc (earlier called multirc, the input to this function), but these
adjustments seems to work better without it. */ adjustments seems to work better without it. */
float WidthRatio = (float)(rc.right - 1) / 640.0; float WidthRatio = (float)(rc.right - 1) / 640.0f;
float HeightRatio = (float)(rc.bottom - 1) / 480.0; float HeightRatio = (float)(rc.bottom - 1) / 480.0f;
// The pixel size of the image on the screen, adjusted for the actual window size // The pixel size of the image on the screen, adjusted for the actual window size
float OldWidth = WidthRatio * (float)WinWidth; float OldWidth = WidthRatio * (float)WinWidth;
@ -854,10 +854,8 @@ void Renderer::Swap(const TRectangle& rc)
float WinWidth = (float)OpenGL_GetWidth(); float WinWidth = (float)OpenGL_GetWidth();
float WinHeight = (float)OpenGL_GetHeight(); float WinHeight = (float)OpenGL_GetHeight();
// The rendering window aspect ratio as a fraction of the 4:3 ratio // The rendering window aspect ratio as a fraction of the 4:3 ratio
float Ratio = WinWidth / WinHeight / (4.0 / 3.0); float Ratio = WinWidth / WinHeight / (4.0f / 3.0f);
float wAdj, hAdj; float wAdj, hAdj;
float ActualRatioW, ActualRatioH;
float Overflow;
// Actual pixel size of the picture after adjustment // Actual pixel size of the picture after adjustment
float PictureWidth = WinWidth, PictureHeight = WinHeight; float PictureWidth = WinWidth, PictureHeight = WinHeight;
@ -894,8 +892,8 @@ void Renderer::Swap(const TRectangle& rc)
// Calculate the new width and height for glViewport, this is not the actual size of either the picture or the screen // Calculate the new width and height for glViewport, this is not the actual size of either the picture or the screen
// ---------------- // ----------------
// Invert the ratio to make it > 1 // Invert the ratio to make it > 1
Ratio = 1.0 / Ratio; Ratio = 1.0f / Ratio;
wAdj = 1.0; wAdj = 1.0f;
hAdj = Ratio; hAdj = Ratio;
FloatGLWidth = FloatGLWidth / wAdj; FloatGLWidth = FloatGLWidth / wAdj;
FloatGLHeight = FloatGLHeight / hAdj; FloatGLHeight = FloatGLHeight / hAdj;
@ -909,9 +907,9 @@ void Renderer::Swap(const TRectangle& rc)
// Keep the picture on the bottom of the screen, this is needed because YOffset may not be 0 here // Keep the picture on the bottom of the screen, this is needed because YOffset may not be 0 here
FloatYOffset = FloatYOffset / hAdj; FloatYOffset = FloatYOffset / hAdj;
// Move the bottom of the picture to the middle of the screen // Move the bottom of the picture to the middle of the screen
FloatYOffset = FloatYOffset + WinHeight / 2.0; FloatYOffset = FloatYOffset + WinHeight / 2.0f;
// Then remove half the picture height to move it to the vertical center // Then remove half the picture height to move it to the vertical center
FloatYOffset = FloatYOffset - PictureHeight / 2.0; FloatYOffset = FloatYOffset - PictureHeight / 2.0f;
// -------------------- // --------------------
} }

View File

@ -79,6 +79,7 @@ extern int frameCount;
class Renderer class Renderer
{ {
private:
static void FlushZBufferAlphaToTarget(); static void FlushZBufferAlphaToTarget();
public: public:

View File

@ -133,7 +133,6 @@ void LoadRecordedMovements()
//Console::Print("Recording%i ", i + 1); //Console::Print("Recording%i ", i + 1);
// Temporary storage // Temporary storage
bool bTmp;
int iTmp; int iTmp;
std::string STmp; std::string STmp;