mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-09 10:19:38 +00:00
1
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
//========= Copyright 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 ) = 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 ) = 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;
|
||||
|
||||
// Returns the video mode width + height for a single stereo display.
|
||||
// if the game isn't running in side by side stereo, this is the same
|
||||
// as GetModeWidth and GetModeHeight
|
||||
virtual int GetModeStereoWidth() const = 0;
|
||||
virtual int GetModeStereoHeight() const = 0;
|
||||
|
||||
// Returns the size of full screen UI. This might be wider than a single
|
||||
// eye on displays like the Oculus Rift where a single eye is very narrow.
|
||||
// if the game isn't running in side by side stereo, this is the same
|
||||
// as GetModeWidth and GetModeHeight
|
||||
virtual int GetModeUIWidth() const = 0;
|
||||
virtual int GetModeUIHeight() 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;
|
||||
|
||||
virtual void ReadScreenPixels( int x, int y, int w, int h, void *pBuffer, ImageFormat format ) = 0;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Utilities for virtual screen coordinates
|
||||
//-----------------------------------------------------------------------------
|
||||
#define XRES(x) ( x * ( ( float )videomode->GetModeStereoWidth() / 640.0 ) )
|
||||
#define YRES(y) ( y * ( ( float )videomode->GetModeStereoHeight() / 480.0 ) )
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Singleton accessor
|
||||
//-----------------------------------------------------------------------------
|
||||
extern IVideoMode *videomode;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Class factory
|
||||
//-----------------------------------------------------------------------------
|
||||
void VideoMode_Create();
|
||||
void VideoMode_Destroy();
|
||||
|
||||
|
||||
#endif // IVIDEOMODE_H
|
||||
Reference in New Issue
Block a user