123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- #ifndef __NULLSOFT_DX9_PLUGIN_SHELL_DXCONTEXT_H__
- #define __NULLSOFT_DX9_PLUGIN_SHELL_DXCONTEXT_H__ 1
- #include <windows.h>
- #include "shell_defines.h"
- #ifdef _DEBUG
- #define D3D_DEBUG_INFO
- #endif
- #include <d3d9.h>
- #include <d3dx9.h>
- #define SNAP_WINDOWED_MODE_BLOCKSIZE 32
- typedef struct
- {
- eScrMode screenmode;
- int nbackbuf;
- int allow_page_tearing;
- GUID adapter_guid;
- char adapter_devicename[256];
- D3DDISPLAYMODE display_mode;
- D3DMULTISAMPLE_TYPE multisamp;
- HWND parent_window;
- int m_dualhead_horz;
- int m_dualhead_vert;
- int m_skin;
- }
- DXCONTEXT_PARAMS;
- #define MAX_DXC_ADAPTERS 32
- class DXContext
- {
- public:
-
- DXContext(HWND hWndWinamp,HINSTANCE hInstance,LPCWSTR szClassName,LPCSTR szWindowCaption,WNDPROC pProc,LONG_PTR uWindowLong, int minimize_winamp, wchar_t* szIniFile);
- ~DXContext();
- BOOL StartOrRestartDevice(DXCONTEXT_PARAMS *pParams);
- BOOL OnUserResizeWindow(RECT *new_window_rect, RECT *new_client_rect);
- inline HWND GetHwnd() { return m_hwnd; };
- inline int TempIgnoreDestroyMessages() { return m_ignore_wm_destroy; };
- void OnTrulyExiting() { m_truly_exiting = 1; }
- void UpdateMonitorWorkRect();
- int GetBitDepth() { return m_bpp; };
- inline D3DFORMAT GetZFormat() { return m_zFormat; };
- char* GetDriver() { return m_szDriver; };
- char* GetDesc() { return m_szDesc; };
- void SaveWindow();
-
- int m_ready;
- HRESULT m_lastErr;
- int m_window_width;
- int m_window_height;
- int m_client_width;
- int m_client_height;
- int m_REAL_client_width;
- int m_REAL_client_height;
- int m_fake_fs_covers_all;
- int m_frame_delay;
- RECT m_all_monitors_rect;
- RECT m_monitor_rect;
- RECT m_monitor_rect_orig;
- RECT m_monitor_work_rect;
- RECT m_monitor_work_rect_orig;
- DXCONTEXT_PARAMS m_current_mode;
- LPDIRECT3DDEVICE9 m_lpDevice;
- D3DPRESENT_PARAMETERS m_d3dpp;
- LPDIRECT3D9 m_lpD3D;
- D3DCAPS9 m_caps;
- protected:
- D3DMULTISAMPLE_TYPE m_multisamp;
- D3DFORMAT m_zFormat;
- D3DFORMAT m_orig_windowed_mode_format[MAX_DXC_ADAPTERS];
- HMODULE m_hmod_d3d9, m_hmod_d3dx9;
- int m_ordinal_adapter;
- HWND m_hwnd;
- HWND m_hwnd_winamp;
- LONG_PTR m_uWindowLong;
- ATOM m_classAtom;
- char m_szWindowCaption[512];
- wchar_t m_szIniFile[MAX_PATH];
- char m_szDriver[MAX_DEVICE_IDENTIFIER_STRING];
- char m_szDesc[MAX_DEVICE_IDENTIFIER_STRING];
- HINSTANCE m_hInstance;
- int m_ignore_wm_destroy;
- int m_minimize_winamp;
- int m_winamp_minimized;
- int m_truly_exiting;
- int m_bpp;
- embedWindowState myWindowState;
- void WriteSafeWindowPos();
- int GetWindowedModeAutoSize(int iteration);
- BOOL TestDepth(int ordinal_adapter, D3DFORMAT fmt);
- BOOL TestFormat(int ordinal_adapter, D3DFORMAT fmt);
- int CheckAndCorrectFullscreenDispMode(int ordinal_adapter, D3DDISPLAYMODE *pdm);
- void SetViewport();
- void MinimizeWinamp(HMONITOR hPluginMonitor);
- BOOL Internal_Init(DXCONTEXT_PARAMS *pParams, BOOL bFirstInit);
- void Internal_CleanUp();
- void RestoreWinamp();
- void GetSnappedClientSize();
- };
- #define DXC_ERR_REGWIN -2
- #define DXC_ERR_CREATEWIN -3
- #define DXC_ERR_CREATE3D -4
- #define DXC_ERR_GETFORMAT -5
- #define DXC_ERR_FORMAT -6
- #define DXC_ERR_CREATEDEV_PROBABLY_OUTOFVIDEOMEMORY -7
- #define DXC_ERR_RESIZEFAILED -8
- #define DXC_ERR_CAPSFAIL -9
- #define DXC_ERR_BAD_FS_DISPLAYMODE -10
- #define DXC_ERR_USER_CANCELED -11
- #define DXC_ERR_CREATEDEV_NOT_AVAIL -12
- #define DXC_ERR_CREATEDDRAW -13
- #endif
|