peter1138@7170: /* $Id$ */ peter1138@7170: rubidium@9111: /** @file video_driver.hpp Base of all video drivers. */ rubidium@9111: peter1138@7170: #ifndef VIDEO_VIDEO_DRIVER_HPP peter1138@7170: #define VIDEO_VIDEO_DRIVER_HPP peter1138@7170: peter1138@7170: #include "../driver.h" smatz@9533: #include "../core/geometry_type.hpp" peter1138@7170: peter1138@7170: class VideoDriver: public Driver { peter1138@7170: public: peter1138@7170: virtual void MakeDirty(int left, int top, int width, int height) = 0; peter1138@7170: peter1138@7170: virtual void MainLoop() = 0; peter1138@7170: peter1138@7170: virtual bool ChangeResolution(int w, int h) = 0; peter1138@7170: belugas@8171: virtual bool ToggleFullscreen(bool fullscreen) = 0; peter1138@7170: }; peter1138@7170: peter1138@7170: class VideoDriverFactoryBase: public DriverFactoryBase { peter1138@7170: }; peter1138@7170: peter1138@7170: template peter1138@7170: class VideoDriverFactory: public VideoDriverFactoryBase { peter1138@7170: public: peter1138@7193: VideoDriverFactory() { this->RegisterDriver(((T *)this)->GetName(), Driver::DT_VIDEO, ((T *)this)->priority); } peter1138@7170: peter1138@7170: /** peter1138@7170: * Get the long, human readable, name for the Driver-class. peter1138@7170: */ peter1138@7170: const char *GetName(); peter1138@7170: }; peter1138@7170: peter1138@7170: extern VideoDriver *_video_driver; rubidium@8275: extern char _ini_videodriver[32]; rubidium@8275: extern int _num_resolutions; smatz@9533: extern Dimension _resolutions[32]; smatz@9533: extern Dimension _cur_resolution; peter1138@7170: peter1138@7170: #endif /* VIDEO_VIDEO_DRIVER_HPP */