summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/video/rgbgen.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/video/rgbgen.h')
-rw-r--r--src/emu/video/rgbgen.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/emu/video/rgbgen.h b/src/emu/video/rgbgen.h
index 197769946a8..e460208d9fd 100644
--- a/src/emu/video/rgbgen.h
+++ b/src/emu/video/rgbgen.h
@@ -37,6 +37,12 @@ public:
m_b = b;
}
void set(const rgb_t& rgba) { set(rgba.a(), rgba.r(), rgba.g(), rgba.b()); }
+ // This function sets all elements to the same val
+ void set_all(const s32& val) { set(val, val, val, val); }
+ // This function zeros all elements
+ void zero() { set_all(0); }
+ // This function zeros only the alpha element
+ void zero_alpha() { m_a = 0; }
rgb_t to_rgba() const { return rgb_t(get_a(), get_r(), get_g(), get_b()); }
@@ -49,6 +55,7 @@ public:
return rgb_t(a, r, g, b);
}
+ void set_a16(const s32 value) { m_a = value; }
void set_a(const s32 value) { m_a = value; }
void set_r(const s32 value) { m_r = value; }
void set_g(const s32 value) { m_g = value; }
@@ -64,6 +71,12 @@ public:
s32 get_g32() const { return m_g; }
s32 get_b32() const { return m_b; }
+ // These selects return an rgbaint_t with all fields set to the element choosen (a, r, g, or b)
+ rgbaint_t select_alpha32() const { return rgbaint_t(get_a32(), get_a32(), get_a32(), get_a32()); }
+ rgbaint_t select_red32() const { return rgbaint_t(get_r32(), get_r32(), get_r32(), get_r32()); }
+ rgbaint_t select_green32() const { return rgbaint_t(get_g32(), get_g32(), get_g32(), get_g32()); }
+ rgbaint_t select_blue32() const { return rgbaint_t(get_b32(), get_b32(), get_b32(), get_b32()); }
+
inline void add(const rgbaint_t& color)
{
add_imm_rgba(color.m_a, color.m_r, color.m_g, color.m_b);
@@ -304,7 +317,6 @@ public:
void scale_imm_and_clamp(const s32 scale);
void scale2_add_and_clamp(const rgbaint_t& scale, const rgbaint_t& other, const rgbaint_t& scale2);
void scale_add_and_clamp(const rgbaint_t& scale, const rgbaint_t& other);
- void scale_imm_add_and_clamp(const s32 scale, const rgbaint_t& other);
void cmpeq(const rgbaint_t& value) { cmpeq_imm_rgba(value.m_a, value.m_r, value.m_g, value.m_b); }
void cmpgt(const rgbaint_t& value) { cmpgt_imm_rgba(value.m_a, value.m_r, value.m_g, value.m_b); }
@@ -338,6 +350,11 @@ public:
m_b = (m_b < b) ? 0xffffffff : 0;
}
+ void merge_alpha16(const rgbaint_t& alpha)
+ {
+ m_a = alpha.m_a;
+ }
+
void merge_alpha(const rgbaint_t& alpha)
{
m_a = alpha.m_a;