// $Id: Scaler2.hh 5740 2006-10-03 16:51:29Z m9710797 $ #ifndef SCALER2_HH #define SCALER2_HH #include "Scaler.hh" #include "PixelOperations.hh" namespace openmsx { /** Base class for 2x scalers. */ template class Scaler2 : public Scaler { public: virtual void scaleBlank1to2( FrameSource& src, unsigned srcStartY, unsigned srcEndY, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scaleBlank1to1( FrameSource& src, unsigned srcStartY, unsigned srcEndY, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale1x1to3x2(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale1x1to3x1(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale1x1to2x2(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale1x1to2x1(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale2x1to3x2(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale2x1to3x1(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale1x1to1x2(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale1x1to1x1(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale4x1to3x2(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale4x1to3x1(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale2x1to1x2(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scale2x1to1x1(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); virtual void scaleImage(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY); protected: explicit Scaler2(const PixelOperations& pixelOps); private: PixelOperations pixelOps; }; } // namespace openmsx #endif