summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/drawnone.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/drawnone.cpp')
-rw-r--r--src/osd/modules/render/drawnone.cpp88
1 files changed, 64 insertions, 24 deletions
diff --git a/src/osd/modules/render/drawnone.cpp b/src/osd/modules/render/drawnone.cpp
index e8bbfa15432..55ce1bbed18 100644
--- a/src/osd/modules/render/drawnone.cpp
+++ b/src/osd/modules/render/drawnone.cpp
@@ -6,36 +6,76 @@
//
//============================================================
-// standard windows headers
-#include <windows.h>
+#include "render_module.h"
-// MAME headers
-#include "emu.h"
+#include "modules/lib/osdobj_common.h"
+#include "modules/osdmodule.h"
+#include "modules/osdwindow.h"
-#include "drawnone.h"
+#include "main.h"
+#include "render.h"
-//============================================================
-// drawnone_window_get_primitives
-//============================================================
+#include <memory>
+
+
+namespace osd {
+
+namespace {
+
+class renderer_none : public osd_renderer
+{
+public:
+ renderer_none(osd_window &window) : osd_renderer(window) { }
+
+ virtual int create() override { return 0; }
+ virtual render_primitive_list *get_primitives() override;
+ virtual int draw(const int update) override { return 0; }
+ virtual void save() override { }
+ virtual void record() override { }
+ virtual void toggle_fsfx() override { }
+};
render_primitive_list *renderer_none::get_primitives()
{
- auto win = try_getwindow();
- if (win == nullptr)
+ osd_dim const dimensions = window().get_size();
+ if ((dimensions.width() <= 0) || (dimensions.height() <= 0))
return nullptr;
- RECT client;
-#if defined(OSD_WINDOWS)
- GetClientRect(std::static_pointer_cast<win_window_info>(win)->platform_window(), &client);
-#elif defined(OSD_UWP)
- auto bounds = std::static_pointer_cast<uwp_window_info>(win)->platform_window()->Bounds;
- client.left = bounds.Left;
- client.right = bounds.Right;
- client.top = bounds.Top;
- client.bottom = bounds.Bottom;
-#endif
- if ((rect_width(&client) == 0) || (rect_height(&client) == 0))
- return nullptr;
- win->target()->set_bounds(rect_width(&client), rect_height(&client), win->pixel_aspect());
- return &win->target()->get_primitives();
+ window().target()->set_bounds(dimensions.width(), dimensions.height(), window().pixel_aspect());
+ return &window().target()->get_primitives();
+}
+
+
+class video_none : public osd_module, public render_module
+{
+public:
+ video_none() : osd_module(OSD_RENDERER_PROVIDER, "none") { }
+
+ virtual int init(osd_interface &osd, osd_options const &options) override;
+ virtual void exit() override { }
+
+ virtual std::unique_ptr<osd_renderer> create(osd_window &window) override;
+
+protected:
+ virtual unsigned flags() const override { return 0; }
+};
+
+int video_none::init(osd_interface &osd, osd_options const &options)
+{
+ if (!emulator_info::standalone() && (options.seconds_to_run() == 0))
+ osd_printf_warning("Warning: -video none doesn't make much sense without -seconds_to_run\n");
+
+ return 0;
}
+
+std::unique_ptr<osd_renderer> video_none::create(osd_window &window)
+{
+ return std::make_unique<renderer_none>(window);
+}
+
+} // anonymous namespace
+
+} // namespace osd
+
+
+MODULE_DEFINITION(RENDERER_NONE, osd::video_none)