annotate dwtx/jface/util/Geometry.d @ 192:c3583c6ec027

Added missing default cases for switch statements
author Frank Benoit <benoit@tionex.de>
date Mon, 03 Nov 2008 22:52:26 +0100
parents 46a6e0e6ccd4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 40
diff changeset
2 * Copyright (c) 2004, 2007 IBM Corporation and others.
4
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.util.Geometry;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwt.DWT;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwt.graphics.Point;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.graphics.Rectangle;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.widgets.Control;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.dwthelper.utils;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 * Contains static methods for performing simple geometric operations
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 * on the DWT geometry classes.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 public class Geometry {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 * Prevent this class from being instantiated.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 private this() {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 //This is not instantiated
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * Returns the square of the distance between two points.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * <p>This is preferred over the real distance when searching
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * for the closest point, since it avoids square roots.</p>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * @param p1 first endpoint
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * @param p2 second endpoint
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * @return the square of the distance between the two points
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 public static int distanceSquared(Point p1, Point p2) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 int term1 = p1.x - p2.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 int term2 = p1.y - p2.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 return term1 * term1 + term2 * term2;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 * Returns the magnitude of the given 2d vector (represented as a Point)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 * @param p point representing the 2d vector whose magnitude is being computed
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 * @return the magnitude of the given 2d vector
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 public static double magnitude(Point p) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 return Math.sqrt( cast(real) magnitudeSquared(p));
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * Returns the square of the magnitude of the given 2-space vector (represented
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * using a point)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * @param p the point whose magnitude is being computed
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * @return the square of the magnitude of the given vector
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 public static int magnitudeSquared(Point p) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 return p.x * p.x + p.y * p.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * Returns the dot product of the given vectors (expressed as Points)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * @param p1 the first vector
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * @param p2 the second vector
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * @return the dot product of the two vectors
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 public static int dotProduct(Point p1, Point p2) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 return p1.x * p2.x + p1.y * p2.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * Returns a new point whose coordinates are the minimum of the coordinates of the
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 * given points
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * @param p1 a Point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 * @param p2 a Point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 * @return a new point whose coordinates are the minimum of the coordinates of the
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 * given points
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 public static Point min(Point p1, Point p2) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 return new Point(Math.min(p1.x, p2.x), Math.min(p1.y, p2.y));
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 * Returns a new point whose coordinates are the maximum of the coordinates
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 * of the given points
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * @param p1 a Point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * @param p2 a Point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * @return point a new point whose coordinates are the maximum of the coordinates
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 public static Point max(Point p1, Point p2) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 return new Point(Math.max(p1.x, p2.x), Math.max(p1.y, p2.y));
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 * Returns a vector in the given direction with the given
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 * magnitude. Directions are given using DWT direction constants, and
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 * the resulting vector is in the screen's coordinate system. That is,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 * the vector (0, 1) is down and the vector (1, 0) is right.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * @param distance magnitude of the vector
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 * @param direction one of DWT.TOP, DWT.BOTTOM, DWT.LEFT, or DWT.RIGHT
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * @return a point representing a vector in the given direction with the given magnitude
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 public static Point getDirectionVector(int distance, int direction) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 switch (direction) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 case DWT.TOP:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 return new Point(0, -distance);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 case DWT.BOTTOM:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 return new Point(0, distance);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 case DWT.LEFT:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 return new Point(-distance, 0);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 case DWT.RIGHT:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 return new Point(distance, 0);
192
c3583c6ec027 Added missing default cases for switch statements
Frank Benoit <benoit@tionex.de>
parents: 70
diff changeset
138 default:
4
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 return new Point(0, 0);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 * Returns the point in the center of the given rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 * @param rect rectangle being computed
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 * @return a Point at the center of the given rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 public static Point centerPoint(Rectangle rect) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 return new Point(rect.x + rect.width / 2, rect.y + rect.height / 2);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 * Returns a copy of the given point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 * @param toCopy point to copy
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 * @return a copy of the given point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 public static Point copy(Point toCopy) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 return new Point(toCopy.x, toCopy.y);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 * Sets result equal to toCopy
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 * @param result object that will be modified
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 * @param toCopy object that will be copied
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 public static void set(Point result, Point toCopy) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 result.x = toCopy.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 result.y = toCopy.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 * Sets result equal to toCopy
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 * @param result object that will be modified
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 * @param toCopy object that will be copied
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 public static void set(Rectangle result, Rectangle toCopy) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 result.x = toCopy.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 result.y = toCopy.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 result.width = toCopy.width;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 result.height = toCopy.height;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 * <p>Returns a new difference Rectangle whose x, y, width, and height are equal to the difference of the corresponding
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 * attributes from the given rectangles</p>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 * <p></p>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 * <b>Example: Compute the margins for a given Composite, and apply those same margins to a new GridLayout</b>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 * <code><pre>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 * // Compute the client area, in the coordinate system of the input composite's parent
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 * Rectangle clientArea = Display.getCurrent().map(inputComposite,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 * inputComposite.getParent(), inputComposite.getClientArea());
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 * // Compute the margins for a given Composite by subtracting the client area from the composite's bounds
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 * Rectangle margins = Geometry.subtract(inputComposite.getBounds(), clientArea);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 * // Now apply these margins to a new GridLayout
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 * GridLayout layout = GridLayoutFactory.fillDefaults().margins(margins).create();
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 * </pre></code>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 * @param rect1 first rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 * @param rect2 rectangle to subtract
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 * @return the difference between the two rectangles (computed as rect1 - rect2)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 * @since 3.3
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 public static Rectangle subtract(Rectangle rect1, Rectangle rect2) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 return new Rectangle(rect1.x - rect2.x, rect1.y - rect2.y, rect1.width - rect2.width, rect1.height - rect2.height);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 * <p>Returns a new Rectangle whose x, y, width, and height is the sum of the x, y, width, and height values of
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 * both rectangles respectively.</p>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 * @param rect1 first rectangle to add
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 * @param rect2 second rectangle to add
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 * @return a new rectangle whose x, y, height, and width attributes are the sum of the corresponding attributes from
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 * the arguments.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 * @since 3.3
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 public static Rectangle add(Rectangle rect1, Rectangle rect2) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 return new Rectangle(rect1.x + rect2.x, rect1.y + rect2.y,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 rect1.width + rect2.width, rect1.height + rect2.height);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 * Adds two points as 2d vectors. Returns a new point whose coordinates are
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 * the sum of the original two points.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 * @param point1 the first point (not null)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 * @param point2 the second point (not null)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 * @return a new point whose coordinates are the sum of the given points
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 public static Point add(Point point1, Point point2) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 return new Point(point1.x + point2.x, point1.y + point2.y);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 * Divides both coordinates of the given point by the given scalar.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 * @param toDivide point to divide
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 * @param scalar denominator
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 * @return a new Point whose coordinates are equal to the original point divided by the scalar
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 public static Point divide(Point toDivide, int scalar) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 return new Point(toDivide.x / scalar, toDivide.y / scalar);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 * Performs vector subtraction on two points. Returns a new point equal to
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 * (point1 - point2).
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 * @param point1 initial point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 * @param point2 vector to subtract
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 * @return the difference (point1 - point2)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 public static Point subtract(Point point1, Point point2) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 return new Point(point1.x - point2.x, point1.y - point2.y);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 * Swaps the X and Y coordinates of the given point.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 * @param toFlip modifies this point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 public static void flipXY(Point toFlip) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 int temp = toFlip.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 toFlip.x = toFlip.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 toFlip.y = temp;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 * Swaps the X and Y coordinates of the given rectangle, along with the height and width.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 * @param toFlip modifies this rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 public static void flipXY(Rectangle toFlip) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 int temp = toFlip.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 toFlip.x = toFlip.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 toFlip.y = temp;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 temp = toFlip.width;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 toFlip.width = toFlip.height;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 toFlip.height = temp;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 * Returns the height or width of the given rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 * @param toMeasure rectangle to measure
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 * @param width returns the width if true, and the height if false
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 * @return the width or height of the given rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 public static int getDimension(Rectangle toMeasure, bool width) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 if (width) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 return toMeasure.width;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 return toMeasure.height;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 * Returns the x or y coordinates of the given point.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 * @param toMeasure point being measured
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 * @param width if true, returns x. Otherwise, returns y.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 * @return the x or y coordinate
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 public static int getCoordinate(Point toMeasure, bool width) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 return width ? toMeasure.x : toMeasure.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 * Returns the x or y coordinates of the given rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 * @param toMeasure rectangle being measured
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 * @param width if true, returns x. Otherwise, returns y.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 * @return the x or y coordinate
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 public static int getCoordinate(Rectangle toMeasure, bool width) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 return width ? toMeasure.x : toMeasure.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 * Sets one dimension of the given rectangle. Modifies the given rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 * @param toSet rectangle to modify
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 * @param width if true, the width is modified. If false, the height is modified.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 * @param newCoordinate new value of the width or height
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 public static void setDimension(Rectangle toSet, bool width, int newCoordinate) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 if (width) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 toSet.width = newCoordinate;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 } else {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 toSet.height = newCoordinate;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 * Sets one coordinate of the given rectangle. Modifies the given rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 * @param toSet rectangle to modify
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 * @param width if true, the x coordinate is modified. If false, the y coordinate is modified.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 * @param newCoordinate new value of the x or y coordinates
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 public static void setCoordinate(Rectangle toSet, bool width, int newCoordinate) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 if (width) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 toSet.x = newCoordinate;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 } else {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 toSet.y = newCoordinate;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 * Sets one coordinate of the given point. Modifies the given point.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 * @param toSet point to modify
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 * @param width if true, the x coordinate is modified. If false, the y coordinate is modified.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 * @param newCoordinate new value of the x or y coordinates
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 public static void setCoordinate(Point toSet, bool width, int newCoordinate) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 if (width) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 toSet.x = newCoordinate;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 } else {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 toSet.y = newCoordinate;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 * Returns the distance of the given point from a particular side of the given rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 * Returns negative values for points outside the rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 * @param rectangle a bounding rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 * @param testPoint a point to test
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 * @param edgeOfInterest side of the rectangle to test against
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 * @return the distance of the given point from the given edge of the rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 public static int getDistanceFromEdge(Rectangle rectangle, Point testPoint,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 int edgeOfInterest) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 switch (edgeOfInterest) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 case DWT.TOP:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 return testPoint.y - rectangle.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 case DWT.BOTTOM:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 return rectangle.y + rectangle.height - testPoint.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 case DWT.LEFT:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 return testPoint.x - rectangle.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 case DWT.RIGHT:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 return rectangle.x + rectangle.width - testPoint.x;
192
c3583c6ec027 Added missing default cases for switch statements
Frank Benoit <benoit@tionex.de>
parents: 70
diff changeset
410 default:
4
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 return 0;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 * Extrudes the given edge inward by the given distance. That is, if one side of the rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 * was sliced off with a given thickness, this returns the rectangle that forms the slice. Note
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 * that the returned rectangle will be inside the given rectangle if size > 0.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 * @param toExtrude the rectangle to extrude. The resulting rectangle will share three sides
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 * with this rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 * @param size distance to extrude. A negative size will extrude outwards (that is, the resulting
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 * rectangle will overlap the original iff this is positive).
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 * @param orientation the side to extrude. One of DWT.LEFT, DWT.RIGHT, DWT.TOP, or DWT.BOTTOM. The
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 * resulting rectangle will always share this side with the original rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 * @return a rectangle formed by extruding the given side of the rectangle by the given distance.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 public static Rectangle getExtrudedEdge(Rectangle toExtrude, int size,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 int orientation) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 Rectangle bounds = new Rectangle(toExtrude.x, toExtrude.y,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 toExtrude.width, toExtrude.height);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 if (!isHorizontal(orientation)) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 bounds.width = size;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 } else {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 bounds.height = size;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 switch (orientation) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 case DWT.RIGHT:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 bounds.x = toExtrude.x + toExtrude.width - bounds.width;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444 break;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 case DWT.BOTTOM:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 bounds.y = toExtrude.y + toExtrude.height - bounds.height;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 break;
192
c3583c6ec027 Added missing default cases for switch statements
Frank Benoit <benoit@tionex.de>
parents: 70
diff changeset
448 default:
4
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 normalize(bounds);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 return bounds;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457 * Returns the opposite of the given direction. That is, returns DWT.LEFT if
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458 * given DWT.RIGHT and visa-versa.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 * @param swtDirectionConstant one of DWT.LEFT, DWT.RIGHT, DWT.TOP, or DWT.BOTTOM
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461 * @return one of DWT.LEFT, DWT.RIGHT, DWT.TOP, or DWT.BOTTOM
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 public static int getOppositeSide(int swtDirectionConstant) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 switch (swtDirectionConstant) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 case DWT.TOP:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 return DWT.BOTTOM;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 case DWT.BOTTOM:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 return DWT.TOP;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 case DWT.LEFT:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 return DWT.RIGHT;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 case DWT.RIGHT:
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 return DWT.LEFT;
192
c3583c6ec027 Added missing default cases for switch statements
Frank Benoit <benoit@tionex.de>
parents: 70
diff changeset
474 default:
4
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 return swtDirectionConstant;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 * Converts the given bool into an DWT orientation constant.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 * @param horizontal if true, returns DWT.HORIZONTAL. If false, returns DWT.VERTICAL
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 * @return DWT.HORIZONTAL or DWT.VERTICAL.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 public static int getSwtHorizontalOrVerticalConstant(bool horizontal) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 if (horizontal) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 return DWT.HORIZONTAL;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 return DWT.VERTICAL;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 * Returns true iff the given DWT side constant corresponds to a horizontal side
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 * of a rectangle. That is, returns true for the top and bottom but false for the
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 * left and right.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 * @param swtSideConstant one of DWT.TOP, DWT.BOTTOM, DWT.LEFT, or DWT.RIGHT
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 * @return true iff the given side is horizontal.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 public static bool isHorizontal(int swtSideConstant) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504 return !(swtSideConstant is DWT.LEFT || swtSideConstant is DWT.RIGHT);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 * Moves the given rectangle by the given delta.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 * @param rect rectangle to move (will be modified)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 * @param delta direction vector to move the rectangle by
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 public static void moveRectangle(Rectangle rect, Point delta) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 rect.x += delta.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 rect.y += delta.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520 * Moves each edge of the given rectangle outward by the given amount. Negative values
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521 * cause the rectangle to contract. Does not allow the rectangle's width or height to be
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 * reduced below zero.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 * @param rect normalized rectangle to modify
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525 * @param differenceRect difference rectangle to be added to rect
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 * @since 3.3
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 public static void expand(Rectangle rect, Rectangle differenceRect) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 rect.x += differenceRect.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 rect.y += differenceRect.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531 rect.height = Math.max(0, rect.height + differenceRect.height);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 rect.width = Math.max(0, rect.width + differenceRect.width);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 * <p>Returns a rectangle which, when added to another rectangle, will expand each side
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 * by the given number of units.</p>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 * <p>This is commonly used to store margin sizes. For example:</p>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 * <code><pre>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 * // Expands the left, right, top, and bottom
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 * // of the given control by 10, 5, 1, and 15 units respectively
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 * Rectangle margins = Geometry.createDifferenceRect(10,5,1,15);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546 * Rectangle bounds = someControl.getBounds();
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 * someControl.setBounds(Geometry.add(bounds, margins));
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 * </pre></code>
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 * @param left distance to expand the left side (negative values move the edge inward)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 * @param right distance to expand the right side (negative values move the edge inward)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 * @param top distance to expand the top (negative values move the edge inward)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 * @param bottom distance to expand the bottom (negative values move the edge inward)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555 * @return a difference rectangle that, when added to another rectangle, will cause each
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 * side to expand by the given number of units
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 * @since 3.3
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 public static Rectangle createDiffRectangle(int left, int right, int top, int bottom) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 return new Rectangle(-left, -top, left + right, top + bottom);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 * Moves each edge of the given rectangle outward by the given amount. Negative values
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 * cause the rectangle to contract. Does not allow the rectangle's width or height to be
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 * reduced below zero.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 * @param rect normalized rectangle to modify
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 * @param left distance to move the left edge outward (negative values move the edge inward)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 * @param right distance to move the right edge outward (negative values move the edge inward)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 * @param top distance to move the top edge outward (negative values move the edge inward)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 * @param bottom distance to move the bottom edge outward (negative values move the edge inward)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 public static void expand(Rectangle rect, int left, int right, int top, int bottom) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
576 rect.x -= left;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 rect.width = Math.max(0, rect.width + left + right);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 rect.y -= top;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 rect.height = Math.max(0, rect.height + top + bottom);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 * Normalizes the given rectangle. That is, any rectangle with
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 * negative width or height becomes a rectangle with positive
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 * width or height that extends to the upper-left of the original
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 * rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 * @param rect rectangle to modify
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 public static void normalize(Rectangle rect) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 if (rect.width < 0) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 rect.width = -rect.width;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 rect.x -= rect.width;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597 if (rect.height < 0) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 rect.height = -rect.height;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 rect.y -= rect.height;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
603 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
604 * Converts the given rectangle from display coordinates to the local coordinate system
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
605 * of the given object into display coordinates.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607 * @param coordinateSystem local coordinate system being converted to
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608 * @param toConvert rectangle to convert
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609 * @return a rectangle in control coordinates
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612 public static Rectangle toControl(Control coordinateSystem,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 Rectangle toConvert) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614 return(coordinateSystem.getDisplay().map
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 (null,coordinateSystem,toConvert));
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 * Converts the given rectangle from the local coordinate system of the given object
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 * into display coordinates.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
622 * @param coordinateSystem local coordinate system being converted from
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 * @param toConvert rectangle to convert
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 * @return a rectangle in display coordinates
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 public static Rectangle toDisplay(Control coordinateSystem,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 Rectangle toConvert) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 return(coordinateSystem.getDisplay().map
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630 (coordinateSystem,null,toConvert));
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 * Determines where the given point lies with respect to the given rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 * Returns a combination of DWT.LEFT, DWT.RIGHT, DWT.TOP, and DWT.BOTTOM, combined
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 * with bitwise or (for example, returns DWT.TOP | DWT.LEFT if the point is to the
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638 * upper-left of the rectangle). Returns 0 if the point lies within the rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 * Positions are in screen coordinates (ie: a point is to the upper-left of the
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 * rectangle if its x and y coordinates are smaller than any point in the rectangle)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 * @param boundary normalized boundary rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 * @param toTest point whose relative position to the rectangle is being computed
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 * @return one of DWT.LEFT | DWT.TOP, DWT.TOP, DWT.RIGHT | DWT.TOP, DWT.LEFT, 0,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 * DWT.RIGHT, DWT.LEFT | DWT.BOTTOM, DWT.BOTTOM, DWT.RIGHT | DWT.BOTTOM
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 public static int getRelativePosition(Rectangle boundary, Point toTest) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 int result = 0;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 if (toTest.x < boundary.x) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 result |= DWT.LEFT;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 } else if (toTest.x >= boundary.x + boundary.width) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654 result |= DWT.RIGHT;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657 if (toTest.y < boundary.y) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 result |= DWT.TOP;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
659 } else if (toTest.y >= boundary.y + boundary.height) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
660 result |= DWT.BOTTOM;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
661 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 return result;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 * Returns the distance from the point to the nearest edge of the given
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668 * rectangle. Returns negative values if the point lies outside the rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 * @param boundary rectangle to test
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671 * @param toTest point to test
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 * @return the distance between the given point and the nearest edge of the rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 * Returns positive values for points inside the rectangle and negative values for points
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674 * outside the rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
675 * @since 3.1
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
677 public static int getDistanceFrom(Rectangle boundary, Point toTest) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 int side = getClosestSide(boundary, toTest);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679 return getDistanceFromEdge(boundary, toTest, side);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
680 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
681
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
682 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
683 * Returns the edge of the given rectangle is closest to the given
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
684 * point.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
685 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
686 * @param boundary rectangle to test
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
687 * @param toTest point to compare
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
688 * @return one of DWT.LEFT, DWT.RIGHT, DWT.TOP, or DWT.BOTTOM
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
689 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
690 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
691 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
692 public static int getClosestSide(Rectangle boundary, Point toTest) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693 int[] sides = [ DWT.LEFT, DWT.RIGHT, DWT.TOP, DWT.BOTTOM ];
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695 int closestSide = DWT.LEFT;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 int closestDistance = Integer.MAX_VALUE;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698 for (int idx = 0; idx < sides.length; idx++) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 int side = sides[idx];
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701 int distance = getDistanceFromEdge(boundary, toTest, side);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 if (distance < closestDistance) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 closestDistance = distance;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 closestSide = side;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 return closestSide;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 * Returns a copy of the given rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
714 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 * @param toCopy rectangle to copy
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
716 * @return a copy of the given rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719 public static Rectangle copy(Rectangle toCopy) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720 return new Rectangle(toCopy.x, toCopy.y, toCopy.width, toCopy.height);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
723 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 * Returns the size of the rectangle, as a Point
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 * @param rectangle rectangle whose size is being computed
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 * @return the size of the given rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
729 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730 public static Point getSize(Rectangle rectangle) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
731 return new Point(rectangle.width, rectangle.height);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
732 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
733
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
734 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
735 * Sets the size of the given rectangle to the given size
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
736 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
737 * @param rectangle rectangle to modify
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
738 * @param newSize new size of the rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
739 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
740 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
741 public static void setSize(Rectangle rectangle, Point newSize) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
742 rectangle.width = newSize.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
743 rectangle.height = newSize.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
744 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
745
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
746 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
747 * Sets the x,y position of the given rectangle. For a normalized
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
748 * rectangle (a rectangle with positive width and height), this will
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
749 * be the upper-left corner of the rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
750 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
751 * @param rectangle rectangle to modify
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 40
diff changeset
752 * @param newLocation new location of the rectangle
4
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
753 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
754 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
755 */
70
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 40
diff changeset
756 public static void setLocation(Rectangle rectangle, Point newLocation) {
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 40
diff changeset
757 rectangle.x = newLocation.x;
46a6e0e6ccd4 Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 40
diff changeset
758 rectangle.y = newLocation.y;
4
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
759 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
760
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
761 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
762 * Returns the x,y position of the given rectangle. For normalized rectangles
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
763 * (rectangles with positive width and height), this is the upper-left
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
764 * corner of the rectangle.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
765 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
766 * @param toQuery rectangle to query
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
767 * @return a Point containing the x,y position of the rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
768 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
769 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
770 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
771 public static Point getLocation(Rectangle toQuery) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
772 return new Point(toQuery.x, toQuery.y);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
773 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
774
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
775 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
776 * Returns a new rectangle with the given position and dimensions, expressed
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
777 * as points.
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
778 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
779 * @param position the (x,y) position of the rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
780 * @param size the size of the new rectangle, where (x,y) -> (width, height)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
781 * @return a new Rectangle with the given position and size
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
782 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
783 * @since 3.0
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
784 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
785 public static Rectangle createRectangle(Point position, Point size) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
786 return new Rectangle(position.x, position.y, size.x, size.y);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
787 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
788
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
789 /**
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
790 * Repositions the 'inner' rectangle to lie completely within the bounds of the 'outer'
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
791 * rectangle if possible. One use for this is to ensure that, when setting a control's bounds,
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
792 * that they will always lie within its parent's client area (to avoid clipping).
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
793 *
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
794 * @param inner The 'inner' rectangle to be repositioned (should be smaller than the 'outer' rectangle)
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
795 * @param outer The 'outer' rectangle
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
796 */
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
797 public static void moveInside(Rectangle inner, Rectangle outer) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
798 // adjust X
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
799 if (inner.x < outer.x) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
800 inner.x = outer.x;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
801 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
802 if ((inner.x + inner.width) > (outer.x + outer.width)) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
803 inner.x -= (inner.x + inner.width) - (outer.x + outer.width);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
804 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
805
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
806 // Adjust Y
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
807 if (inner.y < outer.y) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
808 inner.y = outer.y;
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
809 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
810 if ((inner.y + inner.height) > (outer.y + outer.height)) {
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
811 inner.y -= (inner.y + inner.height) - (outer.y + outer.height);
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
812 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
813 }
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
814
c87617952847 some JFace modules
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
815 }