annotate dwt/graphics/Image.d @ 238:380bad9f6852

reverted char[] to String
author Frank Benoit <benoit@tionex.de>
date Mon, 05 May 2008 00:42:55 +0200
parents 997624cece6a
children ce446666f5a2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
72
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
1 /*******************************************************************************
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
72
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
10 * Port to the D programming language:
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
11 * Frank Benoit <benoit@tionex.de>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwt.graphics.Image;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwt.internal.Converter;
19
Frank Benoit <benoit@tionex.de>
parents: 18
diff changeset
16 import dwt.internal.cairo.Cairo;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.internal.gtk.OS;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
18 import dwt.DWT;
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
19 import dwt.DWTException;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.graphics.Color;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.graphics.Device;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.graphics.Drawable;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.graphics.GC;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.graphics.GCData;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.graphics.ImageData;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.graphics.PaletteData;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.graphics.RGB;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.graphics.Rectangle;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.graphics.Resource;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import dwt.dwthelper.InputStream;
200
08789b28bdf3 import dwt.dwthelper.utils now explicit
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
32 import dwt.dwthelper.utils;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import tango.text.convert.Format;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 import tango.stdc.string;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import tango.stdc.stringz;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * Instances of this class are graphics which have been prepared
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * for display on a specific device. That is, they are ready
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * to paint using methods such as <code>GC.drawImage()</code>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * and display on widgets with, for example, <code>Button.setImage()</code>.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * If loaded from a file format that supports it, an
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * <code>Image</code> may have transparency, meaning that certain
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * pixels are specified as being transparent when drawn. Examples
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * of file formats that support transparency are GIF and PNG.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * </p><p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 * There are two primary ways to use <code>Images</code>.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * The first is to load a graphic file from disk and create an
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * <code>Image</code> from it. This is done using an <code>Image</code>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 * constructor, for example:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * <pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 * Image i = new Image(device, "C:\\graphic.bmp");
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 * </pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 * A graphic file may contain a color table specifying which
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 * colors the image was intended to possess. In the above example,
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 * these colors will be mapped to the closest available color in
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
59 * DWT. It is possible to get more control over the mapping of
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 * colors as the image is being created, using code of the form:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * <pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * ImageData data = new ImageData("C:\\graphic.bmp");
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * RGB[] rgbs = data.getRGBs();
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 * // At this point, rgbs contains specifications of all
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * // the colors contained within this image. You may
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * // allocate as many of these colors as you wish by
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * // using the Color constructor Color(RGB), then
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * // create the image:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * Image i = new Image(device, data);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * </pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * Applications which require even greater control over the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * loading process should use the support provided in class
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 * <code>ImageLoader</code>.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 * </p><p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 * Application code must explicitly invoke the <code>Image.dispose()</code>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 * method to release the operating system resources managed by each instance
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 * when those instances are no longer required.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * @see Color
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * @see ImageData
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * @see ImageLoader
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 public final class Image : Resource, Drawable {
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
87 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
88 * specifies whether the receiver is a bitmap or an icon
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
89 * (one of <code>DWT.BITMAP</code>, <code>DWT.ICON</code>)
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
90 * <p>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
91 * <b>IMPORTANT:</b> This field is <em>not</em> part of the DWT
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
92 * public API. It is marked public only so that it can be shared
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
93 * within the packages provided by DWT. It is not available on all
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
94 * platforms and should never be accessed from application code.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
95 * </p>
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
96 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
97 public int type;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
99 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
100 * The handle to the OS pixmap resource.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
101 * (Warning: This field is platform dependent)
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
102 * <p>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
103 * <b>IMPORTANT:</b> This field is <em>not</em> part of the DWT
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
104 * public API. It is marked public only so that it can be shared
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
105 * within the packages provided by DWT. It is not available on all
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
106 * platforms and should never be accessed from application code.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
107 * </p>
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
108 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
109 public GdkDrawable* pixmap;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
111 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
112 * The handle to the OS mask resource.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
113 * (Warning: This field is platform dependent)
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
114 * <p>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
115 * <b>IMPORTANT:</b> This field is <em>not</em> part of the DWT
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
116 * public API. It is marked public only so that it can be shared
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
117 * within the packages provided by DWT. It is not available on all
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
118 * platforms and should never be accessed from application code.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
119 * </p>
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
120 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
121 public GdkDrawable* mask;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
123 cairo_surface_t* surface;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 cairo_surface_t* surfaceData;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
126 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
127 * specifies the transparent pixel
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
128 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
129 int transparentPixel = -1;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
131 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
132 * The GC the image is currently selected in.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
133 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
134 GC memGC;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
136 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
137 * The alpha data of the image.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
138 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
139 byte[] alphaData;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
141 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
142 * The global alpha value to be used for every pixel.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
143 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
144 int alpha = -1;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
146 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
147 * The width of the image.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
148 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
149 int width = -1;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
151 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
152 * The height of the image.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
153 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
154 int height = -1;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
156 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
157 * Specifies the default scanline padding.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
158 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
159 static const int DEFAULT_SCANLINE_PAD = 4;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 this() {
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 * Constructs an empty instance of this class with the
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 * specified width and height. The result may be drawn upon
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 * by creating a GC and using any of its drawing operations,
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 * as shown in the following example:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 * <pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 * Image i = new Image(device, width, height);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 * GC gc = new GC(i);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 * gc.drawRectangle(0, 0, 50, 50);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 * gc.dispose();
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 * </pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 * Note: Some platforms may have a limitation on the size
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 * of image that can be created (size depends on width, height,
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 * and depth). For example, Windows 95, 98, and ME do not allow
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 * images larger than 16M.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 * @param device the device on which to create the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 * @param width the width of the new image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 * @param height the height of the new image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 * @exception IllegalArgumentException <ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 * <li>ERROR_NULL_ARGUMENT - if device is null and there is no current device</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 * <li>ERROR_INVALID_ARGUMENT - if either the width or height is negative or zero</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
190 * @exception DWTError <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 * <li>ERROR_NO_HANDLES if a handle could not be obtained for image creation</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 public this(Device device, int width, int height) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
195 if (device is null) device = Device.getDevice();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
196 if (device is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
216
997624cece6a renames init() to init_() to avoid problems in tango collections in jface port
Frank Benoit <benoit@tionex.de>
parents: 200
diff changeset
197 init_(device, width, height);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
198 if (device.tracking) device.new_Object(this);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 * Constructs a new instance of this class based on the
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 * provided image, with an appearance that varies depending
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 * on the value of the flag. The possible flag values are:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 * <dl>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 * <dt><b>IMAGE_COPY</b></dt>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 * <dd>the result is an identical copy of srcImage</dd>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 * <dt><b>IMAGE_DISABLE</b></dt>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 * <dd>the result is a copy of srcImage which has a <em>disabled</em> look</dd>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 * <dt><b>IMAGE_GRAY</b></dt>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 * <dd>the result is a copy of srcImage which has a <em>gray scale</em> look</dd>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 * </dl>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 * @param device the device on which to create the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 * @param srcImage the image to use as the source
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 * @param flag the style, either <code>IMAGE_COPY</code>, <code>IMAGE_DISABLE</code> or <code>IMAGE_GRAY</code>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 * @exception IllegalArgumentException <ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 * <li>ERROR_NULL_ARGUMENT - if device is null and there is no current device</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 * <li>ERROR_NULL_ARGUMENT - if srcImage is null</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 * <li>ERROR_INVALID_ARGUMENT - if the flag is not one of <code>IMAGE_COPY</code>, <code>IMAGE_DISABLE</code> or <code>IMAGE_GRAY</code></li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
224 * @exception DWTException <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 * <li>ERROR_INVALID_IMAGE - if the image is not a bitmap or an icon, or is otherwise in an invalid state</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 * <li>ERROR_UNSUPPORTED_DEPTH - if the depth of the image is not supported</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
228 * @exception DWTError <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 * <li>ERROR_NO_HANDLES if a handle could not be obtained for image creation</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 public this(Device device, Image srcImage, int flag) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
233 if (device is null) device = Device.getDevice();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
234 if (device is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
235 if (srcImage is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
236 if (srcImage.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
237 switch (flag) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
238 case DWT.IMAGE_COPY:
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
239 case DWT.IMAGE_DISABLE:
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
240 case DWT.IMAGE_GRAY:
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
241 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
242 default:
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
243 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
244 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
245 this.device = device;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
246 this.type = srcImage.type;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
248 /* Get source image size */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
249 int w, h;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
250 OS.gdk_drawable_get_size(srcImage.pixmap, &w, &h);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
251 int width = w;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
252 int height = h;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
254 /* Copy the mask */
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
255 if ((srcImage.type is DWT.ICON && srcImage.mask !is null ) || srcImage.transparentPixel !is -1) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
256 /* Generate the mask if necessary. */
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
257 if (srcImage.transparentPixel !is -1) srcImage.createMask();
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 //PORTING_FIXME cast
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
259 GdkDrawable* mask = cast(GdkDrawable*) OS.gdk_pixmap_new( null, width, height, 1);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
260 if (mask is null ) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
261 auto gdkGC = OS.gdk_gc_new(mask);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
262 if (gdkGC is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
263 OS.gdk_draw_drawable(mask, gdkGC, srcImage.mask, 0, 0, 0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
264 OS.g_object_unref(gdkGC);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
265 this.mask = mask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
266 /* Destroy the image mask if the there is a GC created on the image */
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
267 if (srcImage.transparentPixel !is -1 && srcImage.memGC !is null) srcImage.destroyMask();
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
268 }
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
270 /* Copy transparent pixel and alpha data */
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
271 if (flag !is DWT.IMAGE_DISABLE) transparentPixel = srcImage.transparentPixel;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
272 alpha = srcImage.alpha;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
273 if (srcImage.alphaData !is null) {
25
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 19
diff changeset
274 alphaData = new byte[srcImage.alphaData.length];
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 19
diff changeset
275 System.arraycopy(srcImage.alphaData, 0, alphaData, 0, alphaData.length);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
276 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
277 createAlphaMask(width, height);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
279 /* Create the new pixmap */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
280 auto pixmap = cast(GdkDrawable*) OS.gdk_pixmap_new (cast(GdkDrawable*)OS.GDK_ROOT_PARENT(), width, height, -1);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
281 if (pixmap is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
282 auto gdkGC = OS.gdk_gc_new(pixmap);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
283 if (gdkGC is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
284 this.pixmap = pixmap;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
286 if (flag is DWT.IMAGE_COPY) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
287 OS.gdk_draw_drawable(pixmap, gdkGC, srcImage.pixmap, 0, 0, 0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
288 OS.g_object_unref(gdkGC);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
289 if (device.tracking) device.new_Object(this);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
290 return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
291 }
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
293 /* Retrieve the source pixmap data */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
294 auto pixbuf = OS.gdk_pixbuf_new(OS.GDK_COLORSPACE_RGB, false, 8, width, height);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
295 if (pixbuf is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
296 auto colormap = OS.gdk_colormap_get_system();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
297 OS.gdk_pixbuf_get_from_drawable(pixbuf, srcImage.pixmap, colormap, 0, 0, 0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
298 int stride = OS.gdk_pixbuf_get_rowstride(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
299 auto pixels = OS.gdk_pixbuf_get_pixels(pixbuf);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
301 /* Apply transformation */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
302 switch (flag) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
303 case DWT.IMAGE_DISABLE: {
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
304 Color zeroColor = device.getSystemColor(DWT.COLOR_WIDGET_NORMAL_SHADOW);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
305 RGB zeroRGB = zeroColor.getRGB();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
306 byte zeroRed = cast(byte)zeroRGB.red;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
307 byte zeroGreen = cast(byte)zeroRGB.green;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
308 byte zeroBlue = cast(byte)zeroRGB.blue;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
309 Color oneColor = device.getSystemColor(DWT.COLOR_WIDGET_BACKGROUND);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
310 RGB oneRGB = oneColor.getRGB();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
311 byte oneRed = cast(byte)oneRGB.red;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
312 byte oneGreen = cast(byte)oneRGB.green;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
313 byte oneBlue = cast(byte)oneRGB.blue;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
314 byte[] line = new byte[stride];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
315 for (int y=0; y<height; y++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
316 memmove(line.ptr, pixels + (y * stride), stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
317 for (int x=0; x<width; x++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
318 int offset = x*3;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
319 int red = line[offset] & 0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
320 int green = line[offset+1] & 0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
321 int blue = line[offset+2] & 0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
322 int intensity = red * red + green * green + blue * blue;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
323 if (intensity < 98304) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
324 line[offset] = zeroRed;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
325 line[offset+1] = zeroGreen;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
326 line[offset+2] = zeroBlue;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
327 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
328 line[offset] = oneRed;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
329 line[offset+1] = oneGreen;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
330 line[offset+2] = oneBlue;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
331 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
332 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
333 memmove(pixels + (y * stride), line.ptr, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
334 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
335 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
336 }
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
337 case DWT.IMAGE_GRAY: {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
338 byte[] line = new byte[stride];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
339 for (int y=0; y<height; y++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
340 memmove(line.ptr, pixels + (y * stride), stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
341 for (int x=0; x<width; x++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
342 int offset = x*3;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
343 int red = line[offset] & 0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
344 int green = line[offset+1] & 0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
345 int blue = line[offset+2] & 0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
346 byte intensity = cast(byte)((red+red+green+green+green+green+green+blue) >> 3);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
347 line[offset] = line[offset+1] = line[offset+2] = intensity;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
348 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
349 memmove(pixels + (y * stride), line.ptr, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
350 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
351 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
352 }
55
93981635e709 Checked and inserted missing default switch cases.
Frank Benoit <benoit@tionex.de>
parents: 33
diff changeset
353 default:
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
354 }
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
356 /* Copy data back to destination pixmap */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
357 OS.gdk_pixbuf_render_to_drawable(pixbuf, pixmap, gdkGC, 0, 0, 0, 0, width, height, OS.GDK_RGB_DITHER_NORMAL, 0, 0);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
359 /* Free resources */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
360 OS.g_object_unref(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
361 OS.g_object_unref(gdkGC);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
362 if (device.tracking) device.new_Object(this);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 * Constructs an empty instance of this class with the
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 * width and height of the specified rectangle. The result
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 * may be drawn upon by creating a GC and using any of its
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 * drawing operations, as shown in the following example:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 * <pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 * Image i = new Image(device, boundsRectangle);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 * GC gc = new GC(i);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 * gc.drawRectangle(0, 0, 50, 50);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 * gc.dispose();
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 * </pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 * Note: Some platforms may have a limitation on the size
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 * of image that can be created (size depends on width, height,
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 * and depth). For example, Windows 95, 98, and ME do not allow
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 * images larger than 16M.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 * @param device the device on which to create the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 * @param bounds a rectangle specifying the image's width and height (must not be null)
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 * @exception IllegalArgumentException <ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 * <li>ERROR_NULL_ARGUMENT - if device is null and there is no current device</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 * <li>ERROR_NULL_ARGUMENT - if the bounds rectangle is null</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 * <li>ERROR_INVALID_ARGUMENT - if either the rectangle's width or height is negative</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
391 * @exception DWTError <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 * <li>ERROR_NO_HANDLES if a handle could not be obtained for image creation</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 public this(Device device, Rectangle bounds) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
396 if (device is null) device = Device.getDevice();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
397 if (device is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
398 if (bounds is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
216
997624cece6a renames init() to init_() to avoid problems in tango collections in jface port
Frank Benoit <benoit@tionex.de>
parents: 200
diff changeset
399 init_(device, bounds.width, bounds.height);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
400 if (device.tracking) device.new_Object(this);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 * Constructs an instance of this class from the given
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 * <code>ImageData</code>.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 * @param device the device on which to create the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 * @param data the image data to create the image from (must not be null)
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 * @exception IllegalArgumentException <ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 * <li>ERROR_NULL_ARGUMENT - if device is null and there is no current device</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 * <li>ERROR_NULL_ARGUMENT - if the image data is null</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
414 * @exception DWTException <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 * <li>ERROR_UNSUPPORTED_DEPTH - if the depth of the ImageData is not supported</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
417 * @exception DWTError <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 * <li>ERROR_NO_HANDLES if a handle could not be obtained for image creation</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 public this(Device device, ImageData data) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
422 if (device is null) device = Device.getDevice();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
423 if (device is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
216
997624cece6a renames init() to init_() to avoid problems in tango collections in jface port
Frank Benoit <benoit@tionex.de>
parents: 200
diff changeset
424 init_(device, data);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
425 if (device.tracking) device.new_Object(this);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 * Constructs an instance of this class, whose type is
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
430 * <code>DWT.ICON</code>, from the two given <code>ImageData</code>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 * objects. The two images must be the same size. Pixel transparency
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 * in either image will be ignored.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 * The mask image should contain white wherever the icon is to be visible,
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 * and black wherever the icon is to be transparent. In addition,
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 * the source image should contain black wherever the icon is to be
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 * transparent.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 * @param device the device on which to create the icon
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 * @param source the color data for the icon
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 * @param mask the mask data for the icon
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444 * @exception IllegalArgumentException <ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 * <li>ERROR_NULL_ARGUMENT - if device is null and there is no current device</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 * <li>ERROR_NULL_ARGUMENT - if either the source or mask is null </li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 * <li>ERROR_INVALID_ARGUMENT - if source and mask are different sizes</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
449 * @exception DWTError <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 * <li>ERROR_NO_HANDLES if a handle could not be obtained for image creation</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 public this(Device device, ImageData source, ImageData mask) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
454 if (device is null) device = Device.getDevice();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
455 if (device is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
456 if (source is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
457 if (mask is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
458 if (source.width !is mask.width || source.height !is mask.height) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
459 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
460 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
461 mask = ImageData.convertMask (mask);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
462 ImageData image = new ImageData(source.width, source.height, source.depth, source.palette, source.scanlinePad, source.data);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
463 image.maskPad = mask.scanlinePad;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
464 image.maskData = mask.data;
216
997624cece6a renames init() to init_() to avoid problems in tango collections in jface port
Frank Benoit <benoit@tionex.de>
parents: 200
diff changeset
465 init_(device, image);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
466 if (device.tracking) device.new_Object(this);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 * Constructs an instance of this class by loading its representation
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 * from the specified input stream. Throws an error if an error
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 * occurs while loading the image, or if the result is an image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 * of an unsupported type. Application code is still responsible
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 * for closing the input stream.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 * This constructor is provided for convenience when loading a single
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 * image only. If the stream contains multiple images, only the first
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 * one will be loaded. To load multiple images, use
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 * <code>ImageLoader.load()</code>.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 * </p><p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 * This constructor may be used to load a resource as follows:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 * <pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 * static Image loadImage (Display display, Class clazz, String string) {
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 * InputStream stream = clazz.getResourceAsStream (string);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 * if (stream is null) return null;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 * Image image = null;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 * try {
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 * image = new Image (display, stream);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
490 * } catch (DWTException ex) {
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 * } finally {
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 * try {
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 * stream.close ();
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 * } catch (IOException ex) {}
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 * }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 * return image;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 * }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 * </pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 * @param device the device on which to create the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 * @param stream the input stream to load the image from
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 * @exception IllegalArgumentException <ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504 * <li>ERROR_NULL_ARGUMENT - if device is null and there is no current device</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 * <li>ERROR_NULL_ARGUMENT - if the stream is null</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
507 * @exception DWTException <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 * <li>ERROR_IO - if an IO error occurs while reading from the stream</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 * <li>ERROR_INVALID_IMAGE - if the image stream contains invalid data </li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 * <li>ERROR_UNSUPPORTED_DEPTH - if the image stream describes an image with an unsupported depth</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 * <li>ERROR_UNSUPPORTED_FORMAT - if the image stream contains an unrecognized format</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
513 * @exception DWTError <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 * <li>ERROR_NO_HANDLES if a handle could not be obtained for image creation</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 public this(Device device, InputStream stream) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
518 if (device is null) device = Device.getDevice();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
519 if (device is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
216
997624cece6a renames init() to init_() to avoid problems in tango collections in jface port
Frank Benoit <benoit@tionex.de>
parents: 200
diff changeset
520 init_(device, new ImageData(stream));
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
521 if (device.tracking) device.new_Object(this);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525 * Constructs an instance of this class by loading its representation
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 * from the file with the specified name. Throws an error if an error
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 * occurs while loading the image, or if the result is an image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 * of an unsupported type.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 * This constructor is provided for convenience when loading
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531 * a single image only. If the specified file contains
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 * multiple images, only the first one will be used.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 * @param device the device on which to create the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 * @param filename the name of the file to load the image from
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 * @exception IllegalArgumentException <ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 * <li>ERROR_NULL_ARGUMENT - if device is null and there is no current device</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 * <li>ERROR_NULL_ARGUMENT - if the file name is null</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
541 * @exception DWTException <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 * <li>ERROR_IO - if an IO error occurs while reading from the file</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 * <li>ERROR_INVALID_IMAGE - if the image file contains invalid data </li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 * <li>ERROR_UNSUPPORTED_DEPTH - if the image file describes an image with an unsupported depth</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 * <li>ERROR_UNSUPPORTED_FORMAT - if the image file contains an unrecognized format</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
547 * @exception DWTError <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 * <li>ERROR_NO_HANDLES if a handle could not be obtained for image creation</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 */
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 216
diff changeset
551 public this(Device device, String filename) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
552 if (device is null) device = Device.getDevice();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
553 if (device is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
554 if (filename is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
555 this.device = device;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
556 try {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
557 int length = filename.length;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
558 auto pixbuf = OS.gdk_pixbuf_new_from_file(toStringz(filename), null);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
559 if (pixbuf !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
560 bool hasAlpha = cast(bool)OS.gdk_pixbuf_get_has_alpha(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
561 if (hasAlpha) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
562 /*
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
563 * Bug in GTK. Depending on the image (seems to affect images that have
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
564 * some degree of transparency all over the image), gdk_pixbuff_render_pixmap_and_mask()
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
565 * will return a corrupt pixmap. To avoid this, read in and store the alpha channel data
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
566 * for the image and then set it to 0xFF to prevent any possible corruption from
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
567 * gdk_pixbuff_render_pixmap_and_mask().
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
568 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
569 int width = OS.gdk_pixbuf_get_width(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
570 int height = OS.gdk_pixbuf_get_height(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
571 int stride = OS.gdk_pixbuf_get_rowstride(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
572 auto pixels = OS.gdk_pixbuf_get_pixels(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
573 byte[] line = new byte[stride];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
574 alphaData = new byte[width * height];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
575 for (int y = 0; y < height; y++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
576 memmove(line.ptr, pixels + (y * stride), stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
577 for (int x = 0; x < width; x++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
578 alphaData[y*width+x] = line[x*4 + 3];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
579 line[x*4 + 3] = cast(byte) 0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
580 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
581 memmove(pixels + (y * stride), line.ptr, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
582 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
583 createAlphaMask(width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
584 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
585 GdkPixmap* pixmap_return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
586 OS.gdk_pixbuf_render_pixmap_and_mask(pixbuf, &pixmap_return, null, 0);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
587 this.type = DWT.BITMAP;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
588 this.pixmap = cast(GdkDrawable*)pixmap_return;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
589 if (pixmap is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
590 OS.g_object_unref (pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
591 return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
592 }
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
593 } catch (DWTException e) {}
216
997624cece6a renames init() to init_() to avoid problems in tango collections in jface port
Frank Benoit <benoit@tionex.de>
parents: 200
diff changeset
594 init_(device, new ImageData(filename));
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
595 if (device.tracking) device.new_Object(this);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 void createAlphaMask (int width, int height) {
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
599 if (device.useXRender && (alpha !is -1 || alphaData !is null)) {
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
600 mask = cast(GdkDrawable*)OS.gdk_pixmap_new(null, alpha !is -1 ? 1 : width, alpha !is -1 ? 1 : height, 8);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
601 if (mask is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
602 auto gc = OS.gdk_gc_new(mask);
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
603 if (alpha !is -1) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
604 GdkColor* color = new GdkColor();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
605 color.pixel = (alpha & 0xFF) << 8 | (alpha & 0xFF);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
606 OS.gdk_gc_set_foreground(gc, color);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
607 OS.gdk_draw_rectangle(mask, gc, 1, 0, 0, 1, 1);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
608 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
609 GdkImage* imagePtr = OS.gdk_drawable_get_image(mask, 0, 0, width, height);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
610 if (imagePtr is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
611 GdkImage* gdkImage = new GdkImage();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
612 *gdkImage = *imagePtr;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
613 if (gdkImage.bpl is width) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
614 memmove(gdkImage.mem, alphaData.ptr, alphaData.length);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
615 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
616 byte[] line = new byte[gdkImage.bpl];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
617 for (int y = 0; y < height; y++) {
25
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 19
diff changeset
618 System.arraycopy(alphaData, width * y, line, 0, width);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
619 memmove(gdkImage.mem + (gdkImage.bpl * y), line.ptr, gdkImage.bpl);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
620 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
621 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
622 OS.gdk_draw_image(mask, gc, imagePtr, 0, 0, 0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
623 OS.g_object_unref(imagePtr);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
624 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
625 OS.g_object_unref(gc);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
626 }
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630 * Create the receiver's mask if necessary.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 void createMask() {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
633 if (mask !is null ) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
634 mask = createMask(getImageData(), false);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
635 if (mask is null ) DWT.error(DWT.ERROR_NO_HANDLES);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638 GdkDrawable* createMask(ImageData image, bool copy) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
639 ImageData mask = image.getTransparencyMask();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
640 byte[] data = mask.data;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
641 byte[] maskData = copy ? new byte[data.length] : data;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
642 for (int i = 0; i < maskData.length; i++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
643 byte s = data[i];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
644 maskData[i] = cast(byte)(((s & 0x80) >> 7) | ((s & 0x40) >> 5) |
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
645 ((s & 0x20) >> 3) | ((s & 0x10) >> 1) | ((s & 0x08) << 1) |
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
646 ((s & 0x04) << 3) | ((s & 0x02) << 5) | ((s & 0x01) << 7));
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
647 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
648 maskData = ImageData.convertPad(maskData, mask.width, mask.height, mask.depth, mask.scanlinePad, 1);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
649 return cast(GdkDrawable*)OS.gdk_bitmap_create_from_data(null, cast(char*)maskData.ptr, mask.width, mask.height);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 void createSurface() {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
653 if (surface !is null ) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
654 /* Generate the mask if necessary. */
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
655 if (transparentPixel !is -1) createMask();
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
656 int w, h;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
657 OS.gdk_drawable_get_size(pixmap, &w, &h);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
658 int width = w, height = h;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
659 if (mask !is null || alpha !is -1 || alphaData !is null) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
660 auto pixbuf = OS.gdk_pixbuf_new( OS.GDK_COLORSPACE_RGB, true, 8, width, height);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
661 if (pixbuf is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
662 auto colormap = OS.gdk_colormap_get_system();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
663 OS.gdk_pixbuf_get_from_drawable(pixbuf, pixmap, colormap, 0, 0, 0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
664 int stride = OS.gdk_pixbuf_get_rowstride(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
665 auto pixels = OS.gdk_pixbuf_get_pixels(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
666 byte[] line = new byte[stride];
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
667 if (mask !is null && OS.gdk_drawable_get_depth(mask) is 1) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
668 auto maskPixbuf = OS.gdk_pixbuf_new(OS.GDK_COLORSPACE_RGB, false, 8, width, height);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
669 if (maskPixbuf is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
670 OS.gdk_pixbuf_get_from_drawable(maskPixbuf, mask, null, 0, 0, 0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
671 int maskStride = OS.gdk_pixbuf_get_rowstride(maskPixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
672 auto maskPixels = OS.gdk_pixbuf_get_pixels(maskPixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
673 byte[] maskLine = new byte[maskStride];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
674 auto offset = pixels, maskOffset = maskPixels;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
675 for (int y=0; y<height; y++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
676 memmove(line.ptr, offset, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
677 memmove(maskLine.ptr, maskOffset, maskStride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
678 for (int x=0, offset1=0; x<width; x++, offset1 += 4) {
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
679 if (maskLine[x * 3] is 0) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
680 line[offset1 + 0] = line[offset1 + 1] = line[offset1 + 2] = line[offset1 + 3] = 0;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
681 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
682 byte temp = line[offset1];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
683 line[offset1] = line[offset1 + 2];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
684 line[offset1 + 2] = temp;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
685 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
686 memmove(offset, line.ptr, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
687 offset += stride;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
688 maskOffset += maskStride;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
689 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
690 OS.g_object_unref(maskPixbuf);
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
691 } else if (alpha !is -1) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
692 auto offset = pixels;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
693 for (int y=0; y<height; y++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
694 memmove(line.ptr, offset, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
695 for (int x=0, offset1=0; x<width; x++, offset1 += 4) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
696 line[offset1+3] = cast(byte)alpha;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
697 /* pre-multiplied alpha */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
698 int r = ((line[offset1 + 0] & 0xFF) * alpha) + 128;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
699 r = (r + (r >> 8)) >> 8;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
700 int g = ((line[offset1 + 1] & 0xFF) * alpha) + 128;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
701 g = (g + (g >> 8)) >> 8;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
702 int b = ((line[offset1 + 2] & 0xFF) * alpha) + 128;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
703 b = (b + (b >> 8)) >> 8;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
704 line[offset1 + 0] = cast(byte)b;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
705 line[offset1 + 1] = cast(byte)g;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
706 line[offset1 + 2] = cast(byte)r;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
707 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
708 memmove(offset, line.ptr, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
709 offset += stride;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
710 }
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
711 } else if (alphaData !is null) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
712 auto offset = pixels;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
713 for (int y = 0; y < h; y++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
714 memmove (line.ptr, offset, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
715 for (int x=0, offset1=0; x<width; x++, offset1 += 4) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
716 int alpha = alphaData [y*w+x] & 0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
717 line[offset1+3] = cast(byte)alpha;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
718 /* pre-multiplied alpha */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
719 int r = ((line[offset1 + 0] & 0xFF) * alpha) + 128;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
720 r = (r + (r >> 8)) >> 8;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
721 int g = ((line[offset1 + 1] & 0xFF) * alpha) + 128;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
722 g = (g + (g >> 8)) >> 8;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
723 int b = ((line[offset1 + 2] & 0xFF) * alpha) + 128;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
724 b = (b + (b >> 8)) >> 8;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
725 line[offset1 + 0] = cast(byte)b;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
726 line[offset1 + 1] = cast(byte)g;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
727 line[offset1 + 2] = cast(byte)r;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
728 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
729 memmove (offset, line.ptr, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
730 offset += stride;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
731 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
732 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
733 auto offset = pixels;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
734 for (int y = 0; y < h; y++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
735 memmove (line.ptr, offset, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
736 for (int x=0, offset1=0; x<width; x++, offset1 += 4) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
737 line[offset1+3] = cast(byte)0xFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
738 byte temp = line[offset1];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
739 line[offset1] = line[offset1 + 2];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
740 line[offset1 + 2] = temp;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
741 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
742 memmove (offset, line.ptr, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
743 offset += stride;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
744 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
745 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
746 surfaceData = cast(cairo_surface_t*) OS.g_malloc(stride * height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
747 memmove(surfaceData, pixels, stride * height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
748 surface = Cairo.cairo_image_surface_create_for_data(cast(char*)surfaceData, Cairo.CAIRO_FORMAT_ARGB32, width, height, stride);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
749 OS.g_object_unref(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
750 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
751 auto xDisplay = OS.GDK_DISPLAY();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
752 auto xDrawable = OS.GDK_PIXMAP_XID(pixmap);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
753 auto xVisual = OS.gdk_x11_visual_get_xvisual(OS.gdk_visual_get_system());
19
Frank Benoit <benoit@tionex.de>
parents: 18
diff changeset
754 // PORTING_FIXME cast and types not good
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
755 surface = Cairo.cairo_xlib_surface_create(cast(void*)xDisplay, xDrawable, xVisual, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
756 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
757 /* Destroy the image mask if the there is a GC created on the image */
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
758 if (transparentPixel !is -1 && memGC !is null) destroyMask();
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
759 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
760
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
761 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
762 * Destroy the receiver's mask if it exists.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
763 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
764 void destroyMask() {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
765 if (mask is null) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
766 OS.g_object_unref(mask);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
767 mask = null;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
768 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
769
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
770 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
771 * Disposes of the operating system resources associated with
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
772 * the image. Applications must dispose of all images which
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
773 * they allocate.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
774 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
775 public override void dispose () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
776 if (pixmap is null) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
777 if (device.isDisposed()) return;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
778 if (memGC !is null) memGC.dispose();
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
779 if (pixmap !is null) OS.g_object_unref(pixmap);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
780 if (mask !is null) OS.g_object_unref(mask);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
781 if (surface !is null) Cairo.cairo_surface_destroy(surface);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
782 if (surfaceData !is null) OS.g_free(surfaceData);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
783 surfaceData = null;
19
Frank Benoit <benoit@tionex.de>
parents: 18
diff changeset
784 surface = null;
Frank Benoit <benoit@tionex.de>
parents: 18
diff changeset
785 pixmap = null;
Frank Benoit <benoit@tionex.de>
parents: 18
diff changeset
786 mask = null;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
787 memGC = null;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
788 if (device.tracking) device.dispose_Object(this);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
789 device = null;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
790 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
791
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
792 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
793 * Compares the argument to the receiver, and returns true
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
794 * if they represent the <em>same</em> object using a class
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
795 * specific comparison.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
796 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
797 * @param object the object to compare with this object
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
798 * @return <code>true</code> if the object is the same as this object and <code>false</code> otherwise
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
799 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
800 * @see #hashCode
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
801 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
802 public override int opEquals (Object object) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
803 if (object is this) return true;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
804 if ( auto image = cast(Image)object ){
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
805 return device is image.device && pixmap is image.pixmap;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
806 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
807 return false;
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
808 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
809
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
810 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
811 * Returns the color to which to map the transparent pixel, or null if
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
812 * the receiver has no transparent pixel.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
813 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
814 * There are certain uses of Images that do not support transparency
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
815 * (for example, setting an image into a button or label). In these cases,
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
816 * it may be desired to simulate transparency by using the background
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
817 * color of the widget to paint the transparent pixels of the image.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
818 * Use this method to check which color will be used in these cases
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
819 * in place of transparency. This value may be set with setBackground().
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
820 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
821 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
822 * @return the background color of the image, or null if there is no transparency in the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
823 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
824 * @exception DWTException <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
825 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
826 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
827 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
828 public Color getBackground() {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
829 if (isDisposed()) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
830 if (transparentPixel is -1) return null;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
831 //NOT DONE
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
832 return null;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
833 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
834
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
835 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
836 * Returns the bounds of the receiver. The rectangle will always
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
837 * have x and y values of 0, and the width and height of the
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
838 * image.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
839 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
840 * @return a rectangle specifying the image's bounds
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
841 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
842 * @exception DWTException <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
843 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
844 * <li>ERROR_INVALID_IMAGE - if the image is not a bitmap or an icon</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
845 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
846 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
847 public Rectangle getBounds() {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
848 if (isDisposed()) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
849 if (width !is -1 && height !is -1) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
850 return new Rectangle(0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
851 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
852 int w; int h;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
853 OS.gdk_drawable_get_size(pixmap, &w, &h);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
854 return new Rectangle(0, 0, width = w, height = h);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
855 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
856
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
857 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
858 * Returns an <code>ImageData</code> based on the receiver
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
859 * Modifications made to this <code>ImageData</code> will not
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
860 * affect the Image.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
861 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
862 * @return an <code>ImageData</code> containing the image's data and attributes
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
863 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
864 * @exception DWTException <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
865 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
866 * <li>ERROR_INVALID_IMAGE - if the image is not a bitmap or an icon</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
867 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
868 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
869 * @see ImageData
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
870 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
871 public ImageData getImageData() {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
872 if (isDisposed()) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
873
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
874 int w, h;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
875 OS.gdk_drawable_get_size(pixmap, &w, &h);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
876 int width = w, height = h;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
877 auto pixbuf = OS.gdk_pixbuf_new(OS.GDK_COLORSPACE_RGB, false, 8, width, height);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
878 if (pixbuf is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
879 auto colormap = OS.gdk_colormap_get_system();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
880 OS.gdk_pixbuf_get_from_drawable(pixbuf, pixmap, colormap, 0, 0, 0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
881 int stride = OS.gdk_pixbuf_get_rowstride(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
882 auto pixels = OS.gdk_pixbuf_get_pixels(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
883 byte[] srcData = new byte[stride * height];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
884 memmove(srcData.ptr, pixels, srcData.length);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
885 OS.g_object_unref(pixbuf);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
886
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
887 PaletteData palette = new PaletteData(0xFF0000, 0xFF00, 0xFF);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
888 ImageData data = new ImageData(width, height, 24, palette);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
889 data.data = srcData;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
890 data.bytesPerLine = stride;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
891
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
892 if (transparentPixel is -1 && type is DWT.ICON && mask !is null) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
893 /* Get the icon mask data */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
894 auto gdkImagePtr = OS.gdk_drawable_get_image(mask, 0, 0, width, height);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
895 if (gdkImagePtr is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
896 GdkImage* gdkImage = new GdkImage();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
897 memmove(gdkImage, gdkImagePtr, GdkImage.sizeof );
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
898 byte[] maskData = new byte[gdkImage.bpl * gdkImage.height];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
899 memmove(maskData.ptr, gdkImage.mem, maskData.length);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
900 OS.g_object_unref(gdkImagePtr);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
901 int maskPad;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
902 for (maskPad = 1; maskPad < 128; maskPad++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
903 int bpl = (((width + 7) / 8) + (maskPad - 1)) / maskPad * maskPad;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
904 if (gdkImage.bpl is bpl) break;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
905 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
906 /* Make mask scanline pad equals to 2 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
907 data.maskPad = 2;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
908 maskData = ImageData.convertPad(maskData, width, height, 1, maskPad, data.maskPad);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
909 /* Bit swap the mask data if necessary */
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
910 if (gdkImage.byte_order is OS.GDK_LSB_FIRST) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
911 for (int i = 0; i < maskData.length; i++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
912 byte b = maskData[i];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
913 maskData[i] = cast(byte)(((b & 0x01) << 7) | ((b & 0x02) << 5) |
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
914 ((b & 0x04) << 3) | ((b & 0x08) << 1) | ((b & 0x10) >> 1) |
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
915 ((b & 0x20) >> 3) | ((b & 0x40) >> 5) | ((b & 0x80) >> 7));
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
916 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
917 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
918 data.maskData = maskData;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
919 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
920 data.transparentPixel = transparentPixel;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
921 data.alpha = alpha;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
922 if (alpha is -1 && alphaData !is null) {
25
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 19
diff changeset
923 data.alphaData = new byte[alphaData.length];
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 19
diff changeset
924 System.arraycopy(alphaData, 0, data.alphaData, 0, alphaData.length);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
925 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
926 return data;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
927 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
928
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
929 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
930 * Invokes platform specific functionality to allocate a new image.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
931 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
932 * <b>IMPORTANT:</b> This method is <em>not</em> part of the public
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
933 * API for <code>Image</code>. It is marked public only so that it
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
934 * can be shared within the packages provided by DWT. It is not
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
935 * available on all platforms, and should never be called from
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
936 * application code.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
937 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
938 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
939 * @param device the device on which to allocate the color
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
940 * @param type the type of the image (<code>DWT.BITMAP</code> or <code>DWT.ICON</code>)
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
941 * @param pixmap the OS handle for the image
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
942 * @param mask the OS handle for the image mask
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
943 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
944 * @private
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
945 */
92
ddb19cb18d2e package dnd
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
946 public static Image gtk_new(Device device, int type, GdkDrawable* pixmap, GdkDrawable* mask) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
947 if (device is null) device = Device.getDevice();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
948 Image image = new Image();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
949 image.type = type;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
950 image.pixmap = cast(GdkDrawable*)pixmap;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
951 image.mask = cast(GdkDrawable*)mask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
952 image.device = device;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
953 return image;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
954 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
955
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
956 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
957 * Returns an integer hash code for the receiver. Any two
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
958 * objects that return <code>true</code> when passed to
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
959 * <code>equals</code> must return the same value for this
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
960 * method.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
961 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
962 * @return the receiver's hash
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
963 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
964 * @see #equals
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
965 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
966 public override hash_t toHash () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
967 return cast(hash_t)/*64*/pixmap;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
968 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
969
216
997624cece6a renames init() to init_() to avoid problems in tango collections in jface port
Frank Benoit <benoit@tionex.de>
parents: 200
diff changeset
970 void init_(Device device, int width, int height) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
971 if (width <= 0 || height <= 0) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
972 DWT.error (DWT.ERROR_INVALID_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
973 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
974 this.device = device;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
975 this.type = DWT.BITMAP;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
976
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
977 /* Create the pixmap */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
978 this.pixmap = cast(GdkDrawable*) OS.gdk_pixmap_new(cast(GdkDrawable*)OS.GDK_ROOT_PARENT(), width, height, -1);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
979 if (pixmap is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
980 /* Fill the bitmap with white */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
981 GdkColor* white = new GdkColor();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
982 white.red = 0xFFFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
983 white.green = 0xFFFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
984 white.blue = 0xFFFF;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
985 auto colormap = OS.gdk_colormap_get_system();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
986 OS.gdk_colormap_alloc_color(colormap, white, true, true);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
987 auto gdkGC = OS.gdk_gc_new(pixmap);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
988 OS.gdk_gc_set_foreground(gdkGC, white);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
989 OS.gdk_draw_rectangle(pixmap, gdkGC, 1, 0, 0, width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
990 OS.g_object_unref(gdkGC);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
991 OS.gdk_colormap_free_colors(colormap, white, 1);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
992 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
993
216
997624cece6a renames init() to init_() to avoid problems in tango collections in jface port
Frank Benoit <benoit@tionex.de>
parents: 200
diff changeset
994 void init_(Device device, ImageData image) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
995 if (image is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
996 this.device = device;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
997 int width = image.width;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
998 int height = image.height;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
999 PaletteData palette = image.palette;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1000 if (!(((image.depth is 1 || image.depth is 2 || image.depth is 4 || image.depth is 8) && !palette.isDirect) ||
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1001 ((image.depth is 8) || (image.depth is 16 || image.depth is 24 || image.depth is 32) && palette.isDirect)))
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1002 DWT.error (DWT.ERROR_UNSUPPORTED_DEPTH);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1003 auto pixbuf = OS.gdk_pixbuf_new( OS.GDK_COLORSPACE_RGB, false, 8, width, height);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1004 if (pixbuf is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1005 int stride = OS.gdk_pixbuf_get_rowstride(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1006 auto data = OS.gdk_pixbuf_get_pixels(pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1007 byte[] buffer = image.data;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1008 if (!palette.isDirect || image.depth !is 24 || stride !is image.bytesPerLine || palette.redMask !is 0xFF0000 || palette.greenMask !is 0xFF00 || palette.blueMask !is 0xFF) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1009 buffer = new byte[stride * height];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1010 if (palette.isDirect) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1011 ImageData.blit(ImageData.BLIT_SRC,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1012 image.data, image.depth, image.bytesPerLine, image.getByteOrder(), 0, 0, width, height, palette.redMask, palette.greenMask, palette.blueMask,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1013 ImageData.ALPHA_OPAQUE, null, 0, 0, 0,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1014 buffer, 24, stride, ImageData.MSB_FIRST, 0, 0, width, height, 0xFF0000, 0xFF00, 0xFF,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1015 false, false);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1016 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1017 RGB[] rgbs = palette.getRGBs();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1018 int length = rgbs.length;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1019 byte[] srcReds = new byte[length];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1020 byte[] srcGreens = new byte[length];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1021 byte[] srcBlues = new byte[length];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1022 for (int i = 0; i < rgbs.length; i++) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1023 RGB rgb = rgbs[i];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1024 if (rgb is null) continue;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1025 srcReds[i] = cast(byte)rgb.red;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1026 srcGreens[i] = cast(byte)rgb.green;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1027 srcBlues[i] = cast(byte)rgb.blue;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1028 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1029 ImageData.blit(ImageData.BLIT_SRC,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1030 image.data, image.depth, image.bytesPerLine, image.getByteOrder(), 0, 0, width, height, srcReds, srcGreens, srcBlues,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1031 ImageData.ALPHA_OPAQUE, null, 0, 0, 0,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1032 buffer, 24, stride, ImageData.MSB_FIRST, 0, 0, width, height, 0xFF0000, 0xFF00, 0xFF,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1033 false, false);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1034 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1035 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1036 memmove(data, buffer.ptr, stride * height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1037 auto pixmap = cast(GdkDrawable*) OS.gdk_pixmap_new (cast(GdkDrawable*) OS.GDK_ROOT_PARENT(), width, height, -1);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1038 if (pixmap is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1039 auto gdkGC = OS.gdk_gc_new(pixmap);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1040 if (gdkGC is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1041 OS.gdk_pixbuf_render_to_drawable(pixbuf, pixmap, gdkGC, 0, 0, 0, 0, width, height, OS.GDK_RGB_DITHER_NORMAL, 0, 0);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1042 OS.g_object_unref(gdkGC);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1043 OS.g_object_unref(pixbuf);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1044
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1045 bool isIcon = image.getTransparencyType() is DWT.TRANSPARENCY_MASK;
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1046 if (isIcon || image.transparentPixel !is -1) {
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1047 if (image.transparentPixel !is -1) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1048 RGB rgb = null;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1049 if (palette.isDirect) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1050 rgb = palette.getRGB(image.transparentPixel);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1051 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1052 if (image.transparentPixel < palette.colors.length) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1053 rgb = palette.getRGB(image.transparentPixel);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1054 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1055 }
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1056 if (rgb !is null) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1057 transparentPixel = rgb.red << 16 | rgb.green << 8 | rgb.blue;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1058 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1059 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1060 auto mask = createMask(image, isIcon);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1061 if (mask is null) DWT.error(DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1062 this.mask = mask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1063 if (isIcon) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1064 this.type = DWT.ICON;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1065 } else {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1066 this.type = DWT.BITMAP;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1067 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1068 } else {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1069 this.type = DWT.BITMAP;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1070 this.mask = null;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1071 this.alpha = image.alpha;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1072 if (image.alpha is -1 && image.alphaData !is null) {
25
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 19
diff changeset
1073 this.alphaData = new byte[image.alphaData.length];
fc2b263b8a3f Merged back the System.arraycopy and use a System class
Frank Benoit <benoit@tionex.de>
parents: 19
diff changeset
1074 System.arraycopy(image.alphaData, 0, this.alphaData, 0, alphaData.length);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1075 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1076 createAlphaMask(width, height);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1077 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1078 this.pixmap = pixmap;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1079 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1080
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1081 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1082 * Invokes platform specific functionality to allocate a new GC handle.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1083 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1084 * <b>IMPORTANT:</b> This method is <em>not</em> part of the public
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1085 * API for <code>Image</code>. It is marked public only so that it
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1086 * can be shared within the packages provided by DWT. It is not
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1087 * available on all platforms, and should never be called from
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1088 * application code.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1089 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1090 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1091 * @param data the platform specific GC data
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1092 * @return the platform specific GC handle
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1093 */
19
Frank Benoit <benoit@tionex.de>
parents: 18
diff changeset
1094 public GdkGC* internal_new_GC (GCData data) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1095 if (pixmap is null) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1096 if (type !is DWT.BITMAP || memGC !is null) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1097 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1098 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1099 auto gdkGC = OS.gdk_gc_new(pixmap);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1100 if (data !is null) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1101 int mask = DWT.LEFT_TO_RIGHT | DWT.RIGHT_TO_LEFT;
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1102 if ((data.style & mask) is 0) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1103 data.style |= DWT.LEFT_TO_RIGHT;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1104 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1105 data.device = device;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1106 data.drawable = pixmap;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1107 data.background = device.COLOR_WHITE.handle;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1108 data.foreground = device.COLOR_BLACK.handle;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1109 data.font = device.systemFont.handle;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1110 data.image = this;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1111 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1112 return gdkGC;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1113 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1114
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1115 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1116 * Invokes platform specific functionality to dispose a GC handle.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1117 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1118 * <b>IMPORTANT:</b> This method is <em>not</em> part of the public
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1119 * API for <code>Image</code>. It is marked public only so that it
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1120 * can be shared within the packages provided by DWT. It is not
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1121 * available on all platforms, and should never be called from
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1122 * application code.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1123 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1124 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1125 * @param hDC the platform specific GC handle
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1126 * @param data the platform specific GC data
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1127 */
19
Frank Benoit <benoit@tionex.de>
parents: 18
diff changeset
1128 public void internal_dispose_GC ( GdkGC* gdkGC, GCData data) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1129 OS.g_object_unref(gdkGC);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1130 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1131
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1132 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1133 * Returns <code>true</code> if the image has been disposed,
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1134 * and <code>false</code> otherwise.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1135 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1136 * This method gets the dispose state for the image.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1137 * When an image has been disposed, it is an error to
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1138 * invoke any other method using the image.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1139 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1140 * @return <code>true</code> when the image is disposed and <code>false</code> otherwise
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1141 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
1142 public override bool isDisposed() {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1143 return pixmap is null;
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1144 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1145
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1146 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1147 * Sets the color to which to map the transparent pixel.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1148 * <p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1149 * There are certain uses of <code>Images</code> that do not support
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1150 * transparency (for example, setting an image into a button or label).
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1151 * In these cases, it may be desired to simulate transparency by using
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1152 * the background color of the widget to paint the transparent pixels
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1153 * of the image. This method specifies the color that will be used in
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1154 * these cases. For example:
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1155 * <pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1156 * Button b = new Button();
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1157 * image.setBackground(b.getBackground());
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1158 * b.setImage(image);
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1159 * </pre>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1160 * </p><p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1161 * The image may be modified by this operation (in effect, the
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1162 * transparent regions may be filled with the supplied color). Hence
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1163 * this operation is not reversible and it is not legal to call
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1164 * this function twice or with a null argument.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1165 * </p><p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1166 * This method has no effect if the receiver does not have a transparent
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1167 * pixel value.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1168 * </p>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1169 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1170 * @param color the color to use when a transparent pixel is specified
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1171 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1172 * @exception IllegalArgumentException <ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1173 * <li>ERROR_NULL_ARGUMENT - if the color is null</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1174 * <li>ERROR_INVALID_ARGUMENT - if the color has been disposed</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1175 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1176 * @exception DWTException <ul>
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1177 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1178 * </ul>
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1179 */
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1180 public void setBackground(Color color) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1181 if (isDisposed()) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1182 if (color is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1183 if (color.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
131
ee2998e3cfaa replace == and !=
Frank Benoit <benoit@tionex.de>
parents: 92
diff changeset
1184 if (transparentPixel is -1) return;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1185 //NOT DONE
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1186 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1187
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1188 /**
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1189 * Returns a string containing a concise, human-readable
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1190 * description of the receiver.
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1191 *
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1192 * @return a string representation of the receiver
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1193 */
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 216
diff changeset
1194 public override String toString () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1195 if (isDisposed()) return "Image {*DISPOSED*}";
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
1196 return Format( "Image {{{}}", pixmap);
18
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1197 }
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1198
92223a4ecca7 start of image port
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1199 }
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
1200