亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xybubblerenderer.java

?? jfreechart1.0.1 jsp繪制圖表的開發包
?? JAVA
字號:
/* ===========================================================
 * JFreeChart : a free chart library for the Java(tm) platform
 * ===========================================================
 *
 * (C) Copyright 2000-2006, by Object Refinery Limited and Contributors.
 *
 * Project Info:  http://www.jfree.org/jfreechart/index.html
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
 * License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
 * USA.  
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 * in the United States and other countries.]
 *
 * ---------------------
 * XYBubbleRenderer.java
 * ---------------------
 * (C) Copyright 2003-2006, by Object Refinery Limited.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited);
 * Contributor(s):   Christian W. Zuckschwerdt;
 *
 * $Id: XYBubbleRenderer.java,v 1.8.2.5 2006/01/26 14:57:48 mungady Exp $
 *
 * Changes
 * -------
 * 28-Jan-2003 : Version 1 (DG);
 * 25-Mar-2003 : Implemented Serializable (DG);
 * 01-May-2003 : Modified drawItem() method signature (DG);
 * 30-Jul-2003 : Modified entity constructor (CZ);
 * 20-Aug-2003 : Implemented Cloneable and PublicCloneable (DG);
 * 16-Sep-2003 : Changed ChartRenderingInfo --> PlotRenderingInfo (DG);
 * 10-Feb-2004 : Small change to drawItem() method to make cut-and-paste 
 *               overriding easier (DG);
 * 15-Jul-2004 : Switched getZ() and getZValue() methods (DG);
 * 19-Jan-2005 : Now accesses only primitives from dataset (DG);
 * 28-Feb-2005 : Modify renderer to use circles in legend (DG);
 * 17-Mar-2005 : Fixed bug in bubble bounds calculation (DG);
 * 20-Apr-2005 : Use generators for legend tooltips and URLs (DG);
 * ------------- JFREECHART 1.0.0 ---------------------------------------------
 * 13-Dec-2005 : Added support for item labels (bug 1373371) (DG);
 * 20-Jan-2006 : Check flag for drawing item labels (DG);
 * 
 */

package org.jfree.chart.renderer.xy;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.io.Serializable;

import org.jfree.chart.LegendItem;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.EntityCollection;
import org.jfree.chart.entity.XYItemEntity;
import org.jfree.chart.labels.XYToolTipGenerator;
import org.jfree.chart.plot.CrosshairState;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.PlotRenderingInfo;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYZDataset;
import org.jfree.ui.RectangleEdge;
import org.jfree.util.PublicCloneable;

/**
 * A renderer that draws a circle at each data point with a diameter that is
 * determined by the z-value in the dataset (the renderer requires the dataset 
 * to be an instance of {@link XYZDataset}.
 */
