< prev index next >
src/java.desktop/windows/native/libawt/windows/ThemeReader.cpp
Print this page
*** 29,38 ****
--- 29,40 ----
#include "awt.h"
#include "awt_Toolkit.h"
#include "awt_Object.h"
#include "awt_Component.h"
+ #include "math.h"
+
// Important note about VC6 and VC7 (or XP Platform SDK) !
//
// These type definitions have been imported from UxTheme.h
// They have been imported instead of including them, because
// currently we don't require Platform SDK for building J2SE and
*** 743,752 ****
--- 745,767 ----
return dimObj;
}
return NULL;
}
+ void rescale(SIZE *size) {
+ HWND hWnd = ::GetDesktopWindow();
+ HDC hDC = ::GetDC(hWnd);
+ float dpi = ::GetDeviceCaps(hDC, LOGPIXELSX);
+
+ if (dpi !=0 && dpi != 96) {
+ float scale = dpi / 96;
+ size->cx = (int)ceil(size->cx / scale);
+ size->cy = (int)ceil(size->cy / scale);
+ }
+ ::ReleaseDC(hWnd, hDC);
+ }
+
/*
* Class: sun_awt_windows_ThemeReader
* Method: getPartSize
* Signature: (JII)Ljava/awt/Dimension;
*/
*** 768,777 ****
--- 783,794 ----
}
if (dimMID == NULL) {
dimMID = env->GetMethodID(dimClassID, "<init>", "(II)V");
CHECK_NULL_RETURN(dimMID, NULL);
}
+
+ rescale(&size);
jobject dimObj = env->NewObject(dimClassID, dimMID, size.cx, size.cy);
if (safe_ExceptionOccurred(env)) {
env->ExceptionDescribe();
env->ExceptionClear();
}
< prev index next >