Add "Use D2D rendering" option to skin context menu

This commit is contained in:
Birunthan Mohanathas
2013-10-06 10:57:24 +03:00
parent 21d9c0698f
commit 6df7d5d509
5 changed files with 48 additions and 12 deletions

View File

@@ -121,6 +121,7 @@ MeterWindow::MeterWindow(const std::wstring& folderPath, const std::wstring& fil
m_ClickThrough(false),
m_KeepOnScreen(true),
m_AutoSelectScreen(false),
m_UseD2D(true),
m_Dragging(false),
m_Dragged(false),
m_BackgroundMode(BGMODE_IMAGE),
@@ -1928,6 +1929,7 @@ void MeterWindow::ReadOptions()
m_KeepOnScreen = parser.ReadBool(section, L"KeepOnScreen", true);
addWriteFlag(OPTION_KEEPONSCREEN);
m_UseD2D = parser.ReadBool(section, L"UseD2D", true);
m_SavePosition = parser.ReadBool(section, L"SavePosition", true);
m_WindowStartHidden = parser.ReadBool(section, L"StartHidden", false);
m_AutoSelectScreen = parser.ReadBool(section, L"AutoSelectScreen", false);
@@ -2041,6 +2043,11 @@ void MeterWindow::WriteOptions(INT setting)
_itow_s(m_WindowZPosition, buffer, 10);
WritePrivateProfileString(section, L"AlwaysOnTop", buffer, iniFile);
}
if (setting & OPTION_USED2D)
{
WritePrivateProfileString(section, L"UseD2D", m_UseD2D ? L"1" : L"0", iniFile);
}
}
}
@@ -2070,14 +2077,8 @@ bool MeterWindow::ReadSkin()
// Read options from Rainmeter.ini.
ReadOptions();
// Temporarily read "__UseD2D" from skin for easy testing
bool useD2D = GetRainmeter().GetUseD2D();
if (revision_beta)
{
useD2D = m_Parser.ReadBool(L"Rainmeter", L"__UseD2D", useD2D);
}
m_Canvas = Gfx::Canvas::Create(useD2D ? Gfx::Renderer::PreferD2D : Gfx::Renderer::GDIP);
m_Canvas = Gfx::Canvas::Create(
m_UseD2D && GetRainmeter().GetUseD2D() ? Gfx::Renderer::PreferD2D : Gfx::Renderer::GDIP);
m_Canvas->SetAccurateText(m_Parser.ReadBool(L"Rainmeter", L"AccurateText", false));
const auto d2dParams = m_Parser.ReadFloats(L"Rainmeter", L"__D2DParams");
@@ -3437,6 +3438,10 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam)
SetKeepOnScreen(!m_KeepOnScreen);
break;
case IDM_SKIN_USED2D:
SetUseD2D(!m_UseD2D);
break;
case IDM_SKIN_CLICKTHROUGH:
SetClickThrough(!m_ClickThrough);
break;
@@ -3625,6 +3630,17 @@ void MeterWindow::SetKeepOnScreen(bool b)
}
}
/*
** Helper function for setting UseD2D
**
*/
void MeterWindow::SetUseD2D(bool b)
{
m_UseD2D = b;
WriteOptions(OPTION_USED2D);
Refresh(false);
}
/*
** Helper function for setting WindowDraggable
**