// $Id: Scaler.hh 4919 2005-12-05 20:32:04Z m9710797 $ #ifndef SCALER_HH #define SCALER_HH namespace openmsx { class FrameSource; class OutputSurface; /** Abstract base class for scalers. * A scaler is an algorithm that converts low-res graphics to hi-res graphics. */ class Scaler { public: virtual ~Scaler() {} /** Scales the image in the given area, which must consist of lines which * are all equally wide. * Scaling factor depends on the concrete scaler. * @param src Source: the frame to be scaled. * @param srcStartY Y-coordinate of the top source line (inclusive). * @param srcEndY Y-coordinate of the bottom source line (exclusive). * @param srcWidth The number of pixels per line for the given area. * @param dst Destination: image to store the scaled output in. * @param dstStartY Y-coordinate of the top destination line (inclusive). * @param dstEndY Y-coordinate of the bottom destination line (exclusive). */ virtual void scaleImage(FrameSource& src, unsigned srcStartY, unsigned srcEndY, unsigned srcWidth, OutputSurface& dst, unsigned dstStartY, unsigned dstEndY) = 0; }; } // namespace openmsx #endif