forked from Mirrorlandia_minetest/minetest
Formspecs: Allow setting alpha value for the box[] element
This commit is contained in:
parent
12a8f8826d
commit
9577a4396a
@ -2283,10 +2283,11 @@ appearing when you don't expect them to. See `no_prepend[]`
|
|||||||
* `draw_border` (optional): draw border
|
* `draw_border` (optional): draw border
|
||||||
|
|
||||||
#### `box[<X>,<Y>;<W>,<H>;<color>]`
|
#### `box[<X>,<Y>;<W>,<H>;<color>]`
|
||||||
* Simple colored semitransparent box
|
* Simple colored box
|
||||||
* `x` and `y` position the box relative to the top left of the menu
|
* `x` and `y` position the box relative to the top left of the menu
|
||||||
* `w` and `h` are the size of box
|
* `w` and `h` are the size of box
|
||||||
* `color` is color specified as a `ColorString`
|
* `color` is color specified as a `ColorString`.
|
||||||
|
If the alpha component is left blank, the box will be semitransparent.
|
||||||
|
|
||||||
#### `dropdown[<X>,<Y>;<W>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>]`
|
#### `dropdown[<X>,<Y>;<W>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>]`
|
||||||
* Show a dropdown field
|
* Show a dropdown field
|
||||||
|
@ -1560,7 +1560,7 @@ void GUIFormSpecMenu::parseBox(parserData* data, const std::string &element)
|
|||||||
|
|
||||||
video::SColor tmp_color;
|
video::SColor tmp_color;
|
||||||
|
|
||||||
if (parseColorString(parts[2], tmp_color, false)) {
|
if (parseColorString(parts[2], tmp_color, false, 0x8C)) {
|
||||||
BoxDrawSpec spec(pos, geom, tmp_color);
|
BoxDrawSpec spec(pos, geom, tmp_color);
|
||||||
|
|
||||||
m_boxes.push_back(spec);
|
m_boxes.push_back(spec);
|
||||||
@ -2515,8 +2515,6 @@ void GUIFormSpecMenu::drawMenu()
|
|||||||
for (const GUIFormSpecMenu::BoxDrawSpec &spec : m_boxes) {
|
for (const GUIFormSpecMenu::BoxDrawSpec &spec : m_boxes) {
|
||||||
irr::video::SColor todraw = spec.color;
|
irr::video::SColor todraw = spec.color;
|
||||||
|
|
||||||
todraw.setAlpha(140);
|
|
||||||
|
|
||||||
core::rect<s32> rect(spec.pos.X,spec.pos.Y,
|
core::rect<s32> rect(spec.pos.X,spec.pos.Y,
|
||||||
spec.pos.X + spec.geom.X,spec.pos.Y + spec.geom.Y);
|
spec.pos.X + spec.geom.X,spec.pos.Y + spec.geom.Y);
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ class GUIFormSpecMenu : public GUIModalMenu
|
|||||||
|
|
||||||
struct BoxDrawSpec
|
struct BoxDrawSpec
|
||||||
{
|
{
|
||||||
BoxDrawSpec(v2s32 a_pos, v2s32 a_geom,irr::video::SColor a_color):
|
BoxDrawSpec(v2s32 a_pos, v2s32 a_geom, irr::video::SColor a_color):
|
||||||
pos(a_pos),
|
pos(a_pos),
|
||||||
geom(a_geom),
|
geom(a_geom),
|
||||||
color(a_color)
|
color(a_color)
|
||||||
|
@ -43,7 +43,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#define BSD_ICONV_USED
|
#define BSD_ICONV_USED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool parseHexColorString(const std::string &value, video::SColor &color);
|
static bool parseHexColorString(const std::string &value, video::SColor &color,
|
||||||
|
unsigned char default_alpha = 0xff);
|
||||||
static bool parseNamedColorString(const std::string &value, video::SColor &color);
|
static bool parseNamedColorString(const std::string &value, video::SColor &color);
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
@ -464,12 +465,13 @@ u64 read_seed(const char *str)
|
|||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool parseColorString(const std::string &value, video::SColor &color, bool quiet)
|
bool parseColorString(const std::string &value, video::SColor &color, bool quiet,
|
||||||
|
unsigned char default_alpha)
|
||||||
{
|
{
|
||||||
bool success;
|
bool success;
|
||||||
|
|
||||||
if (value[0] == '#')
|
if (value[0] == '#')
|
||||||
success = parseHexColorString(value, color);
|
success = parseHexColorString(value, color, default_alpha);
|
||||||
else
|
else
|
||||||
success = parseNamedColorString(value, color);
|
success = parseNamedColorString(value, color);
|
||||||
|
|
||||||
@ -479,9 +481,10 @@ bool parseColorString(const std::string &value, video::SColor &color, bool quiet
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool parseHexColorString(const std::string &value, video::SColor &color)
|
static bool parseHexColorString(const std::string &value, video::SColor &color,
|
||||||
|
unsigned char default_alpha)
|
||||||
{
|
{
|
||||||
unsigned char components[] = { 0x00, 0x00, 0x00, 0xff }; // R,G,B,A
|
unsigned char components[] = { 0x00, 0x00, 0x00, default_alpha }; // R,G,B,A
|
||||||
|
|
||||||
if (value[0] != '#')
|
if (value[0] != '#')
|
||||||
return false;
|
return false;
|
||||||
|
@ -85,7 +85,8 @@ std::string writeFlagString(u32 flags, const FlagDesc *flagdesc, u32 flagmask);
|
|||||||
size_t mystrlcpy(char *dst, const char *src, size_t size);
|
size_t mystrlcpy(char *dst, const char *src, size_t size);
|
||||||
char *mystrtok_r(char *s, const char *sep, char **lasts);
|
char *mystrtok_r(char *s, const char *sep, char **lasts);
|
||||||
u64 read_seed(const char *str);
|
u64 read_seed(const char *str);
|
||||||
bool parseColorString(const std::string &value, video::SColor &color, bool quiet);
|
bool parseColorString(const std::string &value, video::SColor &color, bool quiet,
|
||||||
|
unsigned char default_alpha = 0xff);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user