List of usage examples for java.awt.geom Rectangle2D OUT_LEFT
int OUT_LEFT
To view the source code for java.awt.geom Rectangle2D OUT_LEFT.
Click Source Link
From source file:LineUtilities.java
/** * Clips the specified line to the given rectangle. * * @param line the line (<code>null</code> not permitted). * @param rect the clipping rectangle (<code>null</code> not permitted). * * @return <code>true</code> if the clipped line is visible, and * <code>false</code> otherwise. *///from w w w .j a va2 s.c o m public static boolean clipLine(Line2D line, Rectangle2D rect) { double x1 = line.getX1(); double y1 = line.getY1(); double x2 = line.getX2(); double y2 = line.getY2(); double minX = rect.getMinX(); double maxX = rect.getMaxX(); double minY = rect.getMinY(); double maxY = rect.getMaxY(); int f1 = rect.outcode(x1, y1); int f2 = rect.outcode(x2, y2); while ((f1 | f2) != 0) { if ((f1 & f2) != 0) { return false; } double dx = (x2 - x1); double dy = (y2 - y1); // update (x1, y1), (x2, y2) and f1 and f2 using intersections // then recheck if (f1 != 0) { // first point is outside, so we update it against one of the // four sides then continue if ((f1 & Rectangle2D.OUT_LEFT) == Rectangle2D.OUT_LEFT && dx != 0.0) { y1 = y1 + (minX - x1) * dy / dx; x1 = minX; } else if ((f1 & Rectangle2D.OUT_RIGHT) == Rectangle2D.OUT_RIGHT && dx != 0.0) { y1 = y1 + (maxX - x1) * dy / dx; x1 = maxX; } else if ((f1 & Rectangle2D.OUT_BOTTOM) == Rectangle2D.OUT_BOTTOM && dy != 0.0) { x1 = x1 + (maxY - y1) * dx / dy; y1 = maxY; } else if ((f1 & Rectangle2D.OUT_TOP) == Rectangle2D.OUT_TOP && dy != 0.0) { x1 = x1 + (minY - y1) * dx / dy; y1 = minY; } f1 = rect.outcode(x1, y1); } else if (f2 != 0) { // second point is outside, so we update it against one of the // four sides then continue if ((f2 & Rectangle2D.OUT_LEFT) == Rectangle2D.OUT_LEFT && dx != 0.0) { y2 = y2 + (minX - x2) * dy / dx; x2 = minX; } else if ((f2 & Rectangle2D.OUT_RIGHT) == Rectangle2D.OUT_RIGHT && dx != 0.0) { y2 = y2 + (maxX - x2) * dy / dx; x2 = maxX; } else if ((f2 & Rectangle2D.OUT_BOTTOM) == Rectangle2D.OUT_BOTTOM && dy != 0.0) { x2 = x2 + (maxY - y2) * dx / dy; y2 = maxY; } else if ((f2 & Rectangle2D.OUT_TOP) == Rectangle2D.OUT_TOP && dy != 0.0) { x2 = x2 + (minY - y2) * dx / dy; y2 = minY; } f2 = rect.outcode(x2, y2); } } line.setLine(x1, y1, x2, y2); return true; // the line is visible - if it wasn't, we'd have // returned false from within the while loop above }
From source file:gda.gui.dv.panels.vispanels.ColourSelector.java
/** * The function that performs the histogram Drawing * //from w w w . j a v a 2s . c o m * @param raw * the raw data * @return the new data in the appropriate form */ @Override public ImageData cast(DoubleDataset raw) { dataLink = raw; if (max == null) { max = raw.max().doubleValue(); } if (min == null) { min = raw.min().doubleValue(); } ImageData result = colourCast(raw, max, min); // if old stuff exists then remove it. if (chart != null) { chart.removeAll(); } // now plot the histogram HistogramDataset histData = new HistogramDataset(); histData.addSeries("h1", raw.getData(), 100, min, max); histogram = ChartFactory.createHistogram("Histogram", "Value", "Counts", histData, PlotOrientation.VERTICAL, false, false, false); if (unconfigured == false) { this.remove(chart); } unconfigured = false; chart = new DrawChart(histogram); chart.setMouseZoomable(false); chart.setPreferredSize(new Dimension(300, 300)); chart.setMinimumSize(new Dimension(200, 200)); c.gridx = 0; c.gridy = 4; c.gridwidth = 2; this.add(chart, c); chart.addMouseListener(new MouseListener() { Double tmin = min; Double tmax = max; @Override public void mouseClicked(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { SimpleDataCoordinate coordinates = convertMouseEvent(e); if (chart.getScreenDataArea().contains(e.getX(), e.getY())) { tmin = coordinates.getX(); } else { if (chart.getScreenDataArea().outcode(e.getX(), e.getY()) != Rectangle2D.OUT_RIGHT) { // System.out.println("out of bounds"); // System.out.printf("Mouse: %d\n", e.getX()); } else { tmin = max; } } } @Override public void mouseReleased(MouseEvent e) { boolean update = false; SimpleDataCoordinate coordinates = convertMouseEvent(e); if (chart.getScreenDataArea().contains(e.getX(), e.getY())) { tmax = coordinates.getX(); update = true; } else { if (chart.getScreenDataArea().outcode(e.getX(), e.getY()) != Rectangle2D.OUT_LEFT) { // System.out.println("out of bounds"); // System.out.printf("Mouse: %d\n", e.getX()); } else { tmax = min; update = true; } } if (update && tmin != tmax) { if (tmin > tmax) { // check and correct limits Double t = tmin; tmin = tmax; tmax = t; } min = tmin; max = tmax; owner.getDataSetImage().applyColorCast(); owner.getDataSetPlot3D().applyColorCast(); owner.getDataSetImage().repaint(); } } public SimpleDataCoordinate convertMouseEvent(MouseEvent me) { return new SimpleDataCoordinate( histogram.getXYPlot().getDomainAxis().java2DToValue(me.getX(), chart.getScreenDataArea(), histogram.getXYPlot().getDomainAxisEdge()), histogram.getXYPlot().getRangeAxis().java2DToValue(me.getY(), chart.getScreenDataArea(), histogram.getXYPlot().getRangeAxisEdge())); } }); lblchart.invalidate(); lblchart.validate(); this.invalidate(); this.validate(); return result; }
From source file:org.mrgeo.utils.LongRectangle.java
public int outcode(final long x, final long y) { int outcode = 0; if (x < minX) { outcode |= Rectangle2D.OUT_LEFT; } else if (x > maxX) { outcode |= Rectangle2D.OUT_RIGHT; }/*from w w w . j a v a 2 s . c o m*/ if (y < minY) { outcode |= Rectangle2D.OUT_TOP; } else if (y > maxY) { outcode |= Rectangle2D.OUT_BOTTOM; } return outcode; }