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