openMSX
|
This class represents a frame that is the (per-pixel) alpha-blend of a (laser-disc) video frame and a V99x8 (or tms9918) video frame. More...
#include <SuperImposedVideoFrame.hh>
Public Member Functions | |
SuperImposedVideoFrame (const FrameSource &src, const FrameSource &super, const PixelOperations< Pixel > &pixelOps) | |
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... | |
unsigned | getWidth () const |
Get the width of (all) lines in this frame. More... | |
template<std::unsigned_integral Pixel> | |
Pixel | getLineColor (unsigned line) const |
Get the (single) color of the given line. More... | |
template<std::unsigned_integral Pixel> | |
const Pixel * | getLinePtr (int line, unsigned width, Pixel *buf) const |
Gets a pointer to the pixels of the given line number. More... | |
template<std::unsigned_integral Pixel> | |
const Pixel * | getMultiLinePtr (int line, unsigned numLines, unsigned &actualLines, unsigned width, Pixel *buf) const |
Similar to the above getLinePtr() method, but now tries to get multiple lines at once. More... | |
template<std::unsigned_integral Pixel> | |
const Pixel * | getLinePtr320_240 (unsigned line, Pixel *buf) const |
Get a pointer to a given line in this frame, the frame is scaled to 320x240 pixels. More... | |
template<std::unsigned_integral Pixel> | |
const Pixel * | getLinePtr640_480 (unsigned line, Pixel *buf) const |
Get a pointer to a given line in this frame, the frame is scaled to 640x480 pixels. More... | |
template<std::unsigned_integral Pixel> | |
const Pixel * | getLinePtr960_720 (unsigned line, Pixel *buf) const |
Get a pointer to a given line in this frame, the frame is scaled to 960x720 pixels. More... | |
virtual unsigned | getRowLength () const |
Returns the distance (in pixels) between two consecutive lines. More... | |
const PixelFormat & | getPixelFormat () const |
Additional Inherited Members | |
![]() | |
enum | FieldType { FIELD_NONINTERLACED , FIELD_EVEN , FIELD_ODD } |
What role does this frame play in interlacing? More... | |
![]() | |
FrameSource (const PixelFormat &format) | |
~FrameSource ()=default | |
void | setHeight (unsigned height_) |
virtual bool | hasContiguousStorage () const |
Returns true when two consecutive rows are also consecutive in memory. More... | |
template<std::unsigned_integral Pixel> | |
void | scaleLine (const Pixel *in, Pixel *out, unsigned inWidth, unsigned outWidth) const |
This class represents a frame that is the (per-pixel) alpha-blend of a (laser-disc) video frame and a V99x8 (or tms9918) video frame.
This is different from a generic 'SuperImposedFrame' class because it always outputs the resolution of the MSX frame. Except for the top/bottom border line, there we return a line with width=320. So usually this means the laserdisc video gets downscaled to 320x240 resolution. The rational for this was that we want the scalers to work on the proper MSX resolution. So the MSX graphics get scaled in the same way whether superimpose is enabled or not.
Definition at line 21 of file SuperImposedVideoFrame.hh.
openmsx::SuperImposedVideoFrame< Pixel >::SuperImposedVideoFrame | ( | const FrameSource & | src, |
const FrameSource & | super, | ||
const PixelOperations< Pixel > & | pixelOps | ||
) |
Definition at line 11 of file SuperImposedVideoFrame.cc.
References openmsx::FrameSource::getHeight(), and openmsx::FrameSource::setHeight().
|
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 SuperImposedVideoFrame.cc.
References VLA_SSE_ALIGNED.
|
overridevirtual |
Gets the number of display pixels on the given line.
Implements openmsx::FrameSource.
Definition at line 21 of file SuperImposedVideoFrame.cc.
Referenced by openmsx::RGBTriplet3xScaler< Pixel >::scaleImage().