Scaler1.hh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef SCALER1_HH
  2. #define SCALER1_HH
  3. #include "Scaler.hh"
  4. #include "PixelOperations.hh"
  5. namespace openmsx {
  6. template <typename Pixel>
  7. class Scaler1 final : public Scaler<Pixel>
  8. {
  9. public:
  10. explicit Scaler1(const PixelOperations<Pixel>& pixelOps);
  11. void scaleImage(FrameSource& src, const RawFrame* superImpose,
  12. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  13. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY) override;
  14. protected:
  15. void dispatchScale(FrameSource& src,
  16. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  17. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  18. virtual void scaleBlank1to1(
  19. FrameSource& src, unsigned srcStartY, unsigned srcEndY,
  20. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  21. virtual void scaleBlank2to1(
  22. FrameSource& src, unsigned srcStartY, unsigned srcEndY,
  23. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  24. virtual void scale2x1to3x1(FrameSource& src,
  25. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  26. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  27. virtual void scale2x2to3x1(FrameSource& src,
  28. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  29. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  30. virtual void scale1x1to1x1(FrameSource& src,
  31. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  32. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  33. virtual void scale1x2to1x1(FrameSource& src,
  34. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  35. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  36. virtual void scale4x1to3x1(FrameSource& src,
  37. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  38. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  39. virtual void scale4x2to3x1(FrameSource& src,
  40. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  41. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  42. virtual void scale2x1to1x1(FrameSource& src,
  43. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  44. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  45. virtual void scale2x2to1x1(FrameSource& src,
  46. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  47. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  48. virtual void scale8x1to3x1(FrameSource& src,
  49. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  50. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  51. virtual void scale8x2to3x1(FrameSource& src,
  52. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  53. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  54. virtual void scale4x1to1x1(FrameSource& src,
  55. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  56. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  57. virtual void scale4x2to1x1(FrameSource& src,
  58. unsigned srcStartY, unsigned srcEndY, unsigned srcWidth,
  59. ScalerOutput<Pixel>& dst, unsigned dstStartY, unsigned dstEndY);
  60. const PixelOperations<Pixel> pixelOps;
  61. };
  62. } // namespace openmsx
  63. #endif