//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: VGUI panel which can play back video, in-engine // //============================================================================= #ifndef VGUI_VIDEO_H #define VGUI_VIDEO_H #ifdef _WIN32 #pragma once #endif #include #include //#define QUICKTIME_VIDEO //#define BINK_VIDEO #include "video/ivideoservices.h" class VideoPanel : public vgui::EditablePanel { DECLARE_CLASS_SIMPLE(VideoPanel, vgui::EditablePanel); public: VideoPanel(unsigned int nXPos, unsigned int nYPos, unsigned int nHeight, unsigned int nWidth, bool allowAlternateMedia = true); virtual ~VideoPanel(void); virtual void Activate(void); virtual void Paint(void); virtual void DoModal(void); virtual void OnKeyCodeTyped(vgui::KeyCode code); virtual void OnKeyCodePressed(vgui::KeyCode code); virtual void OnClose(void); virtual void GetPanelPos(int &xpos, int &ypos); void SetExitCommand(const char *pExitCommand) { if (pExitCommand && pExitCommand[0]) { Q_strncpy(m_szExitCommand, pExitCommand, MAX_PATH); } } bool BeginPlayback(const char *pFilename); void SetBlackBackground(bool bBlack) { m_bBlackBackground = bBlack; } protected: virtual void OnTick(void) { BaseClass::OnTick(); } virtual void OnCommand(const char *pcCommand) { BaseClass::OnCommand(pcCommand); } virtual void OnVideoOver() {} protected: IVideoMaterial *m_VideoMaterial; IMaterial *m_pMaterial; int m_nPlaybackHeight; // Calculated to address ratio changes int m_nPlaybackWidth; char m_szExitCommand[MAX_PATH]; // This call is fired at the engine when // the video finishes or is interrupted float m_flU; // U,V ranges for video on its sheet float m_flV; bool m_bBlackBackground; bool m_bAllowAlternateMedia; }; // Creates a VGUI panel which plays a video and executes a client command at its // finish (if specified) extern bool VideoPanel_Create(unsigned int nXPos, unsigned int nYPos, unsigned int nWidth, unsigned int nHeight, const char *pVideoFilename, const char *pExitCommand = NULL); #endif // VGUI_VIDEO_H