40 lines
979 B
C++
40 lines
979 B
C++
/*
|
||
SPDX-License-Identifier: GPL-3.0-or-later
|
||
Copyright © 2025 Amebis
|
||
*/
|
||
|
||
#include "pch.h"
|
||
|
||
static wxSize GetDPIHelper(const wxWindowBase* w)
|
||
{
|
||
wxSize dpi;
|
||
|
||
if ( w )
|
||
dpi = w->GetDPI();
|
||
if ( !dpi.x || !dpi.y )
|
||
dpi = wxDisplay().GetPPI();
|
||
if ( !dpi.x || !dpi.y )
|
||
dpi = wxDisplay::GetStdPPI();
|
||
|
||
return dpi;
|
||
}
|
||
|
||
|
||
wxIconEx::wxIconEx(const wxString& name,
|
||
wxBitmapType type,
|
||
int desiredWidth, int desiredHeight,
|
||
wxWindowBase *window)
|
||
{
|
||
wxSize dpi = GetDPIHelper(window);
|
||
wxSize baseline = wxDisplay::GetStdPPI();
|
||
|
||
if (desiredWidth != wxDefaultCoord)
|
||
desiredWidth = wxMulDivInt32(desiredWidth, dpi.x, baseline.x);
|
||
|
||
if (desiredHeight != wxDefaultCoord)
|
||
desiredHeight = wxMulDivInt32(desiredHeight, dpi.y, baseline.y);
|
||
|
||
LoadFile(name, type, desiredWidth, desiredHeight);
|
||
SetScaleFactor((double)dpi.y / (double)baseline.y);
|
||
}
|