diff options
Diffstat (limited to 'src/osd/interface')
-rw-r--r-- | src/osd/interface/audio.h | 54 | ||||
-rw-r--r-- | src/osd/interface/inputcode.h | 16 | ||||
-rw-r--r-- | src/osd/interface/midiport.h | 50 | ||||
-rw-r--r-- | src/osd/interface/nethandler.cpp | 23 | ||||
-rw-r--r-- | src/osd/interface/nethandler.h | 70 | ||||
-rw-r--r-- | src/osd/interface/uievents.h | 61 |
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 |