Example usage for java.awt.geom Rectangle2D OUT_LEFT

List of usage examples for java.awt.geom Rectangle2D OUT_LEFT

Introduction

In this page you can find the example usage for java.awt.geom Rectangle2D OUT_LEFT.

Prototype

int OUT_LEFT

To view the source code for java.awt.geom Rectangle2D OUT_LEFT.

Click Source Link

Document

The bitmask that indicates that a point lies to the left of this Rectangle2D .

Usage

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;
}