HQ3xScaler.hh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifndef HQ3XSCALER_HH
  2. #define HQ3XSCALER_HH
  3. #include "Scaler3.hh"
  4. #include "PixelOperations.hh"
  5. namespace openmsx {
  6. /** Runs the hq3x scaler algorithm.
  7. */
  8. template <class Pixel>
  9. class HQ3xScaler final : public Scaler3<Pixel>
  10. {
  11. public:
  12. explicit HQ3xScaler(const PixelOperations<Pixel>& pixelOps);
  13. void scale2x1to9x3(FrameSource& src,
  14. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  15. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
  16. void scale1x1to3x3(FrameSource& src,
  17. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  18. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
  19. void scale4x1to9x3(FrameSource& src,
  20. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  21. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
  22. void scale2x1to3x3(FrameSource& src,
  23. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  24. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
  25. void scale8x1to9x3(FrameSource& src,
  26. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  27. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
  28. void scale4x1to3x3(FrameSource& src,
  29. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  30. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
  31. private:
  32. PixelOperations<Pixel> pixelOps;
  33. };
  34. } // namespace openmsx
  35. #endif