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

📄 standardxyitemrenderer.java

📁 这是一个segy数据显示程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     */    public void setPlotLines(boolean flag) {        if (this.plotLines != flag) {            this.plotLines = flag;            notifyListeners(new RendererChangeEvent(this));        }    }    /**     * Returns the gap threshold for discontinuous lines.     *     * @return the gap threshold.     */    public double getGapThreshold() {        return this.gapThreshold;    }    /**     * Sets the gap threshold for discontinuous lines.     *     * @param t  the threshold.     */    public void setGapThreshold(double t) {        this.gapThreshold = t;        notifyListeners(new RendererChangeEvent(this));    }    /**     * Returns true if images are being plotted by the renderer.     *     * @return <code>true</code> if images are being plotted by the renderer.     */    public boolean getPlotImages() {        return this.plotImages;    }    /**     * Sets the flag that controls whether or not an image is drawn at each data point.     *     * @param flag  the flag.     */    public void setPlotImages(boolean flag) {        if (this.plotImages != flag) {            this.plotImages = flag;            notifyListeners(new RendererChangeEvent(this));        }    }    /**     * Returns true if lines should be discontinuous.     *     * @return <code>true</code> if images are being plotted by the renderer.     */    public boolean getPlotDiscontinuous() {        return this.plotDiscontinuous;    }    /**     * Returns a legend item for a series.     *     * @param datasetIndex  the dataset index (zero-based).     * @param series  the series index (zero-based).     *     * @return a legend item for the series.     */    public LegendItem getLegendItem(int datasetIndex, int series) {        LegendItem result = null;        XYPlot plot = getPlot();        if (plot != null) {            XYDataset dataset = plot.getDataset(datasetIndex);            if (dataset != null) {                String label = dataset.getSeriesName(series);                String description = label;                Shape shape = getSeriesShape(series);                boolean shapeFilled = getSeriesShapesFilled(series);                Paint paint = getSeriesPaint(series);                Paint outlinePaint = getSeriesOutlinePaint(series);                Stroke stroke = getSeriesStroke(series);                result = new LegendItem(                    label, description, shape, shapeFilled, paint, stroke, outlinePaint, stroke                );            }        }        return result;    }    /**     * Draws the visual representation of a single data item.     *     * @param g2  the graphics device.     * @param state  the renderer state.     * @param dataArea  the area within which the data is being drawn.     * @param info  collects information about the drawing.     * @param plot  the plot (can be used to obtain standard color information etc).     * @param domainAxis  the domain axis.     * @param rangeAxis  the range axis.     * @param dataset  the dataset.     * @param series  the series index (zero-based).     * @param item  the item index (zero-based).     * @param crosshairState  crosshair information for the plot (<code>null</code> permitted).     * @param pass  the pass index.     */    public void drawItem(Graphics2D g2,                         XYItemRendererState state,                         Rectangle2D dataArea,                         PlotRenderingInfo info,                         XYPlot plot,                         ValueAxis domainAxis,                         ValueAxis rangeAxis,                         XYDataset dataset,                         int series,                         int item,                         CrosshairState crosshairState,                         int pass) {        // setup for collecting optional entity info...        Shape entityArea = null;        EntityCollection entities = null;        if (info != null) {            entities = info.getOwner().getEntityCollection();        }        PlotOrientation orientation = plot.getOrientation();        Paint paint = getItemPaint(series, item);        Stroke seriesStroke = getItemStroke(series, item);        g2.setPaint(paint);        g2.setStroke(seriesStroke);        // get the data point...        Number x1n = dataset.getXValue(series, item);        Number y1n = dataset.getYValue(series, item);        if (y1n == null || x1n == null) {            return;        }        double x1 = x1n.doubleValue();        double y1 = y1n.doubleValue();        final RectangleEdge xAxisLocation = plot.getDomainAxisEdge();        final RectangleEdge yAxisLocation = plot.getRangeAxisEdge();        double transX1 = domainAxis.valueToJava2D(x1, dataArea, xAxisLocation);        double transY1 = rangeAxis.valueToJava2D(y1, dataArea, yAxisLocation);        if (getPlotLines()) {            if (item > 0) {                // get the previous data point...                Number x0n = dataset.getXValue(series, item - 1);                Number y0n = dataset.getYValue(series, item - 1);                if (y0n != null && x0n != null) {                    double x0 = x0n.doubleValue();                    double y0 = y0n.doubleValue();                    boolean drawLine = true;                    if (getPlotDiscontinuous()) {                        // only draw a line if the gap between the current and previous data                        // point is within the threshold                        int numX = dataset.getItemCount(series);                        double minX = dataset.getXValue(series, 0).doubleValue();                        double maxX = dataset.getXValue(series, numX - 1).doubleValue();                        drawLine = (x1 - x0) <= ((maxX - minX) / numX * getGapThreshold());                    }                    if (drawLine) {                        double transX0 = domainAxis.valueToJava2D(x0, dataArea, xAxisLocation);                        double transY0 = rangeAxis.valueToJava2D(y0, dataArea, yAxisLocation);                        // only draw if we have good values                        if (Double.isNaN(transX0) || Double.isNaN(transY0)                             || Double.isNaN(transX1) || Double.isNaN(transY1)) {                            return;                        }                        if (orientation == PlotOrientation.HORIZONTAL) {                            state.workingLine.setLine(transY0, transX0, transY1, transX1);                        }                        else if (orientation == PlotOrientation.VERTICAL) {                            state.workingLine.setLine(transX0, transY0, transX1, transY1);                        }                        if (state.workingLine.intersects(dataArea)) {                            g2.draw(state.workingLine);                        }                    }                }            }        }        if (getPlotShapes()) {            Shape shape = getItemShape(series, item);            if (orientation == PlotOrientation.HORIZONTAL) {                shape = createTransformedShape(shape, transY1, transX1);            }            else if (orientation == PlotOrientation.VERTICAL) {                shape = createTransformedShape(shape, transX1, transY1);            }            if (shape.intersects(dataArea)) {                if (getItemShapeFilled(series, item)) {                    g2.fill(shape);                }                else {                    g2.draw(shape);                }            }            entityArea = shape;        }        if (getPlotImages()) {            // use shape scale with transform??            //double scale = getShapeScale(plot, series, item, transX1, transY1);            Image image = getImage(plot, series, item, transX1, transY1);            if (image != null) {                Point hotspot = getImageHotspot(plot, series, item, transX1, transY1, image);                g2.drawImage(                    image, (int) (transX1 - hotspot.getX()), (int) (transY1 - hotspot.getY()), null                );                entityArea = new Rectangle2D.Double(                    transX1 - hotspot.getX(), transY1 - hotspot.getY(),                    image.getWidth(null), image.getHeight(null)                );            }        }        // draw the item label if there is one...        if (isItemLabelVisible(series, item)) {            drawItemLabel(                g2, orientation, dataset, series, item, transX1, transY1, (y1 < 0.0)            );        }        updateCrosshairValues(crosshairState, x1, y1, transX1, transY1, orientation);        // add an entity for the item...        if (entities != null) {            if (entityArea == null) {                entityArea = new Rectangle2D.Double(transX1 - 2, transY1 - 2, 4, 4);            }            String tip = null;            XYToolTipGenerator generator = getToolTipGenerator(series, item);            if (generator != null) {                tip = generator.generateToolTip(dataset, series, item);            }            String url = null;            if (getURLGenerator() != null) {                url = getURLGenerator().generateURL(dataset, series, item);            }            XYItemEntity entity = new XYItemEntity(entityArea, dataset, series, item, tip, url);            entities.addEntity(entity);        }    }    /**     * Tests this renderer for equality with another object.     *     * @param obj  the object.     *     * @return <code>true</code> or <code>false</code>.     */    public boolean equals(Object obj) {        if (obj == null) {            return false;        }        if (obj == this) {            return true;        }        if (obj instanceof StandardXYItemRenderer) {            StandardXYItemRenderer r = (StandardXYItemRenderer) obj;            if (super.equals(obj)) {                boolean b0 = (this.plotShapes == r.plotShapes);                boolean b1 = (this.plotLines == r.plotLines);                boolean b2 = (this.plotImages == r.plotImages);                boolean b3 = (this.plotDiscontinuous == r.plotDiscontinuous);                boolean b4 = (this.gapThreshold == r.gapThreshold);                //boolean b5 = (this.defaultShapeFilled == r.defaultShapeFilled);                return b0 && b1 && b2 && b3 && b4;            }        }        return false;    }    ////////////////////////////////////////////////////////////////////////////////////////////////    // PROTECTED METHODS    // These provide the opportunity to subclass the standard renderer and create custom effects.    ////////////////////////////////////////////////////////////////////////////////////////////////    /**     * Returns the image used to draw a single data item.     *     * @param plot  the plot (can be used to obtain standard color information etc).     * @param series  the series index.     * @param item  the item index.     * @param x  the x value of the item.     * @param y  the y value of the item.     *     * @return the image.     */    protected Image getImage(Plot plot, int series, int item, double x, double y) {        // should this be added to the plot as well ?        // return plot.getShape(series, item, x, y, scale);        // or should this be left to the user - like this:        return null;    }    /**     * Returns the hotspot of the image used to draw a single data item.     * The hotspot is the point relative to the top left of the image     * that should indicate the data item. The default is the center of the     * image.     *     * @param plot  the plot (can be used to obtain standard color information etc).     * @param image  the image (can be used to get size information about the image)     * @param series  the series index     * @param item  the item index     * @param x  the x value of the item     * @param y  the y value of the item     *     * @return the hotspot used to draw the data item.     */    protected Point getImageHotspot(Plot plot, int series, int item,                                    double x, double y, Image image) {        int height = image.getHeight(null);        int width = image.getWidth(null);        return new Point(width / 2, height / 2);    }    /**     * Returns a clone of the renderer.     *     * @return A clone.     *     * @throws CloneNotSupportedException  if the renderer cannot be cloned.     */    public Object clone() throws CloneNotSupportedException {        return super.clone();    }}

⌨️ 快捷键说明

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