mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 06:53:43 +00:00
76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#include "ResolveCachingColor.h"
|
|
|
|
#include "PLCore.h"
|
|
#include "QDStandardPalette.h"
|
|
|
|
namespace PortabilityLayer
|
|
{
|
|
ResolveCachingColor::ResolveCachingColor()
|
|
: m_isResolved16(false)
|
|
, m_isResolved8(false)
|
|
, m_resolved16(0)
|
|
, m_resolved8(0)
|
|
, m_rgbaColor(RGBAColor::Create(0, 0, 0, 255))
|
|
{
|
|
}
|
|
|
|
ResolveCachingColor::ResolveCachingColor(const RGBAColor &color)
|
|
: m_isResolved16(false)
|
|
, m_isResolved8(false)
|
|
, m_resolved16(0)
|
|
, m_resolved8(0)
|
|
, m_rgbaColor(color)
|
|
{
|
|
}
|
|
|
|
ResolveCachingColor::ResolveCachingColor(const ResolveCachingColor &color)
|
|
: m_isResolved16(color.m_isResolved16)
|
|
, m_isResolved8(color.m_isResolved8)
|
|
, m_resolved16(color.m_resolved16)
|
|
, m_resolved8(color.m_resolved8)
|
|
, m_rgbaColor(color.m_rgbaColor)
|
|
{
|
|
}
|
|
|
|
uint8_t ResolveCachingColor::Resolve8(const RGBAColor *palette, unsigned int numColors)
|
|
{
|
|
if (m_isResolved8)
|
|
return m_resolved8;
|
|
|
|
if (palette)
|
|
{
|
|
PL_NotYetImplemented();
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
const uint8_t resolvedColor = StandardPalette::GetInstance()->MapColorLUT(m_rgbaColor);
|
|
|
|
m_isResolved8 = true;
|
|
m_resolved8 = resolvedColor;
|
|
|
|
return resolvedColor;
|
|
}
|
|
}
|
|
|
|
ResolveCachingColor &ResolveCachingColor::operator=(const ResolveCachingColor &other)
|
|
{
|
|
m_isResolved16 = other.m_isResolved16;
|
|
m_isResolved8 = other.m_isResolved8;
|
|
m_resolved16 = other.m_resolved16;
|
|
m_resolved8 = other.m_resolved8;
|
|
m_rgbaColor = other.m_rgbaColor;
|
|
|
|
return *this;
|
|
}
|
|
|
|
ResolveCachingColor ResolveCachingColor::FromStandardColor(uint8_t standardColor)
|
|
{
|
|
ResolveCachingColor result(StandardPalette::GetInstance()->GetColors()[standardColor]);
|
|
result.m_isResolved8 = true;
|
|
result.m_resolved8 = standardColor;
|
|
|
|
return result;
|
|
}
|
|
}
|