annotate dwt/graphics/GC.d @ 22:5f2e72114476

Image in work, this revision does not compile
author Frank Benoit <benoit@tionex.de>
date Sat, 26 Jan 2008 19:05:32 +0100
parents
children f5482da87ed8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 *******************************************************************************/
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 module dwt.graphics.GC;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 //PORTING_TYPE
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 class GC{
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 /++
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.DWT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.DWTError;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.DWTException;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.internal.Compatibility;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.internal.gdip.Gdip;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.internal.gdip.PointF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.internal.gdip.Rect;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.internal.gdip.RectF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.internal.win32.BITMAP;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.internal.win32.BITMAPINFOHEADER;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.internal.win32.BLENDFUNCTION;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.internal.win32.GRADIENT_RECT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwt.internal.win32.ICONINFO;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import dwt.internal.win32.LOGBRUSH;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import dwt.internal.win32.LOGFONT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import dwt.internal.win32.LOGFONTA;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import dwt.internal.win32.LOGFONTW;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 import dwt.internal.win32.LOGPEN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import dwt.internal.win32.OS;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 import dwt.internal.win32.POINT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 import dwt.internal.win32.RECT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 import dwt.internal.win32.SIZE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 import dwt.internal.win32.TCHAR;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 import dwt.internal.win32.TEXTMETRIC;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 import dwt.internal.win32.TEXTMETRICA;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 import dwt.internal.win32.TEXTMETRICW;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 import dwt.internal.win32.TRIVERTEX;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * Class <code>GC</code> is where all of the drawing capabilities that are
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * supported by DWT are located. Instances are used to draw on either an
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 * <code>Image</code>, a <code>Control</code>, or directly on a <code>Display</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * <dl>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * <dt><b>Styles:</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 * <dd>LEFT_TO_RIGHT, RIGHT_TO_LEFT</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * </dl>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 * The DWT drawing coordinate system is the two-dimensional space with the origin
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 * (0,0) at the top left corner of the drawing area and with (x,y) values increasing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 * to the right and downward respectively.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * Application code must explicitly invoke the <code>GC.dispose()</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * method to release the operating system resources managed by each instance
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 * when those instances are no longer required. This is <em>particularly</em>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * important on Windows95 and Windows98 where the operating system has a limited
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * number of device contexts available.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * Note: Only one of LEFT_TO_RIGHT and RIGHT_TO_LEFT may be specified.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * @see dwt.events.PaintEvent
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 public final class GC extends Resource {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * the handle to the OS device context
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * (Warning: This field is platform dependent)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * <b>IMPORTANT:</b> This field is <em>not</em> part of the DWT
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * public API. It is marked public only so that it can be shared
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * within the packages provided by DWT. It is not available on all
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * platforms and should never be accessed from application code.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 public int handle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 Drawable drawable;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 GCData data;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 static final int FOREGROUND = 1 << 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 static final int BACKGROUND = 1 << 1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 static final int FONT = 1 << 2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 static final int LINE_STYLE = 1 << 3;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 static final int LINE_WIDTH = 1 << 4;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 static final int LINE_CAP = 1 << 5;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 static final int LINE_JOIN = 1 << 6;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 static final int LINE_MITERLIMIT = 1 << 7;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 static final int FOREGROUND_TEXT = 1 << 8;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 static final int BACKGROUND_TEXT = 1 << 9;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 static final int BRUSH = 1 << 10;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 static final int PEN = 1 << 11;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 static final int NULL_BRUSH = 1 << 12;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 static final int NULL_PEN = 1 << 13;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 static final int DRAW_OFFSET = 1 << 14;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 static final int DRAW = FOREGROUND | LINE_STYLE | LINE_WIDTH | LINE_CAP | LINE_JOIN | LINE_MITERLIMIT | PEN | NULL_BRUSH | DRAW_OFFSET;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 static final int FILL = BACKGROUND | BRUSH | NULL_PEN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 static final float[] LINE_DOT_ZERO = new float[]{3, 3};
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 static final float[] LINE_DASH_ZERO = new float[]{18, 6};
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 static final float[] LINE_DASHDOT_ZERO = new float[]{9, 6, 3, 6};
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 static final float[] LINE_DASHDOTDOT_ZERO = new float[]{9, 3, 3, 3, 3, 3};
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 * Prevents uninitialized instances from being created outside the package.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 GC() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 * Constructs a new instance of this class which has been
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * configured to draw on the specified drawable. Sets the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * foreground color, background color and font in the GC
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * to match those in the drawable.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * You must dispose the graphics context when it is no longer required.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 * @param drawable the drawable to draw on
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 * <li>ERROR_NULL_ARGUMENT - if the drawable is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * <li>ERROR_NULL_ARGUMENT - if there is no current device</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 * <li>ERROR_INVALID_ARGUMENT
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 * - if the drawable is an image that is not a bitmap or an icon
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 * - if the drawable is an image or printer that is already selected
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 * into another graphics context</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 * @exception DWTError <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 * <li>ERROR_NO_HANDLES if a handle could not be obtained for GC creation</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 * <li>ERROR_THREAD_INVALID_ACCESS if not called from the thread that created the drawable</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 public GC(Drawable drawable) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 this(drawable, DWT.NONE);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 * Constructs a new instance of this class which has been
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 * configured to draw on the specified drawable. Sets the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 * foreground color, background color and font in the GC
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 * to match those in the drawable.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 * You must dispose the graphics context when it is no longer required.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 * @param drawable the drawable to draw on
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 * @param style the style of GC to construct
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 * <li>ERROR_NULL_ARGUMENT - if the drawable is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 * <li>ERROR_NULL_ARGUMENT - if there is no current device</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 * <li>ERROR_INVALID_ARGUMENT
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 * - if the drawable is an image that is not a bitmap or an icon
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 * - if the drawable is an image or printer that is already selected
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 * into another graphics context</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 * @exception DWTError <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 * <li>ERROR_NO_HANDLES if a handle could not be obtained for GC creation</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 * <li>ERROR_THREAD_INVALID_ACCESS if not called from the thread that created the drawable</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 * @since 2.1.2
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 public GC(Drawable drawable, int style) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 if (drawable is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 GCData data = new GCData ();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 data.style = checkStyle(style);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 int hDC = drawable.internal_new_GC(data);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 Device device = data.device;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 if (device is null) device = Device.getDevice();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 if (device is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 this.device = data.device = device;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 init (drawable, data, hDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 if (device.tracking) device.new_Object(this);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 static int checkStyle(int style) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 if ((style & DWT.LEFT_TO_RIGHT) !is 0) style &= ~DWT.RIGHT_TO_LEFT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 return style & (DWT.LEFT_TO_RIGHT | DWT.RIGHT_TO_LEFT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 void checkGC(int mask) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 int state = data.state;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 if ((state & mask) is mask) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 state = (state ^ mask) & mask;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 data.state |= mask;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 int pen = data.gdipPen;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 float width = data.lineWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 if ((state & FOREGROUND) !is 0 || (pen is 0 && (state & (LINE_WIDTH | LINE_STYLE | LINE_MITERLIMIT | LINE_JOIN | LINE_CAP)) !is 0)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 if (data.gdipFgBrush !is 0) Gdip.SolidBrush_delete(data.gdipFgBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 data.gdipFgBrush = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 int brush;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 Pattern pattern = data.foregroundPattern;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 if (pattern !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 brush = pattern.handle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 switch (Gdip.Brush_GetType(brush)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 case Gdip.BrushTypeTextureFill:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 brush = Gdip.Brush_Clone(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 if (brush is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 Gdip.TextureBrush_ScaleTransform(brush, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 data.gdipFgBrush = brush;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 int foreground = data.foreground;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 int rgb = ((foreground >> 16) & 0xFF) | (foreground & 0xFF00) | ((foreground & 0xFF) << 16);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 int color = Gdip.Color_new(data.alpha << 24 | rgb);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 if (color is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 brush = Gdip.SolidBrush_new(color);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 if (brush is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 Gdip.Color_delete(color);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 data.gdipFgBrush = brush;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 if (pen !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 Gdip.Pen_SetBrush(pen, brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 pen = data.gdipPen = Gdip.Pen_new(brush, width);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 if ((state & LINE_WIDTH) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 Gdip.Pen_SetWidth(pen, width);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 switch (data.lineStyle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 case DWT.LINE_CUSTOM:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 state |= LINE_STYLE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 if ((state & LINE_STYLE) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 float[] dashes = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 float dashOffset = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 int dashStyle = Gdip.DashStyleSolid;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 switch (data.lineStyle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 case DWT.LINE_SOLID: break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 case DWT.LINE_DOT: dashStyle = Gdip.DashStyleDot; if (width is 0) dashes = LINE_DOT_ZERO; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 case DWT.LINE_DASH: dashStyle = Gdip.DashStyleDash; if (width is 0) dashes = LINE_DASH_ZERO; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 case DWT.LINE_DASHDOT: dashStyle = Gdip.DashStyleDashDot; if (width is 0) dashes = LINE_DASHDOT_ZERO; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 case DWT.LINE_DASHDOTDOT: dashStyle = Gdip.DashStyleDashDotDot; if (width is 0) dashes = LINE_DASHDOTDOT_ZERO; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 case DWT.LINE_CUSTOM: {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 if (data.lineDashes !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 dashOffset = data.lineDashesOffset / Math.max (1, width);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 dashes = new float[data.lineDashes.length * 2];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 for (int i = 0; i < data.lineDashes.length; i++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 float dash = data.lineDashes[i] / Math.max (1, width);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 dashes[i] = dash;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 dashes[i + data.lineDashes.length] = dash;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 if (dashes !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 Gdip.Pen_SetDashPattern(pen, dashes, dashes.length);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 Gdip.Pen_SetDashStyle(pen, Gdip.DashStyleCustom);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 Gdip.Pen_SetDashOffset(pen, dashOffset);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 Gdip.Pen_SetDashStyle(pen, dashStyle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 if ((state & LINE_MITERLIMIT) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 Gdip.Pen_SetMiterLimit(pen, data.lineMiterLimit);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 if ((state & LINE_JOIN) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 int joinStyle = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 switch (data.lineJoin) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 case DWT.JOIN_MITER: joinStyle = Gdip.LineJoinMiter; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 case DWT.JOIN_BEVEL: joinStyle = Gdip.LineJoinBevel; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 case DWT.JOIN_ROUND: joinStyle = Gdip.LineJoinRound; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 Gdip.Pen_SetLineJoin(pen, joinStyle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 if ((state & LINE_CAP) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 int dashCap = Gdip.DashCapFlat, capStyle = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 switch (data.lineCap) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 case DWT.CAP_FLAT: capStyle = Gdip.LineCapFlat; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 case DWT.CAP_ROUND: capStyle = Gdip.LineCapRound; dashCap = Gdip.DashCapRound; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 case DWT.CAP_SQUARE: capStyle = Gdip.LineCapSquare; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 Gdip.Pen_SetLineCap(pen, capStyle, capStyle, dashCap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 if ((state & BACKGROUND) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 if (data.gdipBgBrush !is 0) Gdip.SolidBrush_delete(data.gdipBgBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 data.gdipBgBrush = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 Pattern pattern = data.backgroundPattern;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 if (pattern !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 data.gdipBrush = pattern.handle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 switch (Gdip.Brush_GetType(data.gdipBrush)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 case Gdip.BrushTypeTextureFill:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 int brush = Gdip.Brush_Clone(data.gdipBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 if (brush is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 Gdip.TextureBrush_ScaleTransform(brush, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 data.gdipBrush = data.gdipBgBrush = brush;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 int background = data.background;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 int rgb = ((background >> 16) & 0xFF) | (background & 0xFF00) | ((background & 0xFF) << 16);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 int color = Gdip.Color_new(data.alpha << 24 | rgb);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 if (color is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 int brush = Gdip.SolidBrush_new(color);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 if (brush is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 Gdip.Color_delete(color);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 data.gdipBrush = data.gdipBgBrush = brush;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 if ((state & FONT) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 OS.SelectObject(handle, data.hFont);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 int font = createGdipFont(handle, data.hFont);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 if (data.gdipFont !is 0) Gdip.Font_delete(data.gdipFont);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 data.gdipFont = font;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 if ((state & DRAW_OFFSET) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 data.gdipXOffset = data.gdipYOffset = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 int matrix = Gdip.Matrix_new(1, 0, 0, 1, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 float[] elements = new float[6];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 Gdip.Graphics_GetTransform(gdipGraphics, matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 Gdip.Matrix_GetElements(matrix, elements);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 Gdip.Matrix_delete(matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 float scaling = elements[0];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 if (scaling < 0) scaling = -scaling;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 float penWidth = data.lineWidth * scaling;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 if (penWidth is 0 || ((int)penWidth % 2) is 1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 data.gdipXOffset = 0.5f / scaling;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 scaling = elements[3];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 if (scaling < 0) scaling = -scaling;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 penWidth = data.lineWidth * scaling;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 if (penWidth is 0 || ((int)penWidth % 2) is 1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 data.gdipYOffset = 0.5f / scaling;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 if ((state & (FOREGROUND | LINE_CAP | LINE_JOIN | LINE_STYLE | LINE_WIDTH)) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 int color = data.foreground;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 int width = (int)data.lineWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 int[] dashes = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 int lineStyle = OS.PS_SOLID;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 switch (data.lineStyle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 case DWT.LINE_SOLID: break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 case DWT.LINE_DASH: lineStyle = OS.PS_DASH; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 case DWT.LINE_DOT: lineStyle = OS.PS_DOT; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 case DWT.LINE_DASHDOT: lineStyle = OS.PS_DASHDOT; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 case DWT.LINE_DASHDOTDOT: lineStyle = OS.PS_DASHDOTDOT; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 case DWT.LINE_CUSTOM: {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 if (data.lineDashes !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 lineStyle = OS.PS_USERSTYLE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 dashes = new int[data.lineDashes.length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 for (int i = 0; i < dashes.length; i++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 dashes[i] = (int)data.lineDashes[i];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 if ((state & LINE_STYLE) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 OS.SetBkMode(handle, data.lineStyle is DWT.LINE_SOLID ? OS.OPAQUE : OS.TRANSPARENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 int joinStyle = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 switch (data.lineJoin) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 case DWT.JOIN_MITER: joinStyle = OS.PS_JOIN_MITER; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 case DWT.JOIN_ROUND: joinStyle = OS.PS_JOIN_ROUND; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 case DWT.JOIN_BEVEL: joinStyle = OS.PS_JOIN_BEVEL; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 int capStyle = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 switch (data.lineCap) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 case DWT.CAP_ROUND: capStyle = OS.PS_ENDCAP_ROUND; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 case DWT.CAP_FLAT: capStyle = OS.PS_ENDCAP_FLAT; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 case DWT.CAP_SQUARE: capStyle = OS.PS_ENDCAP_SQUARE;break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 int style = lineStyle | joinStyle | capStyle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 * Feature in Windows. Windows does not honour line styles other then
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 * PS_SOLID for pens wider than 1 pixel created with CreatePen(). The fix
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 * is to use ExtCreatePen() instead.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 int newPen;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 if (OS.IsWinCE || (width is 0 && lineStyle !is OS.PS_USERSTYLE) || style is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 newPen = OS.CreatePen(style & OS.PS_STYLE_MASK, width, color);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 LOGBRUSH logBrush = new LOGBRUSH();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 logBrush.lbStyle = OS.BS_SOLID;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 logBrush.lbColor = color;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 /* Feature in Windows. PS_GEOMETRIC pens cannot have zero width. */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 newPen = OS.ExtCreatePen (style | OS.PS_GEOMETRIC, Math.max(1, width), logBrush, dashes !is null ? dashes.length : 0, dashes);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 OS.SelectObject(handle, newPen);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 data.state |= PEN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 data.state &= ~NULL_PEN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 if (data.hPen !is 0) OS.DeleteObject(data.hPen);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 data.hPen = data.hOldPen = newPen;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 } else if ((state & PEN) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 OS.SelectObject(handle, data.hOldPen);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 data.state &= ~NULL_PEN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 } else if ((state & NULL_PEN) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 data.hOldPen = OS.SelectObject(handle, OS.GetStockObject(OS.NULL_PEN));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 data.state &= ~PEN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 if ((state & BACKGROUND) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 int newBrush = OS.CreateSolidBrush(data.background);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 OS.SelectObject(handle, newBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 data.state |= BRUSH;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 data.state &= ~NULL_BRUSH;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 if (data.hBrush !is 0) OS.DeleteObject(data.hBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 data.hOldBrush = data.hBrush = newBrush;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 } else if ((state & BRUSH) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 OS.SelectObject(handle, data.hOldBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 data.state &= ~NULL_BRUSH;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 } else if ((state & NULL_BRUSH) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 data.hOldBrush = OS.SelectObject(handle, OS.GetStockObject(OS.NULL_BRUSH));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 data.state &= ~BRUSH;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 if ((state & BACKGROUND_TEXT) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 OS.SetBkColor(handle, data.background);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 if ((state & FOREGROUND_TEXT) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 OS.SetTextColor(handle, data.foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 if ((state & FONT) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 OS.SelectObject(handle, data.hFont);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 * Copies a rectangular area of the receiver at the specified
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 * position into the image, which must be of type <code>DWT.BITMAP</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 * @param image the image to copy into
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 * @param x the x coordinate in the receiver of the area to be copied
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 * @param y the y coordinate in the receiver of the area to be copied
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 * <li>ERROR_NULL_ARGUMENT - if the image is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 * <li>ERROR_INVALID_ARGUMENT - if the image is not a bitmap or has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 public void copyArea(Image image, int x, int y) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 if (image is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 if (image.type !is DWT.BITMAP || image.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458 /* Copy the bitmap area */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 Rectangle rect = image.getBounds();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 int memHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461 int hOldBitmap = OS.SelectObject(memHdc, image.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 OS.BitBlt(memHdc, 0, 0, rect.width, rect.height, handle, x, y, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 OS.SelectObject(memHdc, hOldBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 OS.DeleteDC(memHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 * Copies a rectangular area of the receiver at the source
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 * position onto the receiver at the destination position.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 * @param srcX the x coordinate in the receiver of the area to be copied
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 * @param srcY the y coordinate in the receiver of the area to be copied
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 * @param width the width of the area to copy
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 * @param height the height of the area to copy
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 * @param destX the x coordinate in the receiver of the area to copy to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 * @param destY the y coordinate in the receiver of the area to copy to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 public void copyArea(int srcX, int srcY, int width, int height, int destX, int destY) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 copyArea(srcX, srcY, width, height, destX, destY, true);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 * Copies a rectangular area of the receiver at the source
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 * position onto the receiver at the destination position.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 * @param srcX the x coordinate in the receiver of the area to be copied
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 * @param srcY the y coordinate in the receiver of the area to be copied
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 * @param width the width of the area to copy
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 * @param height the height of the area to copy
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 * @param destX the x coordinate in the receiver of the area to copy to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 * @param destY the y coordinate in the receiver of the area to copy to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 * @param paint if <code>true</code> paint events will be generated for old and obscured areas
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504 public void copyArea(int srcX, int srcY, int width, int height, int destX, int destY, bool paint) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 * Feature in WinCE. The function WindowFromDC is not part of the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 * WinCE SDK. The fix is to remember the HWND.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 int hwnd = data.hwnd;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 if (hwnd is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 OS.BitBlt(handle, destX, destY, width, height, handle, srcX, srcY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 RECT lprcClip = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 int hrgn = OS.CreateRectRgn(0, 0, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 if (OS.GetClipRgn(handle, hrgn) is 1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518 lprcClip = new RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519 OS.GetRgnBox(hrgn, lprcClip);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521 OS.DeleteObject(hrgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 RECT lprcScroll = new RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 OS.SetRect(lprcScroll, srcX, srcY, srcX + width, srcY + height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 int flags = paint ? OS.SW_INVALIDATE | OS.SW_ERASE : 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525 int res = OS.ScrollWindowEx(hwnd, destX - srcX, destY - srcY, lprcScroll, lprcClip, 0, null, flags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 * Feature in WinCE. ScrollWindowEx does not accept combined
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 * vertical and horizontal scrolling. The fix is to do a
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 * BitBlt and invalidate the appropriate source area.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 if (res is 0 && OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 OS.BitBlt(handle, destX, destY, width, height, handle, srcX, srcY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 if (paint) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 int deltaX = destX - srcX, deltaY = destY - srcY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 bool disjoint = (destX + width < srcX) || (srcX + width < destX) || (destY + height < srcY) || (srcY + height < destY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 if (disjoint) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 OS.InvalidateRect(hwnd, lprcScroll, true);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 if (deltaX !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 int newX = destX - deltaX;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 if (deltaX < 0) newX = destX + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 OS.SetRect(lprcScroll, newX, srcY, newX + Math.abs(deltaX), srcY + height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 OS.InvalidateRect(hwnd, lprcScroll, true);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546 if (deltaY !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 int newY = destY - deltaY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 if (deltaY < 0) newY = destY + height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 OS.SetRect(lprcScroll, srcX, newY, srcX + width, newY + Math.abs(deltaY));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 OS.InvalidateRect(hwnd, lprcScroll, true);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 static int createGdipFont(int hDC, int hFont) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 int font = Gdip.Font_new(hDC, hFont);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 if (font is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 if (!Gdip.Font_IsAvailable(font)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562 Gdip.Font_delete(font);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 LOGFONT logFont = OS.IsUnicode ? (LOGFONT)new LOGFONTW() : new LOGFONTA();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 OS.GetObject(hFont, LOGFONT.sizeof, logFont);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 int size = Math.abs(logFont.lfHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 int style = Gdip.FontStyleRegular;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 if (logFont.lfWeight is 700) style |= Gdip.FontStyleBold;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 if (logFont.lfItalic !is 0) style |= Gdip.FontStyleItalic;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 char[] chars;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 if (OS.IsUnicode) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 chars = ((LOGFONTW)logFont).lfFaceName;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 chars = new char[OS.LF_FACESIZE];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 byte[] bytes = ((LOGFONTA)logFont).lfFaceName;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 OS.MultiByteToWideChar (OS.CP_ACP, OS.MB_PRECOMPOSED, bytes, bytes.length, chars, chars.length);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
576 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 int index = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 while (index < chars.length) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 if (chars [index] is 0) break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 index++;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 String name = new String (chars, 0, index);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 if (Compatibility.equalsIgnoreCase(name, "Courier")) { //$NON-NLS-1$
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 name = "Courier New"; //$NON-NLS-1$
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 char[] buffer = new char[name.length() + 1];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 name.getChars(0, name.length(), buffer, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 font = Gdip.Font_new(buffer, size, style, Gdip.UnitPixel, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 if (font is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 return font;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 static void destroyGdipBrush(int brush) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 int type = Gdip.Brush_GetType(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 switch (type) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597 case Gdip.BrushTypeSolidColor:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 Gdip.SolidBrush_delete(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600 case Gdip.BrushTypeHatchFill:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 Gdip.HatchBrush_delete(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
603 case Gdip.BrushTypeLinearGradient:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
604 Gdip.LinearGradientBrush_delete(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
605 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 case Gdip.BrushTypeTextureFill:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607 Gdip.TextureBrush_delete(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 * Disposes of the operating system resources associated with
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614 * the graphics context. Applications must dispose of all GCs
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 * which they allocate.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617 * @exception DWTError <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 * <li>ERROR_THREAD_INVALID_ACCESS if not called from the thread that created the drawable</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 public void dispose() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
622 if (handle is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 if (data.device.isDisposed()) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 disposeGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 /* Select stock pen and brush objects and free resources */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 if (data.hPen !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 OS.SelectObject(handle, OS.GetStockObject(OS.NULL_PEN));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630 OS.DeleteObject(data.hPen);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631 data.hPen = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633 if (data.hBrush !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 OS.SelectObject(handle, OS.GetStockObject(OS.NULL_BRUSH));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 OS.DeleteObject(data.hBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 data.hBrush = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 * Put back the original bitmap into the device context.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641 * This will ensure that we have not left a bitmap
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 * selected in it when we delete the HDC.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 int hNullBitmap = data.hNullBitmap;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 if (hNullBitmap !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 OS.SelectObject(handle, hNullBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 data.hNullBitmap = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 Image image = data.image;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 if (image !is null) image.memGC = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 * Dispose the HDC.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 Device device = data.device;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656 if (drawable !is null) drawable.internal_dispose_GC(handle, data);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657 drawable = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 handle = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
659 data.image = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
660 data.ps = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
661 if (device.tracking) device.dispose_Object(this);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662 data.device = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 data = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 void disposeGdip() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 if (data.gdipPen !is 0) Gdip.Pen_delete(data.gdipPen);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668 if (data.gdipBgBrush !is 0) destroyGdipBrush(data.gdipBgBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 if (data.gdipFgBrush !is 0) destroyGdipBrush(data.gdipFgBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 if (data.gdipFont !is 0) Gdip.Font_delete(data.gdipFont);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671 if (data.gdipGraphics !is 0) Gdip.Graphics_delete(data.gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 data.gdipGraphics = data.gdipBrush = data.gdipBgBrush = data.gdipFgBrush =
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 data.gdipFont = data.gdipPen = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
675
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
677 * Draws the outline of a circular or elliptical arc
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 * within the specified rectangular area.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
680 * The resulting arc begins at <code>startAngle</code> and extends
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
681 * for <code>arcAngle</code> degrees, using the current color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
682 * Angles are interpreted such that 0 degrees is at the 3 o'clock
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
683 * position. A positive value indicates a counter-clockwise rotation
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
684 * while a negative value indicates a clockwise rotation.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
685 * </p><p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
686 * The center of the arc is the center of the rectangle whose origin
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
687 * is (<code>x</code>, <code>y</code>) and whose size is specified by the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
688 * <code>width</code> and <code>height</code> arguments.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
689 * </p><p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
690 * The resulting arc covers an area <code>width + 1</code> pixels wide
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
691 * by <code>height + 1</code> pixels tall.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
692 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694 * @param x the x coordinate of the upper-left corner of the arc to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695 * @param y the y coordinate of the upper-left corner of the arc to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 * @param width the width of the arc to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 * @param height the height of the arc to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698 * @param startAngle the beginning angle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 * @param arcAngle the angular extent of the arc, relative to the start angle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 public void drawArc (int x, int y, int width, int height, int startAngle, int arcAngle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 if (width < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 x = x + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 width = -width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 if (height < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 y = y + height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
714 height = -height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
716 if (width is 0 || height is 0 || arcAngle is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719 Gdip.Graphics_TranslateTransform(gdipGraphics, data.gdipXOffset, data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720 if (width is height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 Gdip.Graphics_DrawArc(gdipGraphics, data.gdipPen, x, y, width, height, -startAngle, -arcAngle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
723 int path = Gdip.GraphicsPath_new(Gdip.FillModeAlternate);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 if (path is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725 int matrix = Gdip.Matrix_new(width, 0, 0, height, x, y);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 if (matrix is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 Gdip.GraphicsPath_AddArc(path, 0, 0, 1, 1, -startAngle, -arcAngle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728 Gdip.GraphicsPath_Transform(path, matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
729 Gdip.Graphics_DrawPath(gdipGraphics, data.gdipPen, path);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730 Gdip.Matrix_delete(matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
731 Gdip.GraphicsPath_delete(path);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
732 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
733 Gdip.Graphics_TranslateTransform(gdipGraphics, -data.gdipXOffset, -data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
734 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
735 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
736 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
737 if (data.lineWidth !is 0 && data.lineWidth % 2 is 0) x--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
738 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
739 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
740 * Feature in WinCE. The function Arc is not present in the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
741 * WinCE SDK. The fix is to emulate arc drawing by using
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
742 * Polyline.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
743 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
744 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
745 /* compute arc with a simple linear interpolation */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
746 if (arcAngle < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
747 startAngle += arcAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
748 arcAngle = -arcAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
749 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
750 if (arcAngle > 360) arcAngle = 360;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
751 int[] points = new int[(arcAngle + 1) * 2];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
752 int cteX = 2 * x + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
753 int cteY = 2 * y + height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
754 int index = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
755 for (int i = 0; i <= arcAngle; i++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
756 points[index++] = (Compatibility.cos(startAngle + i, width) + cteX) >> 1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
757 points[index++] = (cteY - Compatibility.sin(startAngle + i, height)) >> 1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
758 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
759 OS.Polyline(handle, points, points.length / 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
760 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
761 int x1, y1, x2, y2,tmp;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
762 bool isNegative;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
763 if (arcAngle >= 360 || arcAngle <= -360) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
764 x1 = x2 = x + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
765 y1 = y2 = y + height / 2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
766 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
767 isNegative = arcAngle < 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
768
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
769 arcAngle = arcAngle + startAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
770 if (isNegative) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
771 // swap angles
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
772 tmp = startAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
773 startAngle = arcAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
774 arcAngle = tmp;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
775 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
776 x1 = Compatibility.cos(startAngle, width) + x + width/2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
777 y1 = -1 * Compatibility.sin(startAngle, height) + y + height/2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
778
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
779 x2 = Compatibility.cos(arcAngle, width) + x + width/2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
780 y2 = -1 * Compatibility.sin(arcAngle, height) + y + height/2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
781 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
782 OS.Arc(handle, x, y, x + width + 1, y + height + 1, x1, y1, x2, y2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
783 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
784 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
785
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
786 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
787 * Draws a rectangle, based on the specified arguments, which has
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
788 * the appearance of the platform's <em>focus rectangle</em> if the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
789 * platform supports such a notion, and otherwise draws a simple
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
790 * rectangle in the receiver's foreground color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
791 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
792 * @param x the x coordinate of the rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
793 * @param y the y coordinate of the rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
794 * @param width the width of the rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
795 * @param height the height of the rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
796 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
797 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
798 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
799 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
800 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
801 * @see #drawRectangle(int, int, int, int)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
802 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
803 public void drawFocus (int x, int y, int width, int height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
804 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
805 if ((data.uiState & OS.UISF_HIDEFOCUS) !is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
806 int hdc = handle, state = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
807 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
808 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
809 int clipRgn = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
810 Gdip.Graphics_SetPixelOffsetMode(gdipGraphics, Gdip.PixelOffsetModeNone);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
811 int rgn = Gdip.Region_new();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
812 if (rgn is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
813 Gdip.Graphics_GetClip(gdipGraphics, rgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
814 if (!Gdip.Region_IsInfinite(rgn, gdipGraphics)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
815 clipRgn = Gdip.Region_GetHRGN(rgn, gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
816 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
817 Gdip.Region_delete(rgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
818 Gdip.Graphics_SetPixelOffsetMode(gdipGraphics, Gdip.PixelOffsetModeHalf);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
819 float[] lpXform = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
820 int matrix = Gdip.Matrix_new(1, 0, 0, 1, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
821 if (matrix is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
822 Gdip.Graphics_GetTransform(gdipGraphics, matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
823 if (!Gdip.Matrix_IsIdentity(matrix)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
824 lpXform = new float[6];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
825 Gdip.Matrix_GetElements(matrix, lpXform);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
826 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
827 Gdip.Matrix_delete(matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
828 hdc = Gdip.Graphics_GetHDC(gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
829 state = OS.SaveDC(hdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
830 OS.SetBkColor(hdc, data.background);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
831 OS.SetTextColor(hdc, data.foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
832 if (lpXform !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
833 OS.SetGraphicsMode(hdc, OS.GM_ADVANCED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
834 OS.SetWorldTransform(hdc, lpXform);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
835 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
836 if (clipRgn !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
837 OS.SelectClipRgn(hdc, clipRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
838 OS.DeleteObject(clipRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
839 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
840 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
841 RECT rect = new RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
842 OS.SetRect(rect, x, y, x + width, y + height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
843 OS.DrawFocusRect(hdc, rect);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
844 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
845 OS.RestoreDC(hdc, state);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
846 Gdip.Graphics_ReleaseHDC(gdipGraphics, hdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
847 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
848 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
849
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
850 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
851 * Draws the given image in the receiver at the specified
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
852 * coordinates.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
853 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
854 * @param image the image to draw
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
855 * @param x the x coordinate of where to draw
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
856 * @param y the y coordinate of where to draw
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
857 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
858 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
859 * <li>ERROR_NULL_ARGUMENT - if the image is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
860 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
861 * <li>ERROR_INVALID_ARGUMENT - if the given coordinates are outside the bounds of the image</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
862 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
863 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
864 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
865 * @exception DWTError <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
866 * <li>ERROR_NO_HANDLES - if no handles are available to perform the operation</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
867 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
868 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
869 public void drawImage(Image image, int x, int y) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
870 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
871 if (image is null) DWT.error (DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
872 if (image.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
873 drawImage(image, 0, 0, -1, -1, x, y, -1, -1, true);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
874 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
875
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
876 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
877 * Copies a rectangular area from the source image into a (potentially
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
878 * different sized) rectangular area in the receiver. If the source
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
879 * and destination areas are of differing sizes, then the source
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
880 * area will be stretched or shrunk to fit the destination area
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
881 * as it is copied. The copy fails if any part of the source rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
882 * lies outside the bounds of the source image, or if any of the width
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
883 * or height arguments are negative.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
884 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
885 * @param image the source image
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
886 * @param srcX the x coordinate in the source image to copy from
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
887 * @param srcY the y coordinate in the source image to copy from
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
888 * @param srcWidth the width in pixels to copy from the source
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
889 * @param srcHeight the height in pixels to copy from the source
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
890 * @param destX the x coordinate in the destination to copy to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
891 * @param destY the y coordinate in the destination to copy to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
892 * @param destWidth the width in pixels of the destination rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
893 * @param destHeight the height in pixels of the destination rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
894 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
895 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
896 * <li>ERROR_NULL_ARGUMENT - if the image is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
897 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
898 * <li>ERROR_INVALID_ARGUMENT - if any of the width or height arguments are negative.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
899 * <li>ERROR_INVALID_ARGUMENT - if the source rectangle is not contained within the bounds of the source image</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
900 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
901 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
902 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
903 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
904 * @exception DWTError <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
905 * <li>ERROR_NO_HANDLES - if no handles are available to perform the operation</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
906 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
907 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
908 public void drawImage(Image image, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
909 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
910 if (srcWidth is 0 || srcHeight is 0 || destWidth is 0 || destHeight is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
911 if (srcX < 0 || srcY < 0 || srcWidth < 0 || srcHeight < 0 || destWidth < 0 || destHeight < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
912 DWT.error (DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
913 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
914 if (image is null) DWT.error (DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
915 if (image.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
916 drawImage(image, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
917 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
918
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
919 void drawImage(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, bool simple) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
920 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
921 //TODO - cache bitmap
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
922 int[] gdipImage = srcImage.createGdipImage();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
923 int img = gdipImage[0];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
924 int imgWidth = Gdip.Image_GetWidth(img);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
925 int imgHeight = Gdip.Image_GetHeight(img);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
926 if (simple) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
927 srcWidth = destWidth = imgWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
928 srcHeight = destHeight = imgHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
929 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
930 if (srcX + srcWidth > imgWidth || srcY + srcHeight > imgHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
931 DWT.error (DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
932 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
933 simple = srcX is 0 && srcY is 0 &&
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
934 srcWidth is destWidth && destWidth is imgWidth &&
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
935 srcHeight is destHeight && destHeight is imgHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
936 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
937 Rect rect = new Rect();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
938 rect.X = destX;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
939 rect.Y = destY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
940 rect.Width = destWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
941 rect.Height = destHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
942 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
943 * Note that if the wrap mode is not WrapModeTileFlipXY, the scaled image
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
944 * is translucent around the borders.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
945 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
946 int attrib = Gdip.ImageAttributes_new();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
947 Gdip.ImageAttributes_SetWrapMode(attrib, Gdip.WrapModeTileFlipXY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
948 if (data.alpha !is 0xFF) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
949 float[] matrix = new float[]{
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
950 1,0,0,0,0,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
951 0,1,0,0,0,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
952 0,0,1,0,0,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
953 0,0,0,data.alpha / (float)0xFF,0,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
954 0,0,0,0,1,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
955 };
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
956 Gdip.ImageAttributes_SetColorMatrix(attrib, matrix, Gdip.ColorMatrixFlagsDefault, Gdip.ColorAdjustTypeBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
957 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
958 int gstate = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
959 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
960 gstate = Gdip.Graphics_Save(data.gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
961 Gdip.Graphics_ScaleTransform(data.gdipGraphics, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
962 Gdip.Graphics_TranslateTransform(data.gdipGraphics, - 2 * destX - destWidth, 0, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
963 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
964 Gdip.Graphics_DrawImage(data.gdipGraphics, img, rect, srcX, srcY, srcWidth, srcHeight, Gdip.UnitPixel, attrib, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
965 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
966 Gdip.Graphics_Restore(data.gdipGraphics, gstate);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
967 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
968 Gdip.ImageAttributes_delete(attrib);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
969 Gdip.Bitmap_delete(img);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
970 if (gdipImage[1] !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
971 int hHeap = OS.GetProcessHeap ();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
972 OS.HeapFree(hHeap, 0, gdipImage[1]);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
973 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
974 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
975 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
976 switch (srcImage.type) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
977 case DWT.BITMAP:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
978 drawBitmap(srcImage, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
979 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
980 case DWT.ICON:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
981 drawIcon(srcImage, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
982 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
983 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
984 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
985
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
986 void drawIcon(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, bool simple) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
987 int technology = OS.GetDeviceCaps(handle, OS.TECHNOLOGY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
988
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
989 bool drawIcon = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
990 int flags = OS.DI_NORMAL;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
991 int offsetX = 0, offsetY = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
992 if (!OS.IsWinCE && OS.WIN32_VERSION >= OS.VERSION(5, 1)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
993 if ((OS.GetLayout(handle) & OS.LAYOUT_RTL) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
994 flags |= OS.DI_NOMIRROR;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
995 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
996 * Bug in Windows. For some reason, DrawIconEx() does not take
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
997 * into account the window origin when the DI_NOMIRROR and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
998 * LAYOUT_RTL are set. The fix is to set the window origin to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
999 * (0, 0) and offset the drawing ourselves.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1000 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1001 POINT pt = new POINT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1002 OS.GetWindowOrgEx(handle, pt);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1003 offsetX = pt.x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1004 offsetY = pt.y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1005 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1006 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1007 if (!OS.IsWinCE && OS.WIN32_VERSION >= OS.VERSION(4, 10)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1008 drawIcon = (OS.GetLayout(handle) & OS.LAYOUT_RTL) is 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1009 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1010 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1011
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1012 /* Simple case: no stretching, entire icon */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1013 if (simple && technology !is OS.DT_RASPRINTER && drawIcon) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1014 if (offsetX !is 0 || offsetY !is 0) OS.SetWindowOrgEx(handle, 0, 0, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1015 OS.DrawIconEx(handle, destX - offsetX, destY - offsetY, srcImage.handle, 0, 0, 0, 0, flags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1016 if (offsetX !is 0 || offsetY !is 0) OS.SetWindowOrgEx(handle, offsetX, offsetY, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1017 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1018 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1019
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1020 /* Get the icon info */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1021 ICONINFO srcIconInfo = new ICONINFO();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1022 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1023 Image.GetIconInfo(srcImage, srcIconInfo);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1024 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1025 OS.GetIconInfo(srcImage.handle, srcIconInfo);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1026 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1027
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1028 /* Get the icon width and height */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1029 int hBitmap = srcIconInfo.hbmColor;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1030 if (hBitmap is 0) hBitmap = srcIconInfo.hbmMask;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1031 BITMAP bm = new BITMAP();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1032 OS.GetObject(hBitmap, BITMAP.sizeof, bm);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1033 int iconWidth = bm.bmWidth, iconHeight = bm.bmHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1034 if (hBitmap is srcIconInfo.hbmMask) iconHeight /= 2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1035
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1036 if (simple) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1037 srcWidth = destWidth = iconWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1038 srcHeight = destHeight = iconHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1039 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1040
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1041 /* Draw the icon */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1042 bool failed = srcX + srcWidth > iconWidth || srcY + srcHeight > iconHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1043 if (!failed) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1044 simple = srcX is 0 && srcY is 0 &&
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1045 srcWidth is destWidth && srcHeight is destHeight &&
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1046 srcWidth is iconWidth && srcHeight is iconHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1047 if (!drawIcon) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1048 drawBitmapMask(srcImage, srcIconInfo.hbmColor, srcIconInfo.hbmMask, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple, iconWidth, iconHeight, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1049 } else if (simple && technology !is OS.DT_RASPRINTER) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1050 /* Simple case: no stretching, entire icon */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1051 if (offsetX !is 0 || offsetY !is 0) OS.SetWindowOrgEx(handle, 0, 0, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1052 OS.DrawIconEx(handle, destX - offsetX, destY - offsetY, srcImage.handle, 0, 0, 0, 0, flags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1053 if (offsetX !is 0 || offsetY !is 0) OS.SetWindowOrgEx(handle, offsetX, offsetY, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1054 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1055 /* Create the icon info and HDC's */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1056 ICONINFO newIconInfo = new ICONINFO();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1057 newIconInfo.fIcon = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1058 int srcHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1059 int dstHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1060
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1061 /* Blt the color bitmap */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1062 int srcColorY = srcY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1063 int srcColor = srcIconInfo.hbmColor;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1064 if (srcColor is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1065 srcColor = srcIconInfo.hbmMask;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1066 srcColorY += iconHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1067 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1068 int oldSrcBitmap = OS.SelectObject(srcHdc, srcColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1069 newIconInfo.hbmColor = OS.CreateCompatibleBitmap(srcHdc, destWidth, destHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1070 if (newIconInfo.hbmColor is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1071 int oldDestBitmap = OS.SelectObject(dstHdc, newIconInfo.hbmColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1072 bool stretch = !simple && (srcWidth !is destWidth || srcHeight !is destHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1073 if (stretch) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1074 if (!OS.IsWinCE) OS.SetStretchBltMode(dstHdc, OS.COLORONCOLOR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1075 OS.StretchBlt(dstHdc, 0, 0, destWidth, destHeight, srcHdc, srcX, srcColorY, srcWidth, srcHeight, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1076 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1077 OS.BitBlt(dstHdc, 0, 0, destWidth, destHeight, srcHdc, srcX, srcColorY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1078 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1079
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1080 /* Blt the mask bitmap */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1081 OS.SelectObject(srcHdc, srcIconInfo.hbmMask);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1082 newIconInfo.hbmMask = OS.CreateBitmap(destWidth, destHeight, 1, 1, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1083 if (newIconInfo.hbmMask is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1084 OS.SelectObject(dstHdc, newIconInfo.hbmMask);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1085 if (stretch) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1086 OS.StretchBlt(dstHdc, 0, 0, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1087 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1088 OS.BitBlt(dstHdc, 0, 0, destWidth, destHeight, srcHdc, srcX, srcY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1089 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1090
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1091 if (technology is OS.DT_RASPRINTER) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1092 OS.SelectObject(srcHdc, newIconInfo.hbmColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1093 OS.SelectObject(dstHdc, newIconInfo.hbmMask);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1094 drawBitmapTransparentByClipping(srcHdc, dstHdc, 0, 0, destWidth, destHeight, destX, destY, destWidth, destHeight, true, destWidth, destHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1095 OS.SelectObject(srcHdc, oldSrcBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1096 OS.SelectObject(dstHdc, oldDestBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1097 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1098 OS.SelectObject(srcHdc, oldSrcBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1099 OS.SelectObject(dstHdc, oldDestBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1100 int hIcon = OS.CreateIconIndirect(newIconInfo);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1101 if (hIcon is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1102 if (offsetX !is 0 || offsetY !is 0) OS.SetWindowOrgEx(handle, 0, 0, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1103 OS.DrawIconEx(handle, destX - offsetX, destY - offsetY, hIcon, destWidth, destHeight, 0, 0, flags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1104 if (offsetX !is 0 || offsetY !is 0) OS.SetWindowOrgEx(handle, offsetX, offsetY, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1105 OS.DestroyIcon(hIcon);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1106 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1107
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1108 /* Destroy the new icon src and mask and hdc's*/
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1109 OS.DeleteObject(newIconInfo.hbmMask);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1110 OS.DeleteObject(newIconInfo.hbmColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1111 OS.DeleteDC(dstHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1112 OS.DeleteDC(srcHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1113 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1114 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1115
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1116 /* Free icon info */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1117 OS.DeleteObject(srcIconInfo.hbmMask);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1118 if (srcIconInfo.hbmColor !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1119 OS.DeleteObject(srcIconInfo.hbmColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1120 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1121
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1122 if (failed) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1123 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1124
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1125 void drawBitmap(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, bool simple) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1126 BITMAP bm = new BITMAP();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1127 OS.GetObject(srcImage.handle, BITMAP.sizeof, bm);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1128 int imgWidth = bm.bmWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1129 int imgHeight = bm.bmHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1130 if (simple) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1131 srcWidth = destWidth = imgWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1132 srcHeight = destHeight = imgHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1133 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1134 if (srcX + srcWidth > imgWidth || srcY + srcHeight > imgHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1135 DWT.error (DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1136 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1137 simple = srcX is 0 && srcY is 0 &&
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1138 srcWidth is destWidth && destWidth is imgWidth &&
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1139 srcHeight is destHeight && destHeight is imgHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1140 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1141 bool mustRestore = false;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1142 GC memGC = srcImage.memGC;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1143 if (memGC !is null && !memGC.isDisposed()) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1144 memGC.flush();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1145 mustRestore = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1146 GCData data = memGC.data;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1147 if (data.hNullBitmap !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1148 OS.SelectObject(memGC.handle, data.hNullBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1149 data.hNullBitmap = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1150 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1151 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1152 if (srcImage.alpha !is -1 || srcImage.alphaData !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1153 drawBitmapAlpha(srcImage, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple, bm, imgWidth, imgHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1154 } else if (srcImage.transparentPixel !is -1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1155 drawBitmapTransparent(srcImage, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple, bm, imgWidth, imgHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1156 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1157 drawBitmap(srcImage, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple, bm, imgWidth, imgHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1158 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1159 if (mustRestore) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1160 int hOldBitmap = OS.SelectObject(memGC.handle, srcImage.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1161 memGC.data.hNullBitmap = hOldBitmap;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1162 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1163 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1164
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1165 void drawBitmapAlpha(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, bool simple, BITMAP bm, int imgWidth, int imgHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1166 /* Simple cases */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1167 if (srcImage.alpha is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1168 if (srcImage.alpha is 255) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1169 drawBitmap(srcImage, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple, bm, imgWidth, imgHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1170 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1171 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1172
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1173 if (OS.IsWinNT && OS.WIN32_VERSION >= OS.VERSION(4, 10)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1174 BLENDFUNCTION blend = new BLENDFUNCTION();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1175 blend.BlendOp = OS.AC_SRC_OVER;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1176 int srcHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1177 int oldSrcBitmap = OS.SelectObject(srcHdc, srcImage.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1178 if (srcImage.alpha !is -1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1179 blend.SourceConstantAlpha = (byte)srcImage.alpha;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1180 OS.AlphaBlend(handle, destX, destY, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, blend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1181 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1182 int memDib = Image.createDIB(srcWidth, srcHeight, 32);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1183 if (memDib is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1184 int memHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1185 int oldMemBitmap = OS.SelectObject(memHdc, memDib);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1186 BITMAP dibBM = new BITMAP();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1187 OS.GetObject(memDib, BITMAP.sizeof, dibBM);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1188 OS.BitBlt(memHdc, 0, 0, srcWidth, srcHeight, srcHdc, srcX, srcY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1189 byte[] srcData = new byte[dibBM.bmWidthBytes * dibBM.bmHeight];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1190 OS.MoveMemory(srcData, dibBM.bmBits, srcData.length);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1191 final int apinc = imgWidth - srcWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1192 int ap = srcY * imgWidth + srcX, sp = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1193 byte[] alphaData = srcImage.alphaData;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1194 for (int y = 0; y < srcHeight; ++y) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1195 for (int x = 0; x < srcWidth; ++x) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1196 int alpha = alphaData[ap++] & 0xff;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1197 int r = ((srcData[sp + 0] & 0xFF) * alpha) + 128;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1198 r = (r + (r >> 8)) >> 8;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1199 int g = ((srcData[sp + 1] & 0xFF) * alpha) + 128;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1200 g = (g + (g >> 8)) >> 8;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1201 int b = ((srcData[sp + 2] & 0xFF) * alpha) + 128;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1202 b = (b + (b >> 8)) >> 8;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1203 srcData[sp+0] = (byte)r;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1204 srcData[sp+1] = (byte)g;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1205 srcData[sp+2] = (byte)b;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1206 srcData[sp+3] = (byte)alpha;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1207 sp += 4;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1208 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1209 ap += apinc;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1210 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1211 OS.MoveMemory(dibBM.bmBits, srcData, srcData.length);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1212 blend.SourceConstantAlpha = (byte)0xff;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1213 blend.AlphaFormat = OS.AC_SRC_ALPHA;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1214 OS.AlphaBlend(handle, destX, destY, destWidth, destHeight, memHdc, 0, 0, srcWidth, srcHeight, blend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1215 OS.SelectObject(memHdc, oldMemBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1216 OS.DeleteDC(memHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1217 OS.DeleteObject(memDib);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1218 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1219 OS.SelectObject(srcHdc, oldSrcBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1220 OS.DeleteDC(srcHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1221 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1222 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1223
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1224 /* Check clipping */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1225 Rectangle rect = getClipping();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1226 rect = rect.intersection(new Rectangle(destX, destY, destWidth, destHeight));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1227 if (rect.isEmpty()) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1228
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1229 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1230 * Optimization. Recalculate src and dest rectangles so that
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1231 * only the clipping area is drawn.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1232 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1233 int sx1 = srcX + (((rect.x - destX) * srcWidth) / destWidth);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1234 int sx2 = srcX + ((((rect.x + rect.width) - destX) * srcWidth) / destWidth);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1235 int sy1 = srcY + (((rect.y - destY) * srcHeight) / destHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1236 int sy2 = srcY + ((((rect.y + rect.height) - destY) * srcHeight) / destHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1237 destX = rect.x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1238 destY = rect.y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1239 destWidth = rect.width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1240 destHeight = rect.height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1241 srcX = sx1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1242 srcY = sy1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1243 srcWidth = Math.max(1, sx2 - sx1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1244 srcHeight = Math.max(1, sy2 - sy1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1245
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1246 /* Create resources */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1247 int srcHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1248 int oldSrcBitmap = OS.SelectObject(srcHdc, srcImage.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1249 int memHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1250 int memDib = Image.createDIB(Math.max(srcWidth, destWidth), Math.max(srcHeight, destHeight), 32);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1251 if (memDib is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1252 int oldMemBitmap = OS.SelectObject(memHdc, memDib);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1253
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1254 BITMAP dibBM = new BITMAP();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1255 OS.GetObject(memDib, BITMAP.sizeof, dibBM);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1256 int sizeInBytes = dibBM.bmWidthBytes * dibBM.bmHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1257
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1258 /* Get the background pixels */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1259 OS.BitBlt(memHdc, 0, 0, destWidth, destHeight, handle, destX, destY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1260 byte[] destData = new byte[sizeInBytes];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1261 OS.MoveMemory(destData, dibBM.bmBits, sizeInBytes);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1262
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1263 /* Get the foreground pixels */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1264 OS.BitBlt(memHdc, 0, 0, srcWidth, srcHeight, srcHdc, srcX, srcY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1265 byte[] srcData = new byte[sizeInBytes];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1266 OS.MoveMemory(srcData, dibBM.bmBits, sizeInBytes);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1267
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1268 /* Merge the alpha channel in place */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1269 int alpha = srcImage.alpha;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1270 final bool hasAlphaChannel = (srcImage.alpha is -1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1271 if (hasAlphaChannel) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1272 final int apinc = imgWidth - srcWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1273 final int spinc = dibBM.bmWidthBytes - srcWidth * 4;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1274 int ap = srcY * imgWidth + srcX, sp = 3;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1275 byte[] alphaData = srcImage.alphaData;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1276 for (int y = 0; y < srcHeight; ++y) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1277 for (int x = 0; x < srcWidth; ++x) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1278 srcData[sp] = alphaData[ap++];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1279 sp += 4;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1280 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1281 ap += apinc;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1282 sp += spinc;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1283 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1284 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1285
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1286 /* Scale the foreground pixels with alpha */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1287 OS.MoveMemory(dibBM.bmBits, srcData, sizeInBytes);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1288 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1289 * Bug in WinCE and Win98. StretchBlt does not correctly stretch when
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1290 * the source and destination HDCs are the same. The workaround is to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1291 * stretch to a temporary HDC and blit back into the original HDC.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1292 * Note that on WinCE StretchBlt correctly compresses the image when the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1293 * source and destination HDCs are the same.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1294 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1295 if ((OS.IsWinCE && (destWidth > srcWidth || destHeight > srcHeight)) || (!OS.IsWinNT && !OS.IsWinCE)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1296 int tempHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1297 int tempDib = Image.createDIB(destWidth, destHeight, 32);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1298 if (tempDib is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1299 int oldTempBitmap = OS.SelectObject(tempHdc, tempDib);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1300 if (!simple && (srcWidth !is destWidth || srcHeight !is destHeight)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1301 if (!OS.IsWinCE) OS.SetStretchBltMode(memHdc, OS.COLORONCOLOR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1302 OS.StretchBlt(tempHdc, 0, 0, destWidth, destHeight, memHdc, 0, 0, srcWidth, srcHeight, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1303 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1304 OS.BitBlt(tempHdc, 0, 0, destWidth, destHeight, memHdc, 0, 0, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1305 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1306 OS.BitBlt(memHdc, 0, 0, destWidth, destHeight, tempHdc, 0, 0, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1307 OS.SelectObject(tempHdc, oldTempBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1308 OS.DeleteObject(tempDib);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1309 OS.DeleteDC(tempHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1310 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1311 if (!simple && (srcWidth !is destWidth || srcHeight !is destHeight)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1312 if (!OS.IsWinCE) OS.SetStretchBltMode(memHdc, OS.COLORONCOLOR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1313 OS.StretchBlt(memHdc, 0, 0, destWidth, destHeight, memHdc, 0, 0, srcWidth, srcHeight, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1314 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1315 OS.BitBlt(memHdc, 0, 0, destWidth, destHeight, memHdc, 0, 0, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1316 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1317 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1318 OS.MoveMemory(srcData, dibBM.bmBits, sizeInBytes);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1319
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1320 /* Compose the pixels */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1321 final int dpinc = dibBM.bmWidthBytes - destWidth * 4;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1322 int dp = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1323 for (int y = 0; y < destHeight; ++y) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1324 for (int x = 0; x < destWidth; ++x) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1325 if (hasAlphaChannel) alpha = srcData[dp + 3] & 0xff;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1326 destData[dp] += ((srcData[dp] & 0xff) - (destData[dp] & 0xff)) * alpha / 255;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1327 destData[dp + 1] += ((srcData[dp + 1] & 0xff) - (destData[dp + 1] & 0xff)) * alpha / 255;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1328 destData[dp + 2] += ((srcData[dp + 2] & 0xff) - (destData[dp + 2] & 0xff)) * alpha / 255;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1329 dp += 4;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1330 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1331 dp += dpinc;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1332 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1333
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1334 /* Draw the composed pixels */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1335 OS.MoveMemory(dibBM.bmBits, destData, sizeInBytes);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1336 OS.BitBlt(handle, destX, destY, destWidth, destHeight, memHdc, 0, 0, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1337
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1338 /* Free resources */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1339 OS.SelectObject(memHdc, oldMemBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1340 OS.DeleteDC(memHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1341 OS.DeleteObject(memDib);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1342 OS.SelectObject(srcHdc, oldSrcBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1343 OS.DeleteDC(srcHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1344 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1345
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1346 void drawBitmapTransparentByClipping(int srcHdc, int maskHdc, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, bool simple, int imgWidth, int imgHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1347 /* Create a clipping region from the mask */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1348 int rgn = OS.CreateRectRgn(0, 0, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1349 for (int y=0; y<imgHeight; y++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1350 for (int x=0; x<imgWidth; x++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1351 if (OS.GetPixel(maskHdc, x, y) is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1352 int tempRgn = OS.CreateRectRgn(x, y, x+1, y+1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1353 OS.CombineRgn(rgn, rgn, tempRgn, OS.RGN_OR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1354 OS.DeleteObject(tempRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1355 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1356 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1357 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1358 /* Stretch the clipping mask if needed */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1359 if (destWidth !is srcWidth || destHeight !is srcHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1360 int nBytes = OS.GetRegionData (rgn, 0, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1361 int[] lpRgnData = new int[nBytes / 4];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1362 OS.GetRegionData (rgn, nBytes, lpRgnData);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1363 float[] lpXform = new float[] {(float)destWidth/srcWidth, 0, 0, (float)destHeight/srcHeight, 0, 0};
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1364 int tmpRgn = OS.ExtCreateRegion(lpXform, nBytes, lpRgnData);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1365 OS.DeleteObject(rgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1366 rgn = tmpRgn;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1367 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1368 OS.OffsetRgn(rgn, destX, destY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1369 int clip = OS.CreateRectRgn(0, 0, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1370 int result = OS.GetClipRgn(handle, clip);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1371 if (result is 1) OS.CombineRgn(rgn, rgn, clip, OS.RGN_AND);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1372 OS.SelectClipRgn(handle, rgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1373 int rop2 = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1374 if (!OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1375 rop2 = OS.GetROP2(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1376 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1377 rop2 = OS.SetROP2 (handle, OS.R2_COPYPEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1378 OS.SetROP2 (handle, rop2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1379 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1380 int dwRop = rop2 is OS.R2_XORPEN ? OS.SRCINVERT : OS.SRCCOPY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1381 if (!simple && (srcWidth !is destWidth || srcHeight !is destHeight)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1382 int mode = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1383 if (!OS.IsWinCE) mode = OS.SetStretchBltMode(handle, OS.COLORONCOLOR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1384 OS.StretchBlt(handle, destX, destY, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, dwRop);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1385 if (!OS.IsWinCE) OS.SetStretchBltMode(handle, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1386 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1387 OS.BitBlt(handle, destX, destY, destWidth, destHeight, srcHdc, srcX, srcY, dwRop);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1388 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1389 OS.SelectClipRgn(handle, result is 1 ? clip : 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1390 OS.DeleteObject(clip);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1391 OS.DeleteObject(rgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1392 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1393
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1394 void drawBitmapMask(Image srcImage, int srcColor, int srcMask, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, bool simple, int imgWidth, int imgHeight, bool offscreen) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1395 int srcColorY = srcY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1396 if (srcColor is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1397 srcColor = srcMask;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1398 srcColorY += imgHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1399 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1400 int srcHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1401 int oldSrcBitmap = OS.SelectObject(srcHdc, srcColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1402 int destHdc = handle, x = destX, y = destY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1403 int tempHdc = 0, tempBitmap = 0, oldTempBitmap = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1404 int oldBkColor = 0, oldTextColor = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1405 if (offscreen) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1406 tempHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1407 tempBitmap = OS.CreateCompatibleBitmap(handle, destWidth, destHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1408 oldTempBitmap = OS.SelectObject(tempHdc, tempBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1409 OS.BitBlt(tempHdc, 0, 0, destWidth, destHeight, handle, destX, destY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1410 destHdc = tempHdc;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1411 x = y = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1412 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1413 oldBkColor = OS.SetBkColor(handle, 0xFFFFFF);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1414 oldTextColor = OS.SetTextColor(handle, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1415 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1416 if (!simple && (srcWidth !is destWidth || srcHeight !is destHeight)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1417 int mode = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1418 if (!OS.IsWinCE) mode = OS.SetStretchBltMode(handle, OS.COLORONCOLOR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1419 OS.StretchBlt(destHdc, x, y, destWidth, destHeight, srcHdc, srcX, srcColorY, srcWidth, srcHeight, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1420 OS.SelectObject(srcHdc, srcMask);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1421 OS.StretchBlt(destHdc, x, y, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, OS.SRCAND);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1422 OS.SelectObject(srcHdc, srcColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1423 OS.StretchBlt(destHdc, x, y, destWidth, destHeight, srcHdc, srcX, srcColorY, srcWidth, srcHeight, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1424 if (!OS.IsWinCE) OS.SetStretchBltMode(handle, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1425 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1426 OS.BitBlt(destHdc, x, y, destWidth, destHeight, srcHdc, srcX, srcColorY, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1427 OS.SetTextColor(destHdc, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1428 OS.SelectObject(srcHdc, srcMask);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1429 OS.BitBlt(destHdc, x, y, destWidth, destHeight, srcHdc, srcX, srcY, OS.SRCAND);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1430 OS.SelectObject(srcHdc, srcColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1431 OS.BitBlt(destHdc, x, y, destWidth, destHeight, srcHdc, srcX, srcColorY, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1432 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1433 if (offscreen) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1434 OS.BitBlt(handle, destX, destY, destWidth, destHeight, tempHdc, 0, 0, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1435 OS.SelectObject(tempHdc, oldTempBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1436 OS.DeleteDC(tempHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1437 OS.DeleteObject(tempBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1438 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1439 OS.SetBkColor(handle, oldBkColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1440 OS.SetTextColor(handle, oldTextColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1441 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1442 OS.SelectObject(srcHdc, oldSrcBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1443 OS.DeleteDC(srcHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1444 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1445
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1446 void drawBitmapTransparent(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, bool simple, BITMAP bm, int imgWidth, int imgHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1447
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1448 /* Find the RGB values for the transparent pixel. */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1449 int transBlue = 0, transGreen = 0, transRed = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1450 bool isDib = bm.bmBits !is 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1451 int hBitmap = srcImage.handle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1452 int srcHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1453 int oldSrcBitmap = OS.SelectObject(srcHdc, hBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1454 byte[] originalColors = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1455 if (bm.bmBitsPixel <= 8) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1456 if (isDib) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1457 /* Palette-based DIBSECTION */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1458 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1459 byte[] pBits = new byte[1];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1460 OS.MoveMemory(pBits, bm.bmBits, 1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1461 byte oldValue = pBits[0];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1462 int mask = (0xFF << (8 - bm.bmBitsPixel)) & 0x00FF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1463 pBits[0] = (byte)((srcImage.transparentPixel << (8 - bm.bmBitsPixel)) | (pBits[0] & ~mask));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1464 OS.MoveMemory(bm.bmBits, pBits, 1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1465 int color = OS.GetPixel(srcHdc, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1466 pBits[0] = oldValue;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1467 OS.MoveMemory(bm.bmBits, pBits, 1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1468 transBlue = (color & 0xFF0000) >> 16;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1469 transGreen = (color & 0xFF00) >> 8;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1470 transRed = color & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1471 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1472 int maxColors = 1 << bm.bmBitsPixel;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1473 byte[] oldColors = new byte[maxColors * 4];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1474 OS.GetDIBColorTable(srcHdc, 0, maxColors, oldColors);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1475 int offset = srcImage.transparentPixel * 4;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1476 bool fixPalette = false;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1477 for (int i = 0; i < oldColors.length; i += 4) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1478 if (i !is offset) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1479 if (oldColors[offset] is oldColors[i] && oldColors[offset+1] is oldColors[i+1] && oldColors[offset+2] is oldColors[i+2]) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1480 fixPalette = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1481 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1482 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1483 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1484 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1485 if (fixPalette) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1486 byte[] newColors = new byte[oldColors.length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1487 transRed = transGreen = transBlue = 0xff;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1488 newColors[offset] = (byte)transBlue;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1489 newColors[offset+1] = (byte)transGreen;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1490 newColors[offset+2] = (byte)transRed;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1491 OS.SetDIBColorTable(srcHdc, 0, maxColors, newColors);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1492 originalColors = oldColors;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1493 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1494 transBlue = oldColors[offset] & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1495 transGreen = oldColors[offset+1] & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1496 transRed = oldColors[offset+2] & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1497 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1498 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1499 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1500 /* Palette-based bitmap */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1501 int numColors = 1 << bm.bmBitsPixel;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1502 /* Set the few fields necessary to get the RGB data out */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1503 BITMAPINFOHEADER bmiHeader = new BITMAPINFOHEADER();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1504 bmiHeader.biSize = BITMAPINFOHEADER.sizeof;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1505 bmiHeader.biPlanes = bm.bmPlanes;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1506 bmiHeader.biBitCount = bm.bmBitsPixel;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1507 byte[] bmi = new byte[BITMAPINFOHEADER.sizeof + numColors * 4];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1508 OS.MoveMemory(bmi, bmiHeader, BITMAPINFOHEADER.sizeof);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1509 if (OS.IsWinCE) DWT.error(DWT.ERROR_NOT_IMPLEMENTED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1510 OS.GetDIBits(srcHdc, srcImage.handle, 0, 0, 0, bmi, OS.DIB_RGB_COLORS);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1511 int offset = BITMAPINFOHEADER.sizeof + 4 * srcImage.transparentPixel;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1512 transRed = bmi[offset + 2] & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1513 transGreen = bmi[offset + 1] & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1514 transBlue = bmi[offset] & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1515 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1516 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1517 /* Direct color image */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1518 int pixel = srcImage.transparentPixel;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1519 switch (bm.bmBitsPixel) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1520 case 16:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1521 transBlue = (pixel & 0x1F) << 3;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1522 transGreen = (pixel & 0x3E0) >> 2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1523 transRed = (pixel & 0x7C00) >> 7;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1524 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1525 case 24:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1526 transBlue = (pixel & 0xFF0000) >> 16;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1527 transGreen = (pixel & 0xFF00) >> 8;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1528 transRed = pixel & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1529 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1530 case 32:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1531 transBlue = (pixel & 0xFF000000) >>> 24;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1532 transGreen = (pixel & 0xFF0000) >> 16;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1533 transRed = (pixel & 0xFF00) >> 8;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1534 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1535 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1536 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1537
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1538 int transparentColor = transBlue << 16 | transGreen << 8 | transRed;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1539 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1540 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1541 * Note in WinCE. TransparentImage uses the first entry of a palette
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1542 * based image when there are multiple entries that have the same
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1543 * transparent color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1544 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1545 OS.TransparentImage(handle, destX, destY, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, transparentColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1546 } else if (originalColors is null && OS.IsWinNT && OS.WIN32_VERSION >= OS.VERSION(4, 10)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1547 int mode = OS.SetStretchBltMode(handle, OS.COLORONCOLOR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1548 OS.TransparentBlt(handle, destX, destY, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, transparentColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1549 OS.SetStretchBltMode(handle, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1550 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1551 /* Create the mask for the source image */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1552 int maskHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1553 int maskBitmap = OS.CreateBitmap(imgWidth, imgHeight, 1, 1, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1554 int oldMaskBitmap = OS.SelectObject(maskHdc, maskBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1555 OS.SetBkColor(srcHdc, transparentColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1556 OS.BitBlt(maskHdc, 0, 0, imgWidth, imgHeight, srcHdc, 0, 0, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1557 if (originalColors !is null) OS.SetDIBColorTable(srcHdc, 0, 1 << bm.bmBitsPixel, originalColors);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1558
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1559 if (OS.GetDeviceCaps(handle, OS.TECHNOLOGY) is OS.DT_RASPRINTER) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1560 /* Most printers do not support BitBlt(), draw the source bitmap transparently using clipping */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1561 drawBitmapTransparentByClipping(srcHdc, maskHdc, srcX, srcY, srcWidth, srcHeight, destX, destY, destWidth, destHeight, simple, imgWidth, imgHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1562 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1563 /* Draw the source bitmap transparently using invert/and mask/invert */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1564 int tempHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1565 int tempBitmap = OS.CreateCompatibleBitmap(handle, destWidth, destHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1566 int oldTempBitmap = OS.SelectObject(tempHdc, tempBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1567 OS.BitBlt(tempHdc, 0, 0, destWidth, destHeight, handle, destX, destY, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1568 if (!simple && (srcWidth !is destWidth || srcHeight !is destHeight)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1569 if (!OS.IsWinCE) OS.SetStretchBltMode(tempHdc, OS.COLORONCOLOR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1570 OS.StretchBlt(tempHdc, 0, 0, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1571 OS.StretchBlt(tempHdc, 0, 0, destWidth, destHeight, maskHdc, srcX, srcY, srcWidth, srcHeight, OS.SRCAND);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1572 OS.StretchBlt(tempHdc, 0, 0, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1573 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1574 OS.BitBlt(tempHdc, 0, 0, destWidth, destHeight, srcHdc, srcX, srcY, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1575 OS.BitBlt(tempHdc, 0, 0, destWidth, destHeight, maskHdc, srcX, srcY, OS.SRCAND);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1576 OS.BitBlt(tempHdc, 0, 0, destWidth, destHeight, srcHdc, srcX, srcY, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1577 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1578 OS.BitBlt(handle, destX, destY, destWidth, destHeight, tempHdc, 0, 0, OS.SRCCOPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1579 OS.SelectObject(tempHdc, oldTempBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1580 OS.DeleteDC(tempHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1581 OS.DeleteObject(tempBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1582 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1583 OS.SelectObject(maskHdc, oldMaskBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1584 OS.DeleteDC(maskHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1585 OS.DeleteObject(maskBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1586 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1587 OS.SelectObject(srcHdc, oldSrcBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1588 if (hBitmap !is srcImage.handle) OS.DeleteObject(hBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1589 OS.DeleteDC(srcHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1590 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1591
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1592 void drawBitmap(Image srcImage, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY, int destWidth, int destHeight, bool simple, BITMAP bm, int imgWidth, int imgHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1593 int srcHdc = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1594 int oldSrcBitmap = OS.SelectObject(srcHdc, srcImage.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1595 int rop2 = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1596 if (!OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1597 rop2 = OS.GetROP2(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1598 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1599 rop2 = OS.SetROP2 (handle, OS.R2_COPYPEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1600 OS.SetROP2 (handle, rop2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1601 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1602 int dwRop = rop2 is OS.R2_XORPEN ? OS.SRCINVERT : OS.SRCCOPY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1603 if (!simple && (srcWidth !is destWidth || srcHeight !is destHeight)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1604 int mode = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1605 if (!OS.IsWinCE) mode = OS.SetStretchBltMode(handle, OS.COLORONCOLOR);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1606 OS.StretchBlt(handle, destX, destY, destWidth, destHeight, srcHdc, srcX, srcY, srcWidth, srcHeight, dwRop);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1607 if (!OS.IsWinCE) OS.SetStretchBltMode(handle, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1608 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1609 OS.BitBlt(handle, destX, destY, destWidth, destHeight, srcHdc, srcX, srcY, dwRop);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1610 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1611 OS.SelectObject(srcHdc, oldSrcBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1612 OS.DeleteDC(srcHdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1613 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1614
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1615 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1616 * Draws a line, using the foreground color, between the points
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1617 * (<code>x1</code>, <code>y1</code>) and (<code>x2</code>, <code>y2</code>).
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1618 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1619 * @param x1 the first point's x coordinate
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1620 * @param y1 the first point's y coordinate
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1621 * @param x2 the second point's x coordinate
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1622 * @param y2 the second point's y coordinate
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1623 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1624 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1625 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1626 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1627 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1628 public void drawLine (int x1, int y1, int x2, int y2) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1629 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1630 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1631 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1632 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1633 Gdip.Graphics_TranslateTransform(gdipGraphics, data.gdipXOffset, data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1634 Gdip.Graphics_DrawLine(gdipGraphics, data.gdipPen, x1, y1, x2, y2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1635 Gdip.Graphics_TranslateTransform(gdipGraphics, -data.gdipXOffset, -data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1636 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1637 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1638 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1639 if (data.lineWidth !is 0 && data.lineWidth % 2 is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1640 x1--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1641 x2--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1642 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1643 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1644 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1645 int [] points = new int [] {x1, y1, x2, y2};
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1646 OS.Polyline (handle, points, points.length / 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1647 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1648 OS.MoveToEx (handle, x1, y1, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1649 OS.LineTo (handle, x2, y2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1650 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1651 if (data.lineWidth <= 1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1652 OS.SetPixel (handle, x2, y2, data.foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1653 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1654 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1655
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1656 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1657 * Draws the outline of an oval, using the foreground color,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1658 * within the specified rectangular area.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1659 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1660 * The result is a circle or ellipse that fits within the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1661 * rectangle specified by the <code>x</code>, <code>y</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1662 * <code>width</code>, and <code>height</code> arguments.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1663 * </p><p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1664 * The oval covers an area that is <code>width + 1</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1665 * pixels wide and <code>height + 1</code> pixels tall.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1666 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1667 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1668 * @param x the x coordinate of the upper left corner of the oval to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1669 * @param y the y coordinate of the upper left corner of the oval to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1670 * @param width the width of the oval to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1671 * @param height the height of the oval to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1672 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1673 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1674 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1675 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1676 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1677 public void drawOval (int x, int y, int width, int height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1678 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1679 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1680 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1681 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1682 Gdip.Graphics_TranslateTransform(gdipGraphics, data.gdipXOffset, data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1683 Gdip.Graphics_DrawEllipse(gdipGraphics, data.gdipPen, x, y, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1684 Gdip.Graphics_TranslateTransform(gdipGraphics, -data.gdipXOffset, -data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1685 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1686 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1687 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1688 if (data.lineWidth !is 0 && data.lineWidth % 2 is 0) x--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1689 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1690 OS.Ellipse(handle, x, y, x + width + 1, y + height + 1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1691 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1692
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1693 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1694 * Draws the path described by the parameter.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1695 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1696 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1697 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1698 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1699 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1700 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1701 * @param path the path to draw
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1702 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1703 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1704 * <li>ERROR_NULL_ARGUMENT - if the parameter is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1705 * <li>ERROR_INVALID_ARGUMENT - if the parameter has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1706 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1707 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1708 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1709 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1710 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1711 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1712 * @see Path
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1713 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1714 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1715 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1716 public void drawPath (Path path) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1717 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1718 if (path is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1719 if (path.handle is 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1720 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1721 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1722 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1723 Gdip.Graphics_TranslateTransform(gdipGraphics, data.gdipXOffset, data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1724 Gdip.Graphics_DrawPath(gdipGraphics, data.gdipPen, path.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1725 Gdip.Graphics_TranslateTransform(gdipGraphics, -data.gdipXOffset, -data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1726 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1727
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1728 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1729 * Draws a pixel, using the foreground color, at the specified
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1730 * point (<code>x</code>, <code>y</code>).
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1731 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1732 * Note that the receiver's line attributes do not affect this
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1733 * operation.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1734 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1735 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1736 * @param x the point's x coordinate
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1737 * @param y the point's y coordinate
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1738 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1739 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1740 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1741 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1742 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1743 * @since 3.0
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1744 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1745 public void drawPoint (int x, int y) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1746 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1747 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1748 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1749 Gdip.Graphics_FillRectangle(data.gdipGraphics, getFgBrush(), x, y, 1, 1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1750 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1751 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1752 OS.SetPixel (handle, x, y, data.foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1753 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1754
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1755 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1756 * Draws the closed polygon which is defined by the specified array
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1757 * of integer coordinates, using the receiver's foreground color. The array
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1758 * contains alternating x and y values which are considered to represent
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1759 * points which are the vertices of the polygon. Lines are drawn between
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1760 * each consecutive pair, and between the first pair and last pair in the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1761 * array.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1762 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1763 * @param pointArray an array of alternating x and y values which are the vertices of the polygon
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1764 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1765 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1766 * <li>ERROR_NULL_ARGUMENT if pointArray is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1767 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1768 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1769 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1770 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1771 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1772 public void drawPolygon(int[] pointArray) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1773 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1774 if (pointArray is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1775 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1776 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1777 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1778 Gdip.Graphics_TranslateTransform(gdipGraphics, data.gdipXOffset, data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1779 Gdip.Graphics_DrawPolygon(gdipGraphics, data.gdipPen, pointArray, pointArray.length / 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1780 Gdip.Graphics_TranslateTransform(gdipGraphics, -data.gdipXOffset, -data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1781 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1782 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1783 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1784 if (data.lineWidth !is 0 && data.lineWidth % 2 is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1785 for (int i = 0; i < pointArray.length; i+=2) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1786 pointArray[i]--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1787 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1788 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1789 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1790 OS.Polygon(handle, pointArray, pointArray.length / 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1791 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1792 if (data.lineWidth !is 0 && data.lineWidth % 2 is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1793 for (int i = 0; i < pointArray.length; i+=2) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1794 pointArray[i]++;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1795 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1796 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1797 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1798 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1799
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1800 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1801 * Draws the polyline which is defined by the specified array
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1802 * of integer coordinates, using the receiver's foreground color. The array
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1803 * contains alternating x and y values which are considered to represent
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1804 * points which are the corners of the polyline. Lines are drawn between
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1805 * each consecutive pair, but not between the first pair and last pair in
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1806 * the array.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1807 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1808 * @param pointArray an array of alternating x and y values which are the corners of the polyline
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1809 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1810 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1811 * <li>ERROR_NULL_ARGUMENT - if the point array is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1812 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1813 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1814 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1815 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1816 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1817 public void drawPolyline(int[] pointArray) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1818 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1819 if (pointArray is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1820 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1821 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1822 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1823 Gdip.Graphics_TranslateTransform(gdipGraphics, data.gdipXOffset, data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1824 Gdip.Graphics_DrawLines(gdipGraphics, data.gdipPen, pointArray, pointArray.length / 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1825 Gdip.Graphics_TranslateTransform(gdipGraphics, -data.gdipXOffset, -data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1826 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1827 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1828 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1829 if (data.lineWidth !is 0 && data.lineWidth % 2 is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1830 for (int i = 0; i < pointArray.length; i+=2) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1831 pointArray[i]--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1832 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1833 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1834 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1835 OS.Polyline(handle, pointArray, pointArray.length / 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1836 int length = pointArray.length;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1837 if (length >= 2) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1838 if (data.lineWidth <= 1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1839 OS.SetPixel (handle, pointArray[length - 2], pointArray[length - 1], data.foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1840 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1841 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1842 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1843 if (data.lineWidth !is 0 && data.lineWidth % 2 is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1844 for (int i = 0; i < pointArray.length; i+=2) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1845 pointArray[i]++;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1846 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1847 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1848 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1849 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1850
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1851 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1852 * Draws the outline of the rectangle specified by the arguments,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1853 * using the receiver's foreground color. The left and right edges
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1854 * of the rectangle are at <code>x</code> and <code>x + width</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1855 * The top and bottom edges are at <code>y</code> and <code>y + height</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1856 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1857 * @param x the x coordinate of the rectangle to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1858 * @param y the y coordinate of the rectangle to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1859 * @param width the width of the rectangle to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1860 * @param height the height of the rectangle to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1861 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1862 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1863 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1864 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1865 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1866 public void drawRectangle (int x, int y, int width, int height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1867 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1868 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1869 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1870 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1871 Gdip.Graphics_TranslateTransform(gdipGraphics, data.gdipXOffset, data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1872 Gdip.Graphics_DrawRectangle(gdipGraphics, data.gdipPen, x, y, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1873 Gdip.Graphics_TranslateTransform(gdipGraphics, -data.gdipXOffset, -data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1874 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1875 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1876 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1877 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1878 * Note that Rectangle() subtracts one pixel in MIRRORED mode when
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1879 * the pen was created with CreatePen() and its width is 0 or 1.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1880 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1881 if (data.lineWidth > 1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1882 if ((data.lineWidth % 2) is 1) x++;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1883 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1884 if (data.hPen !is 0 && OS.GetObject(data.hPen, 0, 0) !is LOGPEN.sizeof) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1885 x++;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1886 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1887 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1888 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1889 OS.Rectangle (handle, x, y, x + width + 1, y + height + 1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1890 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1891
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1892 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1893 * Draws the outline of the specified rectangle, using the receiver's
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1894 * foreground color. The left and right edges of the rectangle are at
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1895 * <code>rect.x</code> and <code>rect.x + rect.width</code>. The top
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1896 * and bottom edges are at <code>rect.y</code> and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1897 * <code>rect.y + rect.height</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1898 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1899 * @param rect the rectangle to draw
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1900 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1901 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1902 * <li>ERROR_NULL_ARGUMENT - if the rectangle is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1903 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1904 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1905 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1906 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1907 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1908 public void drawRectangle (Rectangle rect) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1909 if (rect is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1910 drawRectangle (rect.x, rect.y, rect.width, rect.height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1911 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1912
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1913 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1914 * Draws the outline of the round-cornered rectangle specified by
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1915 * the arguments, using the receiver's foreground color. The left and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1916 * right edges of the rectangle are at <code>x</code> and <code>x + width</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1917 * The top and bottom edges are at <code>y</code> and <code>y + height</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1918 * The <em>roundness</em> of the corners is specified by the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1919 * <code>arcWidth</code> and <code>arcHeight</code> arguments, which
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1920 * are respectively the width and height of the ellipse used to draw
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1921 * the corners.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1922 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1923 * @param x the x coordinate of the rectangle to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1924 * @param y the y coordinate of the rectangle to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1925 * @param width the width of the rectangle to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1926 * @param height the height of the rectangle to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1927 * @param arcWidth the width of the arc
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1928 * @param arcHeight the height of the arc
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1929 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1930 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1931 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1932 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1933 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1934 public void drawRoundRectangle (int x, int y, int width, int height, int arcWidth, int arcHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1935 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1936 checkGC(DRAW);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1937 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1938 drawRoundRectangleGdip(data.gdipGraphics, data.gdipPen, x, y, width, height, arcWidth, arcHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1939 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1940 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1941 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1942 if (data.lineWidth !is 0 && data.lineWidth % 2 is 0) x--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1943 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1944 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1945 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1946 * Bug in WinCE PPC. On certain devices, RoundRect does not draw
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1947 * all the pixels. The workaround is to draw a round rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1948 * using lines and arcs.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1949 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1950 if (width is 0 || height is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1951 if (arcWidth is 0 || arcHeight is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1952 drawRectangle(x, y, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1953 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1954 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1955 if (width < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1956 x += width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1957 width = -width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1958 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1959 if (height < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1960 y += height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1961 height = -height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1962 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1963 if (arcWidth < 0) arcWidth = -arcWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1964 if (arcHeight < 0) arcHeight = -arcHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1965 if (arcWidth > width) arcWidth = width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1966 if (arcHeight > height) arcHeight = height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1967
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1968 if (arcWidth < width) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1969 drawLine(x+arcWidth/2, y, x+width-arcWidth/2, y);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1970 drawLine(x+arcWidth/2, y+height, x+width-arcWidth/2, y+height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1971 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1972 if (arcHeight < height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1973 drawLine(x, y+arcHeight/2, x, y+height-arcHeight/2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1974 drawLine(x+width, y+arcHeight/2, x+width, y+height-arcHeight/2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1975 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1976 if (arcWidth !is 0 && arcHeight !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1977 drawArc(x, y, arcWidth, arcHeight, 90, 90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1978 drawArc(x+width-arcWidth, y, arcWidth, arcHeight, 0, 90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1979 drawArc(x+width-arcWidth, y+height-arcHeight, arcWidth, arcHeight, 0, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1980 drawArc(x, y+height-arcHeight, arcWidth, arcHeight, 180, 90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1981 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1982 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1983 OS.RoundRect(handle, x,y,x+width+1,y+height+1, arcWidth, arcHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1984 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1985 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1986
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1987 void drawRoundRectangleGdip (int gdipGraphics, int pen, int x, int y, int width, int height, int arcWidth, int arcHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1988 int nx = x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1989 int ny = y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1990 int nw = width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1991 int nh = height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1992 int naw = arcWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1993 int nah = arcHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1994
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1995 if (nw < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1996 nw = 0 - nw;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1997 nx = nx - nw;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1998 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1999 if (nh < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2000 nh = 0 - nh;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2001 ny = ny - nh;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2002 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2003 if (naw < 0)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2004 naw = 0 - naw;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2005 if (nah < 0)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2006 nah = 0 - nah;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2007
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2008 Gdip.Graphics_TranslateTransform(gdipGraphics, data.gdipXOffset, data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2009 int path = Gdip.GraphicsPath_new(Gdip.FillModeAlternate);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2010 if (path is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2011 if (nw > naw) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2012 if (nh > nah) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2013 Gdip.GraphicsPath_AddArc(path, nx + nw - naw, ny, naw, nah, 0, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2014 Gdip.GraphicsPath_AddArc(path, nx, ny, naw, nah, -90, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2015 Gdip.GraphicsPath_AddArc(path, nx, ny + nh - nah, naw, nah, -180, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2016 Gdip.GraphicsPath_AddArc(path, nx + nw - naw, ny + nh - nah, naw, nah, -270, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2017 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2018 Gdip.GraphicsPath_AddArc(path, nx + nw - naw, ny, naw, nh, -270, -180);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2019 Gdip.GraphicsPath_AddArc(path, nx, ny, naw, nh, -90, -180);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2020 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2021 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2022 if (nh > nah) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2023 Gdip.GraphicsPath_AddArc(path, nx, ny, nw, nah, 0, -180);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2024 Gdip.GraphicsPath_AddArc(path, nx, ny + nh - nah, nw, nah, -180, -180);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2025 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2026 Gdip.GraphicsPath_AddArc(path, nx, ny, nw, nh, 0, 360);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2027 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2028 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2029 Gdip.GraphicsPath_CloseFigure(path);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2030 Gdip.Graphics_DrawPath(gdipGraphics, pen, path);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2031 Gdip.GraphicsPath_delete(path);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2032 Gdip.Graphics_TranslateTransform(gdipGraphics, -data.gdipXOffset, -data.gdipYOffset, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2033 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2034
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2035 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2036 * Draws the given string, using the receiver's current font and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2037 * foreground color. No tab expansion or carriage return processing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2038 * will be performed. The background of the rectangular area where
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2039 * the string is being drawn will be filled with the receiver's
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2040 * background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2041 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2042 * @param string the string to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2043 * @param x the x coordinate of the top left corner of the rectangular area where the string is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2044 * @param y the y coordinate of the top left corner of the rectangular area where the string is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2045 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2046 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2047 * <li>ERROR_NULL_ARGUMENT - if the string is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2048 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2049 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2050 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2051 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2052 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2053 public void drawString (String string, int x, int y) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2054 drawString(string, x, y, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2055 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2056
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2057 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2058 * Draws the given string, using the receiver's current font and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2059 * foreground color. No tab expansion or carriage return processing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2060 * will be performed. If <code>isTransparent</code> is <code>true</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2061 * then the background of the rectangular area where the string is being
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2062 * drawn will not be modified, otherwise it will be filled with the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2063 * receiver's background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2064 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2065 * @param string the string to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2066 * @param x the x coordinate of the top left corner of the rectangular area where the string is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2067 * @param y the y coordinate of the top left corner of the rectangular area where the string is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2068 * @param isTransparent if <code>true</code> the background will be transparent, otherwise it will be opaque
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2069 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2070 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2071 * <li>ERROR_NULL_ARGUMENT - if the string is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2072 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2073 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2074 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2075 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2076 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2077 public void drawString (String string, int x, int y, bool isTransparent) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2078 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2079 if (string is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2080 // TCHAR buffer = new TCHAR (getCodePage(), string, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2081 int length = string.length();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2082 if (length is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2083 char[] buffer = new char [length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2084 string.getChars(0, length, buffer, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2085 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2086 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2087 checkGC(FONT | FOREGROUND | (isTransparent ? 0 : BACKGROUND));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2088 PointF pt = new PointF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2089 int format = Gdip.StringFormat_Clone(Gdip.StringFormat_GenericTypographic());
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2090 int formatFlags = Gdip.StringFormat_GetFormatFlags(format) | Gdip.StringFormatFlagsMeasureTrailingSpaces;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2091 if ((data.style & DWT.MIRRORED) !is 0) formatFlags |= Gdip.StringFormatFlagsDirectionRightToLeft;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2092 Gdip.StringFormat_SetFormatFlags(format, formatFlags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2093 if (!isTransparent) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2094 RectF bounds = new RectF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2095 Gdip.Graphics_MeasureString(gdipGraphics, buffer, length, data.gdipFont, pt, format, bounds);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2096 Gdip.Graphics_FillRectangle(gdipGraphics, data.gdipBrush, x, y, Math.round(bounds.Width), Math.round(bounds.Height));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2097 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2098 int gstate = 0, brush = getFgBrush();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2099 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2100 switch (Gdip.Brush_GetType(brush)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2101 case Gdip.BrushTypeLinearGradient:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2102 Gdip.LinearGradientBrush_ScaleTransform(brush, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2103 Gdip.LinearGradientBrush_TranslateTransform(brush, - 2 * x, 0, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2104 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2105 case Gdip.BrushTypeTextureFill:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2106 Gdip.TextureBrush_ScaleTransform(brush, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2107 Gdip.TextureBrush_TranslateTransform(brush, - 2 * x, 0, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2108 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2109 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2110 gstate = Gdip.Graphics_Save(gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2111 Gdip.Graphics_ScaleTransform(gdipGraphics, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2112 Gdip.Graphics_TranslateTransform(gdipGraphics, - 2 * x, 0, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2113 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2114 pt.X = x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2115 pt.Y = y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2116 Gdip.Graphics_DrawString(gdipGraphics, buffer, length, data.gdipFont, pt, format, brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2117 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2118 switch (Gdip.Brush_GetType(brush)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2119 case Gdip.BrushTypeLinearGradient:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2120 Gdip.LinearGradientBrush_ResetTransform(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2121 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2122 case Gdip.BrushTypeTextureFill:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2123 Gdip.TextureBrush_ResetTransform(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2124 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2125 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2126 Gdip.Graphics_Restore(gdipGraphics, gstate);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2127 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2128 Gdip.StringFormat_delete(format);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2129 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2130 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2131 int rop2 = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2132 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2133 rop2 = OS.SetROP2(handle, OS.R2_COPYPEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2134 OS.SetROP2(handle, rop2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2135 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2136 rop2 = OS.GetROP2(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2137 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2138 checkGC(FONT | FOREGROUND_TEXT | BACKGROUND_TEXT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2139 int oldBkMode = OS.SetBkMode(handle, isTransparent ? OS.TRANSPARENT : OS.OPAQUE);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2140 RECT rect = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2141 SIZE size = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2142 int flags = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2143 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2144 if (!isTransparent) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2145 size = new SIZE();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2146 OS.GetTextExtentPoint32W(handle, buffer, length, size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2147 rect = new RECT ();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2148 rect.left = x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2149 rect.right = x + size.cx;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2150 rect.top = y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2151 rect.bottom = y + size.cy;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2152 flags = OS.ETO_CLIPPED;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2153 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2154 x--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2155 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2156 if (rop2 !is OS.R2_XORPEN) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2157 OS.ExtTextOutW(handle, x, y, flags, rect, buffer, length, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2158 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2159 int foreground = OS.GetTextColor(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2160 if (isTransparent) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2161 if (size is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2162 size = new SIZE();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2163 OS.GetTextExtentPoint32W(handle, buffer, length, size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2164 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2165 int width = size.cx, height = size.cy;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2166 int hBitmap = OS.CreateCompatibleBitmap(handle, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2167 if (hBitmap is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2168 int memDC = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2169 int hOldBitmap = OS.SelectObject(memDC, hBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2170 OS.PatBlt(memDC, 0, 0, width, height, OS.BLACKNESS);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2171 OS.SetBkMode(memDC, OS.TRANSPARENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2172 OS.SetTextColor(memDC, foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2173 OS.SelectObject(memDC, OS.GetCurrentObject(handle, OS.OBJ_FONT));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2174 OS.ExtTextOutW(memDC, 0, 0, 0, null, buffer, length, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2175 OS.BitBlt(handle, x, y, width, height, memDC, 0, 0, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2176 OS.SelectObject(memDC, hOldBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2177 OS.DeleteDC(memDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2178 OS.DeleteObject(hBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2179 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2180 int background = OS.GetBkColor(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2181 OS.SetTextColor(handle, foreground ^ background);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2182 OS.ExtTextOutW(handle, x, y, flags, rect, buffer, length, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2183 OS.SetTextColor(handle, foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2184 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2185 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2186 OS.SetBkMode(handle, oldBkMode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2187 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2188
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2189 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2190 * Draws the given string, using the receiver's current font and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2191 * foreground color. Tab expansion and carriage return processing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2192 * are performed. The background of the rectangular area where
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2193 * the text is being drawn will be filled with the receiver's
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2194 * background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2195 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2196 * @param string the string to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2197 * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2198 * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2199 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2200 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2201 * <li>ERROR_NULL_ARGUMENT - if the string is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2202 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2203 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2204 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2205 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2206 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2207 public void drawText (String string, int x, int y) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2208 drawText(string, x, y, DWT.DRAW_DELIMITER | DWT.DRAW_TAB);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2209 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2210
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2211 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2212 * Draws the given string, using the receiver's current font and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2213 * foreground color. Tab expansion and carriage return processing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2214 * are performed. If <code>isTransparent</code> is <code>true</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2215 * then the background of the rectangular area where the text is being
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2216 * drawn will not be modified, otherwise it will be filled with the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2217 * receiver's background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2218 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2219 * @param string the string to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2220 * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2221 * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2222 * @param isTransparent if <code>true</code> the background will be transparent, otherwise it will be opaque
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2223 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2224 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2225 * <li>ERROR_NULL_ARGUMENT - if the string is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2226 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2227 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2228 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2229 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2230 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2231 public void drawText (String string, int x, int y, bool isTransparent) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2232 int flags = DWT.DRAW_DELIMITER | DWT.DRAW_TAB;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2233 if (isTransparent) flags |= DWT.DRAW_TRANSPARENT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2234 drawText(string, x, y, flags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2235 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2236
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2237 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2238 * Draws the given string, using the receiver's current font and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2239 * foreground color. Tab expansion, line delimiter and mnemonic
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2240 * processing are performed according to the specified flags. If
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2241 * <code>flags</code> includes <code>DRAW_TRANSPARENT</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2242 * then the background of the rectangular area where the text is being
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2243 * drawn will not be modified, otherwise it will be filled with the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2244 * receiver's background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2245 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2246 * The parameter <code>flags</code> may be a combination of:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2247 * <dl>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2248 * <dt><b>DRAW_DELIMITER</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2249 * <dd>draw multiple lines</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2250 * <dt><b>DRAW_TAB</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2251 * <dd>expand tabs</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2252 * <dt><b>DRAW_MNEMONIC</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2253 * <dd>underline the mnemonic character</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2254 * <dt><b>DRAW_TRANSPARENT</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2255 * <dd>transparent background</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2256 * </dl>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2257 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2258 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2259 * @param string the string to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2260 * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2261 * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2262 * @param flags the flags specifying how to process the text
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2263 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2264 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2265 * <li>ERROR_NULL_ARGUMENT - if the string is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2266 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2267 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2268 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2269 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2270 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2271 public void drawText (String string, int x, int y, int flags) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2272 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2273 if (string is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2274 if (string.length() is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2275 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2276 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2277 checkGC(FONT | FOREGROUND | ((flags & DWT.DRAW_TRANSPARENT) !is 0 ? 0 : BACKGROUND));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2278 int length = string.length();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2279 char[] buffer = new char [length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2280 string.getChars(0, length, buffer, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2281 PointF pt = new PointF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2282 int format = Gdip.StringFormat_Clone(Gdip.StringFormat_GenericTypographic());
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2283 int formatFlags = Gdip.StringFormat_GetFormatFlags(format) | Gdip.StringFormatFlagsMeasureTrailingSpaces;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2284 if ((data.style & DWT.MIRRORED) !is 0) formatFlags |= Gdip.StringFormatFlagsDirectionRightToLeft;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2285 Gdip.StringFormat_SetFormatFlags(format, formatFlags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2286 float[] tabs = (flags & DWT.DRAW_TAB) !is 0 ? new float[]{measureSpace(data.gdipFont, format) * 8} : new float[1];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2287 Gdip.StringFormat_SetTabStops(format, 0, tabs.length, tabs);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2288 int hotkeyPrefix = (flags & DWT.DRAW_MNEMONIC) !is 0 ? Gdip.HotkeyPrefixShow : Gdip.HotkeyPrefixNone;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2289 if ((flags & DWT.DRAW_MNEMONIC) !is 0 && (data.uiState & OS.UISF_HIDEACCEL) !is 0) hotkeyPrefix = Gdip.HotkeyPrefixHide;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2290 Gdip.StringFormat_SetHotkeyPrefix(format, hotkeyPrefix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2291 if ((flags & DWT.DRAW_TRANSPARENT) is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2292 RectF bounds = new RectF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2293 Gdip.Graphics_MeasureString(gdipGraphics, buffer, length, data.gdipFont, pt, format, bounds);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2294 Gdip.Graphics_FillRectangle(gdipGraphics, data.gdipBrush, x, y, Math.round(bounds.Width), Math.round(bounds.Height));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2295 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2296 int gstate = 0, brush = getFgBrush();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2297 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2298 switch (Gdip.Brush_GetType(brush)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2299 case Gdip.BrushTypeLinearGradient:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2300 Gdip.LinearGradientBrush_ScaleTransform(brush, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2301 Gdip.LinearGradientBrush_TranslateTransform(brush, - 2 * x, 0, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2302 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2303 case Gdip.BrushTypeTextureFill:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2304 Gdip.TextureBrush_ScaleTransform(brush, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2305 Gdip.TextureBrush_TranslateTransform(brush, - 2 * x, 0, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2306 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2307 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2308 gstate = Gdip.Graphics_Save(gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2309 Gdip.Graphics_ScaleTransform(gdipGraphics, -1, 1, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2310 Gdip.Graphics_TranslateTransform(gdipGraphics, - 2 * x, 0, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2311 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2312 pt.X = x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2313 pt.Y = y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2314 Gdip.Graphics_DrawString(gdipGraphics, buffer, length, data.gdipFont, pt, format, brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2315 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2316 switch (Gdip.Brush_GetType(brush)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2317 case Gdip.BrushTypeLinearGradient:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2318 Gdip.LinearGradientBrush_ResetTransform(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2319 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2320 case Gdip.BrushTypeTextureFill:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2321 Gdip.TextureBrush_ResetTransform(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2322 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2323 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2324 Gdip.Graphics_Restore(gdipGraphics, gstate);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2325 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2326 Gdip.StringFormat_delete(format);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2327 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2328 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2329 TCHAR buffer = new TCHAR(getCodePage(), string, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2330 int length = buffer.length();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2331 if (length is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2332 RECT rect = new RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2333 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2334 * Feature in Windows. For some reason DrawText(), the maximum
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2335 * value for the bottom and right coordinates for the RECT that
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2336 * is used to position the text is different on between Windows
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2337 * versions. If this value is larger than the maximum, nothing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2338 * is drawn. On Windows 98, the limit is 0x7FFF. On Windows CE,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2339 * NT, and 2000 it is 0x6FFFFFF. And on XP, it is 0x7FFFFFFF.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2340 * The fix is to use the the smaller limit for Windows 98 and the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2341 * larger limit on the other Windows platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2342 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2343 int limit = OS.IsWin95 ? 0x7FFF : 0x6FFFFFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2344 OS.SetRect(rect, x, y, limit, limit);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2345 int uFormat = OS.DT_LEFT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2346 if ((flags & DWT.DRAW_DELIMITER) is 0) uFormat |= OS.DT_SINGLELINE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2347 if ((flags & DWT.DRAW_TAB) !is 0) uFormat |= OS.DT_EXPANDTABS;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2348 if ((flags & DWT.DRAW_MNEMONIC) is 0) uFormat |= OS.DT_NOPREFIX;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2349 if ((flags & DWT.DRAW_MNEMONIC) !is 0 && (data.uiState & OS.UISF_HIDEACCEL) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2350 uFormat |= OS.DT_HIDEPREFIX;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2351 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2352 int rop2 = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2353 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2354 rop2 = OS.SetROP2(handle, OS.R2_COPYPEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2355 OS.SetROP2(handle, rop2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2356 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2357 rop2 = OS.GetROP2(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2358 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2359 checkGC(FONT | FOREGROUND_TEXT | BACKGROUND_TEXT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2360 int oldBkMode = OS.SetBkMode(handle, (flags & DWT.DRAW_TRANSPARENT) !is 0 ? OS.TRANSPARENT : OS.OPAQUE);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2361 if (rop2 !is OS.R2_XORPEN) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2362 OS.DrawText(handle, buffer, length, rect, uFormat);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2363 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2364 int foreground = OS.GetTextColor(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2365 if ((flags & DWT.DRAW_TRANSPARENT) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2366 OS.DrawText(handle, buffer, buffer.length(), rect, uFormat | OS.DT_CALCRECT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2367 int width = rect.right - rect.left;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2368 int height = rect.bottom - rect.top;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2369 int hBitmap = OS.CreateCompatibleBitmap(handle, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2370 if (hBitmap is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2371 int memDC = OS.CreateCompatibleDC(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2372 int hOldBitmap = OS.SelectObject(memDC, hBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2373 OS.PatBlt(memDC, 0, 0, width, height, OS.BLACKNESS);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2374 OS.SetBkMode(memDC, OS.TRANSPARENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2375 OS.SetTextColor(memDC, foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2376 OS.SelectObject(memDC, OS.GetCurrentObject(handle, OS.OBJ_FONT));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2377 OS.SetRect(rect, 0, 0, 0x7FFF, 0x7FFF);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2378 OS.DrawText(memDC, buffer, length, rect, uFormat);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2379 OS.BitBlt(handle, x, y, width, height, memDC, 0, 0, OS.SRCINVERT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2380 OS.SelectObject(memDC, hOldBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2381 OS.DeleteDC(memDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2382 OS.DeleteObject(hBitmap);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2383 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2384 int background = OS.GetBkColor(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2385 OS.SetTextColor(handle, foreground ^ background);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2386 OS.DrawText(handle, buffer, length, rect, uFormat);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2387 OS.SetTextColor(handle, foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2388 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2389 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2390 OS.SetBkMode(handle, oldBkMode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2391 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2392
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2393 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2394 * Compares the argument to the receiver, and returns true
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2395 * if they represent the <em>same</em> object using a class
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2396 * specific comparison.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2397 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2398 * @param object the object to compare with this object
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2399 * @return <code>true</code> if the object is the same as this object and <code>false</code> otherwise
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2400 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2401 * @see #hashCode
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2402 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2403 public bool equals (Object object) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2404 return (object is this) || ((object instanceof GC) && (handle is ((GC)object).handle));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2405 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2406
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2407 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2408 * Fills the interior of a circular or elliptical arc within
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2409 * the specified rectangular area, with the receiver's background
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2410 * color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2411 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2412 * The resulting arc begins at <code>startAngle</code> and extends
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2413 * for <code>arcAngle</code> degrees, using the current color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2414 * Angles are interpreted such that 0 degrees is at the 3 o'clock
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2415 * position. A positive value indicates a counter-clockwise rotation
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2416 * while a negative value indicates a clockwise rotation.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2417 * </p><p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2418 * The center of the arc is the center of the rectangle whose origin
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2419 * is (<code>x</code>, <code>y</code>) and whose size is specified by the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2420 * <code>width</code> and <code>height</code> arguments.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2421 * </p><p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2422 * The resulting arc covers an area <code>width + 1</code> pixels wide
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2423 * by <code>height + 1</code> pixels tall.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2424 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2425 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2426 * @param x the x coordinate of the upper-left corner of the arc to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2427 * @param y the y coordinate of the upper-left corner of the arc to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2428 * @param width the width of the arc to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2429 * @param height the height of the arc to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2430 * @param startAngle the beginning angle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2431 * @param arcAngle the angular extent of the arc, relative to the start angle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2432 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2433 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2434 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2435 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2436 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2437 * @see #drawArc
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2438 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2439 public void fillArc (int x, int y, int width, int height, int startAngle, int arcAngle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2440 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2441 checkGC(FILL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2442 if (width < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2443 x = x + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2444 width = -width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2445 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2446 if (height < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2447 y = y + height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2448 height = -height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2449 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2450 if (width is 0 || height is 0 || arcAngle is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2451 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2452 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2453 if (width is height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2454 Gdip.Graphics_FillPie(gdipGraphics, data.gdipBrush, x, y, width, height, -startAngle, -arcAngle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2455 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2456 int state = Gdip.Graphics_Save(gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2457 Gdip.Graphics_TranslateTransform(gdipGraphics, x, y, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2458 Gdip.Graphics_ScaleTransform(gdipGraphics, width, height, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2459 Gdip.Graphics_FillPie(gdipGraphics, data.gdipBrush, 0, 0, 1, 1, -startAngle, -arcAngle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2460 Gdip.Graphics_Restore(gdipGraphics, state);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2461 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2462 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2463 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2464
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2465 if ((data.style & DWT.MIRRORED) !is 0) x--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2466 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2467 * Feature in WinCE. The function Pie is not present in the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2468 * WinCE SDK. The fix is to emulate it by using Polygon.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2469 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2470 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2471 /* compute arc with a simple linear interpolation */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2472 if (arcAngle < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2473 startAngle += arcAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2474 arcAngle = -arcAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2475 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2476 bool drawSegments = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2477 if (arcAngle >= 360) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2478 arcAngle = 360;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2479 drawSegments = false;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2480 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2481 int[] points = new int[(arcAngle + 1) * 2 + (drawSegments ? 4 : 0)];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2482 int cteX = 2 * x + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2483 int cteY = 2 * y + height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2484 int index = (drawSegments ? 2 : 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2485 for (int i = 0; i <= arcAngle; i++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2486 points[index++] = (Compatibility.cos(startAngle + i, width) + cteX) >> 1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2487 points[index++] = (cteY - Compatibility.sin(startAngle + i, height)) >> 1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2488 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2489 if (drawSegments) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2490 points[0] = points[points.length - 2] = cteX >> 1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2491 points[1] = points[points.length - 1] = cteY >> 1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2492 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2493 OS.Polygon(handle, points, points.length / 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2494 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2495 int x1, y1, x2, y2,tmp;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2496 bool isNegative;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2497 if (arcAngle >= 360 || arcAngle <= -360) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2498 x1 = x2 = x + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2499 y1 = y2 = y + height / 2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2500 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2501 isNegative = arcAngle < 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2502
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2503 arcAngle = arcAngle + startAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2504 if (isNegative) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2505 // swap angles
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2506 tmp = startAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2507 startAngle = arcAngle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2508 arcAngle = tmp;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2509 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2510 x1 = Compatibility.cos(startAngle, width) + x + width/2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2511 y1 = -1 * Compatibility.sin(startAngle, height) + y + height/2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2512
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2513 x2 = Compatibility.cos(arcAngle, width) + x + width/2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2514 y2 = -1 * Compatibility.sin(arcAngle, height) + y + height/2;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2515 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2516 OS.Pie(handle, x, y, x + width + 1, y + height + 1, x1, y1, x2, y2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2517 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2518 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2519
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2520 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2521 * Fills the interior of the specified rectangle with a gradient
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2522 * sweeping from left to right or top to bottom progressing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2523 * from the receiver's foreground color to its background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2524 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2525 * @param x the x coordinate of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2526 * @param y the y coordinate of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2527 * @param width the width of the rectangle to be filled, may be negative
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2528 * (inverts direction of gradient if horizontal)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2529 * @param height the height of the rectangle to be filled, may be negative
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2530 * (inverts direction of gradient if vertical)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2531 * @param vertical if true sweeps from top to bottom, else
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2532 * sweeps from left to right
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2533 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2534 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2535 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2536 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2537 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2538 * @see #drawRectangle(int, int, int, int)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2539 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2540 public void fillGradientRectangle(int x, int y, int width, int height, bool vertical) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2541 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2542 if (width is 0 || height is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2543
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2544 RGB backgroundRGB, foregroundRGB;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2545 backgroundRGB = getBackground().getRGB();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2546 foregroundRGB = getForeground().getRGB();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2547
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2548 RGB fromRGB, toRGB;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2549 fromRGB = foregroundRGB;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2550 toRGB = backgroundRGB;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2551
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2552 bool swapColors = false;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2553 if (width < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2554 x += width; width = -width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2555 if (! vertical) swapColors = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2556 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2557 if (height < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2558 y += height; height = -height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2559 if (vertical) swapColors = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2560 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2561 if (swapColors) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2562 fromRGB = backgroundRGB;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2563 toRGB = foregroundRGB;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2564 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2565 if (fromRGB.equals(toRGB)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2566 fillRectangle(x, y, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2567 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2568 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2569 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2570 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2571 PointF p1= new PointF(), p2 = new PointF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2572 p1.X = x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2573 p1.Y = y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2574 if (vertical) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2575 p2.X = p1.X;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2576 p2.Y = p1.Y + height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2577 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2578 p2.X = p1.X + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2579 p2.Y = p1.Y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2580 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2581 int rgb = ((fromRGB.red & 0xFF) << 16) | ((fromRGB.green & 0xFF) << 8) | (fromRGB.blue & 0xFF);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2582 int fromGpColor = Gdip.Color_new(data.alpha << 24 | rgb);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2583 if (fromGpColor is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2584 rgb = ((toRGB.red & 0xFF) << 16) | ((toRGB.green & 0xFF) << 8) | (toRGB.blue & 0xFF);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2585 int toGpColor = Gdip.Color_new(data.alpha << 24 | rgb);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2586 if (toGpColor is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2587 int brush = Gdip.LinearGradientBrush_new(p1, p2, fromGpColor, toGpColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2588 Gdip.Graphics_FillRectangle(data.gdipGraphics, brush, x, y, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2589 Gdip.LinearGradientBrush_delete(brush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2590 Gdip.Color_delete(fromGpColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2591 Gdip.Color_delete(toGpColor);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2592 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2593 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2594 /* Use GradientFill if supported, only on Windows 98, 2000 and newer. */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2595 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2596 * Bug in Windows: On Windows 2000 when the device is a printer,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2597 * GradientFill swaps red and blue color components, causing the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2598 * gradient to be printed in the wrong color. On Windows 98 when
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2599 * the device is a printer, GradientFill does not fill completely
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2600 * to the right edge of the rectangle. The fix is not to use
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2601 * GradientFill for printer devices.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2602 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2603 int rop2 = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2604 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2605 rop2 = OS.SetROP2(handle, OS.R2_COPYPEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2606 OS.SetROP2(handle, rop2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2607 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2608 rop2 = OS.GetROP2(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2609 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2610 if (OS.IsWinNT && rop2 !is OS.R2_XORPEN && OS.GetDeviceCaps(handle, OS.TECHNOLOGY) !is OS.DT_RASPRINTER) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2611 final int hHeap = OS.GetProcessHeap();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2612 final int pMesh = OS.HeapAlloc(hHeap, OS.HEAP_ZERO_MEMORY, GRADIENT_RECT.sizeof + TRIVERTEX.sizeof * 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2613 if (pMesh is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2614 final int pVertex = pMesh + GRADIENT_RECT.sizeof;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2615
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2616 GRADIENT_RECT gradientRect = new GRADIENT_RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2617 gradientRect.UpperLeft = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2618 gradientRect.LowerRight = 1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2619 OS.MoveMemory(pMesh, gradientRect, GRADIENT_RECT.sizeof);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2620
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2621 TRIVERTEX trivertex = new TRIVERTEX();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2622 trivertex.x = x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2623 trivertex.y = y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2624 trivertex.Red = (short)((fromRGB.red << 8) | fromRGB.red);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2625 trivertex.Green = (short)((fromRGB.green << 8) | fromRGB.green);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2626 trivertex.Blue = (short)((fromRGB.blue << 8) | fromRGB.blue);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2627 trivertex.Alpha = -1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2628 OS.MoveMemory(pVertex, trivertex, TRIVERTEX.sizeof);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2629
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2630 trivertex.x = x + width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2631 trivertex.y = y + height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2632 trivertex.Red = (short)((toRGB.red << 8) | toRGB.red);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2633 trivertex.Green = (short)((toRGB.green << 8) | toRGB.green);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2634 trivertex.Blue = (short)((toRGB.blue << 8) | toRGB.blue);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2635 trivertex.Alpha = -1;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2636 OS.MoveMemory(pVertex + TRIVERTEX.sizeof, trivertex, TRIVERTEX.sizeof);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2637
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2638 bool success = OS.GradientFill(handle, pVertex, 2, pMesh, 1, vertical ? OS.GRADIENT_FILL_RECT_V : OS.GRADIENT_FILL_RECT_H);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2639 OS.HeapFree(hHeap, 0, pMesh);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2640 if (success) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2641 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2642
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2643 final int depth = OS.GetDeviceCaps(handle, OS.BITSPIXEL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2644 final int bitResolution = (depth >= 24) ? 8 : (depth >= 15) ? 5 : 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2645 ImageData.fillGradientRectangle(this, data.device,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2646 x, y, width, height, vertical, fromRGB, toRGB,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2647 bitResolution, bitResolution, bitResolution);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2648 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2649
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2650 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2651 * Fills the interior of an oval, within the specified
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2652 * rectangular area, with the receiver's background
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2653 * color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2654 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2655 * @param x the x coordinate of the upper left corner of the oval to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2656 * @param y the y coordinate of the upper left corner of the oval to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2657 * @param width the width of the oval to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2658 * @param height the height of the oval to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2659 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2660 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2661 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2662 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2663 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2664 * @see #drawOval
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2665 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2666 public void fillOval (int x, int y, int width, int height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2667 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2668 checkGC(FILL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2669 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2670 Gdip.Graphics_FillEllipse(data.gdipGraphics, data.gdipBrush, x, y, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2671 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2672 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2673 if ((data.style & DWT.MIRRORED) !is 0) x--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2674 OS.Ellipse(handle, x, y, x + width + 1, y + height + 1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2675 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2676
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2677 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2678 * Fills the path described by the parameter.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2679 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2680 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2681 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2682 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2683 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2684 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2685 * @param path the path to fill
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2686 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2687 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2688 * <li>ERROR_NULL_ARGUMENT - if the parameter is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2689 * <li>ERROR_INVALID_ARGUMENT - if the parameter has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2690 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2691 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2692 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2693 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2694 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2695 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2696 * @see Path
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2697 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2698 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2699 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2700 public void fillPath (Path path) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2701 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2702 if (path is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2703 if (path.handle is 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2704 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2705 checkGC(FILL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2706 int mode = OS.GetPolyFillMode(handle) is OS.WINDING ? Gdip.FillModeWinding : Gdip.FillModeAlternate;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2707 Gdip.GraphicsPath_SetFillMode(path.handle, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2708 Gdip.Graphics_FillPath(data.gdipGraphics, data.gdipBrush, path.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2709 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2710
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2711 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2712 * Fills the interior of the closed polygon which is defined by the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2713 * specified array of integer coordinates, using the receiver's
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2714 * background color. The array contains alternating x and y values
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2715 * which are considered to represent points which are the vertices of
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2716 * the polygon. Lines are drawn between each consecutive pair, and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2717 * between the first pair and last pair in the array.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2718 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2719 * @param pointArray an array of alternating x and y values which are the vertices of the polygon
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2720 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2721 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2722 * <li>ERROR_NULL_ARGUMENT if pointArray is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2723 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2724 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2725 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2726 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2727 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2728 * @see #drawPolygon
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2729 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2730 public void fillPolygon(int[] pointArray) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2731 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2732 if (pointArray is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2733 checkGC(FILL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2734 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2735 int mode = OS.GetPolyFillMode(handle) is OS.WINDING ? Gdip.FillModeWinding : Gdip.FillModeAlternate;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2736 Gdip.Graphics_FillPolygon(data.gdipGraphics, data.gdipBrush, pointArray, pointArray.length / 2, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2737 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2738 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2739 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2740 for (int i = 0; i < pointArray.length; i+=2) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2741 pointArray[i]--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2742 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2743 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2744 OS.Polygon(handle, pointArray, pointArray.length / 2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2745 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2746 for (int i = 0; i < pointArray.length; i+=2) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2747 pointArray[i]++;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2748 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2749 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2750 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2751
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2752 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2753 * Fills the interior of the rectangle specified by the arguments,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2754 * using the receiver's background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2755 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2756 * @param x the x coordinate of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2757 * @param y the y coordinate of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2758 * @param width the width of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2759 * @param height the height of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2760 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2761 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2762 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2763 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2764 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2765 * @see #drawRectangle(int, int, int, int)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2766 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2767 public void fillRectangle (int x, int y, int width, int height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2768 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2769 checkGC(FILL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2770 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2771 Gdip.Graphics_FillRectangle(data.gdipGraphics, data.gdipBrush, x, y, width, height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2772 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2773 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2774 int rop2 = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2775 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2776 rop2 = OS.SetROP2(handle, OS.R2_COPYPEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2777 OS.SetROP2(handle, rop2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2778 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2779 rop2 = OS.GetROP2(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2780 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2781 int dwRop = rop2 is OS.R2_XORPEN ? OS.PATINVERT : OS.PATCOPY;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2782 OS.PatBlt(handle, x, y, width, height, dwRop);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2783 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2784
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2785 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2786 * Fills the interior of the specified rectangle, using the receiver's
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2787 * background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2788 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2789 * @param rect the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2790 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2791 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2792 * <li>ERROR_NULL_ARGUMENT - if the rectangle is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2793 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2794 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2795 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2796 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2797 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2798 * @see #drawRectangle(int, int, int, int)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2799 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2800 public void fillRectangle (Rectangle rect) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2801 if (rect is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2802 fillRectangle (rect.x, rect.y, rect.width, rect.height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2803 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2804
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2805 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2806 * Fills the interior of the round-cornered rectangle specified by
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2807 * the arguments, using the receiver's background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2808 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2809 * @param x the x coordinate of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2810 * @param y the y coordinate of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2811 * @param width the width of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2812 * @param height the height of the rectangle to be filled
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2813 * @param arcWidth the width of the arc
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2814 * @param arcHeight the height of the arc
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2815 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2816 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2817 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2818 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2819 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2820 * @see #drawRoundRectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2821 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2822 public void fillRoundRectangle (int x, int y, int width, int height, int arcWidth, int arcHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2823 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2824 checkGC(FILL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2825 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2826 fillRoundRectangleGdip(data.gdipGraphics, data.gdipBrush, x, y, width, height, arcWidth, arcHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2827 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2828 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2829 if ((data.style & DWT.MIRRORED) !is 0) x--;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2830 OS.RoundRect(handle, x,y,x+width+1,y+height+1,arcWidth, arcHeight);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2831 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2832
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2833 void fillRoundRectangleGdip (int gdipGraphics, int brush, int x, int y, int width, int height, int arcWidth, int arcHeight) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2834 int nx = x;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2835 int ny = y;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2836 int nw = width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2837 int nh = height;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2838 int naw = arcWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2839 int nah = arcHeight;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2840
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2841 if (nw < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2842 nw = 0 - nw;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2843 nx = nx - nw;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2844 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2845 if (nh < 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2846 nh = 0 - nh;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2847 ny = ny -nh;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2848 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2849 if (naw < 0)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2850 naw = 0 - naw;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2851 if (nah < 0)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2852 nah = 0 - nah;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2853
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2854 int path = Gdip.GraphicsPath_new(Gdip.FillModeAlternate);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2855 if (path is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2856 if (nw > naw) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2857 if (nh > nah) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2858 Gdip.GraphicsPath_AddArc(path, nx + nw - naw, ny, naw, nah, 0, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2859 Gdip.GraphicsPath_AddArc(path, nx, ny, naw, nah, -90, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2860 Gdip.GraphicsPath_AddArc(path, nx, ny + nh - nah, naw, nah, -180, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2861 Gdip.GraphicsPath_AddArc(path, nx + nw - naw, ny + nh - nah, naw, nah, -270, -90);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2862 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2863 Gdip.GraphicsPath_AddArc(path, nx + nw - naw, ny, naw, nh, -270, -180);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2864 Gdip.GraphicsPath_AddArc(path, nx, ny, naw, nh, -90, -180);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2865 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2866 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2867 if (nh > nah) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2868 Gdip.GraphicsPath_AddArc(path, nx, ny, nw, nah, 0, -180);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2869 Gdip.GraphicsPath_AddArc(path, nx, ny + nh - nah, nw, nah, -180, -180);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2870 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2871 Gdip.GraphicsPath_AddArc(path, nx, ny, nw, nh, 0, 360);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2872 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2873 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2874 Gdip.GraphicsPath_CloseFigure(path);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2875 Gdip.Graphics_FillPath(gdipGraphics, brush, path);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2876 Gdip.GraphicsPath_delete(path);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2877 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2878
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2879 void flush () {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2880 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2881 Gdip.Graphics_Flush(data.gdipGraphics, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2882 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2883 * Note Flush() does not flush the output to the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2884 * underline HDC. This is done by calling GetHDC()
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2885 * followed by ReleaseHDC().
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2886 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2887 int hdc = Gdip.Graphics_GetHDC(data.gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2888 Gdip.Graphics_ReleaseHDC(data.gdipGraphics, hdc);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2889 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2890 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2891
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2892 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2893 * Returns the <em>advance width</em> of the specified character in
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2894 * the font which is currently selected into the receiver.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2895 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2896 * The advance width is defined as the horizontal distance the cursor
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2897 * should move after printing the character in the selected font.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2898 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2899 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2900 * @param ch the character to measure
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2901 * @return the distance in the x direction to move past the character before painting the next
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2902 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2903 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2904 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2905 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2906 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2907 public int getAdvanceWidth(char ch) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2908 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2909 checkGC(FONT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2910 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2911 SIZE size = new SIZE();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2912 OS.GetTextExtentPoint32W(handle, new char[]{ch}, 1, size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2913 return size.cx;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2914 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2915 int tch = ch;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2916 if (ch > 0x7F) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2917 TCHAR buffer = new TCHAR(getCodePage(), ch, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2918 tch = buffer.tcharAt(0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2919 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2920 int[] width = new int[1];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2921 OS.GetCharWidth(handle, tch, tch, width);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2922 return width[0];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2923 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2924
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2925 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2926 * Returns <code>true</code> if receiver is using the operating system's
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2927 * advanced graphics subsystem. Otherwise, <code>false</code> is returned
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2928 * to indicate that normal graphics are in use.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2929 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2930 * Advanced graphics may not be installed for the operating system. In this
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2931 * case, <code>false</code> is always returned. Some operating system have
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2932 * only one graphics subsystem. If this subsystem supports advanced graphics,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2933 * then <code>true</code> is always returned. If any graphics operation such
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2934 * as alpha, antialias, patterns, interpolation, paths, clipping or transformation
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2935 * has caused the receiver to switch from regular to advanced graphics mode,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2936 * <code>true</code> is returned. If the receiver has been explicitly switched
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2937 * to advanced mode and this mode is supported, <code>true</code> is returned.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2938 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2939 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2940 * @return the advanced value
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2941 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2942 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2943 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2944 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2945 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2946 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2947 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2948 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2949 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2950 public bool getAdvanced() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2951 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2952 return data.gdipGraphics !is 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2953 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2954
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2955 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2956 * Returns the receiver's alpha value.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2957 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2958 * @return the alpha value
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2959 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2960 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2961 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2962 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2963 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2964 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2965 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2966 public int getAlpha() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2967 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2968 return data.alpha;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2969 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2970
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2971 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2972 * Returns the receiver's anti-aliasing setting value, which will be
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2973 * one of <code>DWT.DEFAULT</code>, <code>DWT.OFF</code> or
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2974 * <code>DWT.ON</code>. Note that this controls anti-aliasing for all
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2975 * <em>non-text drawing</em> operations.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2976 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2977 * @return the anti-aliasing setting
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2978 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2979 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2980 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2981 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2982 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2983 * @see #getTextAntialias
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2984 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2985 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2986 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2987 public int getAntialias() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2988 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2989 if (data.gdipGraphics is 0) return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2990 int mode = Gdip.Graphics_GetSmoothingMode(data.gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2991 switch (mode) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2992 case Gdip.SmoothingModeDefault: return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2993 case Gdip.SmoothingModeHighSpeed:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2994 case Gdip.SmoothingModeNone: return DWT.OFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2995 case Gdip.SmoothingModeAntiAlias:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2996 case Gdip.SmoothingModeAntiAlias8x8:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2997 case Gdip.SmoothingModeHighQuality: return DWT.ON;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2998 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2999 return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3000 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3001
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3002 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3003 * Returns the background color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3004 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3005 * @return the receiver's background color
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3006 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3007 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3008 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3009 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3010 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3011 public Color getBackground() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3012 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3013 return Color.win32_new(data.device, data.background);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3014 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3015
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3016 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3017 * Returns the background pattern. The default value is
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3018 * <code>null</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3019 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3020 * @return the receiver's background pattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3021 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3022 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3023 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3024 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3025 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3026 * @see Pattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3027 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3028 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3029 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3030 public Pattern getBackgroundPattern() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3031 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3032 return data.backgroundPattern;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3033 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3034
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3035 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3036 * Returns the width of the specified character in the font
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3037 * selected into the receiver.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3038 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3039 * The width is defined as the space taken up by the actual
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3040 * character, not including the leading and tailing whitespace
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3041 * or overhang.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3042 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3043 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3044 * @param ch the character to measure
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3045 * @return the width of the character
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3046 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3047 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3048 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3049 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3050 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3051 public int getCharWidth(char ch) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3052 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3053 checkGC(FONT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3054
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3055 /* GetCharABCWidths only succeeds on truetype fonts */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3056 if (!OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3057 int tch = ch;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3058 if (ch > 0x7F) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3059 TCHAR buffer = new TCHAR(getCodePage(), ch, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3060 tch = buffer.tcharAt (0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3061 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3062 int[] width = new int[3];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3063 if (OS.GetCharABCWidths(handle, tch, tch, width)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3064 return width[1];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3065 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3066 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3067
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3068 /* It wasn't a truetype font */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3069 TEXTMETRIC lptm = OS.IsUnicode ? (TEXTMETRIC)new TEXTMETRICW() : new TEXTMETRICA();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3070 OS.GetTextMetrics(handle, lptm);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3071 SIZE size = new SIZE();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3072 OS.GetTextExtentPoint32W(handle, new char[]{ch}, 1, size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3073 return size.cx - lptm.tmOverhang;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3074 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3075
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3076 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3077 * Returns the bounding rectangle of the receiver's clipping
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3078 * region. If no clipping region is set, the return value
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3079 * will be a rectangle which covers the entire bounds of the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3080 * object the receiver is drawing on.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3081 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3082 * @return the bounding rectangle of the clipping region
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3083 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3084 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3085 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3086 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3087 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3088 public Rectangle getClipping() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3089 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3090 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3091 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3092 Rect rect = new Rect();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3093 Gdip.Graphics_SetPixelOffsetMode(gdipGraphics, Gdip.PixelOffsetModeNone);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3094 Gdip.Graphics_GetVisibleClipBounds(gdipGraphics, rect);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3095 Gdip.Graphics_SetPixelOffsetMode(gdipGraphics, Gdip.PixelOffsetModeHalf);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3096 return new Rectangle(rect.X, rect.Y, rect.Width, rect.Height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3097 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3098 RECT rect = new RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3099 OS.GetClipBox(handle, rect);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3100 return new Rectangle(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3101 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3102
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3103 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3104 * Sets the region managed by the argument to the current
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3105 * clipping region of the receiver.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3106 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3107 * @param region the region to fill with the clipping region
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3108 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3109 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3110 * <li>ERROR_NULL_ARGUMENT - if the region is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3111 * <li>ERROR_INVALID_ARGUMENT - if the region is disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3112 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3113 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3114 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3115 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3116 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3117 public void getClipping (Region region) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3118 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3119 if (region is null) DWT.error (DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3120 if (region.isDisposed()) DWT.error (DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3121 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3122 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3123 int rgn = Gdip.Region_new();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3124 Gdip.Graphics_GetClip(data.gdipGraphics, rgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3125 if (Gdip.Region_IsInfinite(rgn, gdipGraphics)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3126 Rect rect = new Rect();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3127 Gdip.Graphics_SetPixelOffsetMode(gdipGraphics, Gdip.PixelOffsetModeNone);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3128 Gdip.Graphics_GetVisibleClipBounds(gdipGraphics, rect);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3129 Gdip.Graphics_SetPixelOffsetMode(gdipGraphics, Gdip.PixelOffsetModeHalf);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3130 OS.SetRectRgn(region.handle, rect.X, rect.Y, rect.X + rect.Width, rect.Y + rect.Height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3131 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3132 int matrix = Gdip.Matrix_new(1, 0, 0, 1, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3133 int identity = Gdip.Matrix_new(1, 0, 0, 1, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3134 Gdip.Graphics_GetTransform(gdipGraphics, matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3135 Gdip.Graphics_SetTransform(gdipGraphics, identity);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3136 int hRgn = Gdip.Region_GetHRGN(rgn, data.gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3137 Gdip.Graphics_SetTransform(gdipGraphics, matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3138 Gdip.Matrix_delete(identity);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3139 Gdip.Matrix_delete(matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3140 OS.CombineRgn(region.handle, hRgn, 0, OS.RGN_COPY);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3141 OS.DeleteObject(hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3142 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3143 Gdip.Region_delete(rgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3144 return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3145 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3146 POINT pt = new POINT ();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3147 if (!OS.IsWinCE) OS.GetWindowOrgEx (handle, pt);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3148 int result = OS.GetClipRgn (handle, region.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3149 if (result !is 1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3150 RECT rect = new RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3151 OS.GetClipBox(handle, rect);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3152 OS.SetRectRgn(region.handle, rect.left, rect.top, rect.right, rect.bottom);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3153 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3154 OS.OffsetRgn (region.handle, pt.x, pt.y);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3155 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3156 if (!OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3157 int metaRgn = OS.CreateRectRgn (0, 0, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3158 if (OS.GetMetaRgn (handle, metaRgn) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3159 OS.OffsetRgn (metaRgn, pt.x, pt.y);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3160 OS.CombineRgn (region.handle, metaRgn, region.handle, OS.RGN_AND);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3161 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3162 OS.DeleteObject(metaRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3163 int hwnd = data.hwnd;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3164 if (hwnd !is 0 && data.ps !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3165 int sysRgn = OS.CreateRectRgn (0, 0, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3166 if (OS.GetRandomRgn (handle, sysRgn, OS.SYSRGN) is 1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3167 if (OS.WIN32_VERSION >= OS.VERSION(4, 10)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3168 if ((OS.GetLayout(handle) & OS.LAYOUT_RTL) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3169 int nBytes = OS.GetRegionData (sysRgn, 0, null);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3170 int [] lpRgnData = new int [nBytes / 4];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3171 OS.GetRegionData (sysRgn, nBytes, lpRgnData);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3172 int newSysRgn = OS.ExtCreateRegion(new float [] {-1, 0, 0, 1, 0, 0}, nBytes, lpRgnData);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3173 OS.DeleteObject(sysRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3174 sysRgn = newSysRgn;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3175 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3176 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3177 if (OS.IsWinNT) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3178 OS.MapWindowPoints(0, hwnd, pt, 1);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3179 OS.OffsetRgn(sysRgn, pt.x, pt.y);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3180 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3181 OS.CombineRgn (region.handle, sysRgn, region.handle, OS.RGN_AND);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3182 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3183 OS.DeleteObject(sysRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3184 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3185 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3186 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3187
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3188 int getCodePage () {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3189 if (OS.IsUnicode) return OS.CP_ACP;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3190 int[] lpCs = new int[8];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3191 int cs = OS.GetTextCharset(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3192 OS.TranslateCharsetInfo(cs, lpCs, OS.TCI_SRCCHARSET);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3193 return lpCs[1];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3194 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3195
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3196 int getFgBrush() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3197 return data.foregroundPattern !is null ? data.foregroundPattern.handle : data.gdipFgBrush;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3198 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3199
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3200 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3201 * Returns the receiver's fill rule, which will be one of
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3202 * <code>DWT.FILL_EVEN_ODD</code> or <code>DWT.FILL_WINDING</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3203 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3204 * @return the receiver's fill rule
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3205 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3206 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3207 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3208 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3209 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3210 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3211 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3212 public int getFillRule() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3213 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3214 if (OS.IsWinCE) return DWT.FILL_EVEN_ODD;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3215 return OS.GetPolyFillMode(handle) is OS.WINDING ? DWT.FILL_WINDING : DWT.FILL_EVEN_ODD;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3216 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3217
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3218 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3219 * Returns the font currently being used by the receiver
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3220 * to draw and measure text.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3221 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3222 * @return the receiver's font
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3223 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3224 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3225 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3226 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3227 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3228 public Font getFont () {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3229 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3230 return Font.win32_new(data.device, data.hFont);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3231 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3232
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3233 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3234 * Returns a FontMetrics which contains information
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3235 * about the font currently being used by the receiver
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3236 * to draw and measure text.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3237 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3238 * @return font metrics for the receiver's font
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3239 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3240 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3241 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3242 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3243 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3244 public FontMetrics getFontMetrics() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3245 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3246 checkGC(FONT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3247 TEXTMETRIC lptm = OS.IsUnicode ? (TEXTMETRIC)new TEXTMETRICW() : new TEXTMETRICA();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3248 OS.GetTextMetrics(handle, lptm);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3249 return FontMetrics.win32_new(lptm);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3250 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3251
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3252 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3253 * Returns the receiver's foreground color.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3254 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3255 * @return the color used for drawing foreground things
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3256 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3257 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3258 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3259 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3260 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3261 public Color getForeground() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3262 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3263 return Color.win32_new(data.device, data.foreground);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3264 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3265
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3266 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3267 * Returns the foreground pattern. The default value is
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3268 * <code>null</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3269 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3270 * @return the receiver's foreground pattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3271 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3272 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3273 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3274 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3275 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3276 * @see Pattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3277 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3278 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3279 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3280 public Pattern getForegroundPattern() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3281 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3282 return data.foregroundPattern;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3283 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3284
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3285 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3286 * Returns the GCData.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3287 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3288 * <b>IMPORTANT:</b> This method is <em>not</em> part of the public
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3289 * API for <code>GC</code>. It is marked public only so that it
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3290 * can be shared within the packages provided by DWT. It is not
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3291 * available on all platforms, and should never be called from
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3292 * application code.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3293 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3294 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3295 * @return the receiver's GCData
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3296 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3297 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3298 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3299 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3300 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3301 * @see GCData
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3302 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3303 * @since 3.2
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3304 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3305 public GCData getGCData() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3306 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3307 return data;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3308 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3309
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3310 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3311 * Returns the receiver's interpolation setting, which will be one of
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3312 * <code>DWT.DEFAULT</code>, <code>DWT.NONE</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3313 * <code>DWT.LOW</code> or <code>DWT.HIGH</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3314 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3315 * @return the receiver's interpolation setting
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3316 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3317 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3318 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3319 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3320 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3321 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3322 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3323 public int getInterpolation() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3324 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3325 if (data.gdipGraphics is 0) return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3326 int mode = Gdip.Graphics_GetInterpolationMode(data.gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3327 switch (mode) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3328 case Gdip.InterpolationModeDefault: return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3329 case Gdip.InterpolationModeNearestNeighbor: return DWT.NONE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3330 case Gdip.InterpolationModeBilinear:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3331 case Gdip.InterpolationModeLowQuality: return DWT.LOW;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3332 case Gdip.InterpolationModeBicubic:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3333 case Gdip.InterpolationModeHighQualityBilinear:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3334 case Gdip.InterpolationModeHighQualityBicubic:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3335 case Gdip.InterpolationModeHighQuality: return DWT.HIGH;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3336 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3337 return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3338 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3339
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3340 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3341 * Returns the receiver's line attributes.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3342 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3343 * @return the line attributes used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3344 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3345 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3346 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3347 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3348 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3349 * @since 3.3
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3350 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3351 public LineAttributes getLineAttributes() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3352 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3353 float[] dashes = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3354 if (data.lineDashes !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3355 dashes = new float[data.lineDashes.length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3356 System.arraycopy(data.lineDashes, 0, dashes, 0, dashes.length);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3357 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3358 return new LineAttributes(data.lineWidth, data.lineCap, data.lineJoin, data.lineStyle, dashes, data.lineDashesOffset, data.lineMiterLimit);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3359 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3360
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3361 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3362 * Returns the receiver's line cap style, which will be one
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3363 * of the constants <code>DWT.CAP_FLAT</code>, <code>DWT.CAP_ROUND</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3364 * or <code>DWT.CAP_SQUARE</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3365 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3366 * @return the cap style used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3367 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3368 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3369 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3370 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3371 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3372 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3373 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3374 public int getLineCap() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3375 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3376 return data.lineCap;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3377 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3378
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3379 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3380 * Returns the receiver's line dash style. The default value is
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3381 * <code>null</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3382 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3383 * @return the line dash style used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3384 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3385 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3386 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3387 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3388 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3389 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3390 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3391 public int[] getLineDash() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3392 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3393 if (data.lineDashes is null) return null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3394 int[] lineDashes = new int[data.lineDashes.length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3395 for (int i = 0; i < lineDashes.length; i++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3396 lineDashes[i] = (int)data.lineDashes[i];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3397 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3398 return lineDashes;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3399 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3400
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3401 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3402 * Returns the receiver's line join style, which will be one
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3403 * of the constants <code>DWT.JOIN_MITER</code>, <code>DWT.JOIN_ROUND</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3404 * or <code>DWT.JOIN_BEVEL</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3405 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3406 * @return the join style used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3407 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3408 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3409 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3410 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3411 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3412 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3413 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3414 public int getLineJoin() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3415 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3416 return data.lineJoin;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3417 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3418
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3419 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3420 * Returns the receiver's line style, which will be one
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3421 * of the constants <code>DWT.LINE_SOLID</code>, <code>DWT.LINE_DASH</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3422 * <code>DWT.LINE_DOT</code>, <code>DWT.LINE_DASHDOT</code> or
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3423 * <code>DWT.LINE_DASHDOTDOT</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3424 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3425 * @return the style used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3426 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3427 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3428 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3429 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3430 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3431 public int getLineStyle() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3432 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3433 return data.lineStyle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3434 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3435
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3436 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3437 * Returns the width that will be used when drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3438 * for all of the figure drawing operations (that is,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3439 * <code>drawLine</code>, <code>drawRectangle</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3440 * <code>drawPolyline</code>, and so forth.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3441 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3442 * @return the receiver's line width
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3443 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3444 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3445 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3446 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3447 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3448 public int getLineWidth() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3449 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3450 return (int)data.lineWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3451 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3452
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3453 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3454 * Returns the receiver's style information.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3455 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3456 * Note that the value which is returned by this method <em>may
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3457 * not match</em> the value which was provided to the constructor
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3458 * when the receiver was created. This can occur when the underlying
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3459 * operating system does not support a particular combination of
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3460 * requested styles.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3461 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3462 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3463 * @return the style bits
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3464 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3465 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3466 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3467 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3468 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3469 * @since 2.1.2
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3470 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3471 public int getStyle () {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3472 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3473 return data.style;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3474 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3475
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3476 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3477 * Returns the receiver's text drawing anti-aliasing setting value,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3478 * which will be one of <code>DWT.DEFAULT</code>, <code>DWT.OFF</code> or
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3479 * <code>DWT.ON</code>. Note that this controls anti-aliasing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3480 * <em>only</em> for text drawing operations.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3481 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3482 * @return the anti-aliasing setting
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3483 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3484 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3485 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3486 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3487 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3488 * @see #getAntialias
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3489 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3490 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3491 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3492 public int getTextAntialias() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3493 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3494 if (data.gdipGraphics is 0) return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3495 int mode = Gdip.Graphics_GetTextRenderingHint(data.gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3496 switch (mode) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3497 case Gdip.TextRenderingHintSystemDefault: return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3498 case Gdip.TextRenderingHintSingleBitPerPixel:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3499 case Gdip.TextRenderingHintSingleBitPerPixelGridFit: return DWT.OFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3500 case Gdip.TextRenderingHintAntiAlias:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3501 case Gdip.TextRenderingHintAntiAliasGridFit:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3502 case Gdip.TextRenderingHintClearTypeGridFit: return DWT.ON;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3503 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3504 return DWT.DEFAULT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3505 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3506
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3507 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3508 * Sets the parameter to the transform that is currently being
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3509 * used by the receiver.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3510 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3511 * @param transform the destination to copy the transform into
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3512 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3513 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3514 * <li>ERROR_NULL_ARGUMENT - if the parameter is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3515 * <li>ERROR_INVALID_ARGUMENT - if the parameter has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3516 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3517 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3518 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3519 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3520 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3521 * @see Transform
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3522 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3523 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3524 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3525 public void getTransform(Transform transform) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3526 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3527 if (transform is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3528 if (transform.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3529 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3530 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3531 Gdip.Graphics_GetTransform(gdipGraphics, transform.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3532 int identity = identity();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3533 Gdip.Matrix_Invert(identity);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3534 Gdip.Matrix_Multiply(transform.handle, identity, Gdip.MatrixOrderAppend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3535 Gdip.Matrix_delete(identity);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3536 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3537 transform.setElements(1, 0, 0, 1, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3538 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3539 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3540
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3541 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3542 * Returns <code>true</code> if this GC is drawing in the mode
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3543 * where the resulting color in the destination is the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3544 * <em>exclusive or</em> of the color values in the source
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3545 * and the destination, and <code>false</code> if it is
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3546 * drawing in the mode where the destination color is being
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3547 * replaced with the source color value.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3548 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3549 * @return <code>true</code> true if the receiver is in XOR mode, and false otherwise
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3550 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3551 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3552 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3553 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3554 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3555 public bool getXORMode() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3556 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3557 int rop2 = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3558 if (OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3559 rop2 = OS.SetROP2 (handle, OS.R2_COPYPEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3560 OS.SetROP2 (handle, rop2);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3561 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3562 rop2 = OS.GetROP2(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3563 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3564 return rop2 is OS.R2_XORPEN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3565 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3566
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3567 void initGdip() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3568 data.device.checkGDIP();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3569 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3570 if (gdipGraphics !is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3571 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3572 * Feature in GDI+. The GDI+ clipping set with Graphics->SetClip()
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3573 * is always intersected with the GDI clipping at the time the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3574 * GDI+ graphics is created. This means that the clipping
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3575 * cannot be reset. The fix is to clear the clipping before
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3576 * the GDI+ graphics is created and reset it afterwards.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3577 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3578 int hRgn = OS.CreateRectRgn(0, 0, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3579 int result = OS.GetClipRgn(handle, hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3580 if (!OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3581 POINT pt = new POINT ();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3582 OS.GetWindowOrgEx (handle, pt);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3583 OS.OffsetRgn (hRgn, pt.x, pt.y);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3584 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3585 OS.SelectClipRgn(handle, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3586
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3587 /*
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3588 * Bug in GDI+. GDI+ does not work when the HDC layout is RTL. There
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3589 * are many issues like pixel corruption, but the most visible problem
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3590 * is that it does not have an effect when drawing to an bitmap. The
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3591 * fix is to clear the bit before creating the GDI+ graphics and install
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3592 * a mirroring matrix ourselves.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3593 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3594 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3595 OS.SetLayout(handle, OS.GetLayout(handle) & ~OS.LAYOUT_RTL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3596 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3597
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3598 gdipGraphics = data.gdipGraphics = Gdip.Graphics_new(handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3599 if (gdipGraphics is 0) DWT.error(DWT.ERROR_NO_HANDLES);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3600 Gdip.Graphics_SetPageUnit(gdipGraphics, Gdip.UnitPixel);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3601 Gdip.Graphics_SetPixelOffsetMode(gdipGraphics, Gdip.PixelOffsetModeHalf);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3602 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3603 int matrix = identity();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3604 Gdip.Graphics_SetTransform(gdipGraphics, matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3605 Gdip.Matrix_delete(matrix);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3606 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3607 if (result is 1) setClipping(hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3608 OS.DeleteObject(hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3609 data.state = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3610 if (data.hPen !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3611 OS.SelectObject(handle, OS.GetStockObject(OS.NULL_PEN));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3612 OS.DeleteObject(data.hPen);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3613 data.hPen = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3614 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3615 if (data.hBrush !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3616 OS.SelectObject(handle, OS.GetStockObject(OS.NULL_BRUSH));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3617 OS.DeleteObject(data.hBrush);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3618 data.hBrush = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3619 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3620 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3621
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3622 int identity() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3623 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3624 int width = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3625 Image image = data.image;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3626 if (image !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3627 BITMAP bm = new BITMAP();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3628 OS.GetObject(image.handle, BITMAP.sizeof, bm);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3629 width = bm.bmWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3630 } else if (data.hwnd !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3631 RECT rect = new RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3632 OS.GetClientRect(data.hwnd, rect);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3633 width = rect.right - rect.left;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3634 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3635 POINT pt = new POINT ();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3636 if (!OS.IsWinCE) OS.GetWindowOrgEx (handle, pt);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3637 return Gdip.Matrix_new(-1, 0, 0, 1, width + 2 * pt.x, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3638 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3639 return Gdip.Matrix_new(1, 0, 0, 1, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3640 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3641
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3642 void init(Drawable drawable, GCData data, int hDC) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3643 int foreground = data.foreground;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3644 if (foreground !is -1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3645 data.state &= ~(FOREGROUND | FOREGROUND_TEXT | PEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3646 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3647 data.foreground = OS.GetTextColor(hDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3648 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3649 int background = data.background;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3650 if (background !is -1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3651 data.state &= ~(BACKGROUND | BACKGROUND_TEXT | BRUSH);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3652 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3653 data.background = OS.GetBkColor(hDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3654 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3655 data.state &= ~(NULL_BRUSH | NULL_PEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3656 int hFont = data.hFont;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3657 if (hFont !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3658 data.state &= ~FONT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3659 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3660 hFont = OS.GetCurrentObject(hDC, OS.OBJ_FONT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3661 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3662 int hPalette = data.device.hPalette;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3663 if (hPalette !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3664 OS.SelectPalette(hDC, hPalette, true);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3665 OS.RealizePalette(hDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3666 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3667 Image image = data.image;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3668 if (image !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3669 data.hNullBitmap = OS.SelectObject(hDC, image.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3670 image.memGC = this;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3671 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3672 int layout = data.layout;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3673 if (layout !is -1) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3674 if (!OS.IsWinCE && OS.WIN32_VERSION >= OS.VERSION(4, 10)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3675 int flags = OS.GetLayout(hDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3676 if ((flags & OS.LAYOUT_RTL) !is (layout & OS.LAYOUT_RTL)) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3677 flags &= ~OS.LAYOUT_RTL;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3678 OS.SetLayout(hDC, flags | layout);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3679 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3680 if ((data.style & DWT.RIGHT_TO_LEFT) !is 0) data.style |= DWT.MIRRORED;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3681 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3682 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3683 this.drawable = drawable;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3684 this.data = data;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3685 handle = hDC;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3686 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3687
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3688 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3689 * Returns an integer hash code for the receiver. Any two
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3690 * objects that return <code>true</code> when passed to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3691 * <code>equals</code> must return the same value for this
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3692 * method.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3693 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3694 * @return the receiver's hash
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3695 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3696 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3697 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3698 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3699 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3700 * @see #equals
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3701 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3702 public int hashCode () {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3703 return handle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3704 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3705
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3706 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3707 * Returns <code>true</code> if the receiver has a clipping
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3708 * region set into it, and <code>false</code> otherwise.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3709 * If this method returns false, the receiver will draw on all
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3710 * available space in the destination. If it returns true,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3711 * it will draw only in the area that is covered by the region
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3712 * that can be accessed with <code>getClipping(region)</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3713 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3714 * @return <code>true</code> if the GC has a clipping region, and <code>false</code> otherwise
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3715 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3716 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3717 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3718 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3719 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3720 public bool isClipped() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3721 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3722 int region = OS.CreateRectRgn(0, 0, 0, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3723 int result = OS.GetClipRgn(handle, region);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3724 OS.DeleteObject(region);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3725 return result > 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3726 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3727
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3728 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3729 * Returns <code>true</code> if the GC has been disposed,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3730 * and <code>false</code> otherwise.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3731 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3732 * This method gets the dispose state for the GC.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3733 * When a GC has been disposed, it is an error to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3734 * invoke any other method using the GC.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3735 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3736 * @return <code>true</code> when the GC is disposed and <code>false</code> otherwise
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3737 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3738 public bool isDisposed() {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3739 return handle is 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3740 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3741
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3742 float measureSpace(int font, int format) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3743 PointF pt = new PointF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3744 RectF bounds = new RectF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3745 Gdip.Graphics_MeasureString(data.gdipGraphics, new char[]{' '}, 1, font, pt, format, bounds);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3746 return bounds.Width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3747 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3748
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3749 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3750 * Sets the receiver to always use the operating system's advanced graphics
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3751 * subsystem for all graphics operations if the argument is <code>true</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3752 * If the argument is <code>false</code>, the advanced graphics subsystem is
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3753 * no longer used, advanced graphics state is cleared and the normal graphics
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3754 * subsystem is used from now on.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3755 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3756 * Normally, the advanced graphics subsystem is invoked automatically when
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3757 * any one of the alpha, antialias, patterns, interpolation, paths, clipping
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3758 * or transformation operations in the receiver is requested. When the receiver
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3759 * is switched into advanced mode, the advanced graphics subsystem performs both
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3760 * advanced and normal graphics operations. Because the two subsystems are
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3761 * different, their output may differ. Switching to advanced graphics before
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3762 * any graphics operations are performed ensures that the output is consistent.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3763 * </p><p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3764 * Advanced graphics may not be installed for the operating system. In this
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3765 * case, this operation does nothing. Some operating system have only one
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3766 * graphics subsystem, so switching from normal to advanced graphics does
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3767 * nothing. However, switching from advanced to normal graphics will always
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3768 * clear the advanced graphics state, even for operating systems that have
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3769 * only one graphics subsystem.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3770 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3771 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3772 * @param advanced the new advanced graphics state
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3773 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3774 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3775 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3776 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3777 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3778 * @see #setAlpha
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3779 * @see #setAntialias
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3780 * @see #setBackgroundPattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3781 * @see #setClipping(Path)
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3782 * @see #setForegroundPattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3783 * @see #setLineAttributes
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3784 * @see #setInterpolation
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3785 * @see #setTextAntialias
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3786 * @see #setTransform
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3787 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3788 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3789 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3790 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3791 public void setAdvanced(bool advanced) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3792 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3793 if (advanced && data.gdipGraphics !is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3794 if (advanced) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3795 try {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3796 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3797 } catch (DWTException e) {}
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3798 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3799 disposeGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3800 data.alpha = 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3801 data.backgroundPattern = data.foregroundPattern = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3802 data.state = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3803 setClipping(0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3804 if ((data.style & DWT.MIRRORED) !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3805 OS.SetLayout(handle, OS.GetLayout(handle) | OS.LAYOUT_RTL);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3806 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3807 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3808 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3809
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3810 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3811 * Sets the receiver's anti-aliasing value to the parameter,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3812 * which must be one of <code>DWT.DEFAULT</code>, <code>DWT.OFF</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3813 * or <code>DWT.ON</code>. Note that this controls anti-aliasing for all
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3814 * <em>non-text drawing</em> operations.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3815 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3816 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3817 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3818 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3819 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3820 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3821 * @param antialias the anti-aliasing setting
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3822 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3823 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3824 * <li>ERROR_INVALID_ARGUMENT - if the parameter is not one of <code>DWT.DEFAULT</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3825 * <code>DWT.OFF</code> or <code>DWT.ON</code></li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3826 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3827 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3828 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3829 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3830 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3831 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3832 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3833 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3834 * @see #setTextAntialias
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3835 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3836 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3837 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3838 public void setAntialias(int antialias) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3839 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3840 if (data.gdipGraphics is 0 && antialias is DWT.DEFAULT) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3841 int mode = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3842 switch (antialias) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3843 case DWT.DEFAULT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3844 mode = Gdip.SmoothingModeDefault;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3845 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3846 case DWT.OFF:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3847 mode = Gdip.SmoothingModeNone;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3848 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3849 case DWT.ON:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3850 mode = Gdip.SmoothingModeAntiAlias;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3851 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3852 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3853 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3854 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3855 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3856 Gdip.Graphics_SetSmoothingMode(data.gdipGraphics, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3857 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3858
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3859 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3860 * Sets the receiver's alpha value.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3861 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3862 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3863 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3864 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3865 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3866 * @param alpha the alpha value
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3867 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3868 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3869 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3870 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3871 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3872 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3873 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3874 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3875 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3876 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3877 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3878 public void setAlpha(int alpha) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3879 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3880 if (data.gdipGraphics is 0 && (alpha & 0xFF) is 0xFF) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3881 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3882 data.alpha = alpha & 0xFF;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3883 data.state &= ~(BACKGROUND | FOREGROUND);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3884 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3885
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3886 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3887 * Sets the background color. The background color is used
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3888 * for fill operations and as the background color when text
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3889 * is drawn.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3890 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3891 * @param color the new background color for the receiver
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3892 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3893 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3894 * <li>ERROR_NULL_ARGUMENT - if the color is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3895 * <li>ERROR_INVALID_ARGUMENT - if the color has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3896 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3897 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3898 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3899 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3900 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3901 public void setBackground (Color color) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3902 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3903 if (color is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3904 if (color.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3905 if (data.backgroundPattern is null && data.background is color.handle) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3906 data.backgroundPattern = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3907 data.background = color.handle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3908 data.state &= ~(BACKGROUND | BACKGROUND_TEXT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3909 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3910
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3911 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3912 * Sets the background pattern. The default value is <code>null</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3913 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3914 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3915 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3916 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3917 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3918 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3919 * @param pattern the new background pattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3920 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3921 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3922 * <li>ERROR_INVALID_ARGUMENT - if the parameter has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3923 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3924 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3925 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3926 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3927 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3928 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3929 * @see Pattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3930 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3931 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3932 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3933 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3934 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3935 public void setBackgroundPattern (Pattern pattern) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3936 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3937 if (pattern !is null && pattern.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3938 if (data.gdipGraphics is 0 && pattern is null) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3939 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3940 if (data.backgroundPattern is pattern) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3941 data.backgroundPattern = pattern;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3942 data.state &= ~BACKGROUND;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3943 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3944
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3945 void setClipping(int clipRgn) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3946 int hRgn = clipRgn;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3947 int gdipGraphics = data.gdipGraphics;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3948 if (gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3949 if (hRgn !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3950 int region = Gdip.Region_new(hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3951 Gdip.Graphics_SetClip(gdipGraphics, region, Gdip.CombineModeReplace);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3952 Gdip.Region_delete(region);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3953 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3954 Gdip.Graphics_ResetClip(gdipGraphics);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3955 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3956 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3957 POINT pt = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3958 if (hRgn !is 0 && !OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3959 pt = new POINT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3960 OS.GetWindowOrgEx(handle, pt);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3961 OS.OffsetRgn(hRgn, -pt.x, -pt.y);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3962 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3963 OS.SelectClipRgn(handle, hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3964 if (hRgn !is 0 && !OS.IsWinCE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3965 OS.OffsetRgn(hRgn, pt.x, pt.y);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3966 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3967 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3968 if (hRgn !is 0 && hRgn !is clipRgn) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3969 OS.DeleteObject(hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3970 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3971 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3972
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3973 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3974 * Sets the area of the receiver which can be changed
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3975 * by drawing operations to the rectangular area specified
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3976 * by the arguments.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3977 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3978 * @param x the x coordinate of the clipping rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3979 * @param y the y coordinate of the clipping rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3980 * @param width the width of the clipping rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3981 * @param height the height of the clipping rectangle
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3982 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3983 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3984 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3985 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3986 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3987 public void setClipping (int x, int y, int width, int height) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3988 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3989 int hRgn = OS.CreateRectRgn(x, y, x + width, y + height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3990 setClipping(hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3991 OS.DeleteObject(hRgn);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3992 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3993
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3994 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3995 * Sets the area of the receiver which can be changed
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3996 * by drawing operations to the path specified
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3997 * by the argument.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3998 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3999 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4000 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4001 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4002 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4003 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4004 * @param path the clipping path.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4005 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4006 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4007 * <li>ERROR_INVALID_ARGUMENT - if the path has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4008 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4009 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4010 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4011 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4012 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4013 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4014 * @see Path
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4015 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4016 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4017 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4018 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4019 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4020 public void setClipping (Path path) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4021 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4022 if (path !is null && path.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4023 setClipping(0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4024 if (path !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4025 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4026 int mode = OS.GetPolyFillMode(handle) is OS.WINDING ? Gdip.FillModeWinding : Gdip.FillModeAlternate;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4027 Gdip.GraphicsPath_SetFillMode(path.handle, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4028 Gdip.Graphics_SetClip(data.gdipGraphics, path.handle);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4029 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4030 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4031
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4032 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4033 * Sets the area of the receiver which can be changed
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4034 * by drawing operations to the rectangular area specified
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4035 * by the argument. Specifying <code>null</code> for the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4036 * rectangle reverts the receiver's clipping area to its
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4037 * original value.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4038 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4039 * @param rect the clipping rectangle or <code>null</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4040 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4041 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4042 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4043 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4044 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4045 public void setClipping (Rectangle rect) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4046 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4047 if (rect is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4048 setClipping(0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4049 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4050 setClipping(rect.x, rect.y, rect.width, rect.height);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4051 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4052 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4053
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4054 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4055 * Sets the area of the receiver which can be changed
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4056 * by drawing operations to the region specified
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4057 * by the argument. Specifying <code>null</code> for the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4058 * region reverts the receiver's clipping area to its
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4059 * original value.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4060 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4061 * @param region the clipping region or <code>null</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4062 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4063 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4064 * <li>ERROR_INVALID_ARGUMENT - if the region has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4065 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4066 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4067 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4068 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4069 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4070 public void setClipping (Region region) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4071 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4072 if (region !is null && region.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4073 setClipping(region !is null ? region.handle : 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4074 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4075
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4076 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4077 * Sets the receiver's fill rule to the parameter, which must be one of
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4078 * <code>DWT.FILL_EVEN_ODD</code> or <code>DWT.FILL_WINDING</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4079 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4080 * @param rule the new fill rule
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4081 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4082 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4083 * <li>ERROR_INVALID_ARGUMENT - if the rule is not one of <code>DWT.FILL_EVEN_ODD</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4084 * or <code>DWT.FILL_WINDING</code></li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4085 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4086 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4087 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4088 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4089 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4090 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4091 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4092 public void setFillRule(int rule) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4093 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4094 if (OS.IsWinCE) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4095 int mode = OS.ALTERNATE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4096 switch (rule) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4097 case DWT.FILL_WINDING: mode = OS.WINDING; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4098 case DWT.FILL_EVEN_ODD: mode = OS.ALTERNATE; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4099 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4100 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4101 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4102 OS.SetPolyFillMode(handle, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4103 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4104
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4105 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4106 * Sets the font which will be used by the receiver
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4107 * to draw and measure text to the argument. If the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4108 * argument is null, then a default font appropriate
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4109 * for the platform will be used instead.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4110 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4111 * @param font the new font for the receiver, or null to indicate a default font
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4112 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4113 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4114 * <li>ERROR_INVALID_ARGUMENT - if the font has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4115 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4116 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4117 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4118 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4119 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4120 public void setFont (Font font) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4121 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4122 if (font !is null && font.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4123 data.hFont = font !is null ? font.handle : data.device.systemFont;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4124 data.state &= ~FONT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4125 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4126
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4127 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4128 * Sets the foreground color. The foreground color is used
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4129 * for drawing operations including when text is drawn.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4130 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4131 * @param color the new foreground color for the receiver
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4132 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4133 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4134 * <li>ERROR_NULL_ARGUMENT - if the color is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4135 * <li>ERROR_INVALID_ARGUMENT - if the color has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4136 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4137 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4138 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4139 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4140 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4141 public void setForeground (Color color) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4142 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4143 if (color is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4144 if (color.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4145 if (data.foregroundPattern is null && color.handle is data.foreground) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4146 data.foregroundPattern = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4147 data.foreground = color.handle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4148 data.state &= ~(FOREGROUND | FOREGROUND_TEXT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4149 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4150
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4151 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4152 * Sets the foreground pattern. The default value is <code>null</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4153 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4154 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4155 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4156 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4157 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4158 * @param pattern the new foreground pattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4159 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4160 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4161 * <li>ERROR_INVALID_ARGUMENT - if the parameter has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4162 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4163 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4164 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4165 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4166 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4167 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4168 * @see Pattern
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4169 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4170 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4171 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4172 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4173 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4174 public void setForegroundPattern (Pattern pattern) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4175 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4176 if (pattern !is null && pattern.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4177 if (data.gdipGraphics is 0 && pattern is null) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4178 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4179 if (data.foregroundPattern is pattern) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4180 data.foregroundPattern = pattern;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4181 data.state &= ~FOREGROUND;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4182 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4183
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4184 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4185 * Sets the receiver's interpolation setting to the parameter, which
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4186 * must be one of <code>DWT.DEFAULT</code>, <code>DWT.NONE</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4187 * <code>DWT.LOW</code> or <code>DWT.HIGH</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4188 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4189 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4190 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4191 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4192 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4193 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4194 * @param interpolation the new interpolation setting
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4195 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4196 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4197 * <li>ERROR_INVALID_ARGUMENT - if the rule is not one of <code>DWT.DEFAULT</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4198 * <code>DWT.NONE</code>, <code>DWT.LOW</code> or <code>DWT.HIGH</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4199 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4200 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4201 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4202 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4203 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4204 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4205 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4206 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4207 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4208 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4209 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4210 public void setInterpolation(int interpolation) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4211 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4212 if (data.gdipGraphics is 0 && interpolation is DWT.DEFAULT) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4213 int mode = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4214 switch (interpolation) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4215 case DWT.DEFAULT: mode = Gdip.InterpolationModeDefault; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4216 case DWT.NONE: mode = Gdip.InterpolationModeNearestNeighbor; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4217 case DWT.LOW: mode = Gdip.InterpolationModeLowQuality; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4218 case DWT.HIGH: mode = Gdip.InterpolationModeHighQuality; break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4219 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4220 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4221 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4222 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4223 Gdip.Graphics_SetInterpolationMode(data.gdipGraphics, mode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4224 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4225
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4226 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4227 * Sets the receiver's line attributes.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4228 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4229 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4230 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4231 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4232 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4233 * @param attributes the line attributes
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4234 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4235 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4236 * <li>ERROR_NULL_ARGUMENT - if the attributes is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4237 * <li>ERROR_INVALID_ARGUMENT - if any of the line attributes is not valid</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4238 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4239 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4240 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4241 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4242 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4243 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4244 * @see LineAttributes
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4245 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4246 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4247 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4248 * @since 3.3
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4249 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4250 public void setLineAttributes(LineAttributes attributes) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4251 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4252 if (attributes is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4253 int mask = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4254 float lineWidth = attributes.width;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4255 if (lineWidth !is data.lineWidth) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4256 mask |= LINE_WIDTH | DRAW_OFFSET;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4257 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4258 int lineStyle = attributes.style;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4259 if (lineStyle !is data.lineStyle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4260 mask |= LINE_STYLE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4261 switch (lineStyle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4262 case DWT.LINE_SOLID:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4263 case DWT.LINE_DASH:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4264 case DWT.LINE_DOT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4265 case DWT.LINE_DASHDOT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4266 case DWT.LINE_DASHDOTDOT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4267 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4268 case DWT.LINE_CUSTOM:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4269 if (attributes.dash is null) lineStyle = DWT.LINE_SOLID;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4270 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4271 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4272 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4273 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4274 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4275 int join = attributes.join;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4276 if (join !is data.lineJoin) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4277 mask |= LINE_JOIN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4278 switch (join) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4279 case DWT.CAP_ROUND:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4280 case DWT.CAP_FLAT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4281 case DWT.CAP_SQUARE:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4282 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4283 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4284 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4285 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4286 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4287 int cap = attributes.join;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4288 if (cap !is data.lineCap) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4289 mask |= LINE_CAP;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4290 switch (cap) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4291 case DWT.JOIN_MITER:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4292 case DWT.JOIN_ROUND:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4293 case DWT.JOIN_BEVEL:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4294 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4295 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4296 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4297 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4298 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4299 float[] dashes = attributes.dash;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4300 float[] lineDashes = data.lineDashes;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4301 if (dashes !is null && dashes.length > 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4302 bool changed = lineDashes is null || lineDashes.length !is dashes.length;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4303 for (int i = 0; i < dashes.length; i++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4304 float dash = dashes[i];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4305 if (dash <= 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4306 if (!changed && lineDashes[i] !is dash) changed = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4307 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4308 if (changed) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4309 float[] newDashes = new float[dashes.length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4310 System.arraycopy(dashes, 0, newDashes, 0, dashes.length);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4311 dashes = newDashes;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4312 mask |= LINE_STYLE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4313 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4314 dashes = lineDashes;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4315 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4316 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4317 if (lineDashes !is null && lineDashes.length > 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4318 mask |= LINE_STYLE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4319 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4320 dashes = lineDashes;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4321 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4322 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4323 float dashOffset = attributes.dashOffset;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4324 if (dashOffset !is data.lineDashesOffset) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4325 mask |= LINE_STYLE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4326 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4327 float miterLimit = attributes.miterLimit;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4328 if (miterLimit !is data.lineMiterLimit) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4329 mask |= LINE_MITERLIMIT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4330 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4331 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4332 if (mask is 0) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4333 data.lineWidth = lineWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4334 data.lineStyle = lineStyle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4335 data.lineCap = cap;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4336 data.lineJoin = join;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4337 data.lineDashes = dashes;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4338 data.lineDashesOffset = dashOffset;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4339 data.lineMiterLimit = miterLimit;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4340 data.state &= ~mask;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4341 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4342
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4343 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4344 * Sets the receiver's line cap style to the argument, which must be one
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4345 * of the constants <code>DWT.CAP_FLAT</code>, <code>DWT.CAP_ROUND</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4346 * or <code>DWT.CAP_SQUARE</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4347 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4348 * @param cap the cap style to be used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4349 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4350 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4351 * <li>ERROR_INVALID_ARGUMENT - if the style is not valid</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4352 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4353 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4354 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4355 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4356 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4357 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4358 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4359 public void setLineCap(int cap) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4360 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4361 if (data.lineCap is cap) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4362 switch (cap) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4363 case DWT.CAP_ROUND:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4364 case DWT.CAP_FLAT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4365 case DWT.CAP_SQUARE:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4366 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4367 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4368 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4369 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4370 data.lineCap = cap;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4371 data.state &= ~LINE_CAP;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4372 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4373
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4374 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4375 * Sets the receiver's line dash style to the argument. The default
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4376 * value is <code>null</code>. If the argument is not <code>null</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4377 * the receiver's line style is set to <code>DWT.LINE_CUSTOM</code>, otherwise
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4378 * it is set to <code>DWT.LINE_SOLID</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4379 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4380 * @param dashes the dash style to be used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4381 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4382 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4383 * <li>ERROR_INVALID_ARGUMENT - if any of the values in the array is less than or equal 0</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4384 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4385 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4386 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4387 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4388 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4389 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4390 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4391 public void setLineDash(int[] dashes) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4392 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4393 float[] lineDashes = data.lineDashes;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4394 if (dashes !is null && dashes.length > 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4395 bool changed = data.lineStyle !is DWT.LINE_CUSTOM || lineDashes is null || lineDashes.length !is dashes.length;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4396 for (int i = 0; i < dashes.length; i++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4397 int dash = dashes[i];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4398 if (dash <= 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4399 if (!changed && lineDashes[i] !is dash) changed = true;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4400 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4401 if (!changed) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4402 data.lineDashes = new float[dashes.length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4403 for (int i = 0; i < dashes.length; i++) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4404 data.lineDashes[i] = dashes[i];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4405 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4406 data.lineStyle = DWT.LINE_CUSTOM;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4407 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4408 if (data.lineStyle is DWT.LINE_SOLID && (lineDashes is null || lineDashes.length is 0)) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4409 data.lineDashes = null;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4410 data.lineStyle = DWT.LINE_SOLID;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4411 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4412 data.state &= ~LINE_STYLE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4413 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4414
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4415 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4416 * Sets the receiver's line join style to the argument, which must be one
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4417 * of the constants <code>DWT.JOIN_MITER</code>, <code>DWT.JOIN_ROUND</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4418 * or <code>DWT.JOIN_BEVEL</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4419 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4420 * @param join the join style to be used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4421 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4422 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4423 * <li>ERROR_INVALID_ARGUMENT - if the style is not valid</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4424 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4425 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4426 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4427 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4428 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4429 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4430 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4431 public void setLineJoin(int join) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4432 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4433 if (data.lineJoin is join) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4434 switch (join) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4435 case DWT.JOIN_MITER:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4436 case DWT.JOIN_ROUND:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4437 case DWT.JOIN_BEVEL:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4438 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4439 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4440 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4441 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4442 data.lineJoin = join;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4443 data.state &= ~LINE_JOIN;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4444 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4445
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4446 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4447 * Sets the receiver's line style to the argument, which must be one
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4448 * of the constants <code>DWT.LINE_SOLID</code>, <code>DWT.LINE_DASH</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4449 * <code>DWT.LINE_DOT</code>, <code>DWT.LINE_DASHDOT</code> or
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4450 * <code>DWT.LINE_DASHDOTDOT</code>.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4451 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4452 * @param lineStyle the style to be used for drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4453 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4454 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4455 * <li>ERROR_INVALID_ARGUMENT - if the style is not valid</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4456 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4457 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4458 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4459 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4460 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4461 public void setLineStyle(int lineStyle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4462 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4463 if (data.lineStyle is lineStyle) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4464 switch (lineStyle) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4465 case DWT.LINE_SOLID:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4466 case DWT.LINE_DASH:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4467 case DWT.LINE_DOT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4468 case DWT.LINE_DASHDOT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4469 case DWT.LINE_DASHDOTDOT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4470 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4471 case DWT.LINE_CUSTOM:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4472 if (data.lineDashes is null) lineStyle = DWT.LINE_SOLID;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4473 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4474 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4475 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4476 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4477 data.lineStyle = lineStyle;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4478 data.state &= ~LINE_STYLE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4479 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4480
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4481 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4482 * Sets the width that will be used when drawing lines
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4483 * for all of the figure drawing operations (that is,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4484 * <code>drawLine</code>, <code>drawRectangle</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4485 * <code>drawPolyline</code>, and so forth.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4486 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4487 * Note that line width of zero is used as a hint to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4488 * indicate that the fastest possible line drawing
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4489 * algorithms should be used. This means that the
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4490 * output may be different from line width one.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4491 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4492 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4493 * @param lineWidth the width of a line
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4494 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4495 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4496 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4497 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4498 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4499 public void setLineWidth(int lineWidth) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4500 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4501 if (data.lineWidth is lineWidth) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4502 data.lineWidth = lineWidth;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4503 data.state &= ~(LINE_WIDTH | DRAW_OFFSET);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4504 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4505
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4506 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4507 * If the argument is <code>true</code>, puts the receiver
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4508 * in a drawing mode where the resulting color in the destination
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4509 * is the <em>exclusive or</em> of the color values in the source
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4510 * and the destination, and if the argument is <code>false</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4511 * puts the receiver in a drawing mode where the destination color
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4512 * is replaced with the source color value.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4513 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4514 * Note that this mode in fundamentally unsupportable on certain
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4515 * platforms, notably Carbon (Mac OS X). Clients that want their
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4516 * code to run on all platforms need to avoid this method.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4517 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4518 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4519 * @param xor if <code>true</code>, then <em>xor</em> mode is used, otherwise <em>source copy</em> mode is used
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4520 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4521 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4522 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4523 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4524 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4525 * @deprecated this functionality is not supported on some platforms
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4526 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4527 public void setXORMode(bool xor) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4528 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4529 OS.SetROP2(handle, xor ? OS.R2_XORPEN : OS.R2_COPYPEN);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4530 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4531
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4532 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4533 * Sets the receiver's text anti-aliasing value to the parameter,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4534 * which must be one of <code>DWT.DEFAULT</code>, <code>DWT.OFF</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4535 * or <code>DWT.ON</code>. Note that this controls anti-aliasing only
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4536 * for all <em>text drawing</em> operations.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4537 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4538 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4539 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4540 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4541 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4542 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4543 * @param antialias the anti-aliasing setting
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4544 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4545 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4546 * <li>ERROR_INVALID_ARGUMENT - if the parameter is not one of <code>DWT.DEFAULT</code>,
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4547 * <code>DWT.OFF</code> or <code>DWT.ON</code></li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4548 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4549 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4550 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4551 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4552 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4553 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4554 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4555 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4556 * @see #setAntialias
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4557 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4558 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4559 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4560 public void setTextAntialias(int antialias) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4561 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4562 if (data.gdipGraphics is 0 && antialias is DWT.DEFAULT) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4563 int textMode = 0;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4564 switch (antialias) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4565 case DWT.DEFAULT:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4566 textMode = Gdip.TextRenderingHintSystemDefault;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4567 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4568 case DWT.OFF:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4569 textMode = Gdip.TextRenderingHintSingleBitPerPixelGridFit;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4570 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4571 case DWT.ON:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4572 int[] type = new int[1];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4573 OS.SystemParametersInfo(OS.SPI_GETFONTSMOOTHINGTYPE, 0, type, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4574 if (type[0] is OS.FE_FONTSMOOTHINGCLEARTYPE) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4575 textMode = Gdip.TextRenderingHintClearTypeGridFit;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4576 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4577 textMode = Gdip.TextRenderingHintAntiAliasGridFit;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4578 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4579 break;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4580 default:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4581 DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4582 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4583 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4584 Gdip.Graphics_SetTextRenderingHint(data.gdipGraphics, textMode);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4585 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4586
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4587 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4588 * Sets the transform that is currently being used by the receiver. If
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4589 * the argument is <code>null</code>, the current transform is set to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4590 * the identity transform.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4591 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4592 * This operation requires the operating system's advanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4593 * graphics subsystem which may not be available on some
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4594 * platforms.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4595 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4596 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4597 * @param transform the transform to set
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4598 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4599 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4600 * <li>ERROR_INVALID_ARGUMENT - if the parameter has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4601 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4602 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4603 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4604 * <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4605 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4606 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4607 * @see Transform
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4608 * @see #getAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4609 * @see #setAdvanced
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4610 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4611 * @since 3.1
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4612 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4613 public void setTransform(Transform transform) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4614 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4615 if (transform !is null && transform.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4616 if (data.gdipGraphics is 0 && transform is null) return;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4617 initGdip();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4618 int identity = identity();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4619 if (transform !is null) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4620 Gdip.Matrix_Multiply(identity, transform.handle, Gdip.MatrixOrderPrepend);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4621 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4622 Gdip.Graphics_SetTransform(data.gdipGraphics, identity);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4623 Gdip.Matrix_delete(identity);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4624 data.state &= ~DRAW_OFFSET;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4625 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4626
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4627 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4628 * Returns the extent of the given string. No tab
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4629 * expansion or carriage return processing will be performed.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4630 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4631 * The <em>extent</em> of a string is the width and height of
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4632 * the rectangular area it would cover if drawn in a particular
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4633 * font (in this case, the current font in the receiver).
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4634 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4635 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4636 * @param string the string to measure
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4637 * @return a point containing the extent of the string
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4638 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4639 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4640 * <li>ERROR_NULL_ARGUMENT - if the string is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4641 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4642 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4643 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4644 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4645 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4646 public Point stringExtent(String string) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4647 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4648 if (string is null) DWT.error (DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4649 checkGC(FONT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4650 int length = string.length();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4651 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4652 PointF pt = new PointF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4653 RectF bounds = new RectF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4654 char[] buffer;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4655 if (length !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4656 buffer = new char [length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4657 string.getChars(0, length, buffer, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4658 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4659 buffer = new char[]{' '};
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4660 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4661 int format = Gdip.StringFormat_Clone(Gdip.StringFormat_GenericTypographic());
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4662 int formatFlags = Gdip.StringFormat_GetFormatFlags(format) | Gdip.StringFormatFlagsMeasureTrailingSpaces;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4663 if ((data.style & DWT.MIRRORED) !is 0) formatFlags |= Gdip.StringFormatFlagsDirectionRightToLeft;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4664 Gdip.StringFormat_SetFormatFlags(format, formatFlags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4665 Gdip.Graphics_MeasureString(data.gdipGraphics, buffer, buffer.length, data.gdipFont, pt, format, bounds);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4666 Gdip.StringFormat_delete(format);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4667 return new Point(length is 0 ? 0 : Math.round(bounds.Width), Math.round(bounds.Height));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4668 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4669 SIZE size = new SIZE();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4670 if (length is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4671 // OS.GetTextExtentPoint32(handle, SPACE, SPACE.length(), size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4672 OS.GetTextExtentPoint32W(handle, new char[]{' '}, 1, size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4673 return new Point(0, size.cy);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4674 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4675 // TCHAR buffer = new TCHAR (getCodePage(), string, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4676 char[] buffer = new char [length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4677 string.getChars(0, length, buffer, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4678 OS.GetTextExtentPoint32W(handle, buffer, length, size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4679 return new Point(size.cx, size.cy);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4680 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4681 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4682
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4683 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4684 * Returns the extent of the given string. Tab expansion and
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4685 * carriage return processing are performed.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4686 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4687 * The <em>extent</em> of a string is the width and height of
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4688 * the rectangular area it would cover if drawn in a particular
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4689 * font (in this case, the current font in the receiver).
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4690 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4691 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4692 * @param string the string to measure
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4693 * @return a point containing the extent of the string
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4694 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4695 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4696 * <li>ERROR_NULL_ARGUMENT - if the string is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4697 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4698 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4699 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4700 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4701 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4702 public Point textExtent(String string) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4703 return textExtent(string, DWT.DRAW_DELIMITER | DWT.DRAW_TAB);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4704 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4705
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4706 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4707 * Returns the extent of the given string. Tab expansion, line
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4708 * delimiter and mnemonic processing are performed according to
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4709 * the specified flags, which can be a combination of:
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4710 * <dl>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4711 * <dt><b>DRAW_DELIMITER</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4712 * <dd>draw multiple lines</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4713 * <dt><b>DRAW_TAB</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4714 * <dd>expand tabs</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4715 * <dt><b>DRAW_MNEMONIC</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4716 * <dd>underline the mnemonic character</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4717 * <dt><b>DRAW_TRANSPARENT</b></dt>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4718 * <dd>transparent background</dd>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4719 * </dl>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4720 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4721 * The <em>extent</em> of a string is the width and height of
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4722 * the rectangular area it would cover if drawn in a particular
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4723 * font (in this case, the current font in the receiver).
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4724 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4725 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4726 * @param string the string to measure
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4727 * @param flags the flags specifying how to process the text
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4728 * @return a point containing the extent of the string
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4729 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4730 * @exception IllegalArgumentException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4731 * <li>ERROR_NULL_ARGUMENT - if the string is null</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4732 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4733 * @exception DWTException <ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4734 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4735 * </ul>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4736 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4737 public Point textExtent(String string, int flags) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4738 if (handle is 0) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4739 if (string is null) DWT.error (DWT.ERROR_NULL_ARGUMENT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4740 checkGC(FONT);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4741 if (data.gdipGraphics !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4742 PointF pt = new PointF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4743 RectF bounds = new RectF();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4744 char[] buffer;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4745 int length = string.length();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4746 if (length !is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4747 buffer = new char [length];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4748 string.getChars(0, length, buffer, 0);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4749 } else {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4750 buffer = new char[]{' '};
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4751 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4752 int format = Gdip.StringFormat_Clone(Gdip.StringFormat_GenericTypographic());
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4753 int formatFlags = Gdip.StringFormat_GetFormatFlags(format) | Gdip.StringFormatFlagsMeasureTrailingSpaces;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4754 if ((data.style & DWT.MIRRORED) !is 0) formatFlags |= Gdip.StringFormatFlagsDirectionRightToLeft;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4755 Gdip.StringFormat_SetFormatFlags(format, formatFlags);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4756 float[] tabs = (flags & DWT.DRAW_TAB) !is 0 ? new float[]{measureSpace(data.gdipFont, format) * 8} : new float[1];
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4757 Gdip.StringFormat_SetTabStops(format, 0, tabs.length, tabs);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4758 Gdip.StringFormat_SetHotkeyPrefix(format, (flags & DWT.DRAW_MNEMONIC) !is 0 ? Gdip.HotkeyPrefixShow : Gdip.HotkeyPrefixNone);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4759 Gdip.Graphics_MeasureString(data.gdipGraphics, buffer, buffer.length, data.gdipFont, pt, format, bounds);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4760 Gdip.StringFormat_delete(format);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4761 return new Point(length is 0 ? 0 : Math.round(bounds.Width), Math.round(bounds.Height));
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4762 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4763 if (string.length () is 0) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4764 SIZE size = new SIZE();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4765 // OS.GetTextExtentPoint32(handle, SPACE, SPACE.length(), size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4766 OS.GetTextExtentPoint32W(handle, new char [] {' '}, 1, size);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4767 return new Point(0, size.cy);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4768 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4769 RECT rect = new RECT();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4770 TCHAR buffer = new TCHAR(getCodePage(), string, false);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4771 int uFormat = OS.DT_LEFT | OS.DT_CALCRECT;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4772 if ((flags & DWT.DRAW_DELIMITER) is 0) uFormat |= OS.DT_SINGLELINE;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4773 if ((flags & DWT.DRAW_TAB) !is 0) uFormat |= OS.DT_EXPANDTABS;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4774 if ((flags & DWT.DRAW_MNEMONIC) is 0) uFormat |= OS.DT_NOPREFIX;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4775 OS.DrawText(handle, buffer, buffer.length(), rect, uFormat);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4776 return new Point(rect.right, rect.bottom);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4777 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4778
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4779 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4780 * Returns a string containing a concise, human-readable
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4781 * description of the receiver.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4782 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4783 * @return a string representation of the receiver
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4784 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4785 public String toString () {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4786 if (isDisposed()) return "GC {*DISPOSED*}";
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4787 return "GC {" + handle + "}";
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4788 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4789
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4790 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4791 * Invokes platform specific functionality to allocate a new graphics context.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4792 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4793 * <b>IMPORTANT:</b> This method is <em>not</em> part of the public
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4794 * API for <code>GC</code>. It is marked public only so that it
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4795 * can be shared within the packages provided by DWT. It is not
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4796 * available on all platforms, and should never be called from
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4797 * application code.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4798 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4799 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4800 * @param drawable the Drawable for the receiver.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4801 * @param data the data for the receiver.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4802 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4803 * @return a new <code>GC</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4804 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4805 public static GC win32_new(Drawable drawable, GCData data) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4806 GC gc = new GC();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4807 int hDC = drawable.internal_new_GC(data);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4808 gc.device = data.device;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4809 gc.init(drawable, data, hDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4810 return gc;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4811 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4812
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4813 /**
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4814 * Invokes platform specific functionality to wrap a graphics context.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4815 * <p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4816 * <b>IMPORTANT:</b> This method is <em>not</em> part of the public
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4817 * API for <code>GC</code>. It is marked public only so that it
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4818 * can be shared within the packages provided by DWT. It is not
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4819 * available on all platforms, and should never be called from
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4820 * application code.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4821 * </p>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4822 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4823 * @param hDC the Windows HDC.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4824 * @param data the data for the receiver.
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4825 *
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4826 * @return a new <code>GC</code>
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4827 */
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4828 public static GC win32_new(int hDC, GCData data) {
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4829 GC gc = new GC();
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4830 gc.device = data.device;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4831 gc.init(null, data, hDC);
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4832 return gc;
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4833 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4834
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4835 }
5f2e72114476 Image in work, this revision does not compile
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4836 ++/