openMSX
Public Member Functions | Static Public Member Functions | List of all members
openmsx::SDLVisibleSurface Class Referencefinal

#include <SDLVisibleSurface.hh>

Inheritance diagram for openmsx::SDLVisibleSurface:
Inheritance graph
[legend]
Collaboration diagram for openmsx::SDLVisibleSurface:
Collaboration graph
[legend]

Public Member Functions

 SDLVisibleSurface (int width, int height, Display &display, RTScheduler &rtScheduler, EventDistributor &eventDistributor, InputEventGenerator &inputEventGenerator, CliComm &cliComm, VideoSystem &videoSystem)
 
void saveScreenshot (const std::string &filename) override
 Save the content of this OutputSurface to a PNG file. More...
 
void flushFrameBuffer () override
 Copy frame buffer to display buffer. More...
 
void clearScreen () override
 Clear frame buffer (paint it black). More...
 
void finish () override
 When a complete frame is finished, call this method. More...
 
std::unique_ptr< LayercreateSnowLayer () override
 
std::unique_ptr< LayercreateConsoleLayer (Reactor &reactor, CommandConsole &console) override
 
std::unique_ptr< LayercreateOSDGUILayer (OSDGUI &gui) override
 
std::unique_ptr< OutputSurfacecreateOffScreenSurface () override
 Create an off-screen OutputSurface which has similar properties as this VisibleSurface. More...
 
void fullScreenUpdated (bool fullScreen) override
 
- Public Member Functions inherited from openmsx::SDLVisibleSurfaceBase
void updateWindowTitle () override
 
bool setFullScreen (bool fullscreen) override
 
 ~SDLVisibleSurfaceBase () override
 
- Public Member Functions inherited from openmsx::SDLOutputSurface
 SDLOutputSurface (const SDLOutputSurface &)=delete
 
SDLOutputSurfaceoperator= (const SDLOutputSurface &)=delete
 
SDL_Surface * getSDLSurface () const
 
SDL_Renderer * getSDLRenderer () const
 
SDLDirectPixelAccess getDirectPixelAccess ()
 Return a SDLDirectPixelAccess object. More...
 
virtual void flushFrameBuffer ()
 Copy frame buffer to display buffer. More...
 
virtual void clearScreen ()
 Clear frame buffer (paint it black). More...
 
- Public Member Functions inherited from openmsx::OutputSurface
 OutputSurface (const OutputSurface &)=delete
 
OutputSurfaceoperator= (const OutputSurface &)=delete
 
virtual ~OutputSurface ()=default
 
int getLogicalWidth () const
 
int getLogicalHeight () const
 
gl::ivec2 getLogicalSize () const
 
gl::ivec2 getPhysicalSize () const
 
gl::ivec2 getViewOffset () const
 
gl::ivec2 getViewSize () const
 
gl::vec2 getViewScale () const
 
bool isViewScaled () const
 
const PixelFormatgetPixelFormat () const
 
uint32_t mapRGB (gl::vec3 rgb) const
 Returns the pixel value for the given RGB color. More...
 
uint32_t mapRGB255 (gl::ivec3 rgb) const
 Same as mapRGB, but RGB components are in range [0..255]. More...
 
template<std::unsigned_integral Pixel>
Pixel getKeyColor () const
 Returns the color key for this output surface. More...
 
template<std::unsigned_integral Pixel>
Pixel getKeyColorClash () const
 Returns a color that is visually very close to the key color. More...
 
template<std::unsigned_integral Pixel>
Pixel mapKeyedRGB255 (gl::ivec3 rgb)
 Returns the pixel value for the given RGB color. More...
 
template<std::unsigned_integral Pixel>
Pixel mapKeyedRGB (gl::vec3 rgb)
 Returns the pixel value for the given RGB color. More...
 
virtual void saveScreenshot (const std::string &filename)=0
 Save the content of this OutputSurface to a PNG file. More...
 
- Public Member Functions inherited from openmsx::VisibleSurface
virtual ~VisibleSurface ()
 
virtual void updateWindowTitle ()=0
 
virtual bool setFullScreen (bool fullscreen)=0
 
virtual void finish ()=0
 When a complete frame is finished, call this method. More...
 
virtual std::unique_ptr< LayercreateSnowLayer ()=0
 
virtual std::unique_ptr< LayercreateConsoleLayer (Reactor &reactor, CommandConsole &console)=0
 
virtual std::unique_ptr< LayercreateOSDGUILayer (OSDGUI &gui)=0
 
virtual std::unique_ptr< OutputSurfacecreateOffScreenSurface ()=0
 Create an off-screen OutputSurface which has similar properties as this VisibleSurface. More...
 
CliCommgetCliComm () const
 
DisplaygetDisplay () const
 
- Public Member Functions inherited from openmsx::EventListener
 EventListener (const EventListener &)=delete
 
EventListeneroperator= (const EventListener &)=delete
 
virtual int signalEvent (const Event &event)=0
 This method gets called when an event you are subscribed to occurs. More...
 

Static Public Member Functions

static void saveScreenshotSDL (const SDLOutputSurface &output, const std::string &filename)
 

Additional Inherited Members

