openMSX
Public Member Functions | Protected Member Functions | List of all members
openmsx::OutputSurface Class Referenceabstract

A frame buffer where pixels can be written to. More...

#include <OutputSurface.hh>

Inheritance diagram for openmsx::OutputSurface:
Inheritance graph
[legend]

Public Member Functions

 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...
 

Protected Member Functions

 OutputSurface ()=default
 
void calculateViewPort (gl::ivec2 logSize, gl::ivec2 physSize)
 
void setPixelFormat (const PixelFormat &format)
 
void setOpenGlPixelFormat ()
 

Detailed Description

A frame buffer where pixels can be written to.

It could be an in-memory buffer or a video buffer visible to the user (see *OffScreenSurface and *VisibleSurface classes).

The OutputSurface class itself knows about its dimensions and pixel format. But the actual pixel storage is left for the subclasses.

Definition at line 20 of file OutputSurface.hh.

Constructor & Destructor Documentation

◆ OutputSurface() [1/2]

openmsx::OutputSurface::OutputSurface ( const OutputSurface )
delete

◆ ~OutputSurface()

virtual openmsx::OutputSurface::~OutputSurface ( )
virtualdefault

◆ OutputSurface() [2/2]

openmsx::OutputSurface::OutputSurface ( )
protecteddefault

Member Function Documentation

◆ calculateViewPort()

void openmsx::OutputSurface::calculateViewPort ( gl::ivec2  logSize,
gl::ivec2  physSize 
)
protected

◆ getKeyColor()

template<std::unsigned_integral Pixel>
Pixel openmsx::OutputSurface::getKeyColor ( ) const
inline

Returns the color key for this output surface.

Definition at line 59 of file OutputSurface.hh.

◆ getKeyColorClash()

template<std::unsigned_integral Pixel>
Pixel openmsx::OutputSurface::getKeyColorClash ( ) const
inline

Returns a color that is visually very close to the key color.

The returned color can be used as an alternative for pixels that would otherwise have the key color.

Definition at line 70 of file OutputSurface.hh.

◆ getLogicalHeight()

int openmsx::OutputSurface::getLogicalHeight ( ) const
inline

◆ getLogicalSize()

gl::ivec2 openmsx::OutputSurface::getLogicalSize ( ) const
inline

◆ getLogicalWidth()

int openmsx::OutputSurface::getLogicalWidth ( ) const
inline

◆ getPhysicalSize()

gl::ivec2 openmsx::OutputSurface::getPhysicalSize ( ) const
inline

◆ getPixelFormat()

const PixelFormat & openmsx::OutputSurface::getPixelFormat ( ) const
inline

◆ getViewOffset()

gl::ivec2 openmsx::OutputSurface::getViewOffset ( ) const
inline

◆ getViewScale()

gl::vec2 openmsx::OutputSurface::getViewScale ( ) const
inline

Definition at line 35 of file OutputSurface.hh.

Referenced by openmsx::GLScopedClip::GLScopedClip().

◆ getViewSize()

gl::ivec2 openmsx::OutputSurface::getViewSize ( ) const
inline

◆ isViewScaled()

bool openmsx::OutputSurface::isViewScaled ( ) const
inline

Definition at line 36 of file OutputSurface.hh.

Referenced by openmsx::GLPostProcessor::paint().

◆ mapKeyedRGB()

template<std::unsigned_integral Pixel>
Pixel openmsx::OutputSurface::mapKeyedRGB ( gl::vec3  rgb)
inline

Returns the pixel value for the given RGB color.

It is guaranteed that the returned pixel value is different from the color key for this output surface.

Definition at line 98 of file OutputSurface.hh.

◆ mapKeyedRGB255()

template<std::unsigned_integral Pixel>
Pixel openmsx::OutputSurface::mapKeyedRGB255 ( gl::ivec3  rgb)
inline

Returns the pixel value for the given RGB color.

It is guaranteed that the returned pixel value is different from the color key for this output surface.

Definition at line 81 of file OutputSurface.hh.

References mapRGB255().

◆ mapRGB()

uint32_t openmsx::OutputSurface::mapRGB ( gl::vec3  rgb) const
inline

Returns the pixel value for the given RGB color.

No effort is made to ensure that the returned pixel value is not the color key for this output surface.

Definition at line 44 of file OutputSurface.hh.

References mapRGB255().

◆ mapRGB255()

uint32_t openmsx::OutputSurface::mapRGB255 ( gl::ivec3  rgb) const
inline

Same as mapRGB, but RGB components are in range [0..255].

Definition at line 51 of file OutputSurface.hh.

References g, getPixelFormat(), and openmsx::PixelFormat::map().

Referenced by mapKeyedRGB255(), mapRGB(), and openmsx::SDLSnow< Pixel >::SDLSnow().

◆ operator=()

OutputSurface & openmsx::OutputSurface::operator= ( const OutputSurface )
delete

◆ saveScreenshot()

virtual void openmsx::OutputSurface::saveScreenshot ( const std::string &  filename)
pure virtual

Save the content of this OutputSurface to a PNG file.

Exceptions
MSXExceptionIf creating the PNG file fails.

Implemented in openmsx::SDLGLVisibleSurface, and openmsx::SDLVisibleSurface.

◆ setOpenGlPixelFormat()

void openmsx::OutputSurface::setOpenGlPixelFormat ( )
protected

◆ setPixelFormat()

void openmsx::OutputSurface::setPixelFormat ( const PixelFormat format)
inlineprotected

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