17#if COMPONENT_LASERDISC
26 , display(reactor.getDisplay())
27 , renderSettings(reactor.getDisplay().getRenderSettings())
29 screen = std::make_unique<VisibleSurface>(
35 snowLayer = screen->createSnowLayer();
36 osdGuiLayer = screen->createOSDGUILayer(display.
getOSDGUI());
40 if (imGuiLayer) display.
addLayer(*imGuiLayer);
58 std::string videoSource = (vdp.
getName() ==
"VDP")
64 return std::make_unique<SDLRasterizer>(
65 vdp, display, *screen,
66 std::make_unique<PostProcessor>(
67 motherBoard, display, *screen,
68 videoSource, 640, 240,
true));
77 std::string videoSource = (vdp.
getName() ==
"Sunrise GFX9000")
83 return std::make_unique<V9990SDLRasterizer>(
84 vdp, display, *screen,
85 std::make_unique<PostProcessor>(
86 motherBoard, display, *screen,
87 videoSource, 1280, 240,
true));
93#if COMPONENT_LASERDISC
97 std::string videoSource =
"Laserdisc";
101 return std::make_unique<LDSDLRasterizer>(
102 std::make_unique<PostProcessor>(
103 motherBoard, display, *screen,
104 videoSource, 640, 480,
false));
120 screen->saveScreenshot(filename);
126 std::unique_ptr<OutputSurface> surf = screen->createOffScreenSurface();
128 surf->saveScreenshot(filename);
134 screen->updateWindowTitle();
140 SDL_GetMouseState(&mouseX, &mouseY);
141 return {mouseX, mouseY};
151 SDL_ShowCursor(show ? SDL_ENABLE : SDL_DISABLE);
156 return SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE;
162 if (
char* text = SDL_GetClipboardText()) {
171 if (SDL_SetClipboardText(text.
c_str()) != 0) {
172 const char* err = SDL_GetError();
184void SDLVideoSystem::update(
const Setting& subject)
noexcept
186 if (&subject == &renderSettings.getFullScreenSetting()) {
187 screen->setFullScreen(renderSettings.getFullScreen());
188 }
else if (&subject == &renderSettings.getScaleFactorSetting()) {
195int SDLVideoSystem::signalEvent(
const Event& )
void removeLayer(Layer &layer)
void addLayer(Layer &layer)
MSXMotherBoard & getMotherBoard()
MSXMotherBoard & getMotherBoard() const
Get the mother board this device belongs to.
virtual const std::string & getName() const
Returns a human-readable name for this device.
A frame buffer where pixels can be written to.
Contains the main loop of openMSX.
ImGuiManager & getImGuiManager()
RTScheduler & getRTScheduler()
EventDistributor & getEventDistributor()
InputEventGenerator & getInputEventGenerator()
BooleanSetting & getFullScreenSetting()
Full screen [on, off].
IntegerSetting & getScaleFactorSetting()
The current scaling factor.
RendererID getRenderer() const
bool getCursorEnabled() override
void repaint() override
Requests a repaint of the output surface.
void setClipboardText(zstring_view text) override
void showCursor(bool show) override
gl::ivec2 getMouseCoord() override
Returns the current mouse pointer coordinates.
std::unique_ptr< V9990Rasterizer > createV9990Rasterizer(V9990 &vdp) override
Create the V9990 rasterizer selected by the current renderer setting.
~SDLVideoSystem() override
Deactivates this video system.
OutputSurface * getOutputSurface() override
TODO.
SDLVideoSystem(Reactor &reactor)
Activates this video system.
void takeScreenShot(const std::string &filename, bool withOsd) override
Take a screenshot.
std::unique_ptr< LDRasterizer > createLDRasterizer(LaserdiscPlayer &ld) override
void updateWindowTitle() override
Called when the window title string has changed.
std::string getClipboardText() override
void flush() override
Finish pending drawing operations and make them visible to the user.
std::unique_ptr< Rasterizer > createRasterizer(VDP &vdp) override
Create the rasterizer selected by the current renderer setting.
void detach(Observer< T > &observer)
void attach(Observer< T > &observer)
Implementation of the Yamaha V9990 VDP as used in the GFX9000 cartridge by Sunrise.
Unified implementation of MSX Video Display Processors (VDPs).
Like std::string_view, but with the extra guarantee that it refers to a zero-terminated string.
constexpr const char * c_str() const
This file implemented 3 utility functions:
std::variant< KeyUpEvent, KeyDownEvent, MouseMotionEvent, MouseButtonUpEvent, MouseButtonDownEvent, MouseWheelEvent, JoystickAxisMotionEvent, JoystickHatEvent, JoystickButtonUpEvent, JoystickButtonDownEvent, OsdControlReleaseEvent, OsdControlPressEvent, WindowEvent, TextEvent, FileDropEvent, QuitEvent, FinishFrameEvent, CliCommandEvent, GroupEvent, BootEvent, FrameDrawnEvent, BreakEvent, SwitchRendererEvent, TakeReverseSnapshotEvent, AfterTimedEvent, MachineLoadedEvent, MachineActivatedEvent, MachineDeactivatedEvent, MidiInReaderEvent, MidiInWindowsEvent, MidiInCoreMidiEvent, MidiInCoreMidiVirtualEvent, MidiInALSAEvent, Rs232TesterEvent, ImGuiDelayedActionEvent, ImGuiActiveEvent > Event