< 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 >