Files
Aerofoil/PortabilityLayer/ResolveCachingColor.cpp
2020-05-21 03:30:11 -04:00

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;
}
}