annotate dwt/graphics/PaletteData.d @ 259:c0d810de7093

Update SWT 3.4M7 to 3.4
author Frank Benoit <benoit@tionex.de>
date Sun, 29 Jun 2008 14:33:38 +0200
parents df23b11d0b70
children
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 /*******************************************************************************
259
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 188
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
de77855733ca more ...
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>
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
10
63c023465156 moved from org.eclipse.swt to dwt
Frank Benoit <benoit@tionex.de>
parents: 9
diff changeset
13 module dwt.graphics.PaletteData;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
16 import dwt.DWT;
10
63c023465156 moved from org.eclipse.swt to dwt
Frank Benoit <benoit@tionex.de>
parents: 9
diff changeset
17 import dwt.graphics.RGB;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 /**
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 * Instances of this class describe the color data used by an image.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 * <p>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 * Depending on the depth of the image, the PaletteData can take one
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 * of two forms, indicated by the isDirect field:
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 * </p>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 * <dl>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 * <dt>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 * <em>isDirect is false</em>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 * </dt>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 * <dd>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 * If isDirect is <code>false</code>, this palette is an indexed
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 * palette which maps pixel values to RGBs. The actual RGB values
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 * may be retrieved by using the getRGBs() method.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * </dd>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 * <dt>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * <em>isDirect is true</em>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * </dt>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * <dd>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * If isDirect is <code>true</code>, this palette is a direct color
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * palette. Instead of containing RGB values, it contains red,
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * green and blue mask and shift information which indicates how
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * the color components may be extracted from a given pixel.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * This means that the RGB value is actually encoded in the pixel value.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * <p>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * In this case, the shift data is the number of bits required to shift
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * the RGB value to the left in order to align the high bit of the
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * corresponding mask with the high bit of the first byte. This number
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * may be negative, so care must be taken when shifting. For example,
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * with a red mask of 0xFF0000, the red shift would be -16. With a red
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 * mask of 0x1F, the red shift would be 3.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * </p>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * </dd>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 * </dl>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 * @see Image
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 * @see RGB
259
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 188
diff changeset
56 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 */
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 public final class PaletteData {
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
61 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
62 * true if the receiver is a direct palette,
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
63 * and false otherwise
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
64 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
65 public bool isDirect;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
67 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
68 * the RGB values for an indexed palette, where the
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
69 * indices of the array correspond to pixel values
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
70 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
71 public RGB[] colors;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
73 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
74 * the red mask for a direct palette
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
75 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
76 public int redMask;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
78 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
79 * the green mask for a direct palette
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
80 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
81 public int greenMask;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
83 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
84 * the blue mask for a direct palette
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
85 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
86 public int blueMask;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
88 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
89 * the red shift for a direct palette
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
90 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
91 public int redShift;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
93 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
94 * the green shift for a direct palette
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
95 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
96 public int greenShift;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
98 /**
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
99 * the blue shift for a direct palette
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
100 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
101 public int blueShift;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 /**
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 * Constructs a new indexed palette given an array of RGB values.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 * @param colors the array of <code>RGB</code>s for the palette
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * @exception IllegalArgumentException <ul>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * <li>ERROR_NULL_ARGUMENT - if the argument is null</li>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * </ul>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 */
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 public this(RGB[] colors) {
188
df23b11d0b70 minor changes to be more compatible to dwt-win, fixed potetial ==/is bugs.
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
113 if (colors 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: 10
diff changeset
114 this.colors = colors;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
115 this.isDirect = false;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 }
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 /**
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 * Constructs a new direct palette given the red, green and blue masks.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 * @param redMask the red mask
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 * @param greenMask the green mask
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * @param blueMask the blue mask
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 */
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 public this(int redMask, int greenMask, int blueMask) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
126 this.redMask = redMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
127 this.greenMask = greenMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
128 this.blueMask = blueMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
129 this.isDirect = true;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
130 this.redShift = shiftForMask(redMask);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
131 this.greenShift = shiftForMask(greenMask);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
132 this.blueShift = shiftForMask(blueMask);
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 }
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 /**
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 * Returns the pixel value corresponding to the given <code>RGB</code>.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 * @param rgb the RGB to get the pixel value for
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 * @return the pixel value for the given RGB
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 * @exception IllegalArgumentException <ul>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 * <li>ERROR_NULL_ARGUMENT - if the argument is null</li>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 * <li>ERROR_INVALID_ARGUMENT - if the RGB is not found in the palette</li>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 * </ul>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 */
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 public int getPixel(RGB rgb) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
147 if (rgb 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: 10
diff changeset
148 if (isDirect) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
149 int pixel = 0;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
150 pixel |= (redShift < 0 ? rgb.red << -redShift : rgb.red >>> redShift) & redMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
151 pixel |= (greenShift < 0 ? rgb.green << -greenShift : rgb.green >>> greenShift) & greenMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
152 pixel |= (blueShift < 0 ? rgb.blue << -blueShift : rgb.blue >>> blueShift) & blueMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
153 return pixel;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
154 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
155 for (int i = 0; i < colors.length; i++) {
188
df23b11d0b70 minor changes to be more compatible to dwt-win, fixed potetial ==/is bugs.
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
156 if (colors[i].opEquals(rgb) ) return i;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
157 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
158 /* The RGB did not exist in the palette */
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
159 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: 10
diff changeset
160 return 0;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
161 }
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 }
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 /**
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 * Returns an <code>RGB</code> corresponding to the given pixel value.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 * @param pixel the pixel to get the RGB value for
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 * @return the RGB value for the given pixel
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 * @exception IllegalArgumentException <ul>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 * <li>ERROR_NULL_ARGUMENT - if the argument is null</li>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 * <li>ERROR_INVALID_ARGUMENT - if the pixel does not exist in the palette</li>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 * </ul>
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 */
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 public RGB getRGB(int pixel) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
176 if (isDirect) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
177 int r = pixel & redMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
178 r = (redShift < 0) ? r >>> -redShift : r << redShift;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
179 int g = pixel & greenMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
180 g = (greenShift < 0) ? g >>> -greenShift : g << greenShift;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
181 int b = pixel & blueMask;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
182 b = (blueShift < 0) ? b >>> -blueShift : b << blueShift;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
183 return new RGB(r, g, b);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
184 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
185 if (pixel < 0 || pixel >= colors.length) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
186 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: 10
diff changeset
187 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
188 return colors[pixel];
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
189 }
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 }
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 /**
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 * Returns all the RGB values in the receiver if it is an
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 * indexed palette, or null if it is a direct palette.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 * @return the <code>RGB</code>s for the receiver or null
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 */
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 public RGB[] getRGBs() {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
199 return colors;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 }
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 /**
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 * Computes the shift value for a given mask.
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 * @param mask the mask to compute the shift for
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 * @return the shift amount
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 *
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 * @see PaletteData
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 */
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 int shiftForMask(int mask) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
211 for (int i = 31; i >= 0; i--) {
188
df23b11d0b70 minor changes to be more compatible to dwt-win, fixed potetial ==/is bugs.
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
212 if (((mask >> i) & 0x1) !is 0) return 7 - i;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
213 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 10
diff changeset
214 return 32;
5
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 }
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216
de77855733ca more ...
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 }