123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /*
- 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_UTILITY_H__
- #define __NULLSOFT_DX9_PLUGIN_SHELL_UTILITY_H__ 1
- #include <windows.h>
- #include <crtdefs.h>
- #include <d3d9.h>
- #include <d3dx9.h>
- #define SafeRelease(x) { if (x) {x->Release(); x=NULL;} }
- #define SafeDelete(x) { if (x) {delete x; x=NULL;} }
- #define IsNullGuid(lpGUID) ( ((int*)lpGUID)[0]==0 && ((int*)lpGUID)[1]==0 && ((int*)lpGUID)[2]==0 && ((int*)lpGUID)[3]==0 )
- #define DlgItemIsChecked(hDlg, nIDDlgItem) ((SendDlgItemMessage(hDlg, nIDDlgItem, BM_GETCHECK, (WPARAM) 0, (LPARAM) 0) == BST_CHECKED) ? true : false)
- #define CosineInterp(x) (0.5f - 0.5f*cosf((x) * 3.1415926535898f))
- #define InvCosineInterp(x) (acosf(1.0f - 2.0f*(x))/3.1415926535898f)
- float PowCosineInterp(float x, float pow);
- float AdjustRateToFPS(float per_frame_decay_rate_at_fps1, float fps1, float actual_fps);
- //int GetPrivateProfileInt - part of Win32 API
- #define GetPrivateProfileBoolW(w,x,y,z) ((bool)(GetPrivateProfileIntW(w,x,y,z) != 0))
- #define GetPrivateProfileBOOLW(w,x,y,z) ((BOOL)(GetPrivateProfileIntW(w,x,y,z) != 0))
- float GetPrivateProfileFloatW(wchar_t *szSectionName, wchar_t *szKeyName, float fDefault, wchar_t *szIniFile);
- bool WritePrivateProfileIntW(int d, wchar_t *szKeyName, wchar_t *szIniFile, wchar_t *szSectionName);
- bool WritePrivateProfileFloatW(float f, wchar_t *szKeyName, wchar_t *szIniFile, wchar_t *szSectionName);
- extern _locale_t g_use_C_locale;
- extern char keyMappings[8];
- void SetScrollLock(int bNewState, bool bPreventHandling);
- void RemoveExtension(wchar_t *str);
- void RemoveSingleAmpersands(wchar_t *str);
- void TextToGuid(char *str, GUID *pGUID);
- void GuidToText(GUID *pGUID, char *str, int nStrLen);
- //int GetPentiumTimeRaw(unsigned __int64 *cpu_timestamp);
- //double GetPentiumTimeAsDouble(unsigned __int64 frequency);
- #ifdef _DEBUG
- void OutputDebugMessage(char *szStartText, HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam); // only available in RELEASE builds!
- #endif
- void MissingDirectX(HWND hwnd);
- bool CheckForMMX();
- bool CheckForSSE();
- void GetDesktopFolder(char *szDesktopFolder); // should be MAX_PATH len.
- #include "icon_t.h"
- #include <shlobj.h>
- #include <list>
- BOOL DoExplorerMenu (HWND hwnd, LPCTSTR pszPath, POINT point);
- BOOL DoExplorerMenu (HWND hwnd, LPITEMIDLIST pidl, POINT point);
- UINT GetItemCount (LPITEMIDLIST pidl);
- LPITEMIDLIST GetNextItem (LPITEMIDLIST pidl);
- LPITEMIDLIST DuplicateItem (LPMALLOC pMalloc, LPITEMIDLIST pidl);
- void FindDesktopWindows(HWND *desktop_progman, HWND *desktopview_wnd, HWND *listview_wnd);
- void ExecutePidl(LPITEMIDLIST pidl, char *szPathAndFile, char *szWorkingDirectory, HWND hWnd);
- int GetDesktopIconSize();
- // handy functions for populating Combo Boxes:
- inline void AddItem(HWND ctrl, const wchar_t* text, DWORD itemdata) {
- LRESULT nPos = SendMessageW( ctrl, CB_ADDSTRING, 0, (LPARAM)text);
- SendMessage( ctrl, CB_SETITEMDATA, nPos, itemdata);
- }
- inline void SelectItemByPos(HWND ctrl, int pos) {
- SendMessage(ctrl, CB_SETCURSEL, pos, 0);
- }
- int SelectItemByValue(HWND ctrl, DWORD value);
- bool ReadCBValue(HWND hwnd, DWORD ctrl_id, int* pRetValue);
- LRESULT GetWinampVersion(HWND winamp);
- void* GetTextResource(UINT id, int no_fallback);
- HMODULE FindD3DX9(HWND winamp);
- intptr_t myOpenURL(HWND hwnd, wchar_t *loc);
- typedef HRESULT (WINAPI *D3DXCREATEFONTW)(LPDIRECT3DDEVICE9, INT, UINT, UINT, UINT, BOOL, DWORD, DWORD, DWORD, DWORD, LPCWSTR, LPD3DXFONT *);
- extern D3DXCREATEFONTW pCreateFontW;
- typedef D3DXMATRIX *(WINAPI *D3DXMATRIXMULTIPLY)(D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2);
- extern D3DXMATRIXMULTIPLY pMatrixMultiply;
- typedef D3DXMATRIX* (WINAPI *D3DXMATRIXTRANSLATION)( D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z );
- extern D3DXMATRIXTRANSLATION pMatrixTranslation;
- typedef D3DXMATRIX* (WINAPI *D3DXMATRIXSCALING)( D3DXMATRIX *pOut, FLOAT sx, FLOAT sy, FLOAT sz );
- extern D3DXMATRIXSCALING pMatrixScaling;
- typedef D3DXMATRIX* (WINAPI *D3DXMATRIXROTATION)( D3DXMATRIX *pOut, FLOAT Angle );
- extern D3DXMATRIXROTATION pMatrixRotationX, pMatrixRotationY, pMatrixRotationZ;
- typedef HRESULT (WINAPI *D3DXCREATETEXTUREFROMFILEEXW)(
- LPDIRECT3DDEVICE9 pDevice,
- LPCWSTR pSrcFile,
- UINT Width,
- UINT Height,
- UINT MipLevels,
- DWORD Usage,
- D3DFORMAT Format,
- D3DPOOL Pool,
- DWORD Filter,
- DWORD MipFilter,
- D3DCOLOR ColorKey,
- D3DXIMAGE_INFO* pSrcInfo,
- PALETTEENTRY* pPalette,
- LPDIRECT3DTEXTURE9* ppTexture);
- extern D3DXCREATETEXTUREFROMFILEEXW pCreateTextureFromFileExW;
- typedef D3DXMATRIX* (WINAPI *D3DXMATRIXORTHOLH)(D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
- extern D3DXMATRIXORTHOLH pMatrixOrthoLH;
- typedef HRESULT (WINAPI *D3DXCOMPILESHADER)(
- LPCSTR pSrcData,
- UINT SrcDataLen,
- CONST D3DXMACRO* pDefines,
- LPD3DXINCLUDE pInclude,
- LPCSTR pFunctionName,
- LPCSTR pProfile,
- DWORD Flags,
- LPD3DXBUFFER* ppShader,
- LPD3DXBUFFER* ppErrorMsgs,
- LPD3DXCONSTANTTABLE* ppConstantTable);
- extern D3DXCOMPILESHADER pCompileShader;
- typedef D3DXMATRIX* (WINAPI *D3DXMATRIXLOOKATLH)( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt, CONST D3DXVECTOR3 *pUp );
- extern D3DXMATRIXLOOKATLH pMatrixLookAtLH;
- typedef HRESULT (WINAPI *D3DXCREATETEXTURE)(
- LPDIRECT3DDEVICE9 pDevice,
- UINT Width,
- UINT Height,
- UINT MipLevels,
- DWORD Usage,
- D3DFORMAT Format,
- D3DPOOL Pool,
- LPDIRECT3DTEXTURE9* ppTexture);
- extern D3DXCREATETEXTURE pCreateTexture;
- #endif
|