Mercurial > projects > dwt-win
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 |
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 ++/ |