Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
151
Src/Plugins/Visualization/vis_milk2/dxcontext.h
Normal file
151
Src/Plugins/Visualization/vis_milk2/dxcontext.h
Normal file
|
@ -0,0 +1,151 @@
|
|||
/*
|
||||
LICENSE
|
||||
-------
|
||||
Copyright 2005-2013 Nullsoft, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Nullsoft nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#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 // declare this before including d3d9.h
|
||||
#endif
|
||||
#include <d3d9.h>
|
||||
#include <d3dx9.h>
|
||||
|
||||
#define SNAP_WINDOWED_MODE_BLOCKSIZE 32 // or use 0 if you don't want snapping
|
||||
|
||||
typedef struct
|
||||
{
|
||||
eScrMode screenmode; // WINDOWED, FULLSCREEN, or FAKE FULLSCREEN
|
||||
int nbackbuf;
|
||||
int allow_page_tearing;
|
||||
GUID adapter_guid;
|
||||
char adapter_devicename[256];
|
||||
D3DDISPLAYMODE display_mode; // ONLY VALID FOR FULLSCREEN MODE.
|
||||
D3DMULTISAMPLE_TYPE multisamp;
|
||||
HWND parent_window;
|
||||
int m_dualhead_horz; // 0 = span both, 1 = left only, 2 = right only
|
||||
int m_dualhead_vert; // 0 = span both, 1 = top only, 2 = bottom only
|
||||
int m_skin;
|
||||
}
|
||||
DXCONTEXT_PARAMS;
|
||||
|
||||
#define MAX_DXC_ADAPTERS 32
|
||||
|
||||
class DXContext
|
||||
{
|
||||
public:
|
||||
// PUBLIC FUNCTIONS
|
||||
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); // also serves as Init() function
|
||||
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();
|
||||
|
||||
// PUBLIC DATA - DO NOT WRITE TO THESE FROM OUTSIDE THE CLASS
|
||||
int m_ready;
|
||||
HRESULT m_lastErr;
|
||||
int m_window_width;
|
||||
int m_window_height;
|
||||
int m_client_width; //in windowed mode, these are the SNAPPED (locked to nearest 32x32)
|
||||
int m_client_height; // width and height
|
||||
int m_REAL_client_width; //these are the ACTUAL (raw) width and height -
|
||||
int m_REAL_client_height; // only valid in windowed mode!
|
||||
int m_fake_fs_covers_all;
|
||||
int m_frame_delay;
|
||||
RECT m_all_monitors_rect; // rect that encompasses all monitors that make up the desktop. The primary monitor's upper-left corner is (0,0).
|
||||
RECT m_monitor_rect; // rect for monitor the plugin is running on; for pseudo-multimon modes like 2048x768, if user decides to only run on half the monitor, this rect reflects that as well.
|
||||
RECT m_monitor_rect_orig; // same, but it's the original rect; does not account for pseudo-multimon modes like 2048x768
|
||||
RECT m_monitor_work_rect; // same, but excludes the taskbar area.
|
||||
RECT m_monitor_work_rect_orig; // original work rect; does not account for pseudo-multimon modes like 2048x768
|
||||
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(); //windowed mode only
|
||||
};
|
||||
|
||||
#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
|
Loading…
Add table
Add a link
Reference in a new issue