//----------------------------------------------------------------------------- // File: TextSaver.h // // Desc: Fun screen saver // // Copyright (c) 2000 Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- #ifndef _TEXTSAVER_H #define _TEXTSAVER_H //*************************************************************************************** #define MAX_DISPLAY_STRING 20 enum SurfType { color = 0, environment = 1, texture = 2 }; enum RotType { none = 0, spin = 1, seesaw = 2, wobble = 3, tumble = 4 }; //*************************************************************************************** #define MAX_DEVICE_OBJECTS 10 struct DeviceObjects { ID3DXMesh* m_pObject; IDirect3DTexture8* m_pTexture; DWORD m_dwMeshUpdateCounter; }; //----------------------------------------------------------------------------- // Name: struct FLOATRECT // Desc: Floating viewport rect //----------------------------------------------------------------------------- struct FLOATRECT { FLOAT xMin; FLOAT yMin; FLOAT xSize; FLOAT ySize; FLOAT xVel; FLOAT yVel; }; class CTextScreensaver : public CD3DScreensaver { public: CTextScreensaver(); virtual VOID DoConfig(); protected: // Overrides from CD3DScreensaver virtual HRESULT RegisterSoftwareDevice(); virtual HRESULT FrameMove(); virtual HRESULT Render(); virtual HRESULT RestoreDeviceObjects(); virtual HRESULT InvalidateDeviceObjects(); virtual HRESULT ConfirmDevice(D3DCAPS8* pCaps, DWORD dwBehavior, D3DFORMAT fmtBackBuffer); virtual VOID SetDevice( UINT iDevice ); DeviceObjects m_DeviceObjects[MAX_DEVICE_OBJECTS]; DeviceObjects* m_pDeviceObjects; FLOATRECT m_floatrect; HFONT m_hFont; FLOAT m_fTextMinX,m_fTextMaxX; FLOAT m_fTextMinY,m_fTextMaxY; FLOAT m_fTextOffsetX,m_fTextOffsetY; FLOAT m_fAngleX,m_fAngleY,m_fAngleZ; DWORD m_dwLastTick; DWORD m_dwMeshUpdateCounter; IDirect3DTexture8* CreateTextureFromFile( const TCHAR* filename ); HRESULT BuildTextMesh( const TCHAR* text ); VOID UpdateAngles( DWORD elapsed ); BOOL UpdateTimeString( TCHAR* string ); VOID SetPerFrameStates(); // Configuration stuff TCHAR m_szDisplayString[MAX_DISPLAY_STRING+1]; LOGFONT m_Font; BOOL m_bDisplayTime; SurfType m_SurfType; BOOL m_bSpecular; DWORD m_dwRotationSpeed; DWORD m_dwSize; RotType m_RotType; COLORREF m_SurfaceColor; BOOL m_bUseCustomColor; BOOL m_bUseCustomTexture; BOOL m_bUseCustomEnvironment; TCHAR m_szCustomTexture[_MAX_PATH]; TCHAR m_szCustomEnvironment[_MAX_PATH]; DWORD m_dwMeshQuality; D3DXMATRIX m_matWorld; D3DXMATRIX m_matView; virtual VOID ReadSettings(); VOID ss_ReadSettings(); BOOL ss_RegistrySetup( int section, int file ); int ss_GetRegistryInt( int name, int iDefault ); VOID ss_GetRegistryString( int name, LPTSTR lpDefault, LPTSTR lpDest, int bufSize ); static INT_PTR CALLBACK SettingsDialogProcStub( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ); BOOL SettingsDialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ); VOID InitItems( HWND hDlg ); VOID ExtractAndWriteSettings( HWND hDlg ); VOID SelectSurfaceColor( HWND hDlg ); VOID SelectFont( HWND hDlg ); VOID SelectCustomTexture( HWND hDlg ); VOID SelectCustomEnvironment( HWND hDlg ); VOID EnableTextureWindows( HWND hDlg , SurfType sel ); }; //*************************************************************************************** #endif