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

@ -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;
// Max 32-bit values are supported
int Length = _Text.length();
size_t Length = _Text.length();
if (Length > 4)
Length = 4;

View File

@ -36,17 +36,15 @@ u32 timeGetTime()
}
#endif
namespace Common
{
//////////////////////////////////////////////////////////////////////////////////////////
// Initiate, Start, Stop, and Update the time
// ---------------
// Set initial values for the class
Timer::Timer(void)
Timer::Timer()
: m_LastTime(0), m_StartTime(0), m_Running(false)
{
Update();
@ -72,7 +70,7 @@ void Timer::Stop()
}
// Update the last time variable
void Timer::Update(void)
void Timer::Update()
{
m_LastTime = timeGetTime();
//TODO(ector) - QPF
@ -86,7 +84,7 @@ void Timer::Update(void)
// ---------------
// Get the number of milliseconds since the last Update()
s64 Timer::GetTimeDifference(void)
s64 Timer::GetTimeDifference()
{
return(timeGetTime() - m_LastTime);
}
@ -104,7 +102,7 @@ void Timer::WindBackStartingTime(u64 WindBack)
}
// 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
calculation in CoreRerecording.cpp */
@ -117,20 +115,20 @@ u64 Timer::GetTimeElapsed(void)
}
// 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 (m_StartTime == 0)
return "00:00:00:000";
// The number of milliseconds since the start, use a different value if the timer is stopped
u32 Milliseconds;
u64 Milliseconds;
if (m_Running)
Milliseconds = timeGetTime() - m_StartTime;
else
Milliseconds = m_LastTime - m_StartTime;
// Seconds
u32 Seconds = Milliseconds / 1000;
u32 Seconds = (u32)(Milliseconds / 1000);
// Minutes
u32 Minutes = Seconds / 60;
// Hours
@ -172,14 +170,14 @@ void _time64(u64* t)
// Get the number of seconds since January 1 1970
u64 Timer::GetTimeSinceJan1970(void)
u64 Timer::GetTimeSinceJan1970()
{
time_t ltime;
time(&ltime);
return((u64)ltime);
}
u64 Timer::GetLocalTimeSinceJan1970(void)
u64 Timer::GetLocalTimeSinceJan1970()
{
time_t sysTime, tzDiff;
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
std::string Timer::GetTimeFormatted(void)
std::string Timer::GetTimeFormatted()
{
struct timeb tp;
(void)::ftime(&tp);

View File

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