227 lines
5.4 KiB
C
227 lines
5.4 KiB
C
|
//-----------------------------------------------------------------------------
|
||
|
// File: uiglobals.h
|
||
|
//
|
||
|
// Desc: CUIGlobals is a class that packs and holds most information
|
||
|
// relevent to a UI session. Many classes make reference to
|
||
|
// CUIGlobals all the time.
|
||
|
//
|
||
|
// CPaintHelper encapsulates GDI calls, simplifying GDI operations.
|
||
|
//
|
||
|
// Copyright (C) 1999-2000 Microsoft Corporation. All Rights Reserved.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
#ifndef __UIGLOBALS_H__
|
||
|
#define __UIGLOBALS_H__
|
||
|
|
||
|
|
||
|
#include "uielements.h"
|
||
|
|
||
|
|
||
|
struct UIELEMENTINFO {
|
||
|
UIELEMENT eElement;
|
||
|
UIFONT eFont;
|
||
|
UIBRUSH eBrush;
|
||
|
UIPEN ePen;
|
||
|
UICOLOR eText, eBk;
|
||
|
};
|
||
|
|
||
|
struct UIFONTINFO {
|
||
|
UIFONT eFont;
|
||
|
LPCTSTR lfFaceName;
|
||
|
int nPointSize;
|
||
|
BOOL bBold;
|
||
|
HGDIOBJ hFont;
|
||
|
};
|
||
|
|
||
|
struct UIBRUSHINFO {
|
||
|
UIBRUSH eBrush;
|
||
|
UICOLOR eColor;
|
||
|
HGDIOBJ hBrush;
|
||
|
HGDIOBJ hPen;
|
||
|
};
|
||
|
|
||
|
struct UIPENINFO {
|
||
|
UIPEN ePen;
|
||
|
int fnPenStyle;
|
||
|
int nWidth;
|
||
|
UICOLOR eColor;
|
||
|
HGDIOBJ hPen;
|
||
|
};
|
||
|
|
||
|
struct UICOLORINFO {
|
||
|
UICOLOR eColor;
|
||
|
COLORREF rgb;
|
||
|
};
|
||
|
|
||
|
enum UIRECTTYPE {
|
||
|
UIR_OUTLINE,
|
||
|
UIR_NORMAL,
|
||
|
UIR_SOLID,
|
||
|
};
|
||
|
|
||
|
#define UIG_PARAMS_DEFINE \
|
||
|
DWORD dwFlags, \
|
||
|
LPCWSTR wszUserNames, \
|
||
|
DWORD dwNumAcFor, \
|
||
|
LPDIACTIONFORMATW lpAcFor, \
|
||
|
LPDICOLORSET lpDIColorSet, \
|
||
|
IUnknown FAR *lpSurface, \
|
||
|
LPDICONFIGUREDEVICESCALLBACK lpCallback, \
|
||
|
LPVOID pvRefData
|
||
|
|
||
|
#define UIG_PARAMS_DEFINE_PASS \
|
||
|
dwFlags, \
|
||
|
wszUserNames, \
|
||
|
dwNumAcFor, \
|
||
|
lpAcFor, \
|
||
|
lpDIColorSet, \
|
||
|
lpSurface, \
|
||
|
lpCallback, \
|
||
|
pvRefData
|
||
|
|
||
|
class CUIGlobals
|
||
|
{
|
||
|
public:
|
||
|
CUIGlobals(UIG_PARAMS_DEFINE);
|
||
|
~CUIGlobals();
|
||
|
|
||
|
// UI Variables/States/Etc...
|
||
|
public:
|
||
|
HRESULT GetInitResult() {return m_hrInit;}
|
||
|
|
||
|
HINSTANCE GetInstance() {return m_hInst;}
|
||
|
LPDIRECTINPUT8W GetDI();
|
||
|
|
||
|
int GetUserNameIndex(LPCWSTR);
|
||
|
int GetNumUserNames();
|
||
|
LPCWSTR GetUserName(int i);
|
||
|
|
||
|
// GetSurface should not be used as only IDirect3DSurface8 should be used. Instead, use GetSurface3D.
|
||
|
IDirectDrawSurface *GetSurface(); // must release when done with returned surface (it's addref'd before returned)
|
||
|
IDirect3DSurface8 *GetSurface3D(); // must release when done with returned surface (it's addref'd before returned)
|
||
|
LPDICONFIGUREDEVICESCALLBACK GetCallback() {return m_lpCallback;}
|
||
|
LPVOID GetRefData() {return m_pvRefData;}
|
||
|
//@@BEGIN_MSINTERNAL
|
||
|
#ifdef DDKBUILD
|
||
|
BOOL QueryAllowEditLayout() { return m_bAllowEditLayout; }
|
||
|
#endif
|
||
|
//@@END_MSINTERNAL
|
||
|
DWORD GetFlags() {return m_dwFlags;}
|
||
|
BOOL IsFlagSet(DWORD dwFlag) {return AreFlagsSet(dwFlag);}
|
||
|
BOOL AreFlagsSet(DWORD dwFlags) {return (m_dwFlags & dwFlags) == dwFlags;}
|
||
|
BOOL InEditMode() {return IsFlagSet(DICD_EDIT);}
|
||
|
const DIACTIONFORMATW &RefMasterAcFor(int i);
|
||
|
int GetNumMasterAcFors() {return m_MasterAcForArray.GetSize();}
|
||
|
const DICOLORSET &GetColorSet() const { return m_ColorSet; }
|
||
|
|
||
|
void SetFinalResult(HRESULT);
|
||
|
HRESULT GetFinalResult();
|
||
|
|
||
|
private:
|
||
|
HRESULT Init(UIG_PARAMS_DEFINE);
|
||
|
void Dump();
|
||
|
HRESULT m_hrInit;
|
||
|
HRESULT m_hrFinalResult;
|
||
|
|
||
|
BOOL InitColorsAndTablesAndObjects(LPDICOLORSET lpDIColorSet);
|
||
|
|
||
|
BOOL IsValidUserIndex(int i);
|
||
|
BOOL IsValidMasterAcForIndex(int i);
|
||
|
HRESULT InitMasterAcForArray(const DIACTIONFORMATW *af, int n);
|
||
|
void ClearMasterAcForArray();
|
||
|
|
||
|
HINSTANCE m_hInst;
|
||
|
LPDIRECTINPUT8W m_lpDI;
|
||
|
|
||
|
DWORD m_dwFlags;
|
||
|
LPCWSTR m_wszUserNames;
|
||
|
CArray<DIACTIONFORMATW, DIACTIONFORMATW &> m_MasterAcForArray;
|
||
|
BOOL m_bUseColorSet;
|
||
|
DICOLORSET m_ColorSet;
|
||
|
void SetTableColor(UICOLOR, COLORREF);
|
||
|
IDirectDrawSurface *m_pSurface;
|
||
|
IDirect3DSurface8 *m_pSurface3D;
|
||
|
LPDICONFIGUREDEVICESCALLBACK m_lpCallback;
|
||
|
LPVOID m_pvRefData;
|
||
|
|
||
|
BOOL m_bAllowEditLayout;
|
||
|
|
||
|
// UI Elements...
|
||
|
public:
|
||
|
UIELEMENTINFO *GetElementInfo(UIELEMENT);
|
||
|
UIFONTINFO *GetFontInfo(UIFONT);
|
||
|
UIBRUSHINFO *GetBrushInfo(UIBRUSH);
|
||
|
UIPENINFO *GetPenInfo(UIPEN);
|
||
|
UICOLORINFO *GetColorInfo(UICOLOR);
|
||
|
HGDIOBJ GetFont(UIELEMENT);
|
||
|
HGDIOBJ GetFont(UIFONT);
|
||
|
HGDIOBJ GetBrush(UIELEMENT);
|
||
|
HGDIOBJ GetBrush(UIBRUSH);
|
||
|
HGDIOBJ GetPen(UIELEMENT);
|
||
|
HGDIOBJ GetPen(UIBRUSH);
|
||
|
HGDIOBJ GetPen(UIPEN);
|
||
|
COLORREF GetBrushColor(UIELEMENT);
|
||
|
COLORREF GetPenColor(UIELEMENT);
|
||
|
COLORREF GetTextColor(UIELEMENT);
|
||
|
COLORREF GetBkColor(UIELEMENT);
|
||
|
COLORREF GetColor(UIBRUSH);
|
||
|
COLORREF GetColor(UIPEN);
|
||
|
COLORREF GetColor(UICOLOR);
|
||
|
|
||
|
void DeleteObjects();
|
||
|
void CreateObjects();
|
||
|
void RecreateObjects();
|
||
|
|
||
|
private:
|
||
|
BOOL InitTables();
|
||
|
void ClearTables();
|
||
|
|
||
|
UIELEMENTINFO *m_pElement;
|
||
|
int m_nElements;
|
||
|
UIFONTINFO *m_pFont;
|
||
|
int m_nFonts;
|
||
|
UIBRUSHINFO *m_pBrush;
|
||
|
int m_nBrushes;
|
||
|
UIPENINFO *m_pPen;
|
||
|
int m_nPens;
|
||
|
UICOLORINFO *m_pColor;
|
||
|
int m_nColors;
|
||
|
};
|
||
|
|
||
|
class CPaintHelper
|
||
|
{
|
||
|
public:
|
||
|
CPaintHelper(CUIGlobals &uig, HDC hDC);
|
||
|
~CPaintHelper();
|
||
|
CUIGlobals &m_uig;
|
||
|
HDC &m_hDC;
|
||
|
|
||
|
void SetElement(UIELEMENT eElement);
|
||
|
void SetFont(UIFONT eFont);
|
||
|
void SetBrush(UIBRUSH eBrush);
|
||
|
void SetPen(UIPEN ePen);
|
||
|
void SetText(UICOLOR eText, UICOLOR eBk = UIC_LAST);
|
||
|
|
||
|
BOOL LineTo(SPOINT p) {return LineTo(p.x, p.y);}
|
||
|
BOOL LineTo(int x, int y);
|
||
|
BOOL MoveTo(SPOINT p, SPOINT *last = NULL) {return MoveTo(p.x, p.y, last);}
|
||
|
BOOL MoveTo(int x, int y, SPOINT *last = NULL);
|
||
|
|
||
|
BOOL Rectangle(SRECT r, UIRECTTYPE eType = UIR_NORMAL);
|
||
|
BOOL Rectangle(int l, int t, int r, int b, UIRECTTYPE eType = UIR_NORMAL)
|
||
|
{SRECT s(l,t,r,b); return Rectangle(s, eType);}
|
||
|
|
||
|
private:
|
||
|
HDC m_priv_hDC;
|
||
|
HGDIOBJ m_hOldFont, m_hOldBrush, m_hOldPen;
|
||
|
BOOL m_bOldFont, m_bOldBrush, m_bOldPen;
|
||
|
COLORREF m_oldtextcolor, m_oldbkcolor;
|
||
|
int m_oldbkmode;
|
||
|
UIFONT m_eFont;
|
||
|
UIBRUSH m_eBrush;
|
||
|
UIPEN m_ePen;
|
||
|
UICOLOR m_eText, m_eBk;
|
||
|
};
|
||
|
|
||
|
#endif //__UIGLOBALS_H__
|