root / branches / v2_0_0_prep / libraries / org.gvsig.openjdk.v1_6 / src / main / java / org / gvsig / openjdk / v1_6 / sun / awt / geom / Edge.java @ 31668
History | View | Annotate | Download (3.68 KB)
1 |
/*
|
---|---|
2 |
* Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
4 |
*
|
5 |
* This code is free software; you can redistribute it and/or modify it
|
6 |
* under the terms of the GNU General Public License version 2 only, as
|
7 |
* published by the Free Software Foundation. Sun designates this
|
8 |
* particular file as subject to the "Classpath" exception as provided
|
9 |
* by Sun in the LICENSE file that accompanied this code.
|
10 |
*
|
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that
|
15 |
* accompanied this code).
|
16 |
*
|
17 |
* You should have received a copy of the GNU General Public License version
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation,
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
20 |
*
|
21 |
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
22 |
* CA 95054 USA or visit www.sun.com if you need additional information or
|
23 |
* have any questions.
|
24 |
*/
|
25 |
|
26 |
package org.gvsig.openjdk.v1_6.sun.awt.geom; |
27 |
|
28 |
final class Edge { |
29 |
static final int INIT_PARTS = 4; |
30 |
static final int GROW_PARTS = 10; |
31 |
|
32 |
Curve curve; |
33 |
int ctag;
|
34 |
int etag;
|
35 |
double activey;
|
36 |
int equivalence;
|
37 |
|
38 |
Edge(Curve c, int ctag) {
|
39 |
this(c, ctag, AreaOp.ETAG_IGNORE);
|
40 |
} |
41 |
|
42 |
Edge(Curve c, int ctag, int etag) { |
43 |
this.curve = c;
|
44 |
this.ctag = ctag;
|
45 |
this.etag = etag;
|
46 |
} |
47 |
|
48 |
public Curve getCurve() {
|
49 |
return curve;
|
50 |
} |
51 |
|
52 |
public int getCurveTag() { |
53 |
return ctag;
|
54 |
} |
55 |
|
56 |
public int getEdgeTag() { |
57 |
return etag;
|
58 |
} |
59 |
|
60 |
public void setEdgeTag(int etag) { |
61 |
this.etag = etag;
|
62 |
} |
63 |
|
64 |
public int getEquivalence() { |
65 |
return equivalence;
|
66 |
} |
67 |
|
68 |
public void setEquivalence(int eq) { |
69 |
equivalence = eq; |
70 |
} |
71 |
|
72 |
private Edge lastEdge;
|
73 |
private int lastResult; |
74 |
private double lastLimit; |
75 |
|
76 |
public int compareTo(Edge other, double yrange[]) { |
77 |
if (other == lastEdge && yrange[0] < lastLimit) { |
78 |
if (yrange[1] > lastLimit) { |
79 |
yrange[1] = lastLimit;
|
80 |
} |
81 |
return lastResult;
|
82 |
} |
83 |
if (this == other.lastEdge && yrange[0] < other.lastLimit) { |
84 |
if (yrange[1] > other.lastLimit) { |
85 |
yrange[1] = other.lastLimit;
|
86 |
} |
87 |
return 0-other.lastResult; |
88 |
} |
89 |
//long start = System.currentTimeMillis();
|
90 |
int ret = curve.compareTo(other.curve, yrange);
|
91 |
//long end = System.currentTimeMillis();
|
92 |
/*
|
93 |
System.out.println("compare: "+
|
94 |
((System.identityHashCode(this) <
|
95 |
System.identityHashCode(other))
|
96 |
? this+" to "+other
|
97 |
: other+" to "+this)+
|
98 |
" == "+ret+" at "+yrange[1]+
|
99 |
" in "+(end-start)+"ms");
|
100 |
*/
|
101 |
lastEdge = other; |
102 |
lastLimit = yrange[1];
|
103 |
lastResult = ret; |
104 |
return ret;
|
105 |
} |
106 |
|
107 |
public void record(double yend, int etag) { |
108 |
this.activey = yend;
|
109 |
this.etag = etag;
|
110 |
} |
111 |
|
112 |
public boolean isActiveFor(double y, int etag) { |
113 |
return (this.etag == etag && this.activey >= y); |
114 |
} |
115 |
|
116 |
public String toString() { |
117 |
return ("Edge["+curve+ |
118 |
", "+
|
119 |
(ctag == AreaOp.CTAG_LEFT ? "L" : "R")+ |
120 |
", "+
|
121 |
(etag == AreaOp.ETAG_ENTER ? "I" :
|
122 |
(etag == AreaOp.ETAG_EXIT ? "O" : "N"))+ |
123 |
"]");
|
124 |
} |
125 |
} |