rendlay: add optional alpha attribute to digit elements
This commit is contained in:
parent
45b02a490f
commit
d196d072ff
@ -517,36 +517,24 @@ text
|
|||||||
be an integer, where 0 (zero) means centred, 1 (one) means left-aligned, and
|
be an integer, where 0 (zero) means centred, 1 (one) means left-aligned, and
|
||||||
2 (two) means right-aligned. If the ``align`` attribute is absent, the text
|
2 (two) means right-aligned. If the ``align`` attribute is absent, the text
|
||||||
will be centred.
|
will be centred.
|
||||||
dotmatrix
|
|
||||||
Draws an eight-pixel horizontal segment of a dot matrix display, using
|
|
||||||
circular pixels in the specified colour. The bits of the element’s state
|
|
||||||
determine which pixels are lit, with the least significant bit corresponding
|
|
||||||
to the leftmost pixel. Unlit pixels are drawn at low intensity (0x20/0xff).
|
|
||||||
dotmatrix5dot
|
|
||||||
Draws a five-pixel horizontal segment of a dot matrix display, using
|
|
||||||
circular pixels in the specified colour. The bits of the element’s state
|
|
||||||
determine which pixels are lit, with the least significant bit corresponding
|
|
||||||
to the leftmost pixel. Unlit pixels are drawn at low intensity (0x20/0xff).
|
|
||||||
dotmatrixdot
|
|
||||||
Draws a single element of a dot matrix display as a circular pixels in the
|
|
||||||
specified colour. The least significant bit of the element’s state
|
|
||||||
determines whether the pixel is lit. An unlit pixel is drawn at low
|
|
||||||
intensity (0x20/0xff).
|
|
||||||
led7seg
|
led7seg
|
||||||
Draws a standard seven-segment (plus decimal point) digital LED/fluorescent
|
Draws a standard seven-segment (plus decimal point) digital LED/fluorescent
|
||||||
display in the specified colour. The low eight bits of the element’s state
|
display in the specified colour. The low eight bits of the element’s state
|
||||||
control which segments are lit. Starting from the least significant bit,
|
control which segments are lit. Starting from the least significant bit,
|
||||||
the bits correspond to the top segment, the upper right-hand segment,
|
the bits correspond to the top segment, the upper right-hand segment,
|
||||||
continuing clockwise to the upper left segment, the middle bar, and the
|
continuing clockwise to the upper left segment, the middle bar, and the
|
||||||
decimal point. Unlit segments are drawn at low intensity (0x20/0xff).
|
decimal point. An optional ``alpha`` attribute determines the opacity for
|
||||||
|
unlit segments. It ranges from 0.0 to 1.0 as with ``color``, and when
|
||||||
|
omitted, it defaults to 0.125.
|
||||||
led8seg_gts1
|
led8seg_gts1
|
||||||
Draws an eight-segment digital fluorescent display of the type used in
|
Draws an eight-segment digital fluorescent display of the type used in
|
||||||
Gottlieb System 1 pinball machines (actually a Futaba part). Compared to
|
Gottlieb System 1 pinball machines (actually a Futaba part). Compared to
|
||||||
standard seven-segment displays, these displays have no decimal point, the
|
standard seven-segment displays, these displays have no decimal point, the
|
||||||
horizontal middle bar is broken in the centre, and there is a broken
|
horizontal middle bar is broken in the centre, and there is a broken
|
||||||
vertical middle bar controlled by the bit that would control the decimal
|
vertical middle bar controlled by the bit that would control the decimal
|
||||||
point in a standard seven-segment display. Unlit segments are drawn at low
|
point in a standard seven-segment display. An optional ``alpha`` attribute
|
||||||
intensity (0x20/0xff).
|
determines the opacity for unlit segments. It ranges from 0.0 to 1.0 as
|
||||||
|
with ``color``, and when omitted, it defaults to 0.125.
|
||||||
led14seg
|
led14seg
|
||||||
Draws a standard fourteen-segment alphanumeric LED/fluorescent display in
|
Draws a standard fourteen-segment alphanumeric LED/fluorescent display in
|
||||||
the specified colour. The low fourteen bits of the element’s state control
|
the specified colour. The low fourteen bits of the element’s state control
|
||||||
@ -554,15 +542,18 @@ led14seg
|
|||||||
correspond to the top segment, the upper right-hand segment, continuing
|
correspond to the top segment, the upper right-hand segment, continuing
|
||||||
clockwise to the upper left segment, the left-hand and right-hand halves of
|
clockwise to the upper left segment, the left-hand and right-hand halves of
|
||||||
the horizontal middle bar, the upper and lower halves of the vertical middle
|
the horizontal middle bar, the upper and lower halves of the vertical middle
|
||||||
bar, and the diagonal bars clockwise from lower left to lower right. Unlit
|
bar, and the diagonal bars clockwise from lower left to lower right. An
|
||||||
segments are drawn at low intensity (0x20/0xff).
|
optional ``alpha`` attribute determines the opacity for unlit segments. It
|
||||||
|
ranges from 0.0 to 1.0 as with ``color``, and when omitted, it defaults to
|
||||||
|
0.125.
|
||||||
led14segsc
|
led14segsc
|
||||||
Draws a standard fourteen-segment alphanumeric LED/fluorescent display with
|
Draws a standard fourteen-segment alphanumeric LED/fluorescent display with
|
||||||
decimal point/comma in the specified colour. The low sixteen bits of the
|
decimal point/comma in the specified colour. The low sixteen bits of the
|
||||||
element’s state control which segments are lit. The low fourteen bits
|
element’s state control which segments are lit. The low fourteen bits
|
||||||
correspond to the same segments as in the ``led14seg`` component. Two
|
correspond to the same segments as in the ``led14seg`` component. Two
|
||||||
additional bits correspond to the decimal point and comma tail. Unlit
|
additional bits correspond to the decimal point and comma tail. An optional
|
||||||
segments are drawn at low intensity (0x20/0xff).
|
``alpha`` attribute determines the opacity for unlit segments. It ranges
|
||||||
|
from 0.0 to 1.0 as with ``color``, and when omitted, it defaults to 0.125.
|
||||||
led16seg
|
led16seg
|
||||||
Draws a standard sixteen-segment alphanumeric LED/fluorescent display in the
|
Draws a standard sixteen-segment alphanumeric LED/fluorescent display in the
|
||||||
specified colour. The low sixteen bits of the element’s state control which
|
specified colour. The low sixteen bits of the element’s state control which
|
||||||
@ -571,14 +562,17 @@ led16seg
|
|||||||
top bar, continuing clockwise to the upper left segment, the left-hand and
|
top bar, continuing clockwise to the upper left segment, the left-hand and
|
||||||
right-hand halves of the horizontal middle bar, the upper and lower halves
|
right-hand halves of the horizontal middle bar, the upper and lower halves
|
||||||
of the vertical middle bar, and the diagonal bars clockwise from lower left
|
of the vertical middle bar, and the diagonal bars clockwise from lower left
|
||||||
to lower right. Unlit segments are drawn at low intensity (0x20/0xff).
|
to lower right. An optional ``alpha`` attribute determines the opacity for
|
||||||
|
unlit segments. It ranges from 0.0 to 1.0 as with ``color``, and when
|
||||||
|
omitted, it defaults to 0.125.
|
||||||
led16segsc
|
led16segsc
|
||||||
Draws a standard sixteen-segment alphanumeric LED/fluorescent display with
|
Draws a standard sixteen-segment alphanumeric LED/fluorescent display with
|
||||||
decimal point/comma in the specified colour. The low eighteen bits of the
|
decimal point/comma in the specified colour. The low eighteen bits of the
|
||||||
element’s state control which segments are lit. The low sixteen bits
|
element’s state control which segments are lit. The low sixteen bits
|
||||||
correspond to the same segments as in the ``led16seg`` component. Two
|
correspond to the same segments as in the ``led16seg`` component. Two
|
||||||
additional bits correspond to the decimal point and comma tail. Unlit
|
additional bits correspond to the decimal point and comma tail. An optional
|
||||||
segments are drawn at low intensity (0x20/0xff).
|
``alpha`` attribute determines the opacity for unlit segments. It ranges
|
||||||
|
from 0.0 to 1.0 as with ``color``, and when omitted, it defaults to 0.125.
|
||||||
simplecounter
|
simplecounter
|
||||||
Displays the numeric value of the element’s state using the system font in
|
Displays the numeric value of the element’s state using the system font in
|
||||||
the specified colour. The value is formatted in decimal notation. A
|
the specified colour. The value is formatted in decimal notation. A
|
||||||
|
@ -2465,6 +2465,7 @@ public:
|
|||||||
// construction/destruction
|
// construction/destruction
|
||||||
led7seg_component(environment &env, util::xml::data_node const &compnode)
|
led7seg_component(environment &env, util::xml::data_node const &compnode)
|
||||||
: component(env, compnode)
|
: component(env, compnode)
|
||||||
|
, m_alpha(std::clamp(env.get_attribute_float(compnode, "alpha", 0.125F), 0.0F, 1.0F))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2475,7 +2476,7 @@ protected:
|
|||||||
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
||||||
{
|
{
|
||||||
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
||||||
rgb_t const offpen = rgb_t(0x20, 0xff, 0xff, 0xff);
|
rgb_t const offpen = rgb_t(m_alpha * 0xff, 0xff, 0xff, 0xff);
|
||||||
|
|
||||||
// sizes for computation
|
// sizes for computation
|
||||||
int const bmwidth = 250;
|
int const bmwidth = 250;
|
||||||
@ -2517,6 +2518,10 @@ protected:
|
|||||||
// resample to the target size
|
// resample to the target size
|
||||||
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// internal state
|
||||||
|
float m_alpha; // opacity for off-segments
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -2527,6 +2532,7 @@ public:
|
|||||||
// construction/destruction
|
// construction/destruction
|
||||||
led8seg_gts1_component(environment &env, util::xml::data_node const &compnode)
|
led8seg_gts1_component(environment &env, util::xml::data_node const &compnode)
|
||||||
: component(env, compnode)
|
: component(env, compnode)
|
||||||
|
, m_alpha(std::clamp(env.get_attribute_float(compnode, "alpha", 0.125F), 0.0F, 1.0F))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2537,7 +2543,7 @@ protected:
|
|||||||
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
||||||
{
|
{
|
||||||
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
||||||
rgb_t const offpen = rgb_t(0x20, 0xff, 0xff, 0xff);
|
rgb_t const offpen = rgb_t(m_alpha * 0xff, 0xff, 0xff, 0xff);
|
||||||
rgb_t const backpen = rgb_t(0x00, 0x00, 0x00, 0x00);
|
rgb_t const backpen = rgb_t(0x00, 0x00, 0x00, 0x00);
|
||||||
|
|
||||||
// sizes for computation
|
// sizes for computation
|
||||||
@ -2585,6 +2591,10 @@ protected:
|
|||||||
// resample to the target size
|
// resample to the target size
|
||||||
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// internal state
|
||||||
|
float m_alpha; // opacity for off-segments
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -2595,6 +2605,7 @@ public:
|
|||||||
// construction/destruction
|
// construction/destruction
|
||||||
led14seg_component(environment &env, util::xml::data_node const &compnode)
|
led14seg_component(environment &env, util::xml::data_node const &compnode)
|
||||||
: component(env, compnode)
|
: component(env, compnode)
|
||||||
|
, m_alpha(std::clamp(env.get_attribute_float(compnode, "alpha", 0.125F), 0.0F, 1.0F))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2605,7 +2616,7 @@ protected:
|
|||||||
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
||||||
{
|
{
|
||||||
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
||||||
rgb_t const offpen = rgb_t(0x20, 0xff, 0xff, 0xff);
|
rgb_t const offpen = rgb_t(m_alpha * 0xff, 0xff, 0xff, 0xff);
|
||||||
|
|
||||||
// sizes for computation
|
// sizes for computation
|
||||||
int const bmwidth = 250;
|
int const bmwidth = 250;
|
||||||
@ -2697,6 +2708,10 @@ protected:
|
|||||||
// resample to the target size
|
// resample to the target size
|
||||||
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// internal state
|
||||||
|
float m_alpha; // opacity for off-segments
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -2707,6 +2722,7 @@ public:
|
|||||||
// construction/destruction
|
// construction/destruction
|
||||||
led16seg_component(environment &env, util::xml::data_node const &compnode)
|
led16seg_component(environment &env, util::xml::data_node const &compnode)
|
||||||
: component(env, compnode)
|
: component(env, compnode)
|
||||||
|
, m_alpha(std::clamp(env.get_attribute_float(compnode, "alpha", 0.125F), 0.0F, 1.0F))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2716,14 +2732,14 @@ protected:
|
|||||||
|
|
||||||
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
||||||
{
|
{
|
||||||
const rgb_t onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
||||||
const rgb_t offpen = rgb_t(0x20, 0xff, 0xff, 0xff);
|
rgb_t const offpen = rgb_t(m_alpha * 0xff, 0xff, 0xff, 0xff);
|
||||||
|
|
||||||
// sizes for computation
|
// sizes for computation
|
||||||
int bmwidth = 250;
|
int const bmwidth = 250;
|
||||||
int bmheight = 400;
|
int const bmheight = 400;
|
||||||
int segwidth = 40;
|
int const segwidth = 40;
|
||||||
int skewwidth = 40;
|
int const skewwidth = 40;
|
||||||
|
|
||||||
// allocate a temporary bitmap for drawing
|
// allocate a temporary bitmap for drawing
|
||||||
bitmap_argb32 tempbitmap(bmwidth + skewwidth, bmheight);
|
bitmap_argb32 tempbitmap(bmwidth + skewwidth, bmheight);
|
||||||
@ -2819,6 +2835,10 @@ protected:
|
|||||||
// resample to the target size
|
// resample to the target size
|
||||||
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// internal state
|
||||||
|
float m_alpha; // opacity for off-segments
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -2829,6 +2849,7 @@ public:
|
|||||||
// construction/destruction
|
// construction/destruction
|
||||||
led14segsc_component(environment &env, util::xml::data_node const &compnode)
|
led14segsc_component(environment &env, util::xml::data_node const &compnode)
|
||||||
: component(env, compnode)
|
: component(env, compnode)
|
||||||
|
, m_alpha(std::clamp(env.get_attribute_float(compnode, "alpha", 0.125F), 0.0F, 1.0F))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2839,7 +2860,7 @@ protected:
|
|||||||
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
||||||
{
|
{
|
||||||
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
||||||
rgb_t const offpen = rgb_t(0x20, 0xff, 0xff, 0xff);
|
rgb_t const offpen = rgb_t(m_alpha * 0xff, 0xff, 0xff, 0xff);
|
||||||
|
|
||||||
// sizes for computation
|
// sizes for computation
|
||||||
int const bmwidth = 250;
|
int const bmwidth = 250;
|
||||||
@ -2942,6 +2963,10 @@ protected:
|
|||||||
// resample to the target size
|
// resample to the target size
|
||||||
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// internal state
|
||||||
|
float m_alpha; // opacity for off-segments
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -2952,6 +2977,7 @@ public:
|
|||||||
// construction/destruction
|
// construction/destruction
|
||||||
led16segsc_component(environment &env, util::xml::data_node const &compnode)
|
led16segsc_component(environment &env, util::xml::data_node const &compnode)
|
||||||
: component(env, compnode)
|
: component(env, compnode)
|
||||||
|
, m_alpha(std::clamp(env.get_attribute_float(compnode, "alpha", 0.125F), 0.0F, 1.0F))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2962,7 +2988,7 @@ protected:
|
|||||||
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
virtual void draw_aligned(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) override
|
||||||
{
|
{
|
||||||
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
rgb_t const onpen = rgb_t(0xff, 0xff, 0xff, 0xff);
|
||||||
rgb_t const offpen = rgb_t(0x20, 0xff, 0xff, 0xff);
|
rgb_t const offpen = rgb_t(m_alpha * 0xff, 0xff, 0xff, 0xff);
|
||||||
|
|
||||||
// sizes for computation
|
// sizes for computation
|
||||||
int const bmwidth = 250;
|
int const bmwidth = 250;
|
||||||
@ -3074,6 +3100,10 @@ protected:
|
|||||||
// resample to the target size
|
// resample to the target size
|
||||||
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
render_resample_argb_bitmap_hq(dest, tempbitmap, color(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// internal state
|
||||||
|
float m_alpha; // opacity for off-segments
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -183,7 +183,6 @@ private:
|
|||||||
// internal helpers
|
// internal helpers
|
||||||
static void element_scale(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param);
|
static void element_scale(bitmap_argb32 &dest, bitmap_argb32 &source, const rectangle &sbounds, void *param);
|
||||||
template <typename T> static component::ptr make_component(environment &env, util::xml::data_node const &compnode);
|
template <typename T> static component::ptr make_component(environment &env, util::xml::data_node const &compnode);
|
||||||
template <int D> static component::ptr make_dotmatrix_component(environment &env, util::xml::data_node const &compnode);
|
|
||||||
|
|
||||||
static make_component_map const s_make_component; // maps component XML names to creator functions
|
static make_component_map const s_make_component; // maps component XML names to creator functions
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user