openMSX
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
openmsx::Scaler2< Pixel > Class Template Reference

Base class for 2x scalers. More...

#include <Scaler2.hh>

Inheritance diagram for openmsx::Scaler2< Pixel >:
Inheritance graph
[legend]
Collaboration diagram for openmsx::Scaler2< Pixel >:
Collaboration graph
[legend]

Public Member Functions

void scaleImage (FrameSource &src, const RawFrame *superImpose, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY) override
 Scales the image in the given area, which must consist of lines which are all equally wide. More...
 
- Public Member Functions inherited from openmsx::Scaler< Pixel >
virtual ~Scaler ()=default
 
virtual void scaleImage (FrameSource &src, const RawFrame *superImpose, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)=0
 Scales the image in the given area, which must consist of lines which are all equally wide. More...
 

Protected Member Functions

 Scaler2 (const PixelOperations< Pixel > &pixelOps)
 
void dispatchScale (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scaleBlank1to2 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scaleBlank1to1 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale1x1to3x2 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale1x1to3x1 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale1x1to2x2 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale1x1to2x1 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale2x1to3x2 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale2x1to3x1 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale1x1to1x2 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale1x1to1x1 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale4x1to3x2 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale4x1to3x1 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale2x1to1x2 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 
virtual void scale2x1to1x1 (FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY)
 

Protected Attributes

const PixelOperations< PixelpixelOps
 

Detailed Description

template<std::unsigned_integral Pixel>
class openmsx::Scaler2< Pixel >

Base class for 2x scalers.

Definition at line 11 of file Scaler2.hh.

Constructor & Destructor Documentation

◆ Scaler2()

template<std::unsigned_integral Pixel>
openmsx::Scaler2< Pixel >::Scaler2 ( const PixelOperations< Pixel > &  pixelOps)
explicitprotected

Definition at line 14 of file Scaler2.cc.

Member Function Documentation

◆ dispatchScale()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::dispatchScale ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protected

Definition at line 223 of file Scaler2.cc.

References openmsx::FrameSource::getHeight(), and UNREACHABLE.

◆ scale1x1to1x1()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale1x1to1x1 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

◆ scale1x1to1x2()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale1x1to1x2 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

◆ scale1x1to2x1()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale1x1to2x1 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Definition at line 117 of file Scaler2.cc.

◆ scale1x1to2x2()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale1x1to2x2 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

◆ scale1x1to3x1()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale1x1to3x1 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Definition at line 91 of file Scaler2.cc.

◆ scale1x1to3x2()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale1x1to3x2 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Reimplemented in openmsx::HQ2xLiteScaler< Pixel >, and openmsx::HQ2xScaler< Pixel >.

Definition at line 81 of file Scaler2.cc.

◆ scale2x1to1x1()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale2x1to1x1 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Definition at line 213 of file Scaler2.cc.

◆ scale2x1to1x2()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale2x1to1x2 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Reimplemented in openmsx::HQ2xLiteScaler< Pixel >, and openmsx::HQ2xScaler< Pixel >.

Definition at line 203 of file Scaler2.cc.

◆ scale2x1to3x1()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale2x1to3x1 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Definition at line 137 of file Scaler2.cc.

◆ scale2x1to3x2()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale2x1to3x2 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Reimplemented in openmsx::HQ2xLiteScaler< Pixel >, and openmsx::HQ2xScaler< Pixel >.

Definition at line 127 of file Scaler2.cc.

◆ scale4x1to3x1()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale4x1to3x1 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Definition at line 193 of file Scaler2.cc.

◆ scale4x1to3x2()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scale4x1to3x2 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

Reimplemented in openmsx::HQ2xLiteScaler< Pixel >, and openmsx::HQ2xScaler< Pixel >.

Definition at line 183 of file Scaler2.cc.

◆ scaleBlank1to1()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scaleBlank1to1 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

◆ scaleBlank1to2()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scaleBlank1to2 ( FrameSource src,
unsigned  srcStartY,
unsigned  srcEndY,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
protectedvirtual

◆ scaleImage()

template<std::unsigned_integral Pixel>
void openmsx::Scaler2< Pixel >::scaleImage ( FrameSource src,
const RawFrame superImpose,
unsigned  srcStartY,
unsigned  srcEndY,
unsigned  srcWidth,
ScalerOutput< Pixel > &  dst,
unsigned  dstStartY,
unsigned  dstEndY 
)
overridevirtual

Scales the image in the given area, which must consist of lines which are all equally wide.

Scaling factor depends on the concrete scaler.

Parameters
srcSource: the frame to be scaled.
superImposeThe to-be-superimposed image (can be nullptr).
srcStartYY-coordinate of the top source line (inclusive).
srcEndYY-coordinate of the bottom source line (exclusive).
srcWidthThe number of pixels per line for the given area.
dstDestination: image to store the scaled output in.
dstStartYY-coordinate of the top destination line (inclusive).
dstEndYY-coordinate of the bottom destination line (exclusive).

Implements openmsx::Scaler< Pixel >.

Definition at line 298 of file Scaler2.cc.

Member Data Documentation

◆ pixelOps

template<std::unsigned_integral Pixel>
const PixelOperations<Pixel> openmsx::Scaler2< Pixel >::pixelOps
protected

Definition at line 68 of file Scaler2.hh.


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