namespace Components { class Renderer : public Component { public: typedef void(Callback)(); typedef void(BackendCallback)(IDirect3DDevice9*); Renderer(); ~Renderer(); #if defined(DEBUG) || defined(FORCE_UNIT_TESTS) const char* getName() { return "Renderer"; }; #endif static int Width(); static int Height(); static void Once(Callback* callback); static void OnFrame(Callback* callback); static void OnBackendFrame(BackendCallback* callback); static void OnDeviceRecoveryEnd(Callback* callback); static void OnDeviceRecoveryBegin(Callback* callback); private: static void FrameStub(); static void FrameHandler(); static void BackendFrameStub(); static void BackendFrameHandler(); static wink::signal> FrameSignal; static wink::signal> FrameOnceSignal; static wink::signal> EndRecoverDeviceSignal; static wink::signal> BeginRecoverDeviceSignal; static wink::signal> BackendFrameSignal; static Utils::Hook DrawFrameHook; }; }