// $Id: SDLVideoSystem.hh 5597 2006-09-02 10:15:03Z m9710797 $ #ifndef SDLVIDEOSYSTEM_HH #define SDLVIDEOSYSTEM_HH #include "VideoSystem.hh" #include "EventListener.hh" #include "Observer.hh" #include "noncopyable.hh" #include namespace openmsx { class Reactor; class Display; class RenderSettings; class VisibleSurface; class Layer; class Setting; class SDLVideoSystem : public VideoSystem, private EventListener, private Observer, private noncopyable { public: /** Activates this video system. * @throw InitException If initialisation fails. */ explicit SDLVideoSystem(Reactor& reactor); /** Deactivates this video system. */ virtual ~SDLVideoSystem(); // VideoSystem interface: virtual Rasterizer* createRasterizer(VDP& vdp); virtual V9990Rasterizer* createV9990Rasterizer(V9990& vdp); virtual bool checkSettings(); virtual bool prepare(); virtual void flush(); virtual void takeScreenShot(const std::string& filename); virtual void setWindowTitle(const std::string& title); private: // EventListener bool signalEvent(shared_ptr event); // Observer void update(const Setting& subject); void getWindowSize(unsigned& width, unsigned& height); void resize(); Reactor& reactor; Display& display; RenderSettings& renderSettings; std::auto_ptr screen; std::auto_ptr console; std::auto_ptr snowLayer; std::auto_ptr iconLayer; }; } // namespace openmsx #endif