public class XYBubbleRenderer extends AbstractXYItemRenderer 
                              implements XYItemRenderer, 
                                         Cloneable,
                                         PublicCloneable,
                                         Serializable {

    /** For serialization. */
    public static final long serialVersionUID = -5221991598674249125L;
    
    /** A useful constant. */
    public static final int SCALE_ON_BOTH_AXES = 0;

    /** A useful constant. */
    public static final int SCALE_ON_DOMAIN_AXIS = 1;

    /** A useful constant. */
    public static final int SCALE_ON_RANGE_AXIS = 2;

    /** Controls how the width and height of the bubble are scaled. */
    private int scaleType;

    /**
     * Constructs a new renderer.
     */
    public XYBubbleRenderer() {
        this(SCALE_ON_BOTH_AXES); 
    }

    /**
     * Constructs a new renderer with the specified type of scaling. 
     *
     * @param scaleType  the type of scaling (must be one of: 
     *        {@link #SCALE_ON_BOTH_AXES}, {@link #SCALE_ON_DOMAIN_AXIS}, 
     *        {@link #SCALE_ON_RANGE_AXIS}).
     */
    public XYBubbleRenderer(int scaleType) {
        super();
        if (scaleType < 0 || scaleType > 2) {
            throw new IllegalArgumentException("Invalid 'scaleType'.");
        }
        this.scaleType = scaleType;
    }

    /**
     * Returns the scale type that was set when the renderer was constructed.
     *
     * @return The scale type (one of: {@link #SCALE_ON_BOTH_AXES}, 
     *         {@link #SCALE_ON_DOMAIN_AXIS}, {@link #SCALE_ON_RANGE_AXIS}).
     */
    public int getScaleType() {
        return this.scaleType;
    }

    /**
     * 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 (horizontal) axis.
     * @param rangeAxis  the range (vertical) 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) {

        PlotOrientation orientation = plot.getOrientation();
        
        // get the data point...
        double x = dataset.getXValue(series, item);
        double y = dataset.getYValue(series, item);
        double z = Double.NaN;
        if (dataset instanceof XYZDataset) {
            XYZDataset xyzData = (XYZDataset) dataset;
            z = xyzData.getZValue(series, item);
        }
        if (!Double.isNaN(z)) {
            RectangleEdge domainAxisLocation = plot.getDomainAxisEdge();
            RectangleEdge rangeAxisLocation = plot.getRangeAxisEdge();
            double transX = domainAxis.valueToJava2D(x, dataArea, 
                    domainAxisLocation);
            double transY = rangeAxis.valueToJava2D(y, dataArea, 
                    rangeAxisLocation);

            double transDomain = 0.0;
            double transRange = 0.0;
            double zero;

            switch(getScaleType()) {
                case SCALE_ON_DOMAIN_AXIS:
                    zero = domainAxis.valueToJava2D(0.0, dataArea, 
                            domainAxisLocation);
                    transDomain = domainAxis.valueToJava2D(z, dataArea, 
                            domainAxisLocation) - zero;
                    transRange = transDomain;
                    break;
                case SCALE_ON_RANGE_AXIS:
                    zero = rangeAxis.valueToJava2D(0.0, dataArea, 
                            rangeAxisLocation);
                    transRange = zero - rangeAxis.valueToJava2D(z, dataArea, 
                            rangeAxisLocation);
                    transDomain = transRange;
                    break;
                default:
                    double zero1 = domainAxis.valueToJava2D(0.0, dataArea, 
                            domainAxisLocation);
                    double zero2 = rangeAxis.valueToJava2D(0.0, dataArea, 
                            rangeAxisLocation);
                    transDomain = domainAxis.valueToJava2D(z, dataArea, 
                            domainAxisLocation) - zero1;
                    transRange = zero2 - rangeAxis.valueToJava2D(z, dataArea, 
                            rangeAxisLocation);
            }
            transDomain = Math.abs(transDomain);
            transRange = Math.abs(transRange);
            Ellipse2D circle = null;
            if (orientation == PlotOrientation.VERTICAL) {
                circle = new Ellipse2D.Double(transX - transDomain / 2.0, 
                        transY - transRange / 2.0, transDomain, transRange);
            }
            else if (orientation == PlotOrientation.HORIZONTAL) {
                circle = new Ellipse2D.Double(transY - transRange / 2.0, 
                        transX - transDomain / 2.0, transRange, transDomain);
            }
            g2.setPaint(getItemPaint(series, item));
            g2.fill(circle);
            g2.setStroke(new BasicStroke(1.0f));
            g2.setPaint(Color.lightGray);
            g2.draw(circle);

            if (isItemLabelVisible(series, item)) {
                if (orientation == PlotOrientation.VERTICAL) {
                    drawItemLabel(g2, orientation, dataset, series, item, 
                            transX, transY, false);
                }
                else if (orientation == PlotOrientation.HORIZONTAL) {
                    drawItemLabel(g2, orientation, dataset, series, item, 
                            transY, transX, false);                
                }
            }
            
            // setup for collecting optional entity info...
            EntityCollection entities = null;
            if (info != null) {
                entities = info.getOwner().getEntityCollection();
            }

            // add an entity for the item...
            if (entities != null) {
                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(circle, dataset, series,
                        item, tip, url);
                entities.add(entity);
            }

            updateCrosshairValues(crosshairState, x, y, transX, transY, 
                    orientation);
        }

    }

    /**
     * Returns a legend item for the specified series.  The default method
     * is overridden so that the legend displays circles for all 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 xyplot = getPlot();
        if (xyplot != null) {
            XYDataset dataset = xyplot.getDataset(datasetIndex);
            if (dataset != null) {
                if (getItemVisible(series, 0)) {
                    String label = getLegendItemLabelGenerator().generateLabel(
                        dataset, series);
                    String description = label;
                    String toolTipText = null;
                    if (getLegendItemToolTipGenerator() != null) {
                        toolTipText 
                            = getLegendItemToolTipGenerator().generateLabel(
                                dataset, series);
                    }
                    String urlText = null;
                    if (getLegendItemURLGenerator() != null) {
                        urlText = getLegendItemURLGenerator().generateLabel(
                            dataset, series);
                    }
                    Shape shape = new Ellipse2D.Double(-4.0, -4.0, 8.0, 8.0);
                    Paint paint = getSeriesPaint(series);
                    Paint outlinePaint = getSeriesOutlinePaint(series);
                    Stroke outlineStroke = getSeriesOutlineStroke(series);
                    result = new LegendItem(label, description, 
                            toolTipText, urlText, shape, paint, 
                            outlineStroke, outlinePaint);
                }
            }

        }
        return result;
    }
    
    /**
     * 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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频在线看| 国产91清纯白嫩初高中在线观看| 制服丝袜亚洲色图| 日本三级亚洲精品| 91精品国产综合久久精品麻豆| 男女男精品视频| 欧美电影免费观看高清完整版在 | 国产丝袜美腿一区二区三区| 精品一区二区三区视频| 久久九九久精品国产免费直播| 成人app网站| 亚洲综合一区在线| 7777精品伊人久久久大香线蕉完整版 | 日韩欧美高清在线| 国产一区二区不卡| 中文字幕在线视频一区| 91官网在线免费观看| 天天射综合影视| 久久久午夜精品| 99re视频精品| 天堂一区二区在线免费观看| 欧美一级生活片| 国产99久久久国产精品潘金| 亚洲美女在线国产| 欧美一区二区三区视频在线观看| 国产一区美女在线| 亚洲视频1区2区| 欧美乱妇15p| 国产在线精品一区二区| 亚洲丝袜制服诱惑| 欧美久久久久久蜜桃| 国产精品影视在线| 一区二区三区在线视频免费| 欧美一区在线视频| 成人v精品蜜桃久久一区| 一区二区三区波多野结衣在线观看| 欧美系列亚洲系列| 国产在线麻豆精品观看| 亚洲女人****多毛耸耸8| 日韩视频免费观看高清完整版 | 国产在线精品不卡| 亚洲三级小视频| 日韩一级二级三级| 99精品欧美一区二区三区小说| 日韩和欧美的一区| 亚洲国产精品黑人久久久| 欧美日韩国产经典色站一区二区三区| 国产一区二区伦理| 亚洲国产精品一区二区尤物区| 久久久久久亚洲综合影院红桃| 欧美午夜一区二区| 国产91精品入口| 日本美女一区二区| 亚洲人午夜精品天堂一二香蕉| 日韩欧美激情在线| 99久久精品99国产精品| 看国产成人h片视频| 亚洲精品免费电影| 久久久久9999亚洲精品| 欧美日韩免费电影| 波多野结衣欧美| 久久99精品国产.久久久久| 亚洲欧洲韩国日本视频| 欧美精品一区二区三区很污很色的 | 美女被吸乳得到大胸91| 1024成人网色www| 久久久精品免费网站| 欧美片在线播放| 99久久免费精品| 国产精品123| 美女一区二区久久| 亚洲成人免费观看| 亚洲少妇最新在线视频| 中文字幕乱码日本亚洲一区二区| 日韩欧美视频在线| 欧美日韩一区小说| 色综合久久久久| 国产91在线|亚洲| 久久成人av少妇免费| 亚洲大片在线观看| 亚洲伦理在线精品| 国产精品久久毛片| 成人激情图片网| 国内偷窥港台综合视频在线播放| 丝袜a∨在线一区二区三区不卡| 亚洲欧美电影一区二区| 国产精品美女久久久久久2018| 欧美xxxxxxxxx| 欧美一区二区三区不卡| 欧美日韩一区二区三区视频| 91色婷婷久久久久合中文| 国产传媒日韩欧美成人| 国模无码大尺度一区二区三区| 免费观看久久久4p| 舔着乳尖日韩一区| 天天影视网天天综合色在线播放| 一区二区三区精品视频| 亚洲欧美日韩小说| 一区免费观看视频| 中文字幕制服丝袜一区二区三区| 国产精品久久久久影院亚瑟 | 一本色道**综合亚洲精品蜜桃冫| 成人av网址在线观看| 国产98色在线|日韩| 成人一区二区三区中文字幕| 国产成人免费在线| 国产一区二区三区四区五区美女 | 国产成人亚洲综合a∨婷婷图片| 狠狠色丁香婷婷综合| 黄页视频在线91| 美女爽到高潮91| 久久狠狠亚洲综合| 久久精品国产亚洲高清剧情介绍| 七七婷婷婷婷精品国产| 久久精品72免费观看| 久久国产免费看| 精品中文字幕一区二区小辣椒| 久久99精品久久久久久动态图 | 欧美一区二区在线观看| 欧美性一级生活| 在线观看www91| 麻豆精品久久精品色综合| 亚洲国产成人av好男人在线观看| 蜜臀久久99精品久久久画质超高清| 亚洲日本成人在线观看| 欧美女孩性生活视频| 亚洲.国产.中文慕字在线| 日韩一区二区免费高清| 99久久精品国产毛片| 久久99精品国产91久久来源| 宅男在线国产精品| 色婷婷久久久久swag精品| 成人黄色电影在线 | 2020日本不卡一区二区视频| 久久久精品国产99久久精品芒果 | 丁香激情综合国产| 免费看日韩精品| 一区二区三区色| 亚洲美女视频在线观看| 亚洲欧美日韩国产一区二区三区 | 日本三级亚洲精品| 日本va欧美va精品发布| 亚洲成人激情av| 中文字幕中文在线不卡住| 亚洲欧美中日韩| 亚洲高清在线精品| 久久国产视频网| 懂色av一区二区在线播放| 91丨九色丨蝌蚪富婆spa| 欧美日韩国产中文| 久久青草欧美一区二区三区| 中文字幕欧美一| 午夜精品久久久久久久| 国内精品嫩模私拍在线| 99re成人精品视频| 欧美日韩国产高清一区| 久久日韩精品一区二区五区| 亚洲人123区| 免费高清在线视频一区·| 高清shemale亚洲人妖| 在线精品视频一区二区| 精品久久久久久久久久久久久久久久久 | 日韩一区二区免费高清| 中文字幕av在线一区二区三区| 亚洲一区在线看| 国产在线精品免费| 欧美色倩网站大全免费| 久久婷婷国产综合国色天香 | 日韩美女视频一区| 国产目拍亚洲精品99久久精品| 日本一区二区免费在线观看视频| 日韩精品视频网| 久久se精品一区二区| 日本免费新一区视频 | 最新国产精品久久精品| 亚洲成人激情自拍| 国产不卡高清在线观看视频| 亚洲国产精品麻豆| 狠狠狠色丁香婷婷综合久久五月| 欧美中文字幕一区二区三区| 国产精品理论片在线观看| 国产精品一区在线| 日韩欧美亚洲一区二区| 免费一区二区视频| 这里只有精品99re| 久久精品国产99国产| 91麻豆精品国产91久久久更新时间| 一区二区三区不卡视频| 国产专区综合网| 欧美日韩激情一区二区三区| 亚洲国产高清在线观看视频| 日韩精品电影在线| 波多野结衣中文字幕一区二区三区| 欧美性猛交一区二区三区精品| 欧美岛国在线观看| 亚洲国产美国国产综合一区二区| 九九精品视频在线看| 99精品久久免费看蜜臀剧情介绍| 成人黄色软件下载| 4438x成人网最大色成网站|