windows-nt/Source/XPSP1/NT/shell/osshell/control/scrnsave/museum/main.h

158 lines
4.3 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*****************************************************************************\
FILE: main.h
DESCRIPTION:
Here we can subclass CDXScreenSaver if we want to override the behavior.
BryanSt 12/24/2000
Copyright (C) Microsoft Corp 2000-2001. All rights reserved.
\*****************************************************************************/
#ifndef SSMAIN_H
#define SSMAIN_H
extern IDirect3D8 * g_pD3D;
extern DWORD g_dwWidth;
extern DWORD g_dwHeight;
extern BOOL g_fFirstFrame;
class CMSLogoDXScreenSaver;
extern CMSLogoDXScreenSaver * g_pScreenSaver;
#include "texture.h"
#include "d3dfont.h"
#include "object.h"
#include "util.h"
#include "CameraMove.h"
#include "room.h"
#include "painting.h"
#include "pictures.h"
#include "config.h"
#include "resource.h"
class CCameraMove;
#define ITEM_FLOOR 0
#define ITEM_WALLPAPER 1
#define ITEM_CEILING 2
#define ITEM_TOEGUARD 3
#define ITEM_RUG 4
#define ITEM_FRAME 5
#define ITEM_POWEROUTLET 6
#define MAX_DEVICE_OBJECTS 10
const LPCWSTR c_pszGlobalTextures[] =
{
L"Floor.bmp",
L"Walls.bmp",
L"Ceiling.bmp",
L"ToeGuard.bmp",
L"Rug.bmp",
L"Frame.bmp",
L"PowerSocket.bmp"
};
#ifdef MANUAL_CAMERA
//-----------------------------------------------------------------------------
// Name: struct Camera
// Desc:
//-----------------------------------------------------------------------------
struct Camera
{
D3DXVECTOR3 m_vPosition;
D3DXVECTOR3 m_vVelocity;
FLOAT m_fYaw;
FLOAT m_fYawVelocity;
FLOAT m_fPitch;
FLOAT m_fPitchVelocity;
D3DXMATRIX m_matView;
D3DXMATRIX m_matOrientation;
};
#endif
struct DeviceObjects
{
CD3DFont* m_pStatsFont;
};
class CMSLogoDXScreenSaver : public CD3DScreensaver
{
public:
virtual void DoConfig(void);
CTexture * GetGlobalTexture(DWORD dwItem, float * pfScale);
IDirect3DDevice8 * GetD3DDevice(void);
virtual void SetDevice(UINT iDevice);
virtual HRESULT ConfirmDevice(D3DCAPS8 * pCaps, DWORD dwBehavior, D3DFORMAT fmtBackBuffer);
void DisplayMonitorSettings(HWND hwndParent) {DoScreenSettingsDialog(hwndParent);}
virtual VOID ReadSettings();
HRESULT GetCurrentScreenSize(int * pnWidth, int * pnHeight);
int GetNumberOfMonitors(void) {return m_dwNumAdapters;}
int GetCurrMonitorIndex(void) {return m_nCurrentDevice;}
VOID ReadScreenSettingsPublic( HKEY hkey ) { ReadScreenSettings( hkey ); }
VOID WriteScreenSettingsPublic( HKEY hkey ) { WriteScreenSettings( hkey ); }
CULLINFO* PCullInfo(void) { return &m_cullInfo; }
BOOL UseSmallImages(void) {return m_fUseSmallImages;}
CMSLogoDXScreenSaver();
virtual ~CMSLogoDXScreenSaver();
protected:
// Member Functions
virtual HRESULT RegisterSoftwareDevice(void);
virtual HRESULT OneTimeSceneInit(void) {return S_OK;}
virtual HRESULT FrameMove(void);
virtual HRESULT Render(void);
virtual HRESULT DeleteDeviceObjects(void);
virtual HRESULT FinalCleanup(void);
virtual HRESULT InitDeviceObjects(void);
virtual HRESULT RestoreDeviceObjects();
virtual HRESULT InvalidateDeviceObjects();
virtual BOOL UseLowResolution(int * pRecommendX, int * pRecommendY);
#ifdef MANUAL_CAMERA
VOID UpdateCamera(Camera* pCamera);
virtual LRESULT SaverProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
#endif
private:
// Helper Functions
HRESULT SetViewParams(IDirect3DDevice8 * pD3DDevice, D3DXVECTOR3 * pvecEyePt, D3DXVECTOR3 * pvecLookatPt, D3DXVECTOR3 * pvecUpVec, float nNumber);
HRESULT _Init(void);
HRESULT _SetTestCameraPosition(void);
HRESULT _OneTimeSceneInit(void);
HRESULT _CheckMachinePerf(void);
// Member Variables
CTheRoom * m_pCurrentRoom;
BOOL m_fFrontToBack;
int m_nCurrentDevice;
BOOL m_fShowFrameInfo;
CULLINFO m_cullInfo;
BOOL m_fUseSmallImages; // If TRUE, Cap images at 512x512, otherwise 1024x1024
#ifdef MANUAL_CAMERA
BYTE m_bKey[256];
Camera m_camera;
#endif
CCameraMove * m_ptheCamera;
DeviceObjects m_DeviceObjects[MAX_DEVICE_OBJECTS];
DeviceObjects * m_pDeviceObjects;
CTexture * m_pTextures[ARRAYSIZE(c_pszGlobalTextures)];
FLOAT m_fTimeKeyIn;
};
#endif // SSMAIN_H