mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-04-11 17:37:22 +10:00
@@ -384,14 +384,14 @@ HICON CreateDisabledIcon( HICON hIcon, int iconSize )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Loads an image file into a bitmap and optionally resizes it
|
// Loads an image file into a bitmap and optionally resizes it
|
||||||
HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, bool bPremultiply, std::vector<unsigned int> *pButtonAnim )
|
HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, bool bPremultiply, std::vector<unsigned int> *pButtonAnim, UINT dpi )
|
||||||
{
|
{
|
||||||
HBITMAP srcBmp=NULL;
|
HBITMAP srcBmp=NULL;
|
||||||
if (_wcsicmp(PathFindExtension(path),L".bmp")==0)
|
if (_wcsicmp(PathFindExtension(path),L".bmp")==0)
|
||||||
{
|
{
|
||||||
srcBmp=(HBITMAP)LoadImage(NULL,path,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);
|
srcBmp=(HBITMAP)LoadImage(NULL,path,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);
|
||||||
}
|
}
|
||||||
if (srcBmp && !pSize)
|
if (srcBmp && !pSize && !dpi)
|
||||||
return srcBmp;
|
return srcBmp;
|
||||||
CComPtr<IWICImagingFactory> pFactory;
|
CComPtr<IWICImagingFactory> pFactory;
|
||||||
if (FAILED(pFactory.CoCreateInstance(CLSID_WICImagingFactory)))
|
if (FAILED(pFactory.CoCreateInstance(CLSID_WICImagingFactory)))
|
||||||
@@ -482,6 +482,12 @@ HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, b
|
|||||||
else
|
else
|
||||||
frameHeightD=frameWidthD*frameHeightS/frameWidthS;
|
frameHeightD=frameWidthD*frameHeightS/frameWidthS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dpi)
|
||||||
|
{
|
||||||
|
frameWidthD=ScaleForDpi(dpi,frameWidthD);
|
||||||
|
frameHeightD=ScaleForDpi(dpi,frameHeightD);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BITMAPINFO bi={0};
|
BITMAPINFO bi={0};
|
||||||
@@ -946,7 +952,12 @@ UINT GetDpi(HWND hwnd)
|
|||||||
return dpi;
|
return dpi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ScaleForDpi(UINT dpi, int value)
|
||||||
|
{
|
||||||
|
return MulDiv(value, dpi, USER_DEFAULT_SCREEN_DPI);
|
||||||
|
}
|
||||||
|
|
||||||
int ScaleForDpi(HWND hwnd, int value)
|
int ScaleForDpi(HWND hwnd, int value)
|
||||||
{
|
{
|
||||||
return MulDiv(value, GetDpi(hwnd), USER_DEFAULT_SCREEN_DPI);
|
return ScaleForDpi(GetDpi(hwnd), value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ HICON ShExtractIcon( const char *path, int index, int iconSize );
|
|||||||
HBITMAP BitmapFromIcon( HICON hIcon, int iconSize, unsigned int **pBits, bool bDestroyIcon );
|
HBITMAP BitmapFromIcon( HICON hIcon, int iconSize, unsigned int **pBits, bool bDestroyIcon );
|
||||||
|
|
||||||
// Loads an image file into a bitmap and optionally resizes it
|
// Loads an image file into a bitmap and optionally resizes it
|
||||||
HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, bool bPremultiply, std::vector<unsigned int> *pButtonAnim );
|
HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, bool bPremultiply, std::vector<unsigned int> *pButtonAnim, UINT dpi=0 );
|
||||||
|
|
||||||
// Loads a bitmap from a IMAGE resource
|
// Loads a bitmap from a IMAGE resource
|
||||||
HBITMAP LoadImageResource( HMODULE hModule, const wchar_t *name, bool bTopDown, bool bPremultiply );
|
HBITMAP LoadImageResource( HMODULE hModule, const wchar_t *name, bool bTopDown, bool bPremultiply );
|
||||||
@@ -88,6 +88,8 @@ HFONT CreateFontSetting( const wchar_t *fontStr, int dpi );
|
|||||||
// Return DPI of given window (or system DPI on older systems)
|
// Return DPI of given window (or system DPI on older systems)
|
||||||
UINT GetDpi(HWND hwnd = nullptr);
|
UINT GetDpi(HWND hwnd = nullptr);
|
||||||
|
|
||||||
|
// Scale given value according to given DPI
|
||||||
|
int ScaleForDpi(UINT dpi, int value);
|
||||||
// Scale given value according to DPI of window
|
// Scale given value according to DPI of window
|
||||||
int ScaleForDpi(HWND hwnd, int value);
|
int ScaleForDpi(HWND hwnd, int value);
|
||||||
|
|
||||||
|
|||||||
@@ -526,16 +526,16 @@ void CStartButton::LoadBitmap( void )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
int dpi=GetDpi(GetParent());
|
||||||
bool bResource=false;
|
bool bResource=false;
|
||||||
std::vector<unsigned int> buttonAnim;
|
std::vector<unsigned int> buttonAnim;
|
||||||
if (*path)
|
if (*path)
|
||||||
{
|
{
|
||||||
m_Bitmap=LoadImageFile(path,&size,true,true,&buttonAnim);
|
m_Bitmap=LoadImageFile(path,&size,true,true,&buttonAnim,dpi);
|
||||||
}
|
}
|
||||||
if (!m_Bitmap)
|
if (!m_Bitmap)
|
||||||
{
|
{
|
||||||
int id;
|
int id;
|
||||||
int dpi=GetDpi(GetParent());
|
|
||||||
if (dpi<120)
|
if (dpi<120)
|
||||||
id=IDB_BUTTON96;
|
id=IDB_BUTTON96;
|
||||||
else if (dpi<144)
|
else if (dpi<144)
|
||||||
|
|||||||
Reference in New Issue
Block a user