Mercurial > projects > dwt-win
diff dwt/graphics/Device.d @ 18:437c59646731
Color
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 26 Jan 2008 10:22:58 +0100 |
parents | 1bea9f0c6f63 |
children | ded98545bb1f |
line wrap: on
line diff
--- a/dwt/graphics/Device.d Sat Jan 26 09:22:08 2008 +0100 +++ b/dwt/graphics/Device.d Sat Jan 26 10:22:58 2008 +0100 @@ -1,4 +1,4 @@ -/******************************************************************************* +/******************************************************************************* * Copyright (c) 2000, 2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -20,9 +20,12 @@ void dispose_Object (Object object) ; float computePoints(LOGFONT* logFont, HFONT hFont); int computePixels(float height) ; + public HPALETTE hPalette; + int [] colorRefCount; + } /+++ - + import dwt.DWT; import dwt.DWTException; import dwt.internal.Callback; @@ -44,16 +47,16 @@ * can be drawn on by sending messages to the associated GC. */ public abstract class Device implements Drawable { - + /* Debugging */ public static bool DEBUG; bool debug = DEBUG; bool tracking = DEBUG; Error [] errors; Object [] objects; - + /** - * Palette + * Palette * (Warning: This field is platform dependent) * <p> * <b>IMPORTANT:</b> This field is <em>not</em> part of the DWT @@ -64,7 +67,7 @@ */ public int hPalette = 0; int [] colorRefCount; - + /* System Font */ int systemFont; @@ -81,7 +84,7 @@ int [] gdipToken; bool disposed; - + final static Object CREATE_LOCK = new Object(); /* @@ -102,14 +105,14 @@ try { Class.forName ("org.eclipse.swt.widgets.Display"); //$NON-NLS-1$ } catch (Throwable e) {} - } + } /* * TEMPORARY CODE. */ static synchronized Device getDevice () { if (DeviceFinder !is null) DeviceFinder.run(); - Device device = CurrentDevice; + Device device = CurrentDevice; CurrentDevice = null; return device; } @@ -117,12 +120,12 @@ /** * Constructs a new instance of this class. * <p> - * You must dispose the device when it is no longer required. + * You must dispose the device when it is no longer required. * </p> * * @see #create * @see #init - * + * * @since 3.1 */ public Device() { @@ -132,7 +135,7 @@ /** * Constructs a new instance of this class. * <p> - * You must dispose the device when it is no longer required. + * You must dispose the device when it is no longer required. * </p> * * @param data the DeviceData which describes the receiver @@ -153,7 +156,7 @@ errors = new Error [128]; objects = new Object [128]; } - + /* Initialize the system font slot */ systemFont = getSystemFont().handle; } @@ -228,7 +231,7 @@ float computePoints(LOGFONT logFont, int hFont) { int hDC = internal_new_GC (null); int logPixelsY = OS.GetDeviceCaps(hDC, OS.LOGPIXELSY); - int pixels = 0; + int pixels = 0; if (logFont.lfHeight > 0) { /* * Feature in Windows. If the lfHeight of the LOGFONT structure @@ -391,7 +394,7 @@ /** * Returns a rectangle which describes the area of the * receiver which is capable of displaying data. - * + * * @return the client area * * @exception DWTException <ul> @@ -407,7 +410,7 @@ /** * Returns the bit depth of the screen, which is the number of * bits it takes to represent the number of unique colors that - * the screen is currently capable of displaying. This number + * the screen is currently capable of displaying. This number * will typically be one of 1, 8, 15, 16, 24 or 32. * * @return the depth of the screen @@ -460,12 +463,12 @@ */ public FontData [] getFontList (String faceName, bool scalable) { checkDevice (); - + /* Create the callback */ Callback callback = new Callback (this, "EnumFontFamProc", 4); //$NON-NLS-1$ int lpEnumFontFamProc = callback.getAddress (); if (lpEnumFontFamProc is 0) DWT.error (DWT.ERROR_NO_MORE_CALLBACKS); - + /* Initialize the instance variables */ metrics = OS.IsUnicode ? (TEXTMETRIC)new TEXTMETRICW() : new TEXTMETRICA(); pixels = new int[nFonts]; @@ -478,10 +481,10 @@ /* Enumerate */ int offset = 0; int hDC = internal_new_GC (null); - if (faceName is null) { + if (faceName is null) { /* The user did not specify a face name, so they want all versions of all available face names */ OS.EnumFontFamilies (hDC, null, lpEnumFontFamProc, scalable ? 1 : 0); - + /** * For bitmapped fonts, EnumFontFamilies only enumerates once for each font, regardless * of how many styles are available. If the user wants bitmapped fonts, enumerate on @@ -530,7 +533,7 @@ System.arraycopy (result, 0, newResult, 0, count); result = newResult; } - + /* Clean up */ callback.dispose (); logFonts = null; @@ -651,7 +654,7 @@ * If subclasses reimplement this method, they must * call the <code>super</code> implementation. * </p> - * + * * @see #create */ protected void init () { @@ -667,7 +670,7 @@ scripts = new int [piNumScripts [0]]; OS.MoveMemory (scripts, ppSp [0], scripts.length * 4); } - + /* * If we're not on a device which supports palettes, * don't create one. @@ -676,13 +679,13 @@ int rc = OS.GetDeviceCaps (hDC, OS.RASTERCAPS); int bits = OS.GetDeviceCaps (hDC, OS.BITSPIXEL); int planes = OS.GetDeviceCaps (hDC, OS.PLANES); - + bits *= planes; if ((rc & OS.RC_PALETTE) is 0 || bits !is 8) { internal_dispose_GC (hDC, null); return; } - + int numReserved = OS.GetDeviceCaps (hDC, OS.NUMRESERVED); int numEntries = OS.GetDeviceCaps (hDC, OS.SIZEPALETTE); @@ -702,16 +705,16 @@ /* 4 bytes header + 4 bytes per entry * numEntries entries */ byte [] logPalette = new byte [4 + 4 * numEntries]; - + /* 2 bytes = special header */ logPalette [0] = 0x00; logPalette [1] = 0x03; - + /* 2 bytes = number of colors, LSB first */ logPalette [2] = 0; logPalette [3] = 1; - /* + /* * Create a palette which contains the system entries * as they are located in the system palette. The * MSDN article 'Memory Device Contexts' describes @@ -731,7 +734,7 @@ internal_dispose_GC (hDC, null); hPalette = OS.CreatePalette (logPalette); } -/** +/** * Invokes platform specific functionality to allocate a new GC handle. * <p> * <b>IMPORTANT:</b> This method is <em>not</em> part of the public @@ -741,12 +744,12 @@ * application code. * </p> * - * @param data the platform specific GC data + * @param data the platform specific GC data * @return the platform specific GC handle */ public abstract int internal_new_GC (GCData data); -/** +/** * Invokes platform specific functionality to dispose a GC handle. * <p> * <b>IMPORTANT:</b> This method is <em>not</em> part of the public @@ -757,7 +760,7 @@ * </p> * * @param hDC the platform specific GC handle - * @param data the platform specific GC data + * @param data the platform specific GC data */ public abstract void internal_dispose_GC (int hDC, GCData data); @@ -788,7 +791,7 @@ * </ul> * * @see Font - * + * * @since 3.3 */ public bool loadFont (String path) {