Files
wxExtend/src/icon.cpp
Simon Rozman fd16ef2909 Add wxIconEx
This simplifies loading DPI-aware icons.

Signed-off-by: Simon Rozman <simon@rozman.si>
2025-11-04 15:48:19 +01:00

40 lines
979 B
C++
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
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);
}