Add wxIconEx
This simplifies loading DPI-aware icons. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
@@ -1,83 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<wxExtendVersion>15</wxExtendVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OutDir>..\..\..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<POCompile>
|
||||
<OutputFile>$(OutDir)..\locale\%(Filename)\$(ProjectName)$(wxExtendVersion).mo</OutputFile>
|
||||
</POCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\appbar.cpp" />
|
||||
<ClCompile Include="..\src\comutils.cpp" />
|
||||
<ClCompile Include="..\src\crypto.cpp" />
|
||||
<ClCompile Include="..\src\framemanager.cpp" />
|
||||
<ClCompile Include="..\src\hex.cpp" />
|
||||
<ClCompile Include="..\src\pch.cpp">
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\tlwgeom.cpp" />
|
||||
<ClCompile Include="..\src\url.cpp" />
|
||||
<ClCompile Include="..\src\valhex.cpp" />
|
||||
<ClCompile Include="..\src\valnet.cpp" />
|
||||
<ClCompile Include="..\src\xml.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\include\wxex\appbar.h" />
|
||||
<ClInclude Include="..\include\wxex\aui\framemanager.h" />
|
||||
<ClInclude Include="..\include\wxex\common.h" />
|
||||
<ClInclude Include="..\include\wxex\comutils.h" />
|
||||
<ClInclude Include="..\include\wxex\crypto.h" />
|
||||
<ClInclude Include="..\include\wxex\hex.h" />
|
||||
<ClInclude Include="..\include\wxex\object.h" />
|
||||
<ClInclude Include="..\include\wxex\persist\auimanager.h" />
|
||||
<ClInclude Include="..\include\wxex\persist\toplevel.h" />
|
||||
<ClInclude Include="..\include\wxex\private\tlwgeom.h" />
|
||||
<ClInclude Include="..\include\wxex\url.h" />
|
||||
<ClInclude Include="..\include\wxex\valhex.h" />
|
||||
<ClInclude Include="..\include\wxex\valnet.h" />
|
||||
<ClInclude Include="..\include\wxex\xml.h" />
|
||||
<ClInclude Include="..\src\pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="..\locale\bg_BG.po" />
|
||||
<POCompile Include="..\locale\ca_ES.po" />
|
||||
<POCompile Include="..\locale\cs_CZ.po" />
|
||||
<POCompile Include="..\locale\cy_UK.po" />
|
||||
<POCompile Include="..\locale\de_DE.po" />
|
||||
<POCompile Include="..\locale\el_GR.po" />
|
||||
<POCompile Include="..\locale\es_ES.po" />
|
||||
<POCompile Include="..\locale\et_EE.po" />
|
||||
<POCompile Include="..\locale\eu_ES.po" />
|
||||
<POCompile Include="..\locale\fi_FI.po" />
|
||||
<POCompile Include="..\locale\fr_CA.po" />
|
||||
<POCompile Include="..\locale\fr_FR.po" />
|
||||
<POCompile Include="..\locale\gl_ES.po" />
|
||||
<POCompile Include="..\locale\hr_HR.po" />
|
||||
<POCompile Include="..\locale\hu_HU.po" />
|
||||
<POCompile Include="..\locale\is_IS.po" />
|
||||
<POCompile Include="..\locale\it_IT.po" />
|
||||
<POCompile Include="..\locale\ko_KR.po" />
|
||||
<POCompile Include="..\locale\lt_LT.po" />
|
||||
<POCompile Include="..\locale\nb_NO.po" />
|
||||
<POCompile Include="..\locale\nl_NL.po" />
|
||||
<POCompile Include="..\locale\pl_PL.po" />
|
||||
<POCompile Include="..\locale\pt_PT.po" />
|
||||
<POCompile Include="..\locale\ru_RU.po" />
|
||||
<POCompile Include="..\locale\sk_SK.po" />
|
||||
<POCompile Include="..\locale\ro_RO.po" />
|
||||
<POCompile Include="..\locale\sl_SI.po" />
|
||||
<POCompile Include="..\locale\sr_RS.po" />
|
||||
<POCompile Include="..\locale\sv_SE.po" />
|
||||
<POCompile Include="..\locale\tr_TR.po" />
|
||||
<POCompile Include="..\locale\vi_VN.po" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\locale\wxExtend.pot" />
|
||||
</ItemGroup>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<wxExtendVersion>15</wxExtendVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OutDir>..\..\..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<POCompile>
|
||||
<OutputFile>$(OutDir)..\locale\%(Filename)\$(ProjectName)$(wxExtendVersion).mo</OutputFile>
|
||||
</POCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\appbar.cpp" />
|
||||
<ClCompile Include="..\src\comutils.cpp" />
|
||||
<ClCompile Include="..\src\crypto.cpp" />
|
||||
<ClCompile Include="..\src\framemanager.cpp" />
|
||||
<ClCompile Include="..\src\hex.cpp" />
|
||||
<ClCompile Include="..\src\icon.cpp" />
|
||||
<ClCompile Include="..\src\pch.cpp">
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\tlwgeom.cpp" />
|
||||
<ClCompile Include="..\src\url.cpp" />
|
||||
<ClCompile Include="..\src\valhex.cpp" />
|
||||
<ClCompile Include="..\src\valnet.cpp" />
|
||||
<ClCompile Include="..\src\xml.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\include\wxex\appbar.h" />
|
||||
<ClInclude Include="..\include\wxex\aui\framemanager.h" />
|
||||
<ClInclude Include="..\include\wxex\common.h" />
|
||||
<ClInclude Include="..\include\wxex\comutils.h" />
|
||||
<ClInclude Include="..\include\wxex\crypto.h" />
|
||||
<ClInclude Include="..\include\wxex\hex.h" />
|
||||
<ClInclude Include="..\include\wxex\icon.h" />
|
||||
<ClInclude Include="..\include\wxex\object.h" />
|
||||
<ClInclude Include="..\include\wxex\persist\auimanager.h" />
|
||||
<ClInclude Include="..\include\wxex\persist\toplevel.h" />
|
||||
<ClInclude Include="..\include\wxex\private\tlwgeom.h" />
|
||||
<ClInclude Include="..\include\wxex\url.h" />
|
||||
<ClInclude Include="..\include\wxex\valhex.h" />
|
||||
<ClInclude Include="..\include\wxex\valnet.h" />
|
||||
<ClInclude Include="..\include\wxex\xml.h" />
|
||||
<ClInclude Include="..\src\pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<POCompile Include="..\locale\bg_BG.po" />
|
||||
<POCompile Include="..\locale\ca_ES.po" />
|
||||
<POCompile Include="..\locale\cs_CZ.po" />
|
||||
<POCompile Include="..\locale\cy_UK.po" />
|
||||
<POCompile Include="..\locale\de_DE.po" />
|
||||
<POCompile Include="..\locale\el_GR.po" />
|
||||
<POCompile Include="..\locale\es_ES.po" />
|
||||
<POCompile Include="..\locale\et_EE.po" />
|
||||
<POCompile Include="..\locale\eu_ES.po" />
|
||||
<POCompile Include="..\locale\fi_FI.po" />
|
||||
<POCompile Include="..\locale\fr_CA.po" />
|
||||
<POCompile Include="..\locale\fr_FR.po" />
|
||||
<POCompile Include="..\locale\gl_ES.po" />
|
||||
<POCompile Include="..\locale\hr_HR.po" />
|
||||
<POCompile Include="..\locale\hu_HU.po" />
|
||||
<POCompile Include="..\locale\is_IS.po" />
|
||||
<POCompile Include="..\locale\it_IT.po" />
|
||||
<POCompile Include="..\locale\ko_KR.po" />
|
||||
<POCompile Include="..\locale\lt_LT.po" />
|
||||
<POCompile Include="..\locale\nb_NO.po" />
|
||||
<POCompile Include="..\locale\nl_NL.po" />
|
||||
<POCompile Include="..\locale\pl_PL.po" />
|
||||
<POCompile Include="..\locale\pt_PT.po" />
|
||||
<POCompile Include="..\locale\ru_RU.po" />
|
||||
<POCompile Include="..\locale\sk_SK.po" />
|
||||
<POCompile Include="..\locale\ro_RO.po" />
|
||||
<POCompile Include="..\locale\sl_SI.po" />
|
||||
<POCompile Include="..\locale\sr_RS.po" />
|
||||
<POCompile Include="..\locale\sv_SE.po" />
|
||||
<POCompile Include="..\locale\tr_TR.po" />
|
||||
<POCompile Include="..\locale\vi_VN.po" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\locale\wxExtend.pot" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -61,6 +61,9 @@
|
||||
<ClCompile Include="..\src\tlwgeom.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\icon.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\pch.h">
|
||||
@@ -111,6 +114,9 @@
|
||||
<ClInclude Include="..\include\wxex\persist\toplevel.h">
|
||||
<Filter>Header Files\persist</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\wxex\icon.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\locale\wxExtend.pot">
|
||||
|
||||
@@ -61,6 +61,9 @@
|
||||
<ClCompile Include="..\src\tlwgeom.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\icon.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\pch.h">
|
||||
@@ -111,6 +114,9 @@
|
||||
<ClInclude Include="..\include\wxex\persist\toplevel.h">
|
||||
<Filter>Header Files\persist</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\include\wxex\icon.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\locale\wxExtend.pot">
|
||||
|
||||
27
include/wxex/icon.h
Normal file
27
include/wxex/icon.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2025 Amebis
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <codeanalysis\warnings.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)
|
||||
#include <wx/msw/icon.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
|
||||
///
|
||||
/// Icon for DPI aware applications
|
||||
///
|
||||
class wxIconEx : public wxIcon
|
||||
{
|
||||
public:
|
||||
wxIconEx(const wxString& name,
|
||||
wxBitmapType type = wxICON_DEFAULT_TYPE,
|
||||
int desiredWidth = -1, int desiredHeight = -1,
|
||||
wxWindowBase *window = nullptr);
|
||||
};
|
||||
39
src/icon.cpp
Normal file
39
src/icon.cpp
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
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);
|
||||
}
|
||||
69
src/pch.h
69
src/pch.h
@@ -1,34 +1,35 @@
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Since including <wx/app.h> introduces wrong include order in 3.0.2,
|
||||
// include the grand <wx/wx.h> at a cost of longer pre-compilation phase.
|
||||
#include <codeanalysis\warnings.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: ALL_CODE_ANALYSIS_WARNINGS 26812 26814)
|
||||
#include <wx/wx.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include "../include/wxex/aui/framemanager.h"
|
||||
|
||||
#include "../include/wxex/persist/auimanager.h"
|
||||
#include "../include/wxex/persist/toplevel.h"
|
||||
|
||||
#include "../include/wxex/appbar.h"
|
||||
#include "../include/wxex/comutils.h"
|
||||
#include "../include/wxex/crypto.h"
|
||||
#include "../include/wxex/hex.h"
|
||||
#include "../include/wxex/object.h"
|
||||
#include "../include/wxex/url.h"
|
||||
#include "../include/wxex/valhex.h"
|
||||
#include "../include/wxex/valnet.h"
|
||||
#include "../include/wxex/xml.h"
|
||||
|
||||
#include "../include/wxex/common.h"
|
||||
|
||||
#include "../include/wxex/private/tlwgeom.h"
|
||||
/*
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Copyright © 2015-2022 Amebis
|
||||
Copyright © 2016 GÉANT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Since including <wx/app.h> introduces wrong include order in 3.0.2,
|
||||
// include the grand <wx/wx.h> at a cost of longer pre-compilation phase.
|
||||
#include <codeanalysis\warnings.h>
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: ALL_CODE_ANALYSIS_WARNINGS 26812 26814)
|
||||
#include <wx/wx.h>
|
||||
#pragma warning(pop)
|
||||
|
||||
#include "../include/wxex/aui/framemanager.h"
|
||||
|
||||
#include "../include/wxex/persist/auimanager.h"
|
||||
#include "../include/wxex/persist/toplevel.h"
|
||||
|
||||
#include "../include/wxex/appbar.h"
|
||||
#include "../include/wxex/comutils.h"
|
||||
#include "../include/wxex/crypto.h"
|
||||
#include "../include/wxex/hex.h"
|
||||
#include "../include/wxex/icon.h"
|
||||
#include "../include/wxex/object.h"
|
||||
#include "../include/wxex/url.h"
|
||||
#include "../include/wxex/valhex.h"
|
||||
#include "../include/wxex/valnet.h"
|
||||
#include "../include/wxex/xml.h"
|
||||
|
||||
#include "../include/wxex/common.h"
|
||||
|
||||
#include "../include/wxex/private/tlwgeom.h"
|
||||
|
||||
Reference in New Issue
Block a user