//+--------------------------------------------------------------------- // // File: himetric.cxx // // Contents: Routines to convert Pixels to Himetric and vice versa // //---------------------------------------------------------------------- #include "headers.hxx" #pragma hdrstop #define HIMETRIC_PER_INCH 2540L //+--------------------------------------------------------------- // // Function: HimetricFromHPix // // Synopsis: Converts horizontal pixel units to himetric units. // //---------------------------------------------------------------- long HimetricFromHPix(int iPix) { HDC hdc = GetDC(NULL); if (!hdc) return 0; int iPPLI = GetDeviceCaps(hdc, LOGPIXELSX); ReleaseDC(NULL, hdc); return (HIMETRIC_PER_INCH * (long)iPix)/(long)iPPLI; } //+--------------------------------------------------------------- // // Function: HimetricFromVPix // // Synopsis: Converts vertical pixel units to himetric units. // //---------------------------------------------------------------- long HimetricFromVPix(int iPix) { HDC hdc = GetDC(NULL); if (!hdc) return 0; int iPPLI = GetDeviceCaps(hdc, LOGPIXELSY); ReleaseDC(NULL, hdc); return (HIMETRIC_PER_INCH * (long)iPix)/(long)iPPLI; } //+--------------------------------------------------------------- // // Function: HPixFromHimetric // // Synopsis: Converts himetric units to horizontal pixel units. // //---------------------------------------------------------------- int HPixFromHimetric(long lHi) { HDC hdc = GetDC(NULL); if (!hdc) return 0; int iPPLI = GetDeviceCaps(hdc, LOGPIXELSX); ReleaseDC(NULL, hdc); return (int)(( (iPPLI * lHi) + (HIMETRIC_PER_INCH / 2) )/HIMETRIC_PER_INCH); } //+--------------------------------------------------------------- // // Function: VPixFromHimetric // // Synopsis: Converts himetric units to vertical pixel units. // //---------------------------------------------------------------- int VPixFromHimetric(long lHi) { HDC hdc = GetDC(NULL); if (!hdc) return 0; int iPPLI = GetDeviceCaps(hdc, LOGPIXELSY); ReleaseDC(NULL, hdc); return (int)(( (iPPLI * lHi) + (HIMETRIC_PER_INCH / 2) )/HIMETRIC_PER_INCH); }