< prev index next >
src/java.desktop/windows/native/common/awt/systemscale/systemScale.cpp
Print this page
*** 21,31 ****
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#include "systemScale.h"
- #include <d2d1.h>
#include <jdk_util.h>
#ifndef MDT_EFFECTIVE_DPI
#define MDT_EFFECTIVE_DPI 0
#endif
--- 21,30 ----
*** 50,62 ****
if (scale > 0) {
*dpiX = *dpiY = scale;
return;
}
- typedef HRESULT(WINAPI D2D1CreateFactoryFunc)
- (D2D1_FACTORY_TYPE, REFIID,
- CONST D2D1_FACTORY_OPTIONS*, ID2D1Factory**);
typedef HRESULT(WINAPI GetDpiForMonitorFunc)(HMONITOR, int, UINT*, UINT*);
static HMODULE hLibSHCoreDll = NULL;
static GetDpiForMonitorFunc *lpGetDpiForMonitor = NULL;
if (hLibSHCoreDll == NULL) {
--- 49,58 ----
*** 73,106 ****
if (hResult == S_OK) {
*dpiX = static_cast<float>(x);
*dpiY = static_cast<float>(y);
}
} else {
! static HMODULE d2dDll = NULL;
! static BOOL loadAttempted = FALSE;
! static D2D1CreateFactoryFunc *lpD2D1CreateFactory = NULL;
! if (!loadAttempted && d2dDll == NULL) {
! loadAttempted = TRUE;
! d2dDll = JDK_LoadSystemLibrary("d2d1.dll");
! }
! if (d2dDll != NULL && lpD2D1CreateFactory == NULL) {
! lpD2D1CreateFactory = (D2D1CreateFactoryFunc*)GetProcAddress(
! d2dDll, "D2D1CreateFactory");
! }
! if (lpD2D1CreateFactory != NULL) {
! ID2D1Factory* m_pDirect2dFactory;
! HRESULT res = lpD2D1CreateFactory
! (D2D1_FACTORY_TYPE_SINGLE_THREADED,
! __uuidof(ID2D1Factory), NULL,
! &m_pDirect2dFactory);
! if (res == S_OK) {
! #pragma warning(push)
! #pragma warning(disable : 4996) // GetDesktopDpi is deprecated.
! m_pDirect2dFactory->GetDesktopDpi(dpiX, dpiY);
! #pragma warning(pop)
! m_pDirect2dFactory->Release();
! }
}
}
return;
}
--- 69,83 ----
if (hResult == S_OK) {
*dpiX = static_cast<float>(x);
*dpiY = static_cast<float>(y);
}
} else {
! HDC hdc = GetDC(NULL);
! if (hdc) {
! *dpiX = static_cast<float>(GetDeviceCaps(hdc, LOGPIXELSX));
! *dpiY = static_cast<float>(GetDeviceCaps(hdc, LOGPIXELSY));
! ReleaseDC(NULL, hdc);
}
}
return;
}
< prev index next >