⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xyplot.java

📁 这是一个segy数据显示程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
     */    public void addRangeMarker(int index, Marker marker, Layer layer) {        Collection markers;        if (layer == Layer.FOREGROUND) {            markers = (Collection) this.foregroundRangeMarkers.get(new Integer(index));            if (markers == null) {                markers = new java.util.ArrayList();                this.foregroundRangeMarkers.put(new Integer(index), markers);            }            markers.add(marker);        }        else if (layer == Layer.BACKGROUND) {            markers = (Collection) this.backgroundRangeMarkers.get(new Integer(index));            if (markers == null) {                markers = new java.util.ArrayList();                this.backgroundRangeMarkers.put(new Integer(index), markers);            }            markers.add(marker);                    }        notifyListeners(new PlotChangeEvent(this));    }    /**     * Clears the (foreground and background) range markers for a particular renderer.     *      * @param index  the renderer index.     */    public void clearRangeMarkers(int index) {        Integer key = new Integer(index);        if (this.backgroundRangeMarkers != null) {            Collection markers = (Collection) this.backgroundRangeMarkers.get(key);            if (markers != null) {                markers.clear();            }        }        if (this.foregroundRangeMarkers != null) {            Collection markers = (Collection) this.foregroundRangeMarkers.get(key);            if (markers != null) {                markers.clear();            }        }        notifyListeners(new PlotChangeEvent(this));    }    /**     * Adds an annotation to the plot and sends a {@link PlotChangeEvent} to all     * registered listeners.     *     * @param annotation  the annotation (<code>null</code> not permitted).     */    public void addAnnotation(XYAnnotation annotation) {        if (annotation == null) {            throw new IllegalArgumentException("Null 'annotation' argument.");              }        if (this.annotations == null) {            this.annotations = new java.util.ArrayList();        }        this.annotations.add(annotation);        notifyListeners(new PlotChangeEvent(this));    }    /**     * Clears all the annotations and sends a {@link PlotChangeEvent} to all registered     * listeners.     */    public void clearAnnotations() {        if (this.annotations != null) {            this.annotations.clear();            notifyListeners(new PlotChangeEvent(this));        }    }    /**     * Calculates the space required for all the axes in the plot.     *     * @param g2  the graphics device.     * @param plotArea  the plot area.     *     * @return The required space.     */    protected AxisSpace calculateAxisSpace(Graphics2D g2, Rectangle2D plotArea) {        AxisSpace space = new AxisSpace();        space = calculateDomainAxisSpace(g2, plotArea, space);        space = calculateRangeAxisSpace(g2, plotArea, space);        return space;    }    /**     * Calculates the space required for the domain axis/axes.     *     * @param g2  the graphics device.     * @param plotArea  the plot area.     * @param space  a carrier for the result (<code>null</code> permitted).     *     * @return  The required space.     */    protected AxisSpace calculateDomainAxisSpace(Graphics2D g2, Rectangle2D plotArea,                                                 AxisSpace space) {        if (space == null) {            space = new AxisSpace();        }        // reserve some space for the domain axis...        if (this.fixedDomainAxisSpace != null) {            if (this.orientation == PlotOrientation.HORIZONTAL) {                space.ensureAtLeast(this.fixedDomainAxisSpace.getLeft(), RectangleEdge.LEFT);                space.ensureAtLeast(this.fixedDomainAxisSpace.getRight(), RectangleEdge.RIGHT);            }            else if (this.orientation == PlotOrientation.VERTICAL) {                space.ensureAtLeast(this.fixedDomainAxisSpace.getTop(), RectangleEdge.TOP);                space.ensureAtLeast(this.fixedDomainAxisSpace.getBottom(), RectangleEdge.BOTTOM);            }        }        else {            // reserve space for the domain axes...            for (int i = 0; i < this.domainAxes.size(); i++) {                Axis axis = (Axis) this.domainAxes.get(i);                if (axis != null) {                    RectangleEdge edge = getDomainAxisEdge(i);                    space = axis.reserveSpace(g2, this, plotArea, edge, space);                }            }        }        return space;    }    /**     * Calculates the space required for the range axis/axes.     *     * @param g2  the graphics device.     * @param plotArea  the plot area.     * @param space  a carrier for the result (<code>null</code> permitted).     *     * @return  The required space.     */    protected AxisSpace calculateRangeAxisSpace(Graphics2D g2, Rectangle2D plotArea,                                                AxisSpace space) {        if (space == null) {            space = new AxisSpace();        }        // reserve some space for the range axis...        if (this.fixedRangeAxisSpace != null) {            if (this.orientation == PlotOrientation.HORIZONTAL) {                space.ensureAtLeast(this.fixedRangeAxisSpace.getTop(), RectangleEdge.TOP);                space.ensureAtLeast(this.fixedRangeAxisSpace.getBottom(), RectangleEdge.BOTTOM);            }            else if (this.orientation == PlotOrientation.VERTICAL) {                space.ensureAtLeast(this.fixedRangeAxisSpace.getLeft(), RectangleEdge.LEFT);                space.ensureAtLeast(this.fixedRangeAxisSpace.getRight(), RectangleEdge.RIGHT);            }        }        else {            // reserve space for the range axes...            for (int i = 0; i < this.rangeAxes.size(); i++) {                Axis axis = (Axis) this.rangeAxes.get(i);                 if (axis != null) {                    RectangleEdge edge = getRangeAxisEdge(i);                    space = axis.reserveSpace(g2, this, plotArea, edge, space);                }            }        }        return space;    }    /**     * Draws the plot on a Java 2D graphics device (such as the screen or a printer).     * <P>     * This plot relies on an {@link XYItemRenderer} to draw each item in the plot.  This     * allows the visual representation of the data to be changed easily.     * <P>     * The optional info argument collects information about the rendering of     * the plot (dimensions, tooltip information etc).  Just pass in <code>null</code> if     * you do not need this information.     *     * @param g2  the graphics device.     * @param area  the area within which the plot (including axes and labels) should be drawn.     * @param parentState  the state from the parent plot, if there is one.     * @param state  collects chart drawing information (<code>null</code> permitted).      */    public void draw(Graphics2D g2,                      Rectangle2D area,                      PlotState parentState,                     PlotRenderingInfo state) {        draw(g2, area, null, parentState, state);                              }        /**     * Draws the plot within the specified area on a graphics device.     *      * @param g2  the graphics device.     * @param area  the plot area (in Java2D space).     * @param anchor  an anchor point in Java2D space (<code>null</code> permitted).     * @param parentState  the state from the parent plot, if there is one (<code>null</code>      *                     permitted).     * @param info  collects chart drawing information (<code>null</code> permitted).     */    public void draw(Graphics2D g2,                     Rectangle2D area,                     Point2D anchor,                     PlotState parentState,                     PlotRenderingInfo info) {        if (LOGGER.isDebugEnabled()) {            LOGGER.debug("Entering draw() method, plot area = " + area.toString());           }                // if the plot area is too small, just return...        boolean b1 = (area.getWidth() <= MINIMUM_WIDTH_TO_DRAW);        boolean b2 = (area.getHeight() <= MINIMUM_HEIGHT_TO_DRAW);        if (b1 || b2) {            return;        }        // record the plot area...        if (info != null) {            info.setPlotArea(area);        }        // adjust the drawing area for the plot insets (if any)...        Insets insets = getInsets();        if (insets != null) {            area.setRect(                area.getX() + insets.left, area.getY() + insets.top,                area.getWidth() - insets.left - insets.right,                area.getHeight() - insets.top - insets.bottom            );        }        AxisSpace space = calculateAxisSpace(g2, area);        if (LOGGER.isDebugEnabled()) {            LOGGER.debug("Calculated axis space = " + space.toString());           }        Rectangle2D dataArea = space.shrink(area, null);        this.axisOffset.trim(dataArea);        if (info != null) {            info.setDataArea(dataArea);        }        if (LOGGER.isDebugEnabled()) {            LOGGER.debug("Data area = " + dataArea.toString());           }        // draw the plot background and axes...        drawBackground(g2, dataArea);        Map axisStateMap = drawAxes(g2, area, dataArea, info);        if (anchor != null && !dataArea.contains(anchor)) {            anchor = null;        }        CrosshairState crosshairState = new CrosshairState();        crosshairState.setCrosshairDistance(Double.POSITIVE_INFINITY);        crosshairState.setAnchor(anchor);        crosshairState.setCrosshairX(getDomainCrosshairValue());        crosshairState.setCrosshairY(getRangeCrosshairValue());                Shape originalClip = g2.getClip();        Composite originalComposite = g2.getComposite();        g2.clip(dataArea);        g2.setComposite(            AlphaComposite.getInstance(AlphaComposite.SRC_OVER, getForegroundAlpha())        );        AxisState domainAxisState = (AxisState) axisStateMap.get(getDomainAxis());        if (domainAxisState == null) {            if (parentState != null) {                domainAxisState = (AxisState) parentState.getSharedAxisStates().get(                    getDomainAxis()                );            }        }        if (domainAxisState != null) {                 drawDomainTickBands(g2, dataArea, domainAxisState.getTicks());            drawDomainGridlines(g2, dataArea, domainAxisState.getTicks());        }                    AxisState rangeAxisState = (AxisState) axisStateMap.get(getRangeAxis());        if (rangeAxisState == null) {            if (parentState != null) {                rangeAxisState = (AxisState) parentState.getSharedAxisStates().get(                    getRangeAxis()                );            }        }        if (rangeAxisState != null) {            drawRangeTickBands(g2, dataArea, rangeAxisState.getTicks());            drawRangeGridlines(g2, dataArea, rangeAxisState.getTicks());        }                    // draw the markers...        for (int i = 0; i < this.renderers.size(); i++) {            drawDomainMarkers(g2, dataArea, i, Layer.BACKGROUND);        }        for (int i = 0; i < this.renderers.size(); i++) {            drawRangeMarkers(g2, dataArea, i, Layer.BACKGROUND);        }        drawDomainMarkers(g2, dataArea, Layer.BACKGROUND);        drawRangeMarkers(g2, dataArea, Layer.BACKGROUND);        // now render data items...        boolean foundData = false;        DatasetRenderingOrder order = getDatasetRenderingOrder();        if (order == DatasetRenderingOrder.FORWARD) {            for (int i = 0; i < getDatasetCount(); i++) {                foundData = render(g2, dataArea, i, info, crosshairState) || foundData;            }        }        else {  // DatasetRenderingOrder.REVERSE            for (int i = getDatasetCount() - 1; i >= 0; i--) {                foundData = render(g2, dataArea, i, info, crosshairState) || foundData;               }        }                PlotOrientation orient = getOrientation();                // draw domain crosshair if required...        setDomainCrosshairValue(crosshairState.getCrosshairX(), false);        if (isDomainCrosshairVisible()) {            double x = getDomainCrosshairValue();            Paint paint = getDomainCrosshairPaint();            Stroke stroke = getDomainCrosshairStroke();            if (orient == PlotOrientation.HORIZONTAL) {                drawHorizontalLine(g2, dataArea, x, stroke, paint);            }            else if (orient == PlotOrientation.VERTICAL) {                drawVerticalLine(g2, dataArea, x, stroke, paint);            }        }        // draw range crosshair if required...        setRangeCrosshairValue(crosshairState.getCrosshairY(), false);        if (isRangeCrosshairVisible()             && getRangeAxis().getRange().contains(getRangeCrosshairValue())) {            double y = getRangeCrosshairValue();            Paint paint = getRangeCrosshairPaint();            Stroke stroke = getRangeCrosshairStroke();            if (orient == PlotOrientation.HORIZONTAL) {                drawVerticalLine(g2, dataArea, y, stroke, paint);            }            else if (orient == PlotOrientation.VERTICAL) {                drawHorizontalLine(g2, dataArea, y, stroke, paint);            }        }        if (!foundData) {            drawNoDataMessage(g2, dataArea);        }        for (int i = 0; i < this.renderers.size(); i++) {            drawDomainMarkers(g2, dataArea, i, Layer.FOREGROUND);        }        for (int i = 0; i < this.renderers.size(); i++) {            drawRangeMarkers(g2, dataArea, i, Layer.FOREGROUND);        }        drawDomainMarkers(g2, dataArea, Layer.FOREGROUND);        drawRangeMarkers(g2, dataArea, Layer.FOREGROUND);        drawAnnotations(g2, dataArea, info);        g2.setClip(originalClip);        g2.setComposite(originalComposite);        drawOutline(g2, dataArea);        if (LOGGER.isDebugEnabled()) {            LOGGER.debug("Leaving

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -