//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $Workfile: $ // $Date: $ // //----------------------------------------------------------------------------- // $Log: $ // // $NoKeywords: $ //=============================================================================// #ifndef MATSYSWIN_H #define MATSYSWIN_H #pragma once #include #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