9 : m_image(Overlay->w, Overlay->h, QImage::Format_Indexed8),
17 : m_image(Overlay->w, Overlay->h, QImage::Format_ARGB32),
28 QVector<QRgb> rgbpalette;
29 rgbpalette.reserve(256);
30 for (
int i = 0; i < 256; i++)
33 int cr = Palette[i].Cr;
34 int cb = Palette[i].Cb;
36 int r =
std::clamp(
int(y + (1.4022 * (cr - 128))), 0, 0xff);
37 int b =
std::clamp(
int(y + (1.7710 * (cb - 128))), 0, 0xff);
39 int g =
std::clamp(
int((1.7047 * y) - (0.1952 * b) - (0.5647 * r)), 0, 0xff);
40 rgbpalette.push_back(
static_cast<uint>((a << 24) | (r << 16) | (g << 8) | b));
42 m_image.setColorTable(rgbpalette);
52 if (
m_image.format() == QImage::Format_Indexed8)
55 int32_t offset = (Top *
m_image.bytesPerLine()) + Left;
56 for (
int i = 0; i < Height; i++ )
58 memset(&data[offset], 0xff,
static_cast<size_t>(Width));
59 offset +=
m_image.bytesPerLine();
64 QColor transparent(0, 0, 0, 255);
66 painter.setCompositionMode(QPainter::CompositionMode_Source);
67 painter.fillRect(Left, Top, Width, Height, transparent);
void SetPalette(const BD_PG_PALETTE_ENTRY *Palette)
static eu8 clamp(eu8 value, eu8 low, eu8 high)