mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Add "Use D2D rendering" option to skin context menu
This commit is contained in:
parent
21d9c0698f
commit
6df7d5d509
@ -38,6 +38,9 @@ namespace Gfx {
|
|||||||
class CanvasD2D : public Canvas
|
class CanvasD2D : public Canvas
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
static bool Initialize();
|
||||||
|
static void Finalize();
|
||||||
|
|
||||||
virtual void Resize(int w, int h);
|
virtual void Resize(int w, int h);
|
||||||
|
|
||||||
virtual bool BeginDraw();
|
virtual bool BeginDraw();
|
||||||
@ -81,9 +84,6 @@ private:
|
|||||||
~CanvasD2D();
|
~CanvasD2D();
|
||||||
CanvasD2D(const CanvasD2D& other) {}
|
CanvasD2D(const CanvasD2D& other) {}
|
||||||
|
|
||||||
static bool Initialize();
|
|
||||||
static void Finalize();
|
|
||||||
|
|
||||||
bool BeginTargetDraw();
|
bool BeginTargetDraw();
|
||||||
void EndTargetDraw();
|
void EndTargetDraw();
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "StdAfx.h"
|
#include "StdAfx.h"
|
||||||
#include "../Common/MenuTemplate.h"
|
#include "../Common/MenuTemplate.h"
|
||||||
|
#include "../Common/Gfx/CanvasD2D.h"
|
||||||
#include "ContextMenu.h"
|
#include "ContextMenu.h"
|
||||||
#include "Rainmeter.h"
|
#include "Rainmeter.h"
|
||||||
#include "Litestep.h"
|
#include "Litestep.h"
|
||||||
@ -238,7 +239,8 @@ HMENU ContextMenu::CreateSkinMenu(MeterWindow* meterWindow, int index, HMENU men
|
|||||||
MENU_ITEM(IDM_SKIN_REMEMBERPOSITION, ID_STR_SAVEPOSITION),
|
MENU_ITEM(IDM_SKIN_REMEMBERPOSITION, ID_STR_SAVEPOSITION),
|
||||||
MENU_ITEM(IDM_SKIN_SNAPTOEDGES, ID_STR_SNAPTOEDGES),
|
MENU_ITEM(IDM_SKIN_SNAPTOEDGES, ID_STR_SNAPTOEDGES),
|
||||||
MENU_ITEM(IDM_SKIN_CLICKTHROUGH, ID_STR_CLICKTHROUGH),
|
MENU_ITEM(IDM_SKIN_CLICKTHROUGH, ID_STR_CLICKTHROUGH),
|
||||||
MENU_ITEM(IDM_SKIN_KEEPONSCREEN, ID_STR_KEEPONSCREEN)),
|
MENU_ITEM(IDM_SKIN_KEEPONSCREEN, ID_STR_KEEPONSCREEN),
|
||||||
|
MENU_ITEM(IDM_SKIN_USED2D, ID_STR_USED2D)),
|
||||||
MENU_SEPARATOR(),
|
MENU_SEPARATOR(),
|
||||||
MENU_ITEM(IDM_SKIN_MANAGESKIN, ID_STR_MANAGESKIN),
|
MENU_ITEM(IDM_SKIN_MANAGESKIN, ID_STR_MANAGESKIN),
|
||||||
MENU_ITEM(IDM_SKIN_EDITSKIN, ID_STR_EDITSKIN),
|
MENU_ITEM(IDM_SKIN_EDITSKIN, ID_STR_EDITSKIN),
|
||||||
@ -341,6 +343,19 @@ HMENU ContextMenu::CreateSkinMenu(MeterWindow* meterWindow, int index, HMENU men
|
|||||||
{
|
{
|
||||||
CheckMenuItem(settingsMenu, IDM_SKIN_KEEPONSCREEN, MF_BYCOMMAND | MF_CHECKED);
|
CheckMenuItem(settingsMenu, IDM_SKIN_KEEPONSCREEN, MF_BYCOMMAND | MF_CHECKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Gfx::CanvasD2D::Initialize())
|
||||||
|
{
|
||||||
|
if (meterWindow->GetUseD2D())
|
||||||
|
{
|
||||||
|
CheckMenuItem(settingsMenu, IDM_SKIN_USED2D, MF_BYCOMMAND | MF_CHECKED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DeleteMenu(settingsMenu, IDM_SKIN_USED2D, MF_BYCOMMAND);
|
||||||
|
}
|
||||||
|
Gfx::CanvasD2D::Finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the name of the Skin to the menu
|
// Add the name of the Skin to the menu
|
||||||
|
@ -121,6 +121,7 @@ MeterWindow::MeterWindow(const std::wstring& folderPath, const std::wstring& fil
|
|||||||
m_ClickThrough(false),
|
m_ClickThrough(false),
|
||||||
m_KeepOnScreen(true),
|
m_KeepOnScreen(true),
|
||||||
m_AutoSelectScreen(false),
|
m_AutoSelectScreen(false),
|
||||||
|
m_UseD2D(true),
|
||||||
m_Dragging(false),
|
m_Dragging(false),
|
||||||
m_Dragged(false),
|
m_Dragged(false),
|
||||||
m_BackgroundMode(BGMODE_IMAGE),
|
m_BackgroundMode(BGMODE_IMAGE),
|
||||||
@ -1928,6 +1929,7 @@ void MeterWindow::ReadOptions()
|
|||||||
m_KeepOnScreen = parser.ReadBool(section, L"KeepOnScreen", true);
|
m_KeepOnScreen = parser.ReadBool(section, L"KeepOnScreen", true);
|
||||||
addWriteFlag(OPTION_KEEPONSCREEN);
|
addWriteFlag(OPTION_KEEPONSCREEN);
|
||||||
|
|
||||||
|
m_UseD2D = parser.ReadBool(section, L"UseD2D", true);
|
||||||
m_SavePosition = parser.ReadBool(section, L"SavePosition", true);
|
m_SavePosition = parser.ReadBool(section, L"SavePosition", true);
|
||||||
m_WindowStartHidden = parser.ReadBool(section, L"StartHidden", false);
|
m_WindowStartHidden = parser.ReadBool(section, L"StartHidden", false);
|
||||||
m_AutoSelectScreen = parser.ReadBool(section, L"AutoSelectScreen", false);
|
m_AutoSelectScreen = parser.ReadBool(section, L"AutoSelectScreen", false);
|
||||||
@ -2041,6 +2043,11 @@ void MeterWindow::WriteOptions(INT setting)
|
|||||||
_itow_s(m_WindowZPosition, buffer, 10);
|
_itow_s(m_WindowZPosition, buffer, 10);
|
||||||
WritePrivateProfileString(section, L"AlwaysOnTop", buffer, iniFile);
|
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.
|
// Read options from Rainmeter.ini.
|
||||||
ReadOptions();
|
ReadOptions();
|
||||||
|
|
||||||
// Temporarily read "__UseD2D" from skin for easy testing
|
m_Canvas = Gfx::Canvas::Create(
|
||||||
bool useD2D = GetRainmeter().GetUseD2D();
|
m_UseD2D && GetRainmeter().GetUseD2D() ? Gfx::Renderer::PreferD2D : Gfx::Renderer::GDIP);
|
||||||
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->SetAccurateText(m_Parser.ReadBool(L"Rainmeter", L"AccurateText", false));
|
m_Canvas->SetAccurateText(m_Parser.ReadBool(L"Rainmeter", L"AccurateText", false));
|
||||||
|
|
||||||
const auto d2dParams = m_Parser.ReadFloats(L"Rainmeter", L"__D2DParams");
|
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);
|
SetKeepOnScreen(!m_KeepOnScreen);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IDM_SKIN_USED2D:
|
||||||
|
SetUseD2D(!m_UseD2D);
|
||||||
|
break;
|
||||||
|
|
||||||
case IDM_SKIN_CLICKTHROUGH:
|
case IDM_SKIN_CLICKTHROUGH:
|
||||||
SetClickThrough(!m_ClickThrough);
|
SetClickThrough(!m_ClickThrough);
|
||||||
break;
|
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
|
** Helper function for setting WindowDraggable
|
||||||
**
|
**
|
||||||
|
@ -188,6 +188,7 @@ public:
|
|||||||
|
|
||||||
bool GetClickThrough() { return m_ClickThrough; }
|
bool GetClickThrough() { return m_ClickThrough; }
|
||||||
bool GetKeepOnScreen() { return m_KeepOnScreen; }
|
bool GetKeepOnScreen() { return m_KeepOnScreen; }
|
||||||
|
bool GetUseD2D() { return m_UseD2D; }
|
||||||
bool GetAutoSelectScreen() { return m_AutoSelectScreen; }
|
bool GetAutoSelectScreen() { return m_AutoSelectScreen; }
|
||||||
bool GetWindowDraggable() { return m_WindowDraggable; }
|
bool GetWindowDraggable() { return m_WindowDraggable; }
|
||||||
bool GetSavePosition() { return m_SavePosition; }
|
bool GetSavePosition() { return m_SavePosition; }
|
||||||
@ -276,6 +277,7 @@ private:
|
|||||||
OPTION_KEEPONSCREEN = 0x00000100,
|
OPTION_KEEPONSCREEN = 0x00000100,
|
||||||
OPTION_AUTOSELECTSCREEN = 0x00000200,
|
OPTION_AUTOSELECTSCREEN = 0x00000200,
|
||||||
OPTION_ALWAYSONTOP = 0x00000400,
|
OPTION_ALWAYSONTOP = 0x00000400,
|
||||||
|
OPTION_USED2D = 0x00000800,
|
||||||
|
|
||||||
OPTION_ALL = 0xFFFFFFFF
|
OPTION_ALL = 0xFFFFFFFF
|
||||||
};
|
};
|
||||||
@ -300,6 +302,7 @@ private:
|
|||||||
void HandleButtons(POINT pos, BUTTONPROC proc, bool execute = true);
|
void HandleButtons(POINT pos, BUTTONPROC proc, bool execute = true);
|
||||||
void SetClickThrough(bool b);
|
void SetClickThrough(bool b);
|
||||||
void SetKeepOnScreen(bool b);
|
void SetKeepOnScreen(bool b);
|
||||||
|
void SetUseD2D(bool b);
|
||||||
void SetWindowDraggable(bool b);
|
void SetWindowDraggable(bool b);
|
||||||
void SetSavePosition(bool b);
|
void SetSavePosition(bool b);
|
||||||
void SavePositionIfAppropriate();
|
void SavePositionIfAppropriate();
|
||||||
@ -386,6 +389,7 @@ private:
|
|||||||
bool m_DynamicWindowSize;
|
bool m_DynamicWindowSize;
|
||||||
bool m_ClickThrough;
|
bool m_ClickThrough;
|
||||||
bool m_KeepOnScreen;
|
bool m_KeepOnScreen;
|
||||||
|
bool m_UseD2D;
|
||||||
bool m_AutoSelectScreen;
|
bool m_AutoSelectScreen;
|
||||||
bool m_Dragging;
|
bool m_Dragging;
|
||||||
bool m_Dragged;
|
bool m_Dragged;
|
||||||
|
@ -205,6 +205,7 @@
|
|||||||
#define IDM_MANAGESKINSMENU_REFRESH 4057
|
#define IDM_MANAGESKINSMENU_REFRESH 4057
|
||||||
#define IDM_MANAGESKINSMENU_EDIT 4058
|
#define IDM_MANAGESKINSMENU_EDIT 4058
|
||||||
#define IDM_COPY 4059
|
#define IDM_COPY 4059
|
||||||
|
#define IDM_SKIN_USED2D 4060
|
||||||
|
|
||||||
#define IDM_SKIN_CUSTOMCONTEXTMENU_FIRST 9000
|
#define IDM_SKIN_CUSTOMCONTEXTMENU_FIRST 9000
|
||||||
#define IDM_SKIN_CUSTOMCONTEXTMENU_LAST 9014
|
#define IDM_SKIN_CUSTOMCONTEXTMENU_LAST 9014
|
||||||
|
Loading…
Reference in New Issue
Block a user