openMSX
|
This class represents a frame that is the (per-pixel) alpha-blend of two other frames. More...
#include <SuperImposedFrame.hh>
Public Member Functions | |
virtual | ~SuperImposedFrame ()=default |
void | init (const FrameSource *top, const FrameSource *bottom) |
unsigned | getLineWidth (unsigned line) const override |
Gets the number of display pixels on the given line. More... | |
const void * | getLineInfo (unsigned line, unsigned &width, void *buf, unsigned bufWidth) const override |
Abstract implementation of getLinePtr(). More... | |
![]() | |
void | init (FieldType fieldType_) |
(Re)initialize an existing FrameSource. More... | |
FieldType | getField () const |
Gets the role this frame plays in interlacing. More... | |
unsigned | getHeight () const |
Gets the number of lines in this frame. More... | |
virtual unsigned | getLineWidth (unsigned line) const =0 |
Gets the number of display pixels on the given line. More... | |
unsigned | getWidth () const |
Get the width of (all) lines in this frame. More... | |
Pixel | getLineColor (unsigned line) const |
Get the (single) color of the given line. More... | |
std::span< const Pixel > | getLine (int line, std::span< Pixel > buf) const |
Gets a pointer to the pixels of the given line number. More... | |
virtual const void * | getLineInfo (unsigned line, unsigned &lineWidth, void *buf, unsigned bufWidth) const =0 |
Abstract implementation of getLinePtr(). More... | |
std::span< const Pixel, 320 > | getLinePtr320_240 (unsigned line, std::span< Pixel, 320 > buf) const |
Get a pointer to a given line in this frame, the frame is scaled to 320x240 pixels. More... | |
std::span< const Pixel, 640 > | getLinePtr640_480 (unsigned line, std::span< Pixel, 640 > buf) const |
Get a pointer to a given line in this frame, the frame is scaled to 640x480 pixels. More... | |
std::span< const Pixel, 960 > | getLinePtr960_720 (unsigned line, std::span< Pixel, 960 > buf) const |
Get a pointer to a given line in this frame, the frame is scaled to 960x720 pixels. More... | |
Additional Inherited Members | |
![]() | |
enum | FieldType { FIELD_NONINTERLACED , FIELD_EVEN , FIELD_ODD } |
What role does this frame play in interlacing? More... | |
using | Pixel = uint32_t |
![]() | |
FrameSource ()=default | |
~FrameSource ()=default | |
void | setHeight (unsigned height_) |
virtual bool | hasContiguousStorage () const |
Returns true when two consecutive rows are also consecutive in memory. More... | |
void | scaleLine (std::span< const Pixel > in, std::span< Pixel > out) const |
This class represents a frame that is the (per-pixel) alpha-blend of two other frames.
When the two input frames have a different resolution. The result will have the highest resolution of the two inputs (in other words, the lower resolution frame gets upscaled to the higher resolution).
Definition at line 13 of file SuperImposedFrame.hh.
|
virtualdefault |
|
overridevirtual |
Abstract implementation of getLinePtr().
Pixel type is unspecified (implementations that care about the exact type should get it via some other mechanism).
line | The line number for the requested line. |
lineWidth | Output parameter, the width of the returned line in pixel units. |
buf | Buffer space that can optionally be used by the implementation. |
bufWidth | The size of the above buffer, in pixel units. |
Implements openmsx::FrameSource.
Definition at line 28 of file SuperImposedFrame.cc.
References openmsx::alphaBlendLines(), openmsx::FrameSource::getHeight(), openmsx::FrameSource::getLine(), openmsx::FrameSource::getLineWidth(), gl::max(), gl::min(), and VLA_SSE_ALIGNED.
|
overridevirtual |
Gets the number of display pixels on the given line.
Implements openmsx::FrameSource.
Definition at line 19 of file SuperImposedFrame.cc.
References openmsx::FrameSource::getHeight(), openmsx::FrameSource::getLineWidth(), and gl::max().
void openmsx::SuperImposedFrame::init | ( | const FrameSource * | top, |
const FrameSource * | bottom | ||
) |
Definition at line 11 of file SuperImposedFrame.cc.
References openmsx::FrameSource::getHeight(), gl::max(), and openmsx::FrameSource::setHeight().