aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas--S <Thomas--S@users.noreply.github.com>2018-04-23 19:50:50 +0200
committerrubenwardy <rw@rubenwardy.com>2018-04-23 18:50:50 +0100
commit9577a4396aa139a748878a11eec8922ce92de575 (patch)
treeef2f879b20af3ef260397492dfa24ebdced5c3c7
parent12a8f8826d54362d70aae8524aa88118f2d84692 (diff)
downloadminetest-9577a4396aa139a748878a11eec8922ce92de575.tar.gz
minetest-9577a4396aa139a748878a11eec8922ce92de575.tar.bz2
minetest-9577a4396aa139a748878a11eec8922ce92de575.zip
Formspecs: Allow setting alpha value for the box[] element
-rw-r--r--doc/lua_api.txt5
-rw-r--r--src/gui/guiFormSpecMenu.cpp4
-rw-r--r--src/gui/guiFormSpecMenu.h2
-rw-r--r--src/util/string.cpp13
-rw-r--r--src/util/string.h3
5 files changed, 15 insertions, 12 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index 70eb48c12..321c2abc6 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -2283,10 +2283,11 @@ appearing when you don't expect them to. See `no_prepend[]`
* `draw_border` (optional): draw border
#### `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
* `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>]`
* Show a dropdown field
diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp
index e582c30de..12caf39eb 100644
--- a/src/gui/guiFormSpecMenu.cpp
+++ b/src/gui/guiFormSpecMenu.cpp
@@ -1560,7 +1560,7 @@ void GUIFormSpecMenu::parseBox(parserData* data, const std::string &element)
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);
m_boxes.push_back(spec);
@@ -2515,8 +2515,6 @@ void GUIFormSpecMenu::drawMenu()
for (const GUIFormSpecMenu::BoxDrawSpec &spec : m_boxes) {
irr::video::SColor todraw = spec.color;
- todraw.setAlpha(140);
-
core::rect<s32> rect(spec.pos.X,spec.pos.Y,
spec.pos.X + spec.geom.X,spec.pos.Y + spec.geom.Y);
diff --git a/src/gui/guiFormSpecMenu.h b/src/gui/guiFormSpecMenu.h
index 51d25a4f5..013ba65cb 100644
--- a/src/gui/guiFormSpecMenu.h
+++ b/src/gui/guiFormSpecMenu.h
@@ -223,7 +223,7 @@ class GUIFormSpecMenu : public GUIModalMenu
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),
geom(a_geom),
color(a_color)
diff --git a/src/util/string.cpp b/src/util/string.cpp
index 3eabcbe11..25f573420 100644
--- a/src/util/string.cpp
+++ b/src/util/string.cpp
@@ -43,7 +43,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#define BSD_ICONV_USED
#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);
#ifndef _WIN32
@@ -464,12 +465,13 @@ u64 read_seed(const char *str)
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;
if (value[0] == '#')
- success = parseHexColorString(value, color);
+ success = parseHexColorString(value, color, default_alpha);
else
success = parseNamedColorString(value, color);
@@ -479,9 +481,10 @@ bool parseColorString(const std::string &value, video::SColor &color, bool quiet
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] != '#')
return false;
diff --git a/src/util/string.h b/src/util/string.h
index 2840f1192..35b7cfa8a 100644
--- a/src/util/string.h
+++ b/src/util/string.h
@@ -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);
char *mystrtok_r(char *s, const char *sep, char **lasts);
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);
/**