#pragma once namespace Components { class Renderer : public Component { public: typedef void(BackendCallback)(IDirect3DDevice9*); Renderer(); ~Renderer(); static int Width(); static int Height(); static void OnBackendFrame(Utils::Slot callback); static void OnNextBackendFrame(Utils::Slot callback); static void OnDeviceRecoveryEnd(Utils::Slot callback); static void OnDeviceRecoveryBegin(Utils::Slot callback); private: static void FrameStub(); static void BackendFrameStub(); static void BackendFrameHandler(); static void PreVidRestart(); static void PostVidRestart(); static void PostVidRestartStub(); static Utils::Signal EndRecoverDeviceSignal; static Utils::Signal BeginRecoverDeviceSignal; static Utils::Signal BackendFrameSignal; static Utils::Signal SingleBackendFrameSignal; }; }