openMSX
Public Member Functions | List of all members
openmsx::PolyScaleRef< Pixel, Scaler > Class Template Referencefinal

Like PolyScale above, but instead keeps a reference to the actual scaler. More...

#include <LineScalers.hh>

Inheritance diagram for openmsx::PolyScaleRef< Pixel, Scaler >:
Inheritance graph
[legend]
Collaboration diagram for openmsx::PolyScaleRef< Pixel, Scaler >:
Collaboration graph
[legend]

Public Member Functions

 PolyScaleRef (Scaler &scaler_)
 
void operator() (std::span< const Pixel > in, std::span< Pixel > out) override
 Actually scale a line. More...
 
bool isCopy () const override
 Is this scale operation actually a copy? This info can be used to (in a multi-step scale operation) immediately produce the output of the previous step in this step's output buffer, so effectively skipping this step. More...
 
virtual void operator() (std::span< const Pixel > in, std::span< Pixel > out)=0
 Actually scale a line. More...
 
virtual bool isCopy () const =0
 Is this scale operation actually a copy? This info can be used to (in a multi-step scale operation) immediately produce the output of the previous step in this step's output buffer, so effectively skipping this step. More...
 

Additional Inherited Members

- Protected Member Functions inherited from openmsx::PolyLineScaler< Pixel >
 ~PolyLineScaler ()=default
 

Detailed Description

template<std::unsigned_integral Pixel, typename Scaler>
class openmsx::PolyScaleRef< Pixel, Scaler >

Like PolyScale above, but instead keeps a reference to the actual scaler.

Can be used when the actual scaler is expensive to construct (e.g. Blur_1on3).

Definition at line 339 of file LineScalers.hh.

Constructor & Destructor Documentation

◆ PolyScaleRef()

template<std::unsigned_integral Pixel, typename Scaler >
openmsx::PolyScaleRef< Pixel, Scaler >::PolyScaleRef ( Scaler scaler_)
inlineexplicit

Definition at line 342 of file LineScalers.hh.

Member Function Documentation

◆ isCopy()

template<std::unsigned_integral Pixel, typename Scaler >
bool openmsx::PolyScaleRef< Pixel, Scaler >::isCopy ( ) const
inlineoverridevirtual

Is this scale operation actually a copy? This info can be used to (in a multi-step scale operation) immediately produce the output of the previous step in this step's output buffer, so effectively skipping this step.

Implements openmsx::PolyLineScaler< Pixel >.

Definition at line 350 of file LineScalers.hh.

◆ operator()()

template<std::unsigned_integral Pixel, typename Scaler >
void openmsx::PolyScaleRef< Pixel, Scaler >::operator() ( std::span< const Pixel in,
std::span< Pixel out 
)
inlineoverridevirtual

Actually scale a line.

Parameters
inBuffer containing input line.
outBuffer that should be filled with output. Note: The relative size of the input and output depends on the actual scaler. For example Scale_2on1 requires twice as many pixels in the input than in the output.

Implements openmsx::PolyLineScaler< Pixel >.

Definition at line 346 of file LineScalers.hh.


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