- Protected Member Functions inherited from openmsx::SDLVisibleSurfaceBase
void createSurface (int width, int height, unsigned flags)
 
virtual void fullScreenUpdated (bool fullscreen)=0
 
 VisibleSurface (Display &display, RTScheduler &rtScheduler, EventDistributor &eventDistributor, InputEventGenerator &inputEventGenerator, CliComm &cliComm, VideoSystem &videoSystem)
 
- Protected Member Functions inherited from openmsx::SDLOutputSurface
 SDLOutputSurface ()=default
 
void setSDLPixelFormat (const SDL_PixelFormat &format)
 
void setSDLSurface (SDL_Surface *surface_)
 
void setSDLRenderer (SDL_Renderer *r)
 
- Protected Member Functions inherited from openmsx::OutputSurface
 OutputSurface ()=default
 
void calculateViewPort (gl::ivec2 logSize, gl::ivec2 physSize)
 
void setPixelFormat (const PixelFormat &format)
 
void setOpenGlPixelFormat ()
 
- Protected Member Functions inherited from openmsx::VisibleSurface
 VisibleSurface (Display &display, RTScheduler &rtScheduler, EventDistributor &eventDistributor, InputEventGenerator &inputEventGenerator, CliComm &cliComm, VideoSystem &videoSystem)
 
- Protected Member Functions inherited from openmsx::EventListener
 EventListener ()=default
 
 ~EventListener ()=default
 
- Protected Attributes inherited from openmsx::SDLVisibleSurfaceBase
SDLSubSystemInitializer< SDL_INIT_VIDEO > videoSubSystem
 
SDLWindowPtr window
 

Detailed Description

Definition at line 8 of file SDLVisibleSurface.hh.

Constructor & Destructor Documentation

◆ SDLVisibleSurface()

openmsx::SDLVisibleSurface::SDLVisibleSurface ( int  width,
int  height,
Display display,
RTScheduler rtScheduler,
EventDistributor eventDistributor,
InputEventGenerator inputEventGenerator,
CliComm cliComm,
VideoSystem videoSystem 
)

Member Function Documentation

◆ clearScreen()

void openmsx::SDLVisibleSurface::clearScreen ( )
overridevirtual

Clear frame buffer (paint it black).

The default implementation does nothing.

Reimplemented from openmsx::SDLOutputSurface.

Definition at line 132 of file SDLVisibleSurface.cc.

References SDLSurfacePtr::get().

◆ createConsoleLayer()

std::unique_ptr< Layer > openmsx::SDLVisibleSurface::createConsoleLayer ( Reactor reactor,
CommandConsole console 
)
overridevirtual

Implements openmsx::VisibleSurface.

Definition at line 91 of file SDLVisibleSurface.cc.

References openmsx::OutputSurface::getLogicalSize().

◆ createOffScreenSurface()

std::unique_ptr< OutputSurface > openmsx::SDLVisibleSurface::createOffScreenSurface ( )
overridevirtual

Create an off-screen OutputSurface which has similar properties as this VisibleSurface.

E.g. used to re-render the current frame without OSD elements to take a screenshot.

Implements openmsx::VisibleSurface.

Definition at line 105 of file SDLVisibleSurface.cc.

◆ createOSDGUILayer()

std::unique_ptr< Layer > openmsx::SDLVisibleSurface::createOSDGUILayer ( OSDGUI gui)
overridevirtual

Implements openmsx::VisibleSurface.

Definition at line 100 of file SDLVisibleSurface.cc.

◆ createSnowLayer()

std::unique_ptr< Layer > openmsx::SDLVisibleSurface::createSnowLayer ( )
overridevirtual

◆ finish()

void openmsx::SDLVisibleSurface::finish ( )
overridevirtual

When a complete frame is finished, call this method.

It will 'actually' display it. E.g. when using double buffering it will swap the front and back buffer.

Implements openmsx::VisibleSurface.

Definition at line 70 of file SDLVisibleSurface.cc.

References openmsx::SDLOutputSurface::getSDLRenderer().

◆ flushFrameBuffer()

void openmsx::SDLVisibleSurface::flushFrameBuffer ( )
overridevirtual

Copy frame buffer to display buffer.

The default implementation does nothing.

Reimplemented from openmsx::SDLOutputSurface.

Definition at line 62 of file SDLVisibleSurface.cc.

References openmsx::SDLOutputSurface::getSDLRenderer().

◆ fullScreenUpdated()

void openmsx::SDLVisibleSurface::fullScreenUpdated ( bool  fullScreen)
overridevirtual

Implements openmsx::SDLVisibleSurfaceBase.

Definition at line 137 of file SDLVisibleSurface.cc.

◆ saveScreenshot()

void openmsx::SDLVisibleSurface::saveScreenshot ( const std::string &  filename)
overridevirtual

Save the content of this OutputSurface to a PNG file.

Exceptions
MSXExceptionIf creating the PNG file fails.

Implements openmsx::OutputSurface.

Definition at line 110 of file SDLVisibleSurface.cc.

References saveScreenshotSDL().

◆ saveScreenshotSDL()

void openmsx::SDLVisibleSurface::saveScreenshotSDL ( const SDLOutputSurface output,
const std::string &  filename 
)
static

The documentation for this class was generated from the following files: