|
|
//========= Copyright 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $Workfile: $
// $Date: $
// $NoKeywords: $
//=============================================================================//
#ifndef IVIDEOMODE_H
#define IVIDEOMODE_H
#ifdef _WIN32
#pragma once
#endif
#include "vmodes.h"
#include "vtf/vtf.h"
struct MovieInfo_t;
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
abstract_class IVideoMode { public: virtual ~IVideoMode() {} virtual bool Init( ) = 0; virtual void Shutdown( void ) = 0;
// Shows the start-up graphics based on the mod
// (Filesystem path for the mod must be set up first)
virtual void DrawStartupGraphic() = 0;
// Creates the game window, plays the startup movie, starts up the material system
virtual bool CreateGameWindow( int nWidth, int nHeight, bool bWindowed, bool bNoWindowBorder ) = 0;
// Sets the game window in editor mode
virtual void SetGameWindow( void *hWnd ) = 0;
// Sets the video mode, and re-sizes the window
virtual bool SetMode( int nWidth, int nHeight, bool bWindowed, bool bNoWindowBorder ) = 0;
// Returns the fullscreen modes for the adapter the game was started on
virtual int GetModeCount( void ) = 0; virtual struct vmode_s *GetMode( int num ) = 0;
// Purpose: This is called in response to a WM_MOVE message
// or whatever the equivalent that would be under linux
virtual void UpdateWindowPosition( void ) = 0;
// Alt-tab handling
virtual void RestoreVideo( void ) = 0; virtual void ReleaseVideo( void ) = 0;
virtual void DrawNullBackground( void *hdc, int w, int h ) = 0; virtual void InvalidateWindow() = 0;
// Returns the video mode width + height. In the case of windowed mode,
// it returns the width and height of the drawable region of the window.
// (it doesn't include the window borders)
virtual int GetModeWidth() const = 0; virtual int GetModeHeight() const = 0; virtual bool IsWindowedMode() const = 0; virtual bool NoWindowBorder() const = 0;
// Returns the subrect to draw the client view into.
// Coordinates are measured relative to the drawable region of the window
virtual const vrect_t & GetClientViewRect( ) const = 0; virtual void SetClientViewRect( const vrect_t &viewRect ) = 0;
// Lazily recomputes client view rect
virtual void MarkClientViewRectDirty() = 0;
virtual void TakeSnapshotTGA( const char *pFileName ) = 0; virtual void TakeSnapshotTGARect( const char *pFilename, int x, int y, int w, int h, int resampleWidth, int resampleHeight, bool bPFM = false, CubeMapFaceIndex_t faceIndex = CUBEMAP_FACE_RIGHT ) = 0; virtual void WriteMovieFrame( const MovieInfo_t& info ) = 0;
// Takes snapshots
virtual void TakeSnapshotJPEG( const char *pFileName, int quality ) = 0; virtual bool TakeSnapshotJPEGToBuffer( CUtlBuffer& buf, int quality ) = 0; };
//-----------------------------------------------------------------------------
// Utilities for virtual screen coordinates
//-----------------------------------------------------------------------------
#define XRES(x) ( x * ( ( float )videomode->GetModeWidth() / 640.0 ) )
#define YRES(y) ( y * ( ( float )videomode->GetModeHeight() / 480.0 ) )
//-----------------------------------------------------------------------------
// Singleton accessor
//-----------------------------------------------------------------------------
#if !defined( DEDICATED )
extern IVideoMode *videomode; #endif
//-----------------------------------------------------------------------------
// Class factory
//-----------------------------------------------------------------------------
void VideoMode_Create(); void VideoMode_Destroy();
#endif // IVIDEOMODE_H
|