src/share/classes/sun/awt/geom/AreaOp.java
Print this page
rev 9717 : 8039642: Fix raw and unchecked warnings in sun.awt.*
Reviewed-by:
*** 150,189 ****
public abstract int classify(Edge e);
public abstract int getState();
! public Vector calculate(Vector left, Vector right) {
! Vector edges = new Vector();
addEdges(edges, left, AreaOp.CTAG_LEFT);
addEdges(edges, right, AreaOp.CTAG_RIGHT);
! edges = pruneEdges(edges);
if (false) {
System.out.println("result: ");
! int numcurves = edges.size();
! Curve[] curvelist = (Curve[]) edges.toArray(new Curve[numcurves]);
for (int i = 0; i < numcurves; i++) {
System.out.println("curvelist["+i+"] = "+curvelist[i]);
}
}
! return edges;
}
! private static void addEdges(Vector edges, Vector curves, int curvetag) {
! Enumeration enum_ = curves.elements();
while (enum_.hasMoreElements()) {
! Curve c = (Curve) enum_.nextElement();
if (c.getOrder() > 0) {
edges.add(new Edge(c, curvetag));
}
}
}
! private static Comparator YXTopComparator = new Comparator() {
! public int compare(Object o1, Object o2) {
! Curve c1 = ((Edge) o1).getCurve();
! Curve c2 = ((Edge) o2).getCurve();
double v1, v2;
if ((v1 = c1.getYTop()) == (v2 = c2.getYTop())) {
if ((v1 = c1.getXTop()) == (v2 = c2.getXTop())) {
return 0;
}
--- 150,189 ----
public abstract int classify(Edge e);
public abstract int getState();
! public Vector<Curve> calculate(Vector<Curve> left, Vector<Curve> right) {
! Vector<Edge> edges = new Vector<>();
addEdges(edges, left, AreaOp.CTAG_LEFT);
addEdges(edges, right, AreaOp.CTAG_RIGHT);
! Vector<Curve> curves = pruneEdges(edges);
if (false) {
System.out.println("result: ");
! int numcurves = curves.size();
! Curve[] curvelist = curves.toArray(new Curve[numcurves]);
for (int i = 0; i < numcurves; i++) {
System.out.println("curvelist["+i+"] = "+curvelist[i]);
}
}
! return curves;
}
! private static void addEdges(Vector<Edge> edges, Vector<Curve> curves, int curvetag) {
! Enumeration<Curve> enum_ = curves.elements();
while (enum_.hasMoreElements()) {
! Curve c = enum_.nextElement();
if (c.getOrder() > 0) {
edges.add(new Edge(c, curvetag));
}
}
}
! private static Comparator<Edge> YXTopComparator = new Comparator<Edge>() {
! public int compare(Edge o1, Edge o2) {
! Curve c1 = o1.getCurve();
! Curve c2 = o2.getCurve();
double v1, v2;
if ((v1 = c1.getYTop()) == (v2 = c2.getYTop())) {
if ((v1 = c1.getXTop()) == (v2 = c2.getXTop())) {
return 0;
}
*** 193,208 ****
}
return 1;
}
};
! private Vector pruneEdges(Vector edges) {
int numedges = edges.size();
if (numedges < 2) {
! return edges;
}
! Edge[] edgelist = (Edge[]) edges.toArray(new Edge[numedges]);
Arrays.sort(edgelist, YXTopComparator);
if (false) {
System.out.println("pruning: ");
for (int i = 0; i < numedges; i++) {
System.out.println("edgelist["+i+"] = "+edgelist[i]);
--- 193,212 ----
}
return 1;
}
};
! private Vector<Curve> pruneEdges(Vector<Edge> edges) {
int numedges = edges.size();
if (numedges < 2) {
! Vector<Curve> rt = new Vector<>();
! for (Edge edge: edges) {
! rt.add(edge.getCurve());
}
! return rt;
! }
! Edge[] edgelist = edges.toArray(new Edge[numedges]);
Arrays.sort(edgelist, YXTopComparator);
if (false) {
System.out.println("pruning: ");
for (int i = 0; i < numedges; i++) {
System.out.println("edgelist["+i+"] = "+edgelist[i]);
*** 212,224 ****
int left = 0;
int right = 0;
int cur = 0;
int next = 0;
double yrange[] = new double[2];
! Vector subcurves = new Vector();
! Vector chains = new Vector();
! Vector links = new Vector();
// Active edges are between left (inclusive) and right (exclusive)
while (left < numedges) {
double y = yrange[0];
// Prune active edges that fall off the top of the active y range
for (cur = next = right - 1; cur >= left; cur--) {
--- 216,228 ----
int left = 0;
int right = 0;
int cur = 0;
int next = 0;
double yrange[] = new double[2];
! Vector<CurveLink> subcurves = new Vector<>();
! Vector<ChainEnd> chains = new Vector<>();
! Vector<CurveLink> links = new Vector<>();
// Active edges are between left (inclusive) and right (exclusive)
while (left < numedges) {
double y = yrange[0];
// Prune active edges that fall off the top of the active y range
for (cur = next = right - 1; cur >= left; cur--) {
*** 383,407 ****
}
}
if (false) {
System.out.println("new links:");
for (int i = 0; i < links.size(); i++) {
! CurveLink link = (CurveLink) links.elementAt(i);
System.out.println(" "+link.getSubCurve());
}
}
resolveLinks(subcurves, chains, links);
links.clear();
// Finally capture the bottom of the valid Y range as the top
// of the next Y range.
yrange[0] = yend;
}
finalizeSubCurves(subcurves, chains);
! Vector ret = new Vector();
! Enumeration enum_ = subcurves.elements();
while (enum_.hasMoreElements()) {
! CurveLink link = (CurveLink) enum_.nextElement();
ret.add(link.getMoveto());
CurveLink nextlink = link;
while ((nextlink = nextlink.getNext()) != null) {
if (!link.absorb(nextlink)) {
ret.add(link.getSubCurve());
--- 387,411 ----
}
}
if (false) {
System.out.println("new links:");
for (int i = 0; i < links.size(); i++) {
! CurveLink link = links.elementAt(i);
System.out.println(" "+link.getSubCurve());
}
}
resolveLinks(subcurves, chains, links);
links.clear();
// Finally capture the bottom of the valid Y range as the top
// of the next Y range.
yrange[0] = yend;
}
finalizeSubCurves(subcurves, chains);
! Vector<Curve> ret = new Vector<>();
! Enumeration<CurveLink> enum_ = subcurves.elements();
while (enum_.hasMoreElements()) {
! CurveLink link = enum_.nextElement();
ret.add(link.getMoveto());
CurveLink nextlink = link;
while ((nextlink = nextlink.getNext()) != null) {
if (!link.absorb(nextlink)) {
ret.add(link.getSubCurve());
*** 411,421 ****
ret.add(link.getSubCurve());
}
return ret;
}
! public static void finalizeSubCurves(Vector subcurves, Vector chains) {
int numchains = chains.size();
if (numchains == 0) {
return;
}
if ((numchains & 1) != 0) {
--- 415,426 ----
ret.add(link.getSubCurve());
}
return ret;
}
! public static void finalizeSubCurves(Vector<CurveLink> subcurves,
! Vector<ChainEnd> chains) {
int numchains = chains.size();
if (numchains == 0) {
return;
}
if ((numchains & 1) != 0) {
*** 435,447 ****
}
private static CurveLink[] EmptyLinkList = new CurveLink[2];
private static ChainEnd[] EmptyChainList = new ChainEnd[2];
! public static void resolveLinks(Vector subcurves,
! Vector chains,
! Vector links)
{
int numlinks = links.size();
CurveLink[] linklist;
if (numlinks == 0) {
linklist = EmptyLinkList;
--- 440,452 ----
}
private static CurveLink[] EmptyLinkList = new CurveLink[2];
private static ChainEnd[] EmptyChainList = new ChainEnd[2];
! public static void resolveLinks(Vector<CurveLink> subcurves,
! Vector<ChainEnd> chains,
! Vector<CurveLink> links)
{
int numlinks = links.size();
CurveLink[] linklist;
if (numlinks == 0) {
linklist = EmptyLinkList;