annotate dwt/graphics/TextLayout.d @ 136:1a0129cab08e

Fixes #5
author Jacob Carlborg <doob@me.com>
date Sat, 30 May 2009 21:38:21 +0200
parents 62202ce0039f
children 0ba75290f8ce
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1 /*******************************************************************************
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
7 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
8 * Contributors:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
10 *
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
11 * Port to the D programming language:
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
12 * Jacob Carlborg <doob@me.com>
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
13 *******************************************************************************/
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
14 module dwt.graphics.TextLayout;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
15
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
16 import dwt.DWT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
17 import dwt.DWTException;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
18 import dwt.internal.Compatibility;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
19 import dwt.internal.cocoa.NSArray;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
20 import dwt.internal.cocoa.NSAutoreleasePool;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
21 import dwt.internal.cocoa.NSBezierPath;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
22 import dwt.internal.cocoa.NSColor;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
23 import dwt.internal.cocoa.NSFont;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
24 import dwt.internal.cocoa.NSLayoutManager;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
25 import dwt.internal.cocoa.NSMutableParagraphStyle;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
26 import dwt.internal.cocoa.NSNumber;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
27 import dwt.internal.cocoa.NSPoint;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
28 import dwt.internal.cocoa.NSRange;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
29 import dwt.internal.cocoa.NSRect;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
30 import dwt.internal.cocoa.NSSize;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
31 import dwt.internal.cocoa.NSString;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
32 import dwt.internal.cocoa.NSTextContainer;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
33 import dwt.internal.cocoa.NSTextStorage;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
34 import dwt.internal.cocoa.NSTextTab;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
35 import dwt.internal.cocoa.NSThread;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
36 import dwt.internal.cocoa.OS;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
37
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
38 import tango.text.convert.Format;
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
39
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
40 import dwt.dwthelper.utils;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
41 import dwt.graphics.Color;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
42 import dwt.graphics.Device;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
43 import dwt.graphics.Font;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
44 import dwt.graphics.FontMetrics;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
45 import dwt.graphics.GC;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
46 import dwt.graphics.GCData;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
47 import dwt.graphics.GlyphMetrics;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
48 import dwt.graphics.Point;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
49 import dwt.graphics.Rectangle;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
50 import dwt.graphics.Region;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
51 import dwt.graphics.Resource;
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
52 import dwt.graphics.TextStyle;
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
53 import Carbon = dwt.internal.c.Carbon;
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
54 import dwt.internal.cocoa.NSText;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
55 import dwt.internal.objc.cocoa.Cocoa;
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
56
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
57 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
58 * <code>TextLayout</code> is a graphic object that represents
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
59 * styled text.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
60 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
61 * Instances of this class provide support for drawing, cursor
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
62 * navigation, hit testing, text wrapping, alignment, tab expansion
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
63 * line breaking, etc. These are aspects required for rendering internationalized text.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
64 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
65 * Application code must explicitly invoke the <code>TextLayout#dispose()</code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
66 * method to release the operating system resources managed by each instance
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
67 * when those instances are no longer required.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
68 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
69 *
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
70 * @see <a href="http://www.eclipse.org/swt/snippets/#textlayout">TextLayout, TextStyle snippets</a>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
71 * @see <a href="http://www.eclipse.org/swt/examples.php">DWT Example: CustomControlExample, StyledText tab</a>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
72 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
73 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
74 * @since 3.0
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
75 */
3
649b8e223d5a fix extends
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
76 public final class TextLayout : Resource {
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
77
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
78 alias Resource.init_ init_;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
79
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
80 NSTextStorage textStorage;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
81 NSLayoutManager layoutManager;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
82 NSTextContainer textContainer;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
83 Font font;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
84 String text;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
85 StyleItem[] styles;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
86 int spacing, ascent, descent, indent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
87 bool justify;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
88 int alignment;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
89 int[] tabs;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
90 int[] segments;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
91 int wrapWidth;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
92 int orientation;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
93
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
94 int[] lineOffsets;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
95 NSRect[] lineBounds;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
96
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
97 static const int UNDERLINE_THICK = 1 << 16;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
98
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
99 static class StyleItem {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
100 TextStyle style;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
101 int start;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
102
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
103 public String toString () {
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
104 return Format("StyleItem {{}{}{}{}" , start , ", " , style , "}");
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
105 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
106 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
107
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
108 // static final int TAB_COUNT = 32;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
109 // static final char ZWS = '\u200B';
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
110 //
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
111 // static final int UNDERLINE_IME_INPUT = 1 << 16;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
112 // static final int UNDERLINE_IME_TARGET_CONVERTED = 2 << 16;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
113 // static final int UNDERLINE_IME_CONVERTED = 3 << 16;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
114
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
115 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
116 * Constructs a new instance of this class on the given device.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
117 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
118 * You must dispose the text layout when it is no longer required.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
119 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
120 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
121 * @param device the device on which to allocate the text layout
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
122 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
123 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
124 * <li>ERROR_NULL_ARGUMENT - if device is null and there is no current device</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
125 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
126 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
127 * @see #dispose()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
128 */
5
1a8b3cb347e0 Fix Ctors to 'this'
Frank Benoit <benoit@tionex.de>
parents: 3
diff changeset
129 public this (Device device) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
130 super(device);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
131 wrapWidth = ascent = descent = -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
132 alignment = DWT.LEFT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
133 orientation = DWT.LEFT_TO_RIGHT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
134 text = "";
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
135 styles = new StyleItem[2];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
136 styles[0] = new StyleItem();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
137 styles[1] = new StyleItem();
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
138 init_();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
139 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
140
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
141 void checkLayout() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
142 if (isDisposed()) DWT.error(DWT.ERROR_GRAPHIC_DISPOSED);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
143 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
144
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
145 float[] computePolyline(int left, int top, int right, int bottom) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
146 int height = bottom - top; // can be any number
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
147 int width = 2 * height; // must be even
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
148 int peaks = Compatibility.ceil(right - left, width);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
149 if (peaks is 0 && right - left > 2) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
150 peaks = 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
151 }
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
152 int length_ = ((2 * peaks) + 1) * 2;
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
153 if (length_ < 0) return new float[0];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
154
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
155 float[] coordinates = new float[length_];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
156 for (int i = 0; i < peaks; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
157 int index = 4 * i;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
158 coordinates[index] = left + (width * i);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
159 coordinates[index+1] = bottom;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
160 coordinates[index+2] = coordinates[index] + width / 2;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
161 coordinates[index+3] = top;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
162 }
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
163 coordinates[length_-2] = left + (width * peaks);
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
164 coordinates[length_-1] = bottom;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
165 return coordinates;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
166 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
167
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
168 void computeRuns() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
169 if (textStorage !is null) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
170 NSString str = NSString.stringWith(text);
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
171 textStorage = (cast(NSTextStorage)(new NSTextStorage()).alloc());
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
172 textStorage.initWithString(str);
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
173 layoutManager = cast(NSLayoutManager)(new NSLayoutManager()).alloc().init();
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
174 textContainer = cast(NSTextContainer)(new NSTextContainer()).alloc();
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
175 NSSize size = NSSize();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
176 size.width = wrapWidth !is -1 ? wrapWidth : Float.MAX_VALUE;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
177 size.height = Float.MAX_VALUE;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
178 textContainer.initWithContainerSize(size);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
179 textStorage.addLayoutManager(layoutManager);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
180 layoutManager.addTextContainer(textContainer);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
181
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
182 textStorage.beginEditing();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
183 Font defaultFont = font !is null ? font : device.systemFont;
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
184 NSRange range = NSRange();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
185 range.length = str.length();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
186 textStorage.addAttribute(OS.NSFontAttributeName, defaultFont.handle, range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
187
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
188 NSMutableParagraphStyle paragraph = cast(NSMutableParagraphStyle)(new NSMutableParagraphStyle()).alloc().init();
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
189 NSTextAlignment align_ = OS.NSLeftTextAlignment;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
190 if (justify) {
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
191 align_ = OS.NSJustifiedTextAlignment;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
192 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
193 switch (alignment) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
194 case DWT.CENTER:
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
195 align_ = OS.NSCenterTextAlignment;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
196 break;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
197 case DWT.RIGHT:
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
198 align_ = OS.NSRightTextAlignment;
136
1a0129cab08e Fixes #5
Jacob Carlborg <doob@me.com>
parents: 60
diff changeset
199 default:
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
200 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
201 }
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
202 paragraph.setAlignment(align_);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
203 paragraph.setLineSpacing(spacing);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
204 paragraph.setFirstLineHeadIndent(indent);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
205 paragraph.setLineBreakMode(wrapWidth !is -1 ? OS.NSLineBreakByWordWrapping : OS.NSLineBreakByClipping);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
206 paragraph.setTabStops(NSArray.array());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
207 if (tabs !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
208 int count = tabs.length;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
209 for (int i = 0, pos = 0; i < count; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
210 pos += tabs[i];
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
211 NSTextTab tab = cast(NSTextTab)(new NSTextTab()).alloc();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
212 tab = tab.initWithType(OS.NSLeftTabStopType, pos);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
213 paragraph.addTabStop(tab);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
214 tab.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
215 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
216 int width = count - 2 >= 0 ? tabs[count - 1] - tabs[count - 2] : tabs[count - 1];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
217 paragraph.setDefaultTabInterval(width);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
218 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
219
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
220 //TODO ascend descent wrap
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
221
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
222 textStorage.addAttribute(OS.NSParagraphStyleAttributeName, paragraph, range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
223 paragraph.release();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
224
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
225 NSUInteger textLength = str.length();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
226 for (int i = 0; i < styles.length - 1; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
227 StyleItem run = styles[i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
228 if (run.style is null) continue;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
229 TextStyle style = run.style;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
230 range.location = textLength !is 0 ? translateOffset(run.start) : 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
231 range.length = translateOffset(styles[i + 1].start) - range.location;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
232 Font font = style.font;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
233 if (font !is null) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
234 textStorage.addAttribute(OS.NSFontAttributeName, font.handle, range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
235 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
236 Color foreground = style.foreground;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
237 if (foreground !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
238 NSColor color = NSColor.colorWithDeviceRed(foreground.handle[0], foreground.handle[1], foreground.handle[2], 1);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
239 textStorage.addAttribute(OS.NSForegroundColorAttributeName, color, range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
240 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
241 Color background = style.background;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
242 if (background !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
243 NSColor color = NSColor.colorWithDeviceRed(background.handle[0], background.handle[1], background.handle[2], 1);
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
244 textStorage.addAttribute(OS.NSBackgroundColorAttributeName, color, range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
245 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
246 if (style.strikeout) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
247 textStorage.addAttribute(OS.NSStrikethroughStyleAttributeName, NSNumber.numberWithInt(OS.NSUnderlineStyleSingle), range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
248 Color strikeColor = style.strikeoutColor;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
249 if (strikeColor !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
250 NSColor color = NSColor.colorWithDeviceRed(strikeColor.handle[0], strikeColor.handle[1], strikeColor.handle[2], 1);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
251 textStorage.addAttribute(OS.NSStrikethroughColorAttributeName, color, range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
252 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
253 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
254 if (style.underline) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
255 int underlineStyle = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
256 switch (style.underlineStyle) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
257 case DWT.UNDERLINE_SINGLE:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
258 underlineStyle = OS.NSUnderlineStyleSingle;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
259 break;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
260 case DWT.UNDERLINE_DOUBLE:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
261 underlineStyle = OS.NSUnderlineStyleDouble;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
262 break;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
263 case UNDERLINE_THICK:
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
264 underlineStyle = OS.NSUnderlineStyleThick;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
265 break;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
266 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
267 if (underlineStyle !is 0) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
268 textStorage.addAttribute(OS.NSUnderlineStyleAttributeName, NSNumber.numberWithInt(underlineStyle), range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
269 Color underlineColor = style.underlineColor;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
270 if (underlineColor !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
271 NSColor color = NSColor.colorWithDeviceRed(underlineColor.handle[0], underlineColor.handle[1], underlineColor.handle[2], 1);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
272 textStorage.addAttribute(OS.NSUnderlineColorAttributeName, color, range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
273 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
274 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
275 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
276 if (style.rise !is 0) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
277 textStorage.addAttribute(OS.NSBaselineOffsetAttributeName, NSNumber.numberWithInt(style.rise), range);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
278 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
279 if (style.metrics !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
280 //TODO
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
281 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
282 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
283 textStorage.endEditing();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
284
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
285 textContainer.setLineFragmentPadding(0);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
286 layoutManager.glyphRangeForTextContainer(textContainer);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
287
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
288 int numberOfLines;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
289 NSUInteger numberOfGlyphs = layoutManager.numberOfGlyphs(), index;
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
290 NSRangePointer rangePtr = cast(NSRangePointer) OS.malloc(NSRange.sizeof);
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
291 NSRange lineRange = NSRange();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
292 for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++){
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
293 layoutManager.lineFragmentUsedRectForGlyphAtIndex(index, rangePtr, true);
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
294 OS.memmove(&lineRange, rangePtr, NSRange.sizeof);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
295 index = lineRange.location + lineRange.length;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
296 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
297 if (numberOfLines is 0) numberOfLines++;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
298 int[] offsets = new int[numberOfLines + 1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
299 NSRect[] bounds = new NSRect[numberOfLines];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
300 for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++){
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
301 bounds[numberOfLines] = layoutManager.lineFragmentUsedRectForGlyphAtIndex(index, rangePtr, true);
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
302 if (numberOfLines < bounds.length - 1) bounds[numberOfLines].height = bounds[numberOfLines].height - spacing;
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
303 OS.memmove(&lineRange, rangePtr, NSRange.sizeof);
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
304 offsets[numberOfLines] = cast(int)/*64*/lineRange.location;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
305 index = lineRange.location + lineRange.length;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
306 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
307 if (numberOfLines is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
308 Font font = this.font !is null ? this.font : device.systemFont;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
309 NSFont nsFont = font.handle;
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
310 bounds[0] = NSRect();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
311 bounds[0].height = Math.max(layoutManager.defaultLineHeightForFont(nsFont), ascent + descent);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
312 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
313 OS.free(rangePtr);
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
314 offsets[numberOfLines] = cast(int)/*64*/textStorage.length();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
315 this.lineOffsets = offsets;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
316 this.lineBounds = bounds;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
317 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
318
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
319 void destroy() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
320 freeRuns();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
321 font = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
322 text = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
323 styles = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
324 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
325
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
326 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
327 * Draws the receiver's text using the specified GC at the specified
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
328 * point.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
329 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
330 * @param gc the GC to draw
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
331 * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
332 * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
333 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
334 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
335 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
336 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
337 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
338 * <li>ERROR_NULL_ARGUMENT - if the gc is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
339 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
340 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
341 public void draw(GC gc, int x, int y) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
342 draw(gc, x, y, -1, -1, null, null);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
343 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
344
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
345 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
346 * Draws the receiver's text using the specified GC at the specified
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
347 * point.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
348 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
349 * @param gc the GC to draw
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
350 * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
351 * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
352 * @param selectionStart the offset where the selections starts, or -1 indicating no selection
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
353 * @param selectionEnd the offset where the selections ends, or -1 indicating no selection
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
354 * @param selectionForeground selection foreground, or NULL to use the system default color
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
355 * @param selectionBackground selection background, or NULL to use the system default color
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
356 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
357 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
358 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
359 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
360 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
361 * <li>ERROR_NULL_ARGUMENT - if the gc is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
362 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
363 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
364 public void draw(GC gc, int x, int y, int selectionStart, int selectionEnd, Color selectionForeground, Color selectionBackground) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
365 draw(gc, x, y, selectionStart, selectionEnd, selectionForeground, selectionBackground, 0);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
366 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
367
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
368 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
369 * Draws the receiver's text using the specified GC at the specified
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
370 * point.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
371 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
372 * The parameter <code>flags</code> can include one of <code>DWT.DELIMITER_SELECTION</code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
373 * or <code>DWT.FULL_SELECTION</code> to specify the selection behavior on all lines except
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
374 * for the last line, and can also include <code>DWT.LAST_LINE_SELECTION</code> to extend
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
375 * the specified selection behavior to the last line.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
376 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
377 * @param gc the GC to draw
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
378 * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
379 * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
380 * @param selectionStart the offset where the selections starts, or -1 indicating no selection
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
381 * @param selectionEnd the offset where the selections ends, or -1 indicating no selection
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
382 * @param selectionForeground selection foreground, or NULL to use the system default color
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
383 * @param selectionBackground selection background, or NULL to use the system default color
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
384 * @param flags drawing options
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
385 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
386 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
387 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
388 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
389 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
390 * <li>ERROR_NULL_ARGUMENT - if the gc is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
391 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
392 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
393 * @since 3.3
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
394 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
395 public void draw(GC gc, int x, int y, int selectionStart, int selectionEnd, Color selectionForeground, Color selectionBackground, int flags) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
396 checkLayout ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
397 computeRuns();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
398 if (gc is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
399 if (gc.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
400 if (selectionForeground !is null && selectionForeground.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
401 if (selectionBackground !is null && selectionBackground.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
402 int length = translateOffset(text.length());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
403 if (length is 0 && flags is 0) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
404 NSAutoreleasePool pool = gc.checkGC(GC.CLIPPING | GC.TRANSFORM | GC.FOREGROUND);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
405 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
406 gc.handle.saveGraphicsState();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
407 float[] fg = gc.data.foreground;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
408 NSColor foreground = NSColor.colorWithDeviceRed(fg[0], fg[1], fg[2], fg[3]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
409 NSPoint pt = NSPoint();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
410 pt.x = x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
411 pt.y = y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
412 bool hasSelection = selectionStart <= selectionEnd && selectionStart !is -1 && selectionEnd !is -1;
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
413 NSRange* selectionRange = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
414 NSColor selectionColor = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
415 if (hasSelection || (flags & DWT.LAST_LINE_SELECTION) !is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
416 if (selectionBackground is null) selectionBackground = device.getSystemColor(DWT.COLOR_LIST_SELECTION);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
417 selectionColor = NSColor.colorWithDeviceRed(selectionBackground.handle[0], selectionBackground.handle[1], selectionBackground.handle[2], selectionBackground.handle[3]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
418 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
419 if (hasSelection) {
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
420 selectionRange = &NSRange();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
421 selectionRange.location = selectionStart;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
422 selectionRange.length = selectionEnd - selectionStart + 1;
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
423 layoutManager.addTemporaryAttribute(OS.NSBackgroundColorAttributeName, selectionColor, *selectionRange);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
424 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
425 //TODO draw selection for flags (DELIMITER_SELECTION)
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
426 int numberOfGlyphs = layoutManager.numberOfGlyphs();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
427 if (numberOfGlyphs > 0) {
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
428 NSRange range = NSRange();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
429 for (int i = 0; i < styles.length - 1; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
430 StyleItem run = styles[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
431 if (run.style !is null && run.style.foreground !is null) continue;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
432 range.location = length !is 0 ? translateOffset(run.start) : 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
433 range.length = translateOffset(styles[i + 1].start) - range.location;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
434 layoutManager.addTemporaryAttribute(OS.NSForegroundColorAttributeName, foreground, range);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
435 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
436 range.location = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
437 range.length = numberOfGlyphs;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
438 layoutManager.drawBackgroundForGlyphRange(range, pt);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
439 layoutManager.drawGlyphsForGlyphRange(range, pt);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
440 range.length = length;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
441 layoutManager.removeTemporaryAttribute(OS.NSForegroundColorAttributeName, range);
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
442 NSPoint point = NSPoint();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
443 for (int j = 0; j < styles.length; j++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
444 StyleItem run = styles[j];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
445 TextStyle style = run.style;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
446 if (style is null) continue;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
447 bool drawUnderline = style.underline && style.underlineStyle !is DWT.UNDERLINE_SINGLE && style.underlineStyle !is DWT.UNDERLINE_DOUBLE;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
448 drawUnderline = drawUnderline && (j + 1 is styles.length || !style.isAdherentUnderline(styles[j + 1].style));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
449 bool drawBorder = style.borderStyle !is DWT.NONE;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
450 drawBorder = drawBorder && (j + 1 is styles.length || !style.isAdherentBorder(styles[j + 1].style));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
451 if (!drawUnderline && !drawBorder) continue;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
452 int end = j + 1 < styles.length ? translateOffset(styles[j + 1].start - 1) : length;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
453 for (int i = 0; i < lineOffsets.length - 1; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
454 int lineStart = untranslateOffset(lineOffsets[i]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
455 int lineEnd = untranslateOffset(lineOffsets[i + 1] - 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
456 if (drawUnderline) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
457 int start = run.start;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
458 for (int k = j; k > 0 && style.isAdherentUnderline(styles[k - 1].style); k--) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
459 start = styles[k - 1].start;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
460 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
461 start = translateOffset(start);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
462 if (!(start > lineEnd || end < lineStart)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
463 range.location = layoutManager.glyphIndexForCharacterAtIndex(Math.max(lineStart, start));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
464 range.length = layoutManager.glyphIndexForCharacterAtIndex(Math.min(lineEnd, end) + 1) - range.location;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
465 if (range.length > 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
466 gc.handle.saveGraphicsState();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
467 NSRect rect = layoutManager.boundingRectForGlyphRange(range, textContainer);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
468 float baseline = layoutManager.typesetter().baselineOffsetInLayoutManager(layoutManager, lineStart);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
469 float underlineX = pt.x + rect.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
470 float underlineY = pt.y + rect.y + rect.height - baseline;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
471 float[] color = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
472 if (style.underlineColor !is null) color = style.underlineColor.handle;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
473 if (color is null && style.foreground !is null) color = style.foreground.handle;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
474 if (color !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
475 NSColor.colorWithDeviceRed(color[0], color[1], color[2], color[3]).setStroke();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
476 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
477 NSBezierPath path = NSBezierPath.bezierPath();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
478 switch (style.underlineStyle) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
479 case DWT.UNDERLINE_ERROR: {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
480 path.setLineWidth(2f);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
481 path.setLineCapStyle(OS.NSRoundLineCapStyle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
482 path.setLineJoinStyle(OS.NSRoundLineJoinStyle);
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
483 path.setLineDash([1f, 3f].ptr, 2, cast(Carbon.CGFloat) 0);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
484 point.x = underlineX;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
485 point.y = underlineY + 0.5f;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
486 path.moveToPoint(point);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
487 point.x = underlineX + rect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
488 point.y = underlineY + 0.5f;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
489 path.lineToPoint(point);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
490 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
491 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
492 case DWT.UNDERLINE_SQUIGGLE: {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
493 gc.handle.setShouldAntialias(false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
494 path.setLineWidth(1.0f);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
495 path.setLineCapStyle(OS.NSButtLineCapStyle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
496 path.setLineJoinStyle(OS.NSMiterLineJoinStyle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
497 float lineBottom = pt.y + rect.y + rect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
498 float squigglyThickness = 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
499 float squigglyHeight = 2 * squigglyThickness;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
500 float squigglyY = Math.min(underlineY - squigglyHeight / 2, lineBottom - squigglyHeight - 1);
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
501 float[] points = computePolyline(cast(int)underlineX, cast(int)squigglyY, cast(int)(underlineX + rect.width), cast(int)(squigglyY + squigglyHeight));
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
502 point.x = points[0] + 0.5f;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
503 point.y = points[1] + 0.5f;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
504 path.moveToPoint(point);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
505 for (int p = 2; p < points.length; p+=2) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
506 point.x = points[p] + 0.5f;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
507 point.y = points[p+1] + 0.5f;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
508 path.lineToPoint(point);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
509 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
510 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
511 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
512 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
513 path.stroke();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
514 gc.handle.restoreGraphicsState();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
515 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
516 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
517 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
518 if (drawBorder) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
519 int start = run.start;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
520 for (int k = j; k > 0 && style.isAdherentBorder(styles[k - 1].style); k--) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
521 start = styles[k - 1].start;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
522 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
523 start = translateOffset(start);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
524 if (!(start > lineEnd || end < lineStart)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
525 range.location = layoutManager.glyphIndexForCharacterAtIndex(Math.max(lineStart, start));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
526 range.length = layoutManager.glyphIndexForCharacterAtIndex(Math.min(lineEnd, end) + 1) - range.location;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
527 if (range.length > 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
528 gc.handle.saveGraphicsState();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
529 NSRect rect = layoutManager.boundingRectForGlyphRange(range, textContainer);
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
530 rect.x = rect.x + pt.x + 0.5f;
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
531 rect.y = rect.y + pt.y + 0.5f;
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
532 rect.width = rect.width - 0.5f;
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
533 rect.height = rect.height - 0.5f;
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
534 Carbon.CGFloat[] color = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
535 if (style.borderColor !is null) color = style.borderColor.handle;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
536 if (color is null && style.foreground !is null) color = style.foreground.handle;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
537 if (color !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
538 NSColor.colorWithDeviceRed(color[0], color[1], color[2], color[3]).setStroke();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
539 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
540 int width = 1;
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
541 Carbon.CGFloat[] dashes = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
542 switch (style.borderStyle) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
543 case DWT.BORDER_SOLID: break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
544 case DWT.BORDER_DASH: dashes = width !is 0 ? GC.LINE_DASH : GC.LINE_DASH_ZERO; break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
545 case DWT.BORDER_DOT: dashes = width !is 0 ? GC.LINE_DOT : GC.LINE_DOT_ZERO; break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
546 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
547 NSBezierPath path = NSBezierPath.bezierPath();
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
548 path.setLineDash(dashes.ptr, dashes !is null ? dashes.length : 0, 0);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
549 path.appendBezierPathWithRect(rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
550 path.stroke();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
551 gc.handle.restoreGraphicsState();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
552 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
553 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
554 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
555 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
556
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
557 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
558 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
559 if ((flags & DWT.LAST_LINE_SELECTION) !is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
560 NSRect bounds = lineBounds[lineBounds.length - 1];
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
561 NSRect rect = NSRect();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
562 rect.x = pt.x + bounds.x + bounds.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
563 rect.y = y + bounds.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
564 rect.width = (flags & DWT.FULL_SELECTION) !is 0 ? 0x7fffffff : bounds.height / 3;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
565 rect.height = bounds.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
566 selectionColor.setFill();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
567 NSBezierPath path = NSBezierPath.bezierPath();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
568 path.appendBezierPathWithRect(rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
569 path.fill();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
570 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
571 if (selectionRange !is null) {
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
572 layoutManager.removeTemporaryAttribute(OS.NSBackgroundColorAttributeName, *selectionRange);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
573 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
574 gc.handle.restoreGraphicsState();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
575 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
576 gc.uncheckGC(pool);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
577 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
578 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
579
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
580 void freeRuns() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
581 if (textStorage is null) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
582 if (textStorage !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
583 textStorage.release();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
584 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
585 if (layoutManager !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
586 layoutManager.release();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
587 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
588 if (textContainer !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
589 textContainer.release();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
590 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
591 textStorage = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
592 layoutManager = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
593 textContainer = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
594 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
595
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
596 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
597 * Returns the receiver's horizontal text alignment, which will be one
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
598 * of <code>DWT.LEFT</code>, <code>DWT.CENTER</code> or
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
599 * <code>DWT.RIGHT</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
600 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
601 * @return the alignment used to positioned text horizontally
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
602 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
603 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
604 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
605 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
606 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
607 public int getAlignment() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
608 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
609 return alignment;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
610 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
611
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
612 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
613 * Returns the ascent of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
614 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
615 * @return the ascent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
616 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
617 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
618 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
619 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
620 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
621 * @see #getDescent()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
622 * @see #setDescent(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
623 * @see #setAscent(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
624 * @see #getLineMetrics(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
625 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
626 public int getAscent () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
627 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
628 return ascent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
629 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
630
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
631 /**
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
632 * Returns the bounds of the receiver. The width returned is either the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
633 * width of the longest line or the width set using {@link TextLayout#setWidth(int)}.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
634 * To obtain the text bounds of a line use {@link TextLayout#getLineBounds(int)}.
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
635 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
636 * @return the bounds of the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
637 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
638 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
639 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
640 * </ul>
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
641 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
642 * @see #setWidth(int)
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
643 * @see #getLineBounds(int)
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
644 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
645 public Rectangle getBounds() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
646 checkLayout();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
647 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
648 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
649 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
650 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
651 NSRect rect = layoutManager.usedRectForTextContainer(textContainer);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
652 if (wrapWidth !is -1) rect.width = wrapWidth;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
653 if (text.length() is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
654 Font font = this.font !is null ? this.font : device.systemFont;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
655 NSFont nsFont = font.handle;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
656 rect.height = Math.max(rect.height, layoutManager.defaultLineHeightForFont(nsFont));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
657 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
658 rect.height = Math.max(rect.height, ascent + descent) + spacing;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
659 return new Rectangle(0, 0, cast(int)rect.width, cast(int)rect.height);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
660 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
661 if (pool !is null) pool.release();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
662 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
663 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
664
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
665 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
666 * Returns the bounds for the specified range of characters. The
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
667 * bounds is the smallest rectangle that encompasses all characters
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
668 * in the range. The start and end offsets are inclusive and will be
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
669 * clamped if out of range.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
670 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
671 * @param start the start offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
672 * @param end the end offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
673 * @return the bounds of the character range
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
674 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
675 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
676 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
677 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
678 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
679 public Rectangle getBounds(int start, int end) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
680 checkLayout();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
681 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
682 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
683 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
684 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
685 int length = text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
686 if (length is 0) return new Rectangle(0, 0, 0, 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
687 if (start > end) return new Rectangle(0, 0, 0, 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
688 start = Math.min(Math.max(0, start), length - 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
689 end = Math.min(Math.max(0, end), length - 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
690 start = translateOffset(start);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
691 end = translateOffset(end);
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
692 NSRange range = NSRange();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
693 range.location = layoutManager.glyphIndexForCharacterAtIndex(start);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
694 range.length = layoutManager.glyphIndexForCharacterAtIndex(end + 1) - range.location;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
695 NSRect rect = layoutManager.boundingRectForGlyphRange(range, textContainer);
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
696 return new Rectangle(cast(int)rect.x, cast(int)rect.y, cast(int)Math.ceil(rect.width), cast(int)Math.ceil(rect.height));
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
697 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
698 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
699 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
700 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
701
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
702 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
703 * Returns the descent of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
704 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
705 * @return the descent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
706 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
707 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
708 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
709 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
710 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
711 * @see #getAscent()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
712 * @see #setAscent(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
713 * @see #setDescent(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
714 * @see #getLineMetrics(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
715 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
716 public int getDescent () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
717 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
718 return descent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
719 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
720
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
721 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
722 * Returns the default font currently being used by the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
723 * to draw and measure text.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
724 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
725 * @return the receiver's font
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
726 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
727 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
728 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
729 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
730 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
731 public Font getFont () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
732 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
733 return font;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
734 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
735
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
736 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
737 * Returns the receiver's indent.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
738 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
739 * @return the receiver's indent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
740 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
741 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
742 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
743 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
744 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
745 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
746 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
747 public int getIndent () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
748 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
749 return indent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
750 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
751
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
752 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
753 * Returns the receiver's justification.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
754 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
755 * @return the receiver's justification
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
756 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
757 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
758 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
759 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
760 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
761 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
762 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
763 public bool getJustify () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
764 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
765 return justify;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
766 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
767
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
768 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
769 * Returns the embedding level for the specified character offset. The
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
770 * embedding level is usually used to determine the directionality of a
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
771 * character in bidirectional text.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
772 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
773 * @param offset the character offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
774 * @return the embedding level
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
775 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
776 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
777 * <li>ERROR_INVALID_ARGUMENT - if the character offset is out of range</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
778 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
779 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
780 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
781 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
782 public int getLevel(int offset) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
783 checkLayout();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
784 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
785 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
786 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
787 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
788 int length = text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
789 if (!(0 <= offset && offset <= length)) DWT.error(DWT.ERROR_INVALID_RANGE);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
790 offset = translateOffset(offset);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
791 int level = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
792 //TODO
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
793 return level;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
794 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
795 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
796 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
797 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
798
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
799 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
800 * Returns the line offsets. Each value in the array is the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
801 * offset for the first character in a line except for the last
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
802 * value, which contains the length of the text.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
803 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
804 * @return the line offsets
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
805 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
806 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
807 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
808 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
809 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
810 public int[] getLineOffsets() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
811 checkLayout ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
812 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
813 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
814 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
815 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
816 int[] offsets = new int[lineOffsets.length];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
817 for (int i = 0; i < offsets.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
818 offsets[i] = untranslateOffset(lineOffsets[i]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
819 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
820 return offsets;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
821 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
822 if (pool !is null) pool.release();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
823 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
824 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
825
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
826 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
827 * Returns the index of the line that contains the specified
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
828 * character offset.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
829 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
830 * @param offset the character offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
831 * @return the line index
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
832 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
833 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
834 * <li>ERROR_INVALID_ARGUMENT - if the character offset is out of range</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
835 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
836 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
837 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
838 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
839 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
840 public int getLineIndex(int offset) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
841 checkLayout ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
842 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
843 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
844 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
845 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
846 int length = text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
847 if (!(0 <= offset && offset <= length)) DWT.error(DWT.ERROR_INVALID_RANGE);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
848 offset = translateOffset(offset);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
849 for (int line=0; line<lineOffsets.length - 1; line++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
850 if (lineOffsets[line + 1] > offset) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
851 return line;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
852 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
853 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
854 return lineBounds.length - 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
855 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
856 if (pool !is null) pool.release();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
857 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
858 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
859
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
860 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
861 * Returns the bounds of the line for the specified line index.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
862 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
863 * @param lineIndex the line index
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
864 * @return the line bounds
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
865 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
866 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
867 * <li>ERROR_INVALID_ARGUMENT - if the line index is out of range</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
868 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
869 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
870 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
871 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
872 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
873 public Rectangle getLineBounds(int lineIndex) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
874 checkLayout();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
875 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
876 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
877 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
878 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
879 if (!(0 <= lineIndex && lineIndex < lineBounds.length)) DWT.error(DWT.ERROR_INVALID_RANGE);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
880 NSRect rect = lineBounds[lineIndex];
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
881 return new Rectangle(cast(int)rect.x, cast(int)rect.y, cast(int)rect.width, cast(int)rect.height);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
882 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
883 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
884 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
885 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
886
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
887 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
888 * Returns the receiver's line count. This includes lines caused
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
889 * by wrapping.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
890 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
891 * @return the line count
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
892 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
893 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
894 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
895 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
896 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
897 public int getLineCount() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
898 checkLayout ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
899 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
900 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
901 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
902 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
903 return lineOffsets.length - 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
904 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
905 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
906 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
907 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
908
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
909 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
910 * Returns the font metrics for the specified line index.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
911 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
912 * @param lineIndex the line index
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
913 * @return the font metrics
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
914 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
915 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
916 * <li>ERROR_INVALID_ARGUMENT - if the line index is out of range</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
917 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
918 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
919 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
920 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
921 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
922 public FontMetrics getLineMetrics (int lineIndex) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
923 checkLayout ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
924 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
925 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
926 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
927 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
928 int lineCount = getLineCount();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
929 if (!(0 <= lineIndex && lineIndex < lineCount)) DWT.error(DWT.ERROR_INVALID_RANGE);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
930 int length = text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
931 if (length is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
932 Font font = this.font !is null ? this.font : device.systemFont;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
933 NSFont nsFont = font.handle;
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
934 int ascent = cast(int)(0.5f + nsFont.ascender());
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
935 int descent = cast(int)(0.5f + (-nsFont.descender() + nsFont.leading()));
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
936 ascent = Math.max(ascent, this.ascent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
937 descent = Math.max(descent, this.descent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
938 return FontMetrics.cocoa_new(ascent, descent, 0, 0, ascent + descent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
939 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
940 Rectangle rect = getLineBounds(lineIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
941 int baseline = cast(int)layoutManager.typesetter().baselineOffsetInLayoutManager(layoutManager, getLineOffsets()[lineIndex]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
942 return FontMetrics.cocoa_new(rect.height - baseline, baseline, 0, 0, rect.height);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
943 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
944 if (pool !is null) pool.release();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
945 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
946 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
947
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
948 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
949 * Returns the location for the specified character offset. The
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
950 * <code>trailing</code> argument indicates whether the offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
951 * corresponds to the leading or trailing edge of the cluster.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
952 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
953 * @param offset the character offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
954 * @param trailing the trailing flag
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
955 * @return the location of the character offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
956 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
957 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
958 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
959 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
960 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
961 * @see #getOffset(Point, int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
962 * @see #getOffset(int, int, int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
963 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
964 public Point getLocation(int offset, bool trailing) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
965 checkLayout();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
966 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
967 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
968 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
969 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
970 int length = text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
971 if (!(0 <= offset && offset <= length)) DWT.error(DWT.ERROR_INVALID_RANGE);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
972 if (length is 0) return new Point(0, 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
973 offset = translateOffset(offset);
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
974 NSUInteger glyphIndex = layoutManager.glyphIndexForCharacterAtIndex(offset);
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
975 NSRect rect = layoutManager.lineFragmentUsedRectForGlyphAtIndex(glyphIndex, null);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
976 NSPoint point = layoutManager.locationForGlyphAtIndex(glyphIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
977 if (trailing) {
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
978 NSRange range = NSRange();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
979 range.location = glyphIndex;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
980 range.length = 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
981 NSRect bounds = layoutManager.boundingRectForGlyphRange(range, textContainer);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
982 point.x += bounds.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
983 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
984 return new Point(cast(int)point.x, cast(int)rect.y);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
985 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
986 if (pool !is null) pool.release();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
987 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
988 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
989
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
990 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
991 * Returns the next offset for the specified offset and movement
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
992 * type. The movement is one of <code>DWT.MOVEMENT_CHAR</code>,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
993 * <code>DWT.MOVEMENT_CLUSTER</code>, <code>DWT.MOVEMENT_WORD</code>,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
994 * <code>DWT.MOVEMENT_WORD_END</code> or <code>DWT.MOVEMENT_WORD_START</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
995 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
996 * @param offset the start offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
997 * @param movement the movement type
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
998 * @return the next offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
999 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1000 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1001 * <li>ERROR_INVALID_ARGUMENT - if the offset is out of range</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1002 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1003 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1004 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1005 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1006 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1007 * @see #getPreviousOffset(int, int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1008 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1009 public int getNextOffset (int offset, int movement) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1010 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1011 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1012 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1013 return _getOffset(offset, movement, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1014 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1015 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1016 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1017 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1018
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1019 int _getOffset (int offset, int movement, bool forward) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1020 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1021 computeRuns();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1022 int length = text.length();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1023 if (!(0 <= offset && offset <= length)) DWT.error(DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1024 if (length is 0) return 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1025 offset = translateOffset(offset);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1026 switch (movement) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1027 case DWT.MOVEMENT_CLUSTER://TODO cluster
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1028 case DWT.MOVEMENT_CHAR: {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1029 if (forward) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1030 offset++;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1031 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1032 offset--;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1033 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1034 return Math.max(0, Math.min(length, untranslateOffset(offset)));
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1035 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1036 case DWT.MOVEMENT_WORD: {
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1037 return untranslateOffset(cast(int)/*64*/textStorage.nextWordFromIndex(offset, forward));
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1038 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1039 case DWT.MOVEMENT_WORD_END: {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1040 NSRange range = textStorage.doubleClickAtIndex(length is offset ? length - 1 : offset);
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1041 return untranslateOffset(cast(int)/*64*/(range.location + range.length));
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1042 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1043 case DWT.MOVEMENT_WORD_START: {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1044 NSRange range = textStorage.doubleClickAtIndex(length is offset ? length - 1 : offset);
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1045 return untranslateOffset(cast(int)/*64*/range.location);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1046 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1047 default:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1048 break;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1049 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1050 return -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1051 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1052
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1053 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1054 * Returns the character offset for the specified point.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1055 * For a typical character, the trailing argument will be filled in to
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1056 * indicate whether the point is closer to the leading edge (0) or
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1057 * the trailing edge (1). When the point is over a cluster composed
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1058 * of multiple characters, the trailing argument will be filled with the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1059 * position of the character in the cluster that is closest to
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1060 * the point.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1061 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1062 * @param point the point
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1063 * @param trailing the trailing buffer
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1064 * @return the character offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1065 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1066 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1067 * <li>ERROR_INVALID_ARGUMENT - if the trailing length is less than <code>1</code></li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1068 * <li>ERROR_NULL_ARGUMENT - if the point is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1069 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1070 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1071 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1072 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1073 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1074 * @see #getLocation(int, bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1075 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1076 public int getOffset(Point point, int[] trailing) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1077 checkLayout();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1078 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1079 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1080 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1081 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1082 if (point is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1083 return getOffset(point.x, point.y, trailing);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1084 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1085 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1086 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1087 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1088
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1089 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1090 * Returns the character offset for the specified point.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1091 * For a typical character, the trailing argument will be filled in to
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1092 * indicate whether the point is closer to the leading edge (0) or
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1093 * the trailing edge (1). When the point is over a cluster composed
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1094 * of multiple characters, the trailing argument will be filled with the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1095 * position of the character in the cluster that is closest to
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1096 * the point.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1097 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1098 * @param x the x coordinate of the point
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1099 * @param y the y coordinate of the point
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1100 * @param trailing the trailing buffer
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1101 * @return the character offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1102 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1103 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1104 * <li>ERROR_INVALID_ARGUMENT - if the trailing length is less than <code>1</code></li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1105 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1106 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1107 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1108 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1109 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1110 * @see #getLocation(int, bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1111 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1112 public int getOffset(int x, int y, int[] trailing) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1113 checkLayout();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1114 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1115 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1116 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1117 computeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1118 if (trailing !is null && trailing.length < 1) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1119 int length = text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1120 if (length is 0) return 0;
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
1121 NSPoint pt = NSPoint();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1122 pt.x = x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1123 pt.y = y;
60
62202ce0039f Updated and fixed many modules to 3.514
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1124 Carbon.CGFloat partialFration;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1125 NSUInteger glyphIndex = layoutManager.glyphIndexForPoint(pt, textContainer, &partialFration);
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1126 NSUInteger offset = layoutManager.characterIndexForGlyphAtIndex(glyphIndex);
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
1127 if (trailing !is null) trailing[0] = cast(int) Math.round(partialFration);
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1128 return Math.min(untranslateOffset(cast(int)/*64*/offset), length - 1);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1129 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1130 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1131 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1132 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1133
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1134 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1135 * Returns the orientation of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1136 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1137 * @return the orientation style
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1138 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1139 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1140 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1141 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1142 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1143 public int getOrientation() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1144 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1145 return orientation;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1146 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1147
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1148 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1149 * Returns the previous offset for the specified offset and movement
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1150 * type. The movement is one of <code>DWT.MOVEMENT_CHAR</code>,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1151 * <code>DWT.MOVEMENT_CLUSTER</code> or <code>DWT.MOVEMENT_WORD</code>,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1152 * <code>DWT.MOVEMENT_WORD_END</code> or <code>DWT.MOVEMENT_WORD_START</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1153 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1154 * @param offset the start offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1155 * @param movement the movement type
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1156 * @return the previous offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1157 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1158 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1159 * <li>ERROR_INVALID_ARGUMENT - if the offset is out of range</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1160 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1161 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1162 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1163 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1164 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1165 * @see #getNextOffset(int, int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1166 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1167 public int getPreviousOffset (int index, int movement) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1168 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1169 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1170 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1171 return _getOffset(index, movement, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1172 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1173 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1174 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1175 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1176
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1177 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1178 * Gets the ranges of text that are associated with a <code>TextStyle</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1179 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1180 * @return the ranges, an array of offsets representing the start and end of each
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1181 * text style.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1182 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1183 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1184 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1185 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1186 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1187 * @see #getStyles()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1188 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1189 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1190 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1191 public int[] getRanges () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1192 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1193 int[] result = new int[styles.length * 2];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1194 int count = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1195 for (int i=0; i<styles.length - 1; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1196 if (styles[i].style !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1197 result[count++] = styles[i].start;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1198 result[count++] = styles[i + 1].start - 1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1199 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1200 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1201 if (count !is result.length) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1202 int[] newResult = new int[count];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1203 System.arraycopy(result, 0, newResult, 0, count);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1204 result = newResult;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1205 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1206 return result;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1207 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1208
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1209 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1210 * Returns the text segments offsets of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1211 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1212 * @return the text segments offsets
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1213 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1214 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1215 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1216 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1217 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1218 public int[] getSegments() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1219 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1220 return segments;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1221 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1222
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1223 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1224 * Returns the line spacing of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1225 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1226 * @return the line spacing
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1227 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1228 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1229 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1230 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1231 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1232 public int getSpacing () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1233 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1234 return spacing;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1235 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1236
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1237 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1238 * Gets the style of the receiver at the specified character offset.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1239 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1240 * @param offset the text offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1241 * @return the style or <code>null</code> if not set
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1242 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1243 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1244 * <li>ERROR_INVALID_ARGUMENT - if the character offset is out of range</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1245 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1246 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1247 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1248 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1249 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1250 public TextStyle getStyle (int offset) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1251 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1252 int length = text.length();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1253 if (!(0 <= offset && offset < length)) DWT.error(DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1254 for (int i=1; i<styles.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1255 StyleItem item = styles[i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1256 if (item.start > offset) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1257 return styles[i - 1].style;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1258 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1259 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1260 return null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1261 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1262
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1263 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1264 * Gets all styles of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1265 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1266 * @return the styles
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1267 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1268 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1269 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1270 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1271 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1272 * @see #getRanges()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1273 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1274 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1275 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1276 public TextStyle[] getStyles () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1277 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1278 TextStyle[] result = new TextStyle[styles.length];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1279 int count = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1280 for (int i=0; i<styles.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1281 if (styles[i].style !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1282 result[count++] = styles[i].style;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1283 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1284 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1285 if (count !is result.length) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1286 TextStyle[] newResult = new TextStyle[count];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1287 System.arraycopy(result, 0, newResult, 0, count);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1288 result = newResult;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1289 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1290 return result;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1291 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1292
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1293 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1294 * Returns the tab list of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1295 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1296 * @return the tab list
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1297 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1298 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1299 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1300 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1301 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1302 public int[] getTabs() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1303 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1304 return tabs;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1305 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1306
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1307 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1308 * Gets the receiver's text, which will be an empty
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1309 * string if it has never been set.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1310 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1311 * @return the receiver's text
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1312 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1313 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1314 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1315 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1316 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1317 public String getText () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1318 checkLayout ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1319 return text;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1320 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1321
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1322 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1323 * Returns the width of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1324 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1325 * @return the width
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1326 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1327 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1328 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1329 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1330 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1331 public int getWidth () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1332 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1333 return wrapWidth;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1334 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1335
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1336 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1337 * Returns <code>true</code> if the text layout has been disposed,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1338 * and <code>false</code> otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1339 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1340 * This method gets the dispose state for the text layout.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1341 * When a text layout has been disposed, it is an error to
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1342 * invoke any other method using the text layout.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1343 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1344 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1345 * @return <code>true</code> when the text layout is disposed and <code>false</code> otherwise
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1346 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1347 public bool isDisposed () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1348 return device is null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1349 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1350
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1351 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1352 * Sets the text alignment for the receiver. The alignment controls
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1353 * how a line of text is positioned horizontally. The argument should
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1354 * be one of <code>DWT.LEFT</code>, <code>DWT.RIGHT</code> or <code>DWT.CENTER</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1355 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1356 * The default alignment is <code>DWT.LEFT</code>. Note that the receiver's
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1357 * width must be set in order to use <code>DWT.RIGHT</code> or <code>DWT.CENTER</code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1358 * alignment.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1359 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1360 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1361 * @param alignment the new alignment
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1362 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1363 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1364 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1365 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1366 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1367 * @see #setWidth(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1368 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1369 public void setAlignment (int alignment) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1370 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1371 int mask = DWT.LEFT | DWT.CENTER | DWT.RIGHT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1372 alignment &= mask;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1373 if (alignment is 0) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1374 if ((alignment & DWT.LEFT) !is 0) alignment = DWT.LEFT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1375 if ((alignment & DWT.RIGHT) !is 0) alignment = DWT.RIGHT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1376 if (this.alignment is alignment) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1377 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1378 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1379 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1380 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1381 this.alignment = alignment;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1382 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1383 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1384 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1385 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1386
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1387 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1388 * Sets the ascent of the receiver. The ascent is distance in pixels
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1389 * from the baseline to the top of the line and it is applied to all
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1390 * lines. The default value is <code>-1</code> which means that the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1391 * ascent is calculated from the line fonts.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1392 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1393 * @param ascent the new ascent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1394 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1395 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1396 * <li>ERROR_INVALID_ARGUMENT - if the ascent is less than <code>-1</code></li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1397 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1398 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1399 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1400 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1401 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1402 * @see #setDescent(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1403 * @see #getLineMetrics(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1404 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1405 public void setAscent (int ascent) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1406 checkLayout ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1407 if (ascent < -1) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1408 if (this.ascent is ascent) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1409 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1410 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1411 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1412 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1413 this.ascent = ascent;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1414 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1415 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1416 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1417 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1418
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1419 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1420 * Sets the descent of the receiver. The descent is distance in pixels
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1421 * from the baseline to the bottom of the line and it is applied to all
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1422 * lines. The default value is <code>-1</code> which means that the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1423 * descent is calculated from the line fonts.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1424 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1425 * @param descent the new descent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1426 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1427 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1428 * <li>ERROR_INVALID_ARGUMENT - if the descent is less than <code>-1</code></li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1429 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1430 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1431 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1432 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1433 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1434 * @see #setAscent(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1435 * @see #getLineMetrics(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1436 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1437 public void setDescent (int descent) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1438 checkLayout ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1439 if (descent < -1) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1440 if (this.descent is descent) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1441 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1442 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1443 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1444 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1445 this.descent = descent;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1446 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1447 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1448 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1449 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1450
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1451 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1452 * Sets the default font which will be used by the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1453 * to draw and measure text. If the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1454 * argument is null, then a default font appropriate
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1455 * for the platform will be used instead. Note that a text
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1456 * style can override the default font.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1457 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1458 * @param font the new font for the receiver, or null to indicate a default font
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1459 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1460 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1461 * <li>ERROR_INVALID_ARGUMENT - if the font has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1462 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1463 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1464 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1465 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1466 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1467 public void setFont (Font font) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1468 checkLayout ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1469 if (font !is null && font.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1470 Font oldFont = this.font;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1471 if (oldFont is font) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1472 this.font = font;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1473 if (oldFont !is null && oldFont.equals(font)) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1474 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1475 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1476 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1477 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1478 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1479 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1480 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1481 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1482
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1483 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1484 * Sets the indent of the receiver. This indent it applied of the first line of
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1485 * each paragraph.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1486 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1487 * @param indent new indent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1488 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1489 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1490 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1491 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1492 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1493 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1494 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1495 public void setIndent (int indent) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1496 checkLayout ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1497 if (indent < 0) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1498 if (this.indent is indent) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1499 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1500 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1501 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1502 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1503 this.indent = indent;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1504 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1505 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1506 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1507 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1508
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1509 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1510 * Sets the justification of the receiver. Note that the receiver's
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1511 * width must be set in order to use justification.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1512 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1513 * @param justify new justify
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1514 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1515 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1516 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1517 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1518 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1519 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1520 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1521 public void setJustify (bool justify) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1522 checkLayout ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1523 if (justify is this.justify) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1524 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1525 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1526 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1527 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1528 this.justify = justify;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1529 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1530 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1531 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1532 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1533
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1534 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1535 * Sets the orientation of the receiver, which must be one
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1536 * of <code>DWT.LEFT_TO_RIGHT</code> or <code>DWT.RIGHT_TO_LEFT</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1537 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1538 * @param orientation new orientation style
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1539 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1540 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1541 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1542 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1543 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1544 public void setOrientation(int orientation) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1545 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1546 int mask = DWT.LEFT_TO_RIGHT | DWT.RIGHT_TO_LEFT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1547 orientation &= mask;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1548 if (orientation is 0) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1549 if ((orientation & DWT.LEFT_TO_RIGHT) !is 0) orientation = DWT.LEFT_TO_RIGHT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1550 if (this.orientation is orientation) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1551 this.orientation = orientation;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1552 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1553 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1554 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1555 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1556 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1557 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1558 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1559 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1560
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1561 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1562 * Sets the offsets of the receiver's text segments. Text segments are used to
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1563 * override the default behaviour of the bidirectional algorithm.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1564 * Bidirectional reordering can happen within a text segment but not
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1565 * between two adjacent segments.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1566 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1567 * Each text segment is determined by two consecutive offsets in the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1568 * <code>segments</code> arrays. The first element of the array should
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1569 * always be zero and the last one should always be equals to length of
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1570 * the text.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1571 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1572 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1573 * @param segments the text segments offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1574 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1575 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1576 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1577 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1578 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1579 public void setSegments(int[] segments) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1580 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1581 if (this.segments is null && segments is null) return;
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
1582 if (this.segments !is null && segments !is null) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1583 if (this.segments.length is segments.length) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1584 int i;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1585 for (i = 0; i <segments.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1586 if (this.segments[i] !is segments[i]) break;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1587 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1588 if (i is segments.length) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1589 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1590 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1591 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1592 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1593 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1594 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1595 this.segments = segments;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1596 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1597 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1598 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1599 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1600
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1601 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1602 * Sets the line spacing of the receiver. The line spacing
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1603 * is the space left between lines.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1604 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1605 * @param spacing the new line spacing
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1606 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1607 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1608 * <li>ERROR_INVALID_ARGUMENT - if the spacing is negative</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1609 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1610 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1611 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1612 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1613 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1614 public void setSpacing (int spacing) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1615 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1616 if (spacing < 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1617 if (this.spacing is spacing) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1618 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1619 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1620 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1621 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1622 this.spacing = spacing;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1623 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1624 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1625 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1626 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1627
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1628 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1629 * Sets the style of the receiver for the specified range. Styles previously
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1630 * set for that range will be overwritten. The start and end offsets are
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1631 * inclusive and will be clamped if out of range.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1632 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1633 * @param style the style
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1634 * @param start the start offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1635 * @param end the end offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1636 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1637 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1638 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1639 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1640 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1641 public void setStyle (TextStyle style, int start, int end) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1642 checkLayout();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1643 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1644 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1645 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1646 int length = text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1647 if (length is 0) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1648 if (start > end) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1649 start = Math.min(Math.max(0, start), length - 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1650 end = Math.min(Math.max(0, end), length - 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1651 int low = -1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1652 int high = styles.length;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1653 while (high - low > 1) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1654 int index = (high + low) / 2;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1655 if (styles[index + 1].start > start) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1656 high = index;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1657 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1658 low = index;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1659 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1660 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1661 if (0 <= high && high < styles.length) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1662 StyleItem item = styles[high];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1663 if (item.start is start && styles[high + 1].start - 1 is end) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1664 if (style is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1665 if (item.style is null) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1666 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1667 if (style.equals(item.style)) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1668 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1669 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1670 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1671 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1672 int modifyStart = high;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1673 int modifyEnd = modifyStart;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1674 while (modifyEnd < styles.length) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1675 if (styles[modifyEnd + 1].start > end) break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1676 modifyEnd++;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1677 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1678 if (modifyStart is modifyEnd) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1679 int styleStart = styles[modifyStart].start;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1680 int styleEnd = styles[modifyEnd + 1].start - 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1681 if (styleStart is start && styleEnd is end) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1682 styles[modifyStart].style = style;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1683 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1684 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1685 if (styleStart !is start && styleEnd !is end) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1686 StyleItem[] newStyles = new StyleItem[styles.length + 2];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1687 System.arraycopy(styles, 0, newStyles, 0, modifyStart + 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1688 StyleItem item = new StyleItem();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1689 item.start = start;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1690 item.style = style;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1691 newStyles[modifyStart + 1] = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1692 item = new StyleItem();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1693 item.start = end + 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1694 item.style = styles[modifyStart].style;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1695 newStyles[modifyStart + 2] = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1696 System.arraycopy(styles, modifyEnd + 1, newStyles, modifyEnd + 3, styles.length - modifyEnd - 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1697 styles = newStyles;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1698 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1699 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1700 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1701 if (start is styles[modifyStart].start) modifyStart--;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1702 if (end is styles[modifyEnd + 1].start - 1) modifyEnd++;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1703 int newLength = styles.length + 1 - (modifyEnd - modifyStart - 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1704 StyleItem[] newStyles = new StyleItem[newLength];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1705 System.arraycopy(styles, 0, newStyles, 0, modifyStart + 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1706 StyleItem item = new StyleItem();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1707 item.start = start;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1708 item.style = style;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1709 newStyles[modifyStart + 1] = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1710 styles[modifyEnd].start = end + 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1711 System.arraycopy(styles, modifyEnd, newStyles, modifyStart + 2, styles.length - modifyEnd);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1712 styles = newStyles;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1713 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1714 if (pool !is null) pool.release();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1715 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1716 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1717
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1718 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1719 * Sets the receiver's tab list. Each value in the tab list specifies
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1720 * the space in pixels from the origin of the text layout to the respective
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1721 * tab stop. The last tab stop width is repeated continuously.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1722 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1723 * @param tabs the new tab list
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1724 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1725 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1726 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1727 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1728 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1729 public void setTabs(int[] tabs) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1730 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1731 if (this.tabs is null && tabs is null) return;
36
db5a898b2119 Fixed a lot of compile errors
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 7
diff changeset
1732 if (this.tabs !is null && tabs !is null) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1733 if (this.tabs.length is tabs.length) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1734 int i;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1735 for (i = 0; i < tabs.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1736 if (this.tabs[i] !is tabs[i]) break;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1737 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1738 if (i is tabs.length) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1739 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1740 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1741 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1742 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1743 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1744 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1745 this.tabs = tabs;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1746 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1747 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1748 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1749 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1750
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1751 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1752 * Sets the receiver's text.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1753 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1754 * @param text the new text
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1755 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1756 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1757 * <li>ERROR_NULL_ARGUMENT - if the text is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1758 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1759 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1760 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1761 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1762 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1763 public void setText (String text) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1764 checkLayout ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1765 if (text is null) DWT.error(DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1766 if (text.equals(this.text)) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1767 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1768 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1769 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1770 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1771 this.text = text;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1772 styles = new StyleItem[2];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1773 styles[0] = new StyleItem();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1774 styles[1] = new StyleItem();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1775 styles[styles.length - 1].start = text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1776 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1777 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1778 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1779 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1780
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1781 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1782 * Sets the line width of the receiver, which determines how
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1783 * text should be wrapped and aligned. The default value is
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1784 * <code>-1</code> which means wrapping is disabled.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1785 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1786 * @param width the new width
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1787 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1788 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1789 * <li>ERROR_INVALID_ARGUMENT - if the width is <code>0</code> or less than <code>-1</code></li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1790 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1791 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1792 * <li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1793 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1794 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1795 * @see #setAlignment(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1796 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1797 public void setWidth (int width) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1798 checkLayout();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1799 if (width < -1 || width is 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1800 if (this.wrapWidth is width) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1801 NSAutoreleasePool pool = null;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1802 if (!NSThread.isMainThread()) pool = cast(NSAutoreleasePool) (new NSAutoreleasePool()).alloc().init();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1803 try {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1804 freeRuns();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1805 this.wrapWidth = width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1806 } finally {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1807 if (pool !is null) pool.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 37
diff changeset
1808 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1809 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1810
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1811 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1812 * Returns a string containing a concise, human-readable
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1813 * description of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1814 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1815 * @return a string representation of the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1816 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1817 public String toString () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1818 if (isDisposed()) return "TextLayout {*DISPOSED*}";
37
642f460a0908 Fixed a lot of compile errors, a "hello world" app compiles now
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 36
diff changeset
1819 return "TextLayout {" ~ text ~ "}";
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1820 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1821
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1822 /*
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1823 * Translate a client offset to an internal offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1824 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1825 int translateOffset (int offset) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1826 return offset;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1827 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1828
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1829 /*
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1830 * Translate an internal offset to a client offset
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1831 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1832 int untranslateOffset (int offset) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1833 return offset;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1834 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1835
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1836 }