openMSX
Scale3xScaler.hh
Go to the documentation of this file.
1 #ifndef SCALE3XSCALER_HH
2 #define SCALE3XSCALER_HH
3 
4 #include "Scaler3.hh"
5 
6 namespace openmsx {
7 
10 template <class Pixel>
11 class Scale3xScaler final : public Scaler3<Pixel>
12 {
13 public:
15 
16  void scale1x1to3x3(FrameSource& src,
17  unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
18  ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
19 
20 private:
21  void scaleLine1on3Half(Pixel* dst,
22  const Pixel* src0, const Pixel* src1, const Pixel* src2,
23  unsigned srcWidth) __restrict;
24  void scaleLine1on3Mid (Pixel* dst,
25  const Pixel* src0, const Pixel* src1, const Pixel* src2,
26  unsigned srcWidth) __restrict;
27 };
28 
29 } // namespace openmsx
30 
31 #endif
Scale3xScaler(const PixelOperations< Pixel > &pixelOps)
uint32_t Pixel
Interface for getting lines from a video frame.
Definition: FrameSource.hh:14
const PixelOperations< Pixel > pixelOps
Definition: Scaler3.hh:67
Thanks to enen for testing this on a real cartridge:
Definition: Autofire.cc:5
void scale1x1to3x3(FrameSource &src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, ScalerOutput< Pixel > &dst, unsigned dstStartY, unsigned dstEndY) override
Runs the Scale3x scaler algorithm.
Base class for 3x scalers.
Definition: Scaler3.hh:11