summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/interface
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/interface')
-rw-r--r--src/osd/interface/audio.h54
-rw-r--r--src/osd/interface/inputcode.h16
-rw-r--r--src/osd/interface/midiport.h50
-rw-r--r--src/osd/interface/nethandler.cpp23
-rw-r--r--src/osd/interface/nethandler.h70
-rw-r--r--src/osd/interface/uievents.h61
6 files changed, 266 insertions, 8 deletions
diff --git a/src/osd/interface/audio.h b/src/osd/interface/audio.h
new file mode 100644
index 00000000000..f40744cfff6
--- /dev/null
+++ b/src/osd/interface/audio.h
@@ -0,0 +1,54 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert
+
+#ifndef MAME_OSD_INTERFACE_AUDIO_H
+#define MAME_OSD_INTERFACE_AUDIO_H
+
+#pragma once
+
+#include <array>
+#include <cmath>
+#include <string>
+#include <vector>
+
+
+namespace osd {
+
+struct audio_rate_range {
+ uint32_t m_default_rate;
+ uint32_t m_min_rate;
+ uint32_t m_max_rate;
+};
+
+struct audio_info {
+ struct node_info {
+ std::string m_name;
+ uint32_t m_id;
+ audio_rate_range m_rate;
+ std::vector<std::string> m_port_names;
+ std::vector<std::array<double, 3> > m_port_positions;
+ uint32_t m_sinks;
+ uint32_t m_sources;
+
+ std::string name() const { return (m_sinks ? "o:" : "i:") + m_name; }
+ };
+
+ struct stream_info {
+ uint32_t m_id;
+ uint32_t m_node;
+ std::vector<float> m_volumes;
+ };
+
+ uint32_t m_generation;
+ uint32_t m_default_sink;
+ uint32_t m_default_source;
+ std::vector<node_info> m_nodes;
+ std::vector<stream_info> m_streams;
+};
+
+inline float db_to_linear(float db) { return (db <= -96.0F) ? 0.0F : std::pow(10.0F, db / 20.0F); }
+inline float linear_to_db(float linear) { return (linear <= (1.0F / 65536.0F)) ? -96.0F : (20.0F * std::log10(linear)); }
+
+} // namespace osd
+
+#endif // MAME_OSD_INTERFACE_AUDIO_H
diff --git a/src/osd/interface/inputcode.h b/src/osd/interface/inputcode.h
index 69ae1b13e33..c056e78f401 100644
--- a/src/osd/interface/inputcode.h
+++ b/src/osd/interface/inputcode.h
@@ -379,7 +379,7 @@ public:
// setters
void set_device_class(input_device_class devclass) noexcept
{
- assert(devclass >= 0 && devclass <= 0xf);
+ assert(0 == (std::underlying_type_t<input_device_class>(devclass) & ~0xf));
m_internal = (m_internal & ~(0xf << 28)) | ((devclass & 0xf) << 28);
}
void set_device_index(int devindex) noexcept
@@ -389,17 +389,17 @@ public:
}
void set_item_class(input_item_class itemclass) noexcept
{
- assert(itemclass >= 0 && itemclass <= 0xf);
+ assert(0 == (std::underlying_type_t<input_item_class>(itemclass) & ~0xf));
m_internal = (m_internal & ~(0xf << 16)) | ((itemclass & 0xf) << 16);
}
void set_item_modifier(input_item_modifier modifier) noexcept
{
- assert(modifier >= 0 && modifier <= 0xf);
+ assert(0 == (std::underlying_type_t<input_item_modifier>(modifier) & ~0xf));
m_internal = (m_internal & ~(0xf << 12)) | ((modifier & 0xf) << 12);
}
void set_item_id(input_item_id itemid) noexcept
{
- assert(itemid >= 0 && itemid <= 0xfff);
+ assert(0 == (std::underlying_type_t<input_item_id>(itemid) & ~0xfff));
m_internal = (m_internal & ~0xfff) | (itemid & 0xfff);
}
@@ -888,19 +888,19 @@ constexpr input_code JOYCODE_HAT4RIGHT_INDEXED(int n) { return input_code(DEVICE
#define JOYCODE_HAT1UP JOYCODE_HAT1UP_INDEXED(0)
#define JOYCODE_HAT1DOWN JOYCODE_HAT1DOWN_INDEXED(0)
-#define JOYCODE_HAT1LEFT JOYCODE_HAT1EFT_INDEXED(0)
+#define JOYCODE_HAT1LEFT JOYCODE_HAT1LEFT_INDEXED(0)
#define JOYCODE_HAT1RIGHT JOYCODE_HAT1RIGHT_INDEXED(0)
#define JOYCODE_HAT2UP JOYCODE_HAT2UP_INDEXED(0)
#define JOYCODE_HAT2DOWN JOYCODE_HAT2DOWN_INDEXED(0)
-#define JOYCODE_HAT2LEFT JOYCODE_HAT2EFT_INDEXED(0)
+#define JOYCODE_HAT2LEFT JOYCODE_HAT2LEFT_INDEXED(0)
#define JOYCODE_HAT2RIGHT JOYCODE_HAT2RIGHT_INDEXED(0)
#define JOYCODE_HAT3UP JOYCODE_HAT3UP_INDEXED(0)
#define JOYCODE_HAT3DOWN JOYCODE_HAT3DOWN_INDEXED(0)
-#define JOYCODE_HAT3LEFT JOYCODE_HAT3EFT_INDEXED(0)
+#define JOYCODE_HAT3LEFT JOYCODE_HAT3LEFT_INDEXED(0)
#define JOYCODE_HAT3RIGHT JOYCODE_HAT3RIGHT_INDEXED(0)
#define JOYCODE_HAT4UP JOYCODE_HAT4UP_INDEXED(0)
#define JOYCODE_HAT4DOWN JOYCODE_HAT4DOWN_INDEXED(0)
-#define JOYCODE_HAT4LEFT JOYCODE_HAT4EFT_INDEXED(0)
+#define JOYCODE_HAT4LEFT JOYCODE_HAT4LEFT_INDEXED(0)
#define JOYCODE_HAT4RIGHT JOYCODE_HAT4RIGHT_INDEXED(0)
diff --git a/src/osd/interface/midiport.h b/src/osd/interface/midiport.h
new file mode 100644
index 00000000000..47c5bbc5c52
--- /dev/null
+++ b/src/osd/interface/midiport.h
@@ -0,0 +1,50 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+/***************************************************************************
+
+ midiport.h
+
+ OSD interface to midi ports
+
+***************************************************************************/
+#ifndef MAME_OSD_INTERFACE_MIDIPORT_H
+#define MAME_OSD_INTERFACE_MIDIPORT_H
+
+#pragma once
+
+#include <cstdint>
+#include <string>
+
+
+namespace osd {
+
+class midi_input_port
+{
+public:
+ virtual ~midi_input_port() = default;
+
+ virtual bool poll() = 0;
+ virtual int read(uint8_t *pOut) = 0;
+};
+
+
+class midi_output_port
+{
+public:
+ virtual ~midi_output_port() = default;
+
+ virtual void write(uint8_t data) = 0;
+};
+
+struct midi_port_info
+{
+ std::string name;
+ bool input;
+ bool output;
+ bool default_input;
+ bool default_output;
+};
+
+} // namespace osd
+
+#endif // MAME_OSD_INTERFACE_MIDIPORT_H
diff --git a/src/osd/interface/nethandler.cpp b/src/osd/interface/nethandler.cpp
new file mode 100644
index 00000000000..f3715df9b12
--- /dev/null
+++ b/src/osd/interface/nethandler.cpp
@@ -0,0 +1,23 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+/***************************************************************************
+
+ nethandler.cpp
+
+ OSD interface to virtual networking handlers
+
+***************************************************************************/
+
+#include "nethandler.h"
+
+#include <algorithm>
+
+
+namespace osd {
+
+network_handler::network_handler() noexcept
+{
+ std::fill(std::begin(m_mac), std::end(m_mac), 0);
+}
+
+} // namespace osd
diff --git a/src/osd/interface/nethandler.h b/src/osd/interface/nethandler.h
new file mode 100644
index 00000000000..9513b158d99
--- /dev/null
+++ b/src/osd/interface/nethandler.h
@@ -0,0 +1,70 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+/***************************************************************************
+
+ nethandler.h
+
+ OSD interface to virtual networking handlers
+
+***************************************************************************/
+#ifndef MAME_OSD_INTERFACE_NETHANDLER_H
+#define MAME_OSD_INTERFACE_NETHANDLER_H
+
+#pragma once
+
+#include "osdcomm.h"
+
+#include <array>
+#include <string_view>
+
+
+namespace osd {
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+
+// base for virtual network interface handler
+
+class network_handler
+{
+public:
+ network_handler() noexcept;
+
+ virtual void recv_cb(u8 *buf, int len) = 0;
+
+ std::array<u8, 6> const &get_mac() noexcept { return m_mac; }
+
+protected:
+ ~network_handler() = default;
+
+ std::array<u8, 6> m_mac;
+};
+
+
+// interface to network device
+
+class network_device
+{
+public:
+ virtual ~network_device() = default;
+
+ virtual void start() = 0;
+ virtual void stop() = 0;
+ virtual void poll() = 0;
+ virtual int send(const void *buf, int len) = 0;
+};
+
+
+// description of an available network device
+
+struct network_device_info
+{
+ int id;
+ std::string_view description;
+};
+
+} // namespace osd
+
+#endif // MAME_OSD_INTERFACE_NETHANDLER_H
diff --git a/src/osd/interface/uievents.h b/src/osd/interface/uievents.h
new file mode 100644
index 00000000000..199d612713a
--- /dev/null
+++ b/src/osd/interface/uievents.h
@@ -0,0 +1,61 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles, Vas Crabb
+/***************************************************************************
+
+ uievents.h
+
+ OSD UI event interfaces
+
+***************************************************************************/
+#ifndef MAME_OSD_INTERFACE_UIEVENTS_H
+#define MAME_OSD_INTERFACE_UIEVENTS_H
+
+
+//**************************************************************************
+// FORWARD DECLARATIONS
+//**************************************************************************
+
+class render_target;
+
+
+namespace osd {
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// UI event handler interface
+
+class ui_event_handler
+{
+protected:
+ ~ui_event_handler() = default;
+
+public:
+ enum class pointer
+ {
+ UNKNOWN,
+ MOUSE,
+ PEN,
+ TOUCH
+ };
+
+ // window events
+ virtual void push_window_focus_event(render_target *target) = 0;
+ virtual void push_window_defocus_event(render_target *target) = 0;
+
+ // legacy mouse events
+ virtual void push_mouse_wheel_event(render_target *target, s32 x, s32 y, short delta, int lines) = 0;
+
+ // pointer events
+ virtual void push_pointer_update(render_target *target, pointer type, u16 ptrid, u16 device, s32 x, s32 y, u32 buttons, u32 pressed, u32 released, s16 clicks) = 0;
+ virtual void push_pointer_leave(render_target *target, pointer type, u16 ptrid, u16 device, s32 x, s32 y, u32 released, s16 clicks) = 0;
+ virtual void push_pointer_abort(render_target *target, pointer type, u16 ptrid, u16 device, s32 x, s32 y, u32 released, s16 clicks) = 0;
+
+ // text input events
+ virtual void push_char_event(render_target *target, char32_t ch) = 0;
+};
+
+} // namespace osd
+
+#endif // MAME_OSD_INTERFACE_UIEVENTS_H