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;