nim_duilib/duilib/Utils/DpiManager.h

114 lines
2.2 KiB
C
Raw Normal View History

2019-04-19 17:19:57 +08:00
#ifndef UI_UTILS_DPIMANAGER_H_
#define UI_UTILS_DPIMANAGER_H_
#pragma once
namespace ui
{
/** @class DpiManager
* @brief DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @copyright (c) 2016, NetEase Inc. All rights reserved
* @author Redrain
* @date 2016/10/10
*/
class UILIB_API DpiManager
{
public:
static DpiManager* GetInstance();
/**
* @brief <EFBFBD><EFBFBD>ȡϵͳDPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* @return UINT DPI
*/
static UINT GetSystemDPI();
/**
* @brief <EFBFBD><EFBFBD>ȡij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* @param[in] HMONITOR<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return UINT DPI
*/
static UINT GetMonitorDPI(HMONITOR hMonitor);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* @return UINT DPI
*/
static UINT GetMainMonitorDPI();
/**
* @brief <EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡDPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD>֪Ҳ<EFBFBD><EFBFBD>Ч
* @return UINT DPI
*/
static UINT GetDPIFromRegistry();
/**
* @brief <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
* @return bool true <EFBFBD>ǣ<EFBFBD>false <EFBFBD><EFBFBD>
*/
bool IsAdaptDPI();
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return bool true <EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD><EFBFBD><EFBFBD>false <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
*/
bool SetAdaptDPI();
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>
* @return UINT <EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>
*/
UINT GetScale();
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPIֵ<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>űȣ<EFBFBD>ֻ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* @param[in] uDPI DPIֵ
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
void SetScale(UINT uDPI);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* @param[in] iValue <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return int <EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
int ScaleInt(int &iValue);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SIZE<EFBFBD><EFBFBD>ֻ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* @param[in] pSize SIZEָ<EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
void ScaleSize(SIZE &size);
void ScaleSize(CSize &size);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>POINT<EFBFBD><EFBFBD>ֻ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* @param[in] pSize SIZEָ<EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
void ScalePoint(POINT &point);
void ScalePoint(CPoint &point);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RECT<EFBFBD><EFBFBD>ֻ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
* @param[in] pSize SIZEָ<EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
void ScaleRect(RECT &rect);
void ScaleRect(UiRect &rect);
private:
DpiManager();
~DpiManager() {};
DpiManager(const DpiManager&) = delete;
DpiManager& operator = (const DpiManager&) = delete;
private:
int m_nScaleFactor;
bool m_bAdaptDPI;
};
}
#endif //UI_UTILS_DPIMANAGER_H_