summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/bgfx')
-rw-r--r--src/osd/modules/render/bgfx/slider.cpp20
-rw-r--r--src/osd/modules/render/bgfx/slider.h13
-rw-r--r--src/osd/modules/render/bgfx/sliderreader.cpp43
-rw-r--r--src/osd/modules/render/bgfx/sliderreader.h2
-rw-r--r--src/osd/modules/render/bgfx/statereader.cpp9
-rw-r--r--src/osd/modules/render/bgfx/statereader.h1
6 files changed, 44 insertions, 44 deletions
diff --git a/src/osd/modules/render/bgfx/slider.cpp b/src/osd/modules/render/bgfx/slider.cpp
index 94e9c26ee0c..a4424c8600f 100644
--- a/src/osd/modules/render/bgfx/slider.cpp
+++ b/src/osd/modules/render/bgfx/slider.cpp
@@ -11,24 +11,18 @@
#include "slider.h"
#include "ui/ui.h"
-bgfx_slider::bgfx_slider(running_machine &machine, std::string name, int32_t min, int32_t def, int32_t max, int32_t step, slider_type type, screen_type screen, float scale, std::string format, std::string description, std::vector<std::string>& strings)
+bgfx_slider::bgfx_slider(running_machine &machine, std::string name, float min, float def, float max, float step, slider_type type, screen_type screen, std::string format, std::string description, std::vector<std::string>& strings)
: m_name(name)
, m_step(step)
, m_type(type)
, m_screen_type(screen)
- , m_scale(scale)
, m_format(format)
, m_description(description)
{
m_min = min;
m_default = def;
m_max = max;
-
m_value = def;
- if (m_type != slider_type::SLIDER_INT && m_type != slider_type::SLIDER_INT_ENUM)
- {
- m_value = float(def) * scale;
- }
for (std::string string : strings)
{
@@ -56,10 +50,10 @@ slider_state* bgfx_slider::create_core_slider(running_machine& machine)
int size = sizeof(slider_state) + m_description.length();
slider_state *state = reinterpret_cast<slider_state *>(auto_alloc_array_clear(machine, UINT8, size));
- state->minval = m_min;
- state->defval = m_default;
- state->maxval = m_max;
- state->incval = m_step;
+ state->minval = int32_t(floor(m_min / m_step + 0.5f));
+ state->defval = int32_t(floor(m_default / m_step + 0.5f));
+ state->maxval = int32_t(floor(m_max / m_step + 0.5f));
+ state->incval = int32_t(floor(m_step / m_step + 0.5f));
state->update = update_trampoline;
state->arg = this;
state->id = 0;
@@ -103,13 +97,13 @@ int32_t bgfx_slider::update(std::string *str, int32_t newval)
float *val_ptr = reinterpret_cast<float *>(&m_value);
if (newval != SLIDER_NOCHANGE)
{
- *val_ptr = float(newval) * m_scale;
+ *val_ptr = float(newval) * m_step;
}
if (str != nullptr)
{
*str = string_format(m_format, *val_ptr);
}
- return int32_t(floor(*val_ptr / m_scale + 0.5f));
+ return int32_t(floor(*val_ptr / m_step + 0.5f));
}
}
return 0;
diff --git a/src/osd/modules/render/bgfx/slider.h b/src/osd/modules/render/bgfx/slider.h
index eb352af9c73..8ab9129c434 100644
--- a/src/osd/modules/render/bgfx/slider.h
+++ b/src/osd/modules/render/bgfx/slider.h
@@ -43,7 +43,7 @@ public:
SLIDER_SCREEN_TYPE_ANY = SLIDER_SCREEN_TYPE_RASTER | SLIDER_SCREEN_TYPE_VECTOR | SLIDER_SCREEN_TYPE_LCD
};
- bgfx_slider(running_machine& machine, std::string name, int32_t min, int32_t def, int32_t max, int32_t step, slider_type type, screen_type screen, float scale, std::string format, std::string description, std::vector<std::string>& strings);
+ bgfx_slider(running_machine& machine, std::string name, float min, float def, float max, float step, slider_type type, screen_type screen, std::string format, std::string description, std::vector<std::string>& strings);
~bgfx_slider();
int32_t update(std::string *str, int32_t newval);
@@ -60,16 +60,15 @@ public:
protected:
slider_state* create_core_slider(running_machine &machine);
- int32_t as_int() const { return int32_t(floor(m_value + 0.5f)); }
+ int32_t as_int() const { return int32_t(floor(m_value / m_step + 0.5f)); }
std::string m_name;
- int32_t m_min;
- int32_t m_default;
- int32_t m_max;
- int32_t m_step;
+ float m_min;
+ float m_default;
+ float m_max;
+ float m_step;
slider_type m_type;
screen_type m_screen_type;
- float m_scale;
std::string m_format;
std::string m_description;
std::vector<std::string> m_strings;
diff --git a/src/osd/modules/render/bgfx/sliderreader.cpp b/src/osd/modules/render/bgfx/sliderreader.cpp
index 66d99df8f6d..b2b2f9b7f7a 100644
--- a/src/osd/modules/render/bgfx/sliderreader.cpp
+++ b/src/osd/modules/render/bgfx/sliderreader.cpp
@@ -43,10 +43,9 @@ std::vector<bgfx_slider*> slider_reader::read_from_value(const Value& value, std
}
std::string name = value["name"].GetString();
- int step = value["step"].GetInt();
+ float step = value["step"].GetFloat();
bgfx_slider::slider_type type = bgfx_slider::slider_type(get_enum_from_value(value, "type", uint64_t(bgfx_slider::slider_type::SLIDER_FLOAT), TYPE_NAMES, TYPE_COUNT));
bgfx_slider::screen_type screen_type = bgfx_slider::screen_type(get_enum_from_value(value, "screen", uint64_t(bgfx_slider::screen_type::SLIDER_SCREEN_TYPE_ANY), SCREEN_NAMES, SCREEN_COUNT));
- float scale = value["scale"].GetFloat();
std::string format = value["format"].GetString();
std::string description = value["text"].GetString();
@@ -86,9 +85,9 @@ std::vector<bgfx_slider*> slider_reader::read_from_value(const Value& value, std
std::string prefixed_desc = "Window " + std::to_string(window_index) + ", Screen " + std::to_string(screen_index) + ", " + description;
if (slider_count > 1)
{
- int min[3];
- int defaults[3];
- int max[3];
+ float min[3];
+ float defaults[3];
+ float max[3];
if (!READER_CHECK(value["min"].IsArray(), (prefix + "Slider '" + name + "': value 'min' must be an array\n").c_str())) return sliders;
if (!READER_CHECK(value["default"].IsArray(), (prefix + "Slider '" + name + "': value 'default' must be an array\n").c_str())) return sliders;
if (!READER_CHECK(value["max"].IsArray(), (prefix + "Slider '" + name + "': value 'max' must be an array\n").c_str())) return sliders;
@@ -114,27 +113,27 @@ std::vector<bgfx_slider*> slider_reader::read_from_value(const Value& value, std
desc = prefixed_desc + "Invalid";
break;
}
- sliders.push_back(new bgfx_slider(machine, full_name, min[index], defaults[index], max[index], step, type, screen_type, scale, format, desc, strings));
+ sliders.push_back(new bgfx_slider(machine, full_name, min[index], defaults[index], max[index], step, type, screen_type, format, desc, strings));
}
}
else
{
- int min = get_int(value, "min", 0);
- int def = get_int(value, "default", 0);
- int max = get_int(value, "max", 100);
- sliders.push_back(new bgfx_slider(machine, name + "0", min, def, max, step, type, screen_type, scale, format, prefixed_desc, strings));
+ float min = get_float(value, "min", 0.0f);
+ float def = get_float(value, "default", 0.0f);
+ float max = get_float(value, "max", 1.0f);
+ sliders.push_back(new bgfx_slider(machine, name + "0", min, def, max, step, type, screen_type, format, prefixed_desc, strings));
}
return sliders;
}
-bool slider_reader::get_values(const Value& value, std::string prefix, std::string name, int* values, const int count)
+bool slider_reader::get_values(const Value& value, std::string prefix, std::string name, float* values, const int count)
{
const char* name_str = name.c_str();
const Value& value_array = value[name_str];
for (UINT32 i = 0; i < value_array.Size() && i < count; i++)
{
- if (!READER_CHECK(value_array[i].IsInt(), (prefix + "Entry " + std::to_string(i) + " must be an integer\n").c_str())) return false;
- values[i] = value_array[i].GetInt();
+ if (!READER_CHECK(value_array[i].IsNumber(), (prefix + "Entry " + std::to_string(i) + " must be a number point\n").c_str())) return false;
+ values[i] = value_array[i].GetFloat();
}
return true;
}
@@ -143,20 +142,18 @@ bool slider_reader::validate_parameters(const Value& value, std::string prefix)
{
if (!READER_CHECK(value.HasMember("name"), (prefix + "Must have string value 'name'\n").c_str())) return false;
if (!READER_CHECK(value["name"].IsString(), (prefix + "Value 'name' must be a string\n").c_str())) return false;
- if (!READER_CHECK(value.HasMember("min"), (prefix + "Must have integer or array value 'min'\n").c_str())) return false;
- if (!READER_CHECK(value["min"].IsInt() || value["min"].IsArray(), (prefix + "Value 'min' must be an integer or an array the size of the corresponding slider type\n").c_str())) return false;
- if (!READER_CHECK(value.HasMember("default"), (prefix + "Must have integer or array value 'default'\n").c_str())) return false;
- if (!READER_CHECK(value["default"].IsInt() || value["default"].IsArray(), (prefix + "Value 'default' must be an integer or an array the size of the corresponding slider type\n").c_str())) return false;
- if (!READER_CHECK(value.HasMember("max"), (prefix + "Must have integer or array value 'max'\n").c_str())) return false;
- if (!READER_CHECK(value["max"].IsInt() || value["max"].IsArray(), (prefix + "Value 'max' must be an integer or an array the size of the corresponding slider type\n").c_str())) return false;
- if (!READER_CHECK(value.HasMember("step"), (prefix + "Must have integer value 'step'\n").c_str())) return false;
- if (!READER_CHECK(value["step"].IsInt(), (prefix + "Value 'step' must be an integer (how much does this slider increment by internally?)\n").c_str())) return false;
+ if (!READER_CHECK(value.HasMember("min"), (prefix + "Must have a number or array value 'min'\n").c_str())) return false;
+ if (!READER_CHECK(value["min"].IsNumber() || value["min"].IsArray(), (prefix + "Value 'min' must be a number or an array the size of the corresponding slider type\n").c_str())) return false;
+ if (!READER_CHECK(value.HasMember("default"), (prefix + "Must have a number point or array value 'default'\n").c_str())) return false;
+ if (!READER_CHECK(value["default"].IsNumber() || value["default"].IsArray(), (prefix + "Value 'default' must be a number point or an array the size of the corresponding slider type\n").c_str())) return false;
+ if (!READER_CHECK(value.HasMember("max"), (prefix + "Must have a number point or array value 'max'\n").c_str())) return false;
+ if (!READER_CHECK(value["max"].IsNumber() || value["max"].IsArray(), (prefix + "Value 'max' must be a number or an array the size of the corresponding slider type\n").c_str())) return false;
+ if (!READER_CHECK(value.HasMember("step"), (prefix + "Must have a number point value 'step'\n").c_str())) return false;
+ if (!READER_CHECK(value["step"].IsNumber(), (prefix + "Value 'step' must be a number (how much does this slider increment by internally?)\n").c_str())) return false;
if (!READER_CHECK(value.HasMember("type"), (prefix + "Must have string value 'type'\n").c_str())) return false;
if (!READER_CHECK(value["type"].IsString(), (prefix + "Value 'type' must be a string (what type of slider is this? [int_enum, int, float])\n").c_str())) return false;
if (!READER_CHECK(value.HasMember("screen"), (prefix + "Must have string value 'screen'\n").c_str())) return false;
if (!READER_CHECK(value["screen"].IsString(), (prefix + "Value 'screen' must be a string (what type of output device does this slider apply to? [none, raster, vector, crt, lcd, non_vector, any])\n").c_str())) return false;
- if (!READER_CHECK(value.HasMember("scale"), (prefix + "Must have numeric value 'scale'\n").c_str())) return false;
- if (!READER_CHECK(value["scale"].IsNumber(), (prefix + "Value 'scale' must be a number (what do we multiply with to get 1.0?)").c_str())) return false;
if (!READER_CHECK(value.HasMember("format"), (prefix + "Must have string value 'format'\n").c_str())) return false;
if (!READER_CHECK(value["format"].IsString(), (prefix + "Value 'scale' must be a string (how would we display it in a printf?)").c_str())) return false;
if (!READER_CHECK(value.HasMember("text"), (prefix + "Must have string value 'text'\n").c_str())) return false;
diff --git a/src/osd/modules/render/bgfx/sliderreader.h b/src/osd/modules/render/bgfx/sliderreader.h
index 1562a49a1bb..d46d787f287 100644
--- a/src/osd/modules/render/bgfx/sliderreader.h
+++ b/src/osd/modules/render/bgfx/sliderreader.h
@@ -24,7 +24,7 @@ public:
static std::vector<bgfx_slider*> read_from_value(const Value& value, std::string prefix, running_machine& machine, uint32_t window_index, uint32_t screen_index);
private:
- static bool get_values(const Value& value, std::string prefix, std::string name, int* values, const int count);
+ static bool get_values(const Value& value, std::string prefix, std::string name, float* values, const int count);
static bool validate_parameters(const Value& value, std::string prefix);
static const int TYPE_COUNT = 5;
diff --git a/src/osd/modules/render/bgfx/statereader.cpp b/src/osd/modules/render/bgfx/statereader.cpp
index 91f3bd539bd..0f43ad71b09 100644
--- a/src/osd/modules/render/bgfx/statereader.cpp
+++ b/src/osd/modules/render/bgfx/statereader.cpp
@@ -97,6 +97,15 @@ int state_reader::get_int(const Value& value, const std::string name, const int
return default_value;
}
+float state_reader::get_float(const Value& value, const std::string name, const float default_value)
+{
+ if (value.HasMember(name.c_str()))
+ {
+ return (float)value[name.c_str()].GetDouble();
+ }
+ return default_value;
+}
+
void state_reader::get_float(const Value& value, const std::string name, float* out, float* default_value, int count)
{
if (value.HasMember(name.c_str()))
diff --git a/src/osd/modules/render/bgfx/statereader.h b/src/osd/modules/render/bgfx/statereader.h
index 9542116624a..6245a2cd3c8 100644
--- a/src/osd/modules/render/bgfx/statereader.h
+++ b/src/osd/modules/render/bgfx/statereader.h
@@ -36,6 +36,7 @@ protected:
static void validate_boolean_parameter(const Value& value, std::string type_name, std::string name);
static bool get_bool(const Value& value, const std::string name, const bool default_value);
+ static float get_float(const Value& value, const std::string name, float default_value);
static void get_float(const Value& value, const std::string name, float* out, float* default_value, const int count = 1);
static int get_int(const Value& value, const std::string name, int default_value);
static std::string get_string(const Value& value, const std::string name, const std::string default_value);