summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util/palette.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/util/palette.h')
-rw-r--r--src/lib/util/palette.h130
1 files changed, 65 insertions, 65 deletions
diff --git a/src/lib/util/palette.h b/src/lib/util/palette.h
index a7054a93501..bfc591d7b2a 100644
--- a/src/lib/util/palette.h
+++ b/src/lib/util/palette.h
@@ -25,7 +25,7 @@
class palette_t;
// an rgb15_t is a single combined 15-bit R,G,B value
-typedef UINT16 rgb15_t;
+typedef uint16_t rgb15_t;
// ======================> rgb_t
@@ -36,33 +36,33 @@ class rgb_t
public:
// construction/destruction
rgb_t(): m_data(0) { }
- rgb_t(UINT32 data) { m_data = data; }
- rgb_t(UINT8 r, UINT8 g, UINT8 b) { m_data = (255 << 24) | (r << 16) | (g << 8) | b; }
- rgb_t(UINT8 a, UINT8 r, UINT8 g, UINT8 b) { m_data = (a << 24) | (r << 16) | (g << 8) | b; }
+ rgb_t(uint32_t data) { m_data = data; }
+ rgb_t(uint8_t r, uint8_t g, uint8_t b) { m_data = (255 << 24) | (r << 16) | (g << 8) | b; }
+ rgb_t(uint8_t a, uint8_t r, uint8_t g, uint8_t b) { m_data = (a << 24) | (r << 16) | (g << 8) | b; }
// getters
- UINT8 a() const { return m_data >> 24; }
- UINT8 r() const { return m_data >> 16; }
- UINT8 g() const { return m_data >> 8; }
- UINT8 b() const { return m_data >> 0; }
+ uint8_t a() const { return m_data >> 24; }
+ uint8_t r() const { return m_data >> 16; }
+ uint8_t g() const { return m_data >> 8; }
+ uint8_t b() const { return m_data >> 0; }
rgb15_t as_rgb15() const { return ((r() >> 3) << 10) | ((g() >> 3) << 5) | ((b() >> 3) << 0); }
- UINT8 brightness() const { return (r() * 222 + g() * 707 + b() * 71) / 1000; }
- UINT32 const *ptr() const { return &m_data; }
+ uint8_t brightness() const { return (r() * 222 + g() * 707 + b() * 71) / 1000; }
+ uint32_t const *ptr() const { return &m_data; }
// setters
- rgb_t &set_a(UINT8 a) { m_data &= ~0xff000000; m_data |= a << 24; return *this; }
- rgb_t &set_r(UINT8 r) { m_data &= ~0x00ff0000; m_data |= r << 16; return *this; }
- rgb_t &set_g(UINT8 g) { m_data &= ~0x0000ff00; m_data |= g << 8; return *this; }
- rgb_t &set_b(UINT8 b) { m_data &= ~0x000000ff; m_data |= b << 0; return *this; }
+ rgb_t &set_a(uint8_t a) { m_data &= ~0xff000000; m_data |= a << 24; return *this; }
+ rgb_t &set_r(uint8_t r) { m_data &= ~0x00ff0000; m_data |= r << 16; return *this; }
+ rgb_t &set_g(uint8_t g) { m_data &= ~0x0000ff00; m_data |= g << 8; return *this; }
+ rgb_t &set_b(uint8_t b) { m_data &= ~0x000000ff; m_data |= b << 0; return *this; }
// implicit conversion operators
- operator UINT32() const { return m_data; }
+ operator uint32_t() const { return m_data; }
// operations
- rgb_t &scale8(UINT8 scale) { m_data = rgb_t(clamphi((a() * scale) >> 8), clamphi((r() * scale) >> 8), clamphi((g() * scale) >> 8), clamphi((b() * scale) >> 8)); return *this; }
+ rgb_t &scale8(uint8_t scale) { m_data = rgb_t(clamphi((a() * scale) >> 8), clamphi((r() * scale) >> 8), clamphi((g() * scale) >> 8), clamphi((b() * scale) >> 8)); return *this; }
// assignment operators
- rgb_t &operator=(UINT32 rhs) { m_data = rhs; return *this; }
+ rgb_t &operator=(uint32_t rhs) { m_data = rhs; return *this; }
rgb_t &operator+=(const rgb_t &rhs) { m_data = rgb_t(clamphi(a() + rhs.a()), clamphi(r() + rhs.r()), clamphi(g() + rhs.g()), clamphi(b() + rhs.b())); return *this; }
rgb_t &operator-=(const rgb_t &rhs) { m_data = rgb_t(clamplo(a() - rhs.a()), clamplo(r() - rhs.r()), clamplo(g() - rhs.g()), clamplo(b() - rhs.b())); return *this; }
@@ -71,9 +71,9 @@ public:
rgb_t operator-(const rgb_t &rhs) const { rgb_t result = *this; result -= rhs; return result; }
// static helpers
- static UINT8 clamp(INT32 value) { return (value < 0) ? 0 : (value > 255) ? 255 : value; }
- static UINT8 clamphi(INT32 value) { return (value > 255) ? 255 : value; }
- static UINT8 clamplo(INT32 value) { return (value < 0) ? 0 : value; }
+ static uint8_t clamp(int32_t value) { return (value < 0) ? 0 : (value > 255) ? 255 : value; }
+ static uint8_t clamphi(int32_t value) { return (value > 255) ? 255 : value; }
+ static uint8_t clamplo(int32_t value) { return (value < 0) ? 0 : value; }
// constants
static const rgb_t black;
@@ -83,7 +83,7 @@ public:
static const rgb_t transparent;
private:
- UINT32 m_data;
+ uint32_t m_data;
};
@@ -100,10 +100,10 @@ public:
// getters
palette_client *next() const { return m_next; }
palette_t &palette() const { return m_palette; }
- const UINT32 *dirty_list(UINT32 &mindirty, UINT32 &maxdirty);
+ const uint32_t *dirty_list(uint32_t &mindirty, uint32_t &maxdirty);
// dirty marking
- void mark_dirty(UINT32 index) { m_live->mark_dirty(index); }
+ void mark_dirty(uint32_t index) { m_live->mark_dirty(index); }
private:
// internal object to track dirty states
@@ -114,16 +114,16 @@ private:
dirty_state();
// operations
- const UINT32 *dirty_list(UINT32 &mindirty, UINT32 &maxdirty);
- void resize(UINT32 colors);
- void mark_dirty(UINT32 index);
+ const uint32_t *dirty_list(uint32_t &mindirty, uint32_t &maxdirty);
+ void resize(uint32_t colors);
+ void mark_dirty(uint32_t index);
void reset();
private:
// internal state
- std::vector<UINT32> m_dirty; // bitmap of dirty entries
- UINT32 m_mindirty; // minimum dirty entry
- UINT32 m_maxdirty; // minimum dirty entry
+ std::vector<uint32_t> m_dirty; // bitmap of dirty entries
+ uint32_t m_mindirty; // minimum dirty entry
+ uint32_t m_maxdirty; // minimum dirty entry
};
// internal state
@@ -144,7 +144,7 @@ class palette_t
public:
// static constructor: used to ensure same new/delete is used
- static palette_t *alloc(UINT32 numcolors, UINT32 numgroups = 1);
+ static palette_t *alloc(uint32_t numcolors, uint32_t numgroups = 1);
// reference counting
void ref() { m_refcount++; }
@@ -154,8 +154,8 @@ public:
int num_colors() const { return m_numcolors; }
int num_groups() const { return m_numgroups; }
int max_index() const { return m_numcolors * m_numgroups + 2; }
- UINT32 black_entry() const { return m_numcolors * m_numgroups + 0; }
- UINT32 white_entry() const { return m_numcolors * m_numgroups + 1; }
+ uint32_t black_entry() const { return m_numcolors * m_numgroups + 0; }
+ uint32_t white_entry() const { return m_numcolors * m_numgroups + 1; }
// overall adjustments
void set_brightness(float brightness);
@@ -163,16 +163,16 @@ public:
void set_gamma(float gamma);
// entry getters
- rgb_t entry_color(UINT32 index) const { return (index < m_numcolors) ? m_entry_color[index] : rgb_t::black; }
- rgb_t entry_adjusted_color(UINT32 index) const { return (index < m_numcolors * m_numgroups) ? m_adjusted_color[index] : rgb_t::black; }
- float entry_contrast(UINT32 index) const { return (index < m_numcolors) ? m_entry_contrast[index] : 1.0f; }
+ rgb_t entry_color(uint32_t index) const { return (index < m_numcolors) ? m_entry_color[index] : rgb_t::black; }
+ rgb_t entry_adjusted_color(uint32_t index) const { return (index < m_numcolors * m_numgroups) ? m_adjusted_color[index] : rgb_t::black; }
+ float entry_contrast(uint32_t index) const { return (index < m_numcolors) ? m_entry_contrast[index] : 1.0f; }
// entry setters
- void entry_set_color(UINT32 index, rgb_t rgb);
- void entry_set_red_level(UINT32 index, UINT8 level);
- void entry_set_green_level(UINT32 index, UINT8 level);
- void entry_set_blue_level(UINT32 index, UINT8 level);
- void entry_set_contrast(UINT32 index, float contrast);
+ void entry_set_color(uint32_t index, rgb_t rgb);
+ void entry_set_red_level(uint32_t index, uint8_t level);
+ void entry_set_green_level(uint32_t index, uint8_t level);
+ void entry_set_blue_level(uint32_t index, uint8_t level);
+ void entry_set_contrast(uint32_t index, float contrast);
// entry list getters
const rgb_t *entry_list_raw() const { return &m_entry_color[0]; }
@@ -180,30 +180,30 @@ public:
const rgb_t *entry_list_adjusted_rgb15() const { return &m_adjusted_rgb15[0]; }
// group adjustments
- void group_set_brightness(UINT32 group, float brightness);
- void group_set_contrast(UINT32 group, float contrast);
+ void group_set_brightness(uint32_t group, float brightness);
+ void group_set_contrast(uint32_t group, float contrast);
// utilities
- void normalize_range(UINT32 start, UINT32 end, int lum_min = 0, int lum_max = 255);
+ void normalize_range(uint32_t start, uint32_t end, int lum_min = 0, int lum_max = 255);
private:
// construction/destruction
- palette_t(UINT32 numcolors, UINT32 numgroups = 1);
+ palette_t(uint32_t numcolors, uint32_t numgroups = 1);
~palette_t();
// internal helpers
- rgb_t adjust_palette_entry(rgb_t entry, float brightness, float contrast, const UINT8 *gamma_map);
- void update_adjusted_color(UINT32 group, UINT32 index);
+ rgb_t adjust_palette_entry(rgb_t entry, float brightness, float contrast, const uint8_t *gamma_map);
+ void update_adjusted_color(uint32_t group, uint32_t index);
// internal state
- UINT32 m_refcount; // reference count on the palette
- UINT32 m_numcolors; // number of colors in the palette
- UINT32 m_numgroups; // number of groups in the palette
+ uint32_t m_refcount; // reference count on the palette
+ uint32_t m_numcolors; // number of colors in the palette
+ uint32_t m_numgroups; // number of groups in the palette
float m_brightness; // overall brightness value
float m_contrast; // overall contrast value
float m_gamma; // overall gamma value
- UINT8 m_gamma_map[256]; // gamma map
+ uint8_t m_gamma_map[256]; // gamma map
std::vector<rgb_t> m_entry_color; // array of raw colors
std::vector<float> m_entry_contrast; // contrast value for each entry
@@ -227,7 +227,7 @@ private:
//-------------------------------------------------
template<int _NumBits>
-inline UINT8 palexpand(UINT8 bits)
+inline uint8_t palexpand(uint8_t bits)
{
if (_NumBits == 1) { return (bits & 1) ? 0xff : 0x00; }
if (_NumBits == 2) { bits &= 3; return (bits << 6) | (bits << 4) | (bits << 2) | bits; }
@@ -244,13 +244,13 @@ inline UINT8 palexpand(UINT8 bits)
// palxbit - convert an x-bit value to 8 bits
//-------------------------------------------------
-inline UINT8 pal1bit(UINT8 bits) { return palexpand<1>(bits); }
-inline UINT8 pal2bit(UINT8 bits) { return palexpand<2>(bits); }
-inline UINT8 pal3bit(UINT8 bits) { return palexpand<3>(bits); }
-inline UINT8 pal4bit(UINT8 bits) { return palexpand<4>(bits); }
-inline UINT8 pal5bit(UINT8 bits) { return palexpand<5>(bits); }
-inline UINT8 pal6bit(UINT8 bits) { return palexpand<6>(bits); }
-inline UINT8 pal7bit(UINT8 bits) { return palexpand<7>(bits); }
+inline uint8_t pal1bit(uint8_t bits) { return palexpand<1>(bits); }
+inline uint8_t pal2bit(uint8_t bits) { return palexpand<2>(bits); }
+inline uint8_t pal3bit(uint8_t bits) { return palexpand<3>(bits); }
+inline uint8_t pal4bit(uint8_t bits) { return palexpand<4>(bits); }
+inline uint8_t pal5bit(uint8_t bits) { return palexpand<5>(bits); }
+inline uint8_t pal6bit(uint8_t bits) { return palexpand<6>(bits); }
+inline uint8_t pal7bit(uint8_t bits) { return palexpand<7>(bits); }
//-------------------------------------------------
@@ -259,7 +259,7 @@ inline UINT8 pal7bit(UINT8 bits) { return palexpand<7>(bits); }
//-------------------------------------------------
template<int _RBits, int _GBits, int _BBits>
-inline rgb_t rgbexpand(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift)
+inline rgb_t rgbexpand(uint32_t data, uint8_t rshift, uint8_t gshift, uint8_t bshift)
{
return rgb_t(palexpand<_RBits>(data >> rshift), palexpand<_GBits>(data >> gshift), palexpand<_BBits>(data >> bshift));
}
@@ -267,14 +267,14 @@ inline rgb_t rgbexpand(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift)
//-------------------------------------------------
// palxxx - create an x-x-x color by extracting
-// bits from a UINT32
+// bits from a uint32_t
//-------------------------------------------------
-inline rgb_t pal332(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { return rgbexpand<3,3,2>(data, rshift, gshift, bshift); }
-inline rgb_t pal444(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { return rgbexpand<4,4,4>(data, rshift, gshift, bshift); }
-inline rgb_t pal555(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { return rgbexpand<5,5,5>(data, rshift, gshift, bshift); }
-inline rgb_t pal565(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { return rgbexpand<5,6,5>(data, rshift, gshift, bshift); }
-inline rgb_t pal888(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { return rgbexpand<8,8,8>(data, rshift, gshift, bshift); }
+inline rgb_t pal332(uint32_t data, uint8_t rshift, uint8_t gshift, uint8_t bshift) { return rgbexpand<3,3,2>(data, rshift, gshift, bshift); }
+inline rgb_t pal444(uint32_t data, uint8_t rshift, uint8_t gshift, uint8_t bshift) { return rgbexpand<4,4,4>(data, rshift, gshift, bshift); }
+inline rgb_t pal555(uint32_t data, uint8_t rshift, uint8_t gshift, uint8_t bshift) { return rgbexpand<5,5,5>(data, rshift, gshift, bshift); }
+inline rgb_t pal565(uint32_t data, uint8_t rshift, uint8_t gshift, uint8_t bshift) { return rgbexpand<5,6,5>(data, rshift, gshift, bshift); }
+inline rgb_t pal888(uint32_t data, uint8_t rshift, uint8_t gshift, uint8_t bshift) { return rgbexpand<8,8,8>(data, rshift, gshift, bshift); }
#endif // __PALETTE_H__