# HG changeset patch # User Frank Benoit # Date 1202180605 -3600 # Node ID c390bd1070898e526315784a6f260b399f81b3e0 # Parent f824f18368719d81ccb849e0f67da890632bebed FontDialog diff -r f824f1836871 -r c390bd107089 doc/Common.txt --- a/doc/Common.txt Tue Feb 05 03:50:39 2008 +0100 +++ b/doc/Common.txt Tue Feb 05 04:03:25 2008 +0100 @@ -27,7 +27,6 @@ DateTime DirectoryDialog FileDialog - FontDialog diff -r f824f1836871 -r c390bd107089 dwt/widgets/FontDialog.d --- a/dwt/widgets/FontDialog.d Tue Feb 05 03:50:39 2008 +0100 +++ b/dwt/widgets/FontDialog.d Tue Feb 05 04:03:25 2008 +0100 @@ -12,32 +12,19 @@ *******************************************************************************/ module dwt.widgets.FontDialog; -import dwt.widgets.Dialog; -import dwt.widgets.Shell; - -class FontDialog : Dialog { - public this (Shell parent) { - this (parent, 0); - } - public this (Shell parent, int style) { - super (parent, style); - } -} -/++ import dwt.DWT; import dwt.DWTException; import dwt.graphics.Font; import dwt.graphics.FontData; import dwt.graphics.PaletteData; import dwt.graphics.RGB; -import dwt.internal.win32.CHOOSEFONT; -import dwt.internal.win32.LOGFONT; -import dwt.internal.win32.LOGFONTA; -import dwt.internal.win32.LOGFONTW; import dwt.internal.win32.OS; -import dwt.internal.win32.TEXTMETRIC; -import dwt.internal.win32.TEXTMETRICA; -import dwt.internal.win32.TEXTMETRICW; + +import dwt.widgets.Dialog; +import dwt.widgets.Shell; +import dwt.widgets.Display; + +import dwt.dwthelper.utils; /** * Instances of this class allow the user to select a font @@ -53,7 +40,7 @@ * within the DWT implementation. *

*/ -public class FontDialog extends Dialog { +public class FontDialog : Dialog { FontData fontData; RGB rgb; @@ -70,7 +57,7 @@ *
  • ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass
  • * */ -public FontDialog (Shell parent) { +public this (Shell parent) { this (parent, DWT.PRIMARY_MODAL); } @@ -98,7 +85,7 @@ *
  • ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass
  • * */ -public FontDialog (Shell parent, int style) { +public this (Shell parent, int style) { super (parent, style); checkSubclass (); } @@ -158,25 +145,25 @@ if (OS.IsWinCE) DWT.error (DWT.ERROR_NOT_IMPLEMENTED); /* Get the owner HWND for the dialog */ - int hwndOwner = 0; + HWND hwndOwner; if (parent !is null) hwndOwner = parent.handle; /* Open the dialog */ - int hHeap = OS.GetProcessHeap (); - CHOOSEFONT lpcf = new CHOOSEFONT (); + auto hHeap = OS.GetProcessHeap (); + CHOOSEFONT lpcf; lpcf.lStructSize = CHOOSEFONT.sizeof; lpcf.hwndOwner = hwndOwner; lpcf.Flags = OS.CF_SCREENFONTS | OS.CF_EFFECTS; - int lpLogFont = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, LOGFONT.sizeof); - if (fontData !is null && fontData.data !is null) { + auto lpLogFont = cast(LOGFONT*) OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, LOGFONT.sizeof); + if (fontData !is null /+&& fontData.data !is null+/) { LOGFONT logFont = fontData.data; int lfHeight = logFont.lfHeight; - int hDC = OS.GetDC (0); - int pixels = -(int)(0.5f + (fontData.height * OS.GetDeviceCaps(hDC, OS.LOGPIXELSY) / 72)); - OS.ReleaseDC (0, hDC); + auto hDC = OS.GetDC (null); + int pixels = -cast(int)(0.5f + (fontData.height * OS.GetDeviceCaps(hDC, OS.LOGPIXELSY) / 72)); + OS.ReleaseDC (null, hDC); logFont.lfHeight = pixels; lpcf.Flags |= OS.CF_INITTOLOGFONTSTRUCT; - OS.MoveMemory (lpLogFont, logFont, LOGFONT.sizeof); + OS.MoveMemory (lpLogFont, &logFont, LOGFONT.sizeof); logFont.lfHeight = lfHeight; } lpcf.lpLogFont = lpLogFont; @@ -197,7 +184,7 @@ } /* Open the dialog */ - bool success = OS.ChooseFont (lpcf); + bool success = cast(bool) OS.ChooseFont (&lpcf); /* Clear the temporary dialog modal parent */ if ((style & (DWT.APPLICATION_MODAL | DWT.SYSTEM_MODAL)) !is 0) { @@ -206,14 +193,14 @@ /* Compute the result */ if (success) { - LOGFONT logFont = OS.IsUnicode ? (LOGFONT) new LOGFONTW () : new LOGFONTA (); - OS.MoveMemory (logFont, lpLogFont, LOGFONT.sizeof); + LOGFONT* logFont = lpLogFont; + //OS.MoveMemory (logFont, lpLogFont, LOGFONT.sizeof); /* * This will not work on multiple screens or * for printing. Should use DC for the proper device. */ - int hDC = OS.GetDC(0); + auto hDC = OS.GetDC(null); int logPixelsY = OS.GetDeviceCaps(hDC, OS.LOGPIXELSY); int pixels = 0; if (logFont.lfHeight > 0) { @@ -225,17 +212,17 @@ * we must subtract the internal leading, which requires a TEXTMETRIC, * which in turn requires font creation. */ - int hFont = OS.CreateFontIndirect(logFont); - int oldFont = OS.SelectObject(hDC, hFont); - TEXTMETRIC lptm = OS.IsUnicode ? (TEXTMETRIC) new TEXTMETRICW () : new TEXTMETRICA (); - OS.GetTextMetrics(hDC, lptm); + auto hFont = OS.CreateFontIndirect(logFont); + auto oldFont = OS.SelectObject(hDC, hFont); + TEXTMETRIC lptm ; + OS.GetTextMetrics(hDC, &lptm); OS.SelectObject(hDC, oldFont); OS.DeleteObject(hFont); pixels = logFont.lfHeight - lptm.tmInternalLeading; } else { pixels = -logFont.lfHeight; } - OS.ReleaseDC(0, hDC); + OS.ReleaseDC(null, hDC); float points = pixels * 72f /logPixelsY; fontData = FontData.win32_new (logFont, points); @@ -246,7 +233,7 @@ } /* Free the OS memory */ - if (lpLogFont !is 0) OS.HeapFree (hHeap, 0, lpLogFont); + if (lpLogFont !is null) OS.HeapFree (hHeap, 0, lpLogFont); /* * This code is intentionally commented. On some @@ -308,4 +295,4 @@ } } -++/ +