/******************************************************************************* * GdipGetFontHeight [GDIPLUS.@] * PARAMS * font [I] Font to retrieve height from * graphics [I] The current graphics context * height [O] Resulting height * RETURNS * SUCCESS: Ok * FAILURE: Another element of GpStatus * * NOTES * Forwards to GdipGetFontHeightGivenDPI */ GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont *font, GDIPCONST GpGraphics *graphics, REAL *height) { REAL dpi; GpStatus stat; REAL font_height; TRACE("%p %p %p\n", font, graphics, height); stat = GdipGetFontHeightGivenDPI(font, font->family->dpi, &font_height); if (stat != Ok) return stat; if (!graphics) { *height = font_height; TRACE("%s,%d => %f\n", debugstr_w(font->family->FamilyName), font->otm.otmTextMetrics.tmHeight, *height); return Ok; } stat = GdipGetDpiY((GpGraphics *)graphics, &dpi); if (stat != Ok) return stat; *height = pixels_to_units(font_height, graphics->unit, dpi); TRACE("%s,%d(unit %d) => %f\n", debugstr_w(font->family->FamilyName), font->otm.otmTextMetrics.tmHeight, graphics->unit, *height); return Ok; }
/******************************************************************************* * GdipGetFontHeight [GDIPLUS.@] * PARAMS * font [I] Font to retrieve height from * graphics [I] The current graphics context * height [O] Resulting height * RETURNS * SUCCESS: Ok * FAILURE: Another element of GpStatus * * NOTES * Forwards to GdipGetFontHeightGivenDPI */ GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont *font, GDIPCONST GpGraphics *graphics, REAL *height) { REAL dpi; TRACE("%p %p %p\n", font, graphics, height); dpi = GetDeviceCaps(graphics->hdc, LOGPIXELSY); return GdipGetFontHeightGivenDPI(font, dpi, height); }
/******************************************************************************* * GdipGetFontHeight [GDIPLUS.@] * PARAMS * font [I] Font to retrieve height from * graphics [I] The current graphics context * height [O] Resulting height * RETURNS * SUCCESS: Ok * FAILURE: Another element of GpStatus * * NOTES * Forwards to GdipGetFontHeightGivenDPI */ GpStatus WINGDIPAPI GdipGetFontHeight(GDIPCONST GpFont *font, GDIPCONST GpGraphics *graphics, REAL *height) { REAL dpi; GpStatus stat; TRACE("%p %p %p\n", font, graphics, height); if (graphics) { stat = GdipGetDpiY((GpGraphics*)graphics, &dpi); if (stat != Ok) return stat; } else dpi = font->family->dpi; return GdipGetFontHeightGivenDPI(font, dpi, height); }
static void test_heightgivendpi(void) { GpStatus stat; GpFont* font = NULL; GpFontFamily* fontfamily = NULL; REAL height; Unit unit; stat = GdipCreateFontFamilyFromName(Tahoma, NULL, &fontfamily); expect(Ok, stat); stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitPixel, &font); expect(Ok, stat); stat = GdipGetFontHeightGivenDPI(NULL, 96, &height); expect(InvalidParameter, stat); stat = GdipGetFontHeightGivenDPI(font, 96, NULL); expect(InvalidParameter, stat); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf(36.210938, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitWorld, &font); expect(Ok, stat); stat = GdipGetFontUnit(font, &unit); expect(Ok, stat); expect(UnitWorld, unit); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf(36.210938, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitPoint, &font); expect(Ok, stat); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf(48.281250, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitInch, &font); expect(Ok, stat); stat = GdipGetFontUnit(font, &unit); expect(Ok, stat); expect(UnitInch, unit); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf(3476.250000, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitDocument, &font); expect(Ok, stat); stat = GdipGetFontUnit(font, &unit); expect(Ok, stat); expect(UnitDocument, unit); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf(11.587500, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitMillimeter, &font); expect(Ok, stat); stat = GdipGetFontUnit(font, &unit); expect(Ok, stat); expect(UnitMillimeter, unit); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf(136.860245, height); GdipDeleteFont(font); GdipDeleteFontFamily(fontfamily); }
static void test_heightgivendpi(void) { GpStatus stat; GpFont* font = NULL; GpFontFamily* fontfamily = NULL; REAL height; stat = GdipCreateFontFamilyFromName(arial, NULL, &fontfamily); if(stat == FontFamilyNotFound) { skip("Arial not installed\n"); return; } expect(Ok, stat); stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitPixel, &font); expect(Ok, stat); stat = GdipGetFontHeightGivenDPI(NULL, 96, &height); expect(InvalidParameter, stat); stat = GdipGetFontHeightGivenDPI(font, 96, NULL); expect(InvalidParameter, stat); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf((REAL)34.497070, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitWorld, &font); expect(Ok, stat); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf((REAL)34.497070, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitPoint, &font); expect(Ok, stat); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf((REAL)45.996094, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitInch, &font); expect(Ok, stat); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf((REAL)3311.718750, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitDocument, &font); expect(Ok, stat); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf((REAL)11.039062, height); GdipDeleteFont(font); height = 12345; stat = GdipCreateFont(fontfamily, 30, FontStyleRegular, UnitMillimeter, &font); expect(Ok, stat); stat = GdipGetFontHeightGivenDPI(font, 96, &height); expect(Ok, stat); expectf((REAL)130.382614, height); GdipDeleteFont(font); GdipDeleteFontFamily(fontfamily); }