source-engine/utils/hlfaceposer/matsyswin.h

211 lines
4.5 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $Workfile: $
// $Date: $
//
//-----------------------------------------------------------------------------
// $Log: $
//
// $NoKeywords: $
//=============================================================================//
#ifndef MATSYSWIN_H
#define MATSYSWIN_H
#pragma once
#include <mxtk/mxMatSysWindow.h>
#include "materialsystem/imaterialsystem.h"
#include "faceposertoolwindow.h"
#include "interface.h"
class MatSysWindow : public mxMatSysWindow, public IFacePoserToolWindow
{
typedef mxMatSysWindow BaseClass;
public:
// CREATORS
MatSysWindow( mxWindow *parent, int x, int y, int w, int h, const char *label, int style );
~MatSysWindow( );
// MANIPULATORS
virtual int handleEvent( mxEvent *event );
virtual void draw( );
virtual void redraw();
void EnableStickySnapshotMode( void );
void DisableStickySnapshotMode( void );
void PushSnapshotMode( int nSnapShotSize );
void PopSnapshotMode( void );
void TakeSnapshotRect( const char *pFilename, int x, int y, int w, int h );
bool IsSuppressingResize( void );
void SuppressResize( bool suppress );
void TakeScreenShot(const char *filename);
void Frame( void );
void DrawFrame( void );
void SuppressBufferSwap( bool bSuppress );
void *m_hWnd;
private:
bool m_bSuppressResize;
bool m_bSuppressSwap;
// stack and sticky window mode
int m_stickyDepth;
bool m_bIsSticky;
int m_snapshotDepth;
WINDOWPLACEMENT m_wp;
HCURSOR m_hPrevCursor;
};
extern MatSysWindow *g_pMatSysWindow;
extern IMaterialSystem *g_pMaterialSystem;
extern IMaterial *g_materialBackground;
extern IMaterial *g_materialWireframe;
extern IMaterial *g_materialWireframe;
extern IMaterial *g_materialWireframeVertexColor;
extern IMaterial *g_materialWireframeVertexColorNoCull;
extern IMaterial *g_materialDebugCopyBaseTexture;
extern IMaterial *g_materialFlatshaded;
extern IMaterial *g_materialSmoothshaded;
extern IMaterial *g_materialBones;
extern IMaterial *g_materialLines;
extern IMaterial *g_materialFloor;
#if 0
typedef struct
{
int width;
int height;
int bpp;
int flags;
int frequency;
} screen_res_t;
typedef struct
{
int width;
int height;
int bpp;
} devinfo_t;
class MaterialSystemApp
{
public:
MaterialSystemApp();
~MaterialSystemApp();
void Term();
// Post a message to shutdown the app.
void AppShutdown();
int WinMain(void *hInstance, void *hPrevInstance, char *szCmdLine, int iCmdShow);
long WndProc(void *hwnd, long iMsg, long wParam, long lParam);
int FindNumParameter(const char *s, int defaultVal=-1);
bool FindParameter(const char *s);
const char* FindParameterArg(const char *s);
void SetTitleText(PRINTF_FORMAT_STRING const char *fmt, ...);
private:
bool InitMaterialSystem();
void Clear();
bool CreateMainWindow(int width, int height, int bpp, bool fullscreen);
void RenderScene();
void MouseCapture();
void MouseRelease();
void GetParameters();
public:
IMaterialSystem *m_pMaterialSystem;
void *m_hMaterialSystemInst;
devinfo_t m_DevInfo;
void *m_hInstance;
int m_iCmdShow;
void *m_hWnd;
void *m_hDC;
bool m_bActive;
bool m_bFullScreen;
int m_width;
int m_height;
int m_centerx; // for mouse offset calculations
int m_centery;
int m_bpp;
BOOL m_bChangeBPP;
BOOL m_bAllowSoft;
BOOL m_bPaused;
int m_glnWidth;
int m_glnHeight;
float m_gldAspect;
float m_NearClip;
float m_FarClip;
float m_fov;
screen_res_t *m_pResolutions;
int m_iResCount;
int m_iVidMode;
};
// ---------------------------------------------------------------------------------------- //
// Global functions
// ---------------------------------------------------------------------------------------- //
// Show an error dialog and quit.
bool Sys_Error(PRINTF_FORMAT_STRING const char *pMsg, ...);
// Print to the trace window.
void con_Printf(PRINTF_FORMAT_STRING const char *pMsg, ...);
// Returns true if the key is down.
bool IsKeyDown(char key);
extern MaterialSystemApp g_MaterialSystemApp;
#ifdef __cplusplus
extern "C" {
#endif
extern unsigned int g_Time;
#ifdef __cplusplus
};
#endif
#endif
#endif // GLAPP_H