openMSX
HQ3xScaler.hh
Go to the documentation of this file.
1 #ifndef HQ3XSCALER_HH
2 #define HQ3XSCALER_HH
3 
4 #include "Scaler3.hh"
5 #include "PixelOperations.hh"
6 
7 namespace openmsx {
8 
11 template <class Pixel>
12 class HQ3xScaler final : public Scaler3<Pixel>
13 {
14 public:
15  explicit HQ3xScaler(const PixelOperations<Pixel>& pixelOps);
16 
17  void scale2x1to9x3(FrameSource& src,
18  unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
19  ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
20  void scale1x1to3x3(FrameSource& src,
21  unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
22  ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
23  void scale4x1to9x3(FrameSource& src,
24  unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
25  ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
26  void scale2x1to3x3(FrameSource& src,
27  unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
28  ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
29  void scale8x1to9x3(FrameSource& src,
30  unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
31  ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
32  void scale4x1to3x3(FrameSource& src,
33  unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
34  ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
35 
36 private:
37  PixelOperations<Pixel> pixelOps;
38 };
39 
40 } // namespace openmsx
41 
42 #endif
openmsx::HQ3xScaler::scale8x1to9x3
void scale8x1to9x3(FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY) override
Definition: HQ3xScaler.cc:151
openmsx::PixelOperations
Definition: PixelOperations.hh:143
openmsx::HQ3xScaler::scale4x1to9x3
void scale4x1to9x3(FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY) override
Definition: HQ3xScaler.cc:127
openmsx::ScalerOutput
Definition: Scaler.hh:8
openmsx::HQ3xScaler::scale2x1to3x3
void scale2x1to3x3(FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY) override
Definition: HQ3xScaler.cc:139
Scaler3.hh
openmsx::HQ3xScaler
Runs the hq3x scaler algorithm.
Definition: HQ3xScaler.hh:13
PixelOperations.hh
openmsx::HQ3xScaler::scale2x1to9x3
void scale2x1to9x3(FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY) override
Definition: HQ3xScaler.cc:103
openmsx::HQ3xScaler::scale1x1to3x3
void scale1x1to3x3(FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY) override
Definition: HQ3xScaler.cc:115
openmsx::Scaler3
Base class for 3x scalers.
Definition: Scaler3.hh:12
openmsx::HQ3xScaler::HQ3xScaler
HQ3xScaler(const PixelOperations< Pixel > &pixelOps)
Definition: HQ3xScaler.cc:96
openmsx::FrameSource
Interface for getting lines from a video frame.
Definition: FrameSource.hh:14
openmsx
Thanks to enen for testing this on a real cartridge:
Definition: Autofire.cc:5
openmsx::HQ3xScaler::scale4x1to3x3
void scale4x1to3x3(FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY) override
Definition: HQ3xScaler.cc:163