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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? arearenderer.java

?? jfreechart1.0.1 jsp繪制圖表的開(kāi)發(fā)包
?? JAVA
字號(hào):
/* ===========================================================
 * JFreeChart : a free chart library for the Java(tm) platform
 * ===========================================================
 *
 * (C) Copyright 2000-2005, 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.]
 *
 * -----------------
 * AreaRenderer.java
 * -----------------
 * (C) Copyright 2002-2005, by Jon Iles and Contributors.
 *
 * Original Author:  Jon Iles;
 * Contributor(s):   David Gilbert (for Object Refinery Limited);
 *                   Christian W. Zuckschwerdt;
 *
 * $Id: AreaRenderer.java,v 1.6.2.4 2005/11/28 12:06:35 mungady Exp $
 *
 * Changes:
 * --------
 * 21-May-2002 : Version 1, contributed by John Iles (DG);
 * 29-May-2002 : Now extends AbstractCategoryItemRenderer (DG);
 * 11-Jun-2002 : Updated Javadoc comments (DG);
 * 25-Jun-2002 : Removed unnecessary imports (DG);
 * 01-Oct-2002 : Fixed errors reported by Checkstyle (DG);
 * 10-Oct-2002 : Added constructors and basic entity support (DG);
 * 24-Oct-2002 : Amendments for changes in CategoryDataset interface and 
 *               CategoryToolTipGenerator interface (DG);
 * 05-Nov-2002 : Replaced references to CategoryDataset with TableDataset (DG);
 * 06-Nov-2002 : Renamed drawCategoryItem() --> drawItem() and now using axis 
 *               for category spacing.  Renamed AreaCategoryItemRenderer 
 *               --> AreaRenderer (DG);
 * 17-Jan-2003 : Moved plot classes into a separate package (DG);
 * 25-Mar-2003 : Implemented Serializable (DG);
 * 10-Apr-2003 : Changed CategoryDataset to KeyedValues2DDataset in 
 *               drawItem() method (DG);
 * 12-May-2003 : Modified to take into account the plot orientation (DG);
 * 30-Jul-2003 : Modified entity constructor (CZ);
 * 13-Aug-2003 : Implemented Cloneable (DG);
 * 07-Oct-2003 : Added renderer state (DG);
 * 05-Nov-2004 : Modified drawItem() signature (DG);
 * 20-Apr-2005 : Apply tooltips and URLs to legend items (DG);
 * 09-Jun-2005 : Use addItemEntity() method from superclass (DG);
 * 
 */

package org.jfree.chart.renderer.category;

import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;
import java.io.Serializable;

import org.jfree.chart.LegendItem;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.EntityCollection;
import org.jfree.chart.event.RendererChangeEvent;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.AreaRendererEndType;
import org.jfree.data.category.CategoryDataset;
import org.jfree.ui.RectangleEdge;
import org.jfree.util.PublicCloneable;

/**
 * A category item renderer that draws area charts.  You can use this renderer 
 * with the {@link org.jfree.chart.plot.CategoryPlot} class.
 *
 * @author Jon Iles
 */
public class AreaRenderer extends AbstractCategoryItemRenderer 
                          implements Cloneable, PublicCloneable, Serializable {

    /** For serialization. */
    private static final long serialVersionUID = -4231878281385812757L;
    
    /** A flag that controls how the ends of the areas are drawn. */
    private AreaRendererEndType endType;
    
    /**
     * Creates a new renderer.
     */
    public AreaRenderer() {
        super();
        this.endType = AreaRendererEndType.TAPER;
    }

    /**
     * Returns a token that controls how the renderer draws the end points.
     * 
     * @return The end type (never <code>null</code>).
     */
    public AreaRendererEndType getEndType() {
        return this.endType;   
    }
    
    /**
     * Sets a token that controls how the renderer draws the end points, and 
     * sends a {@link RendererChangeEvent} to all registered listeners.
     * 
     * @param type  the end type (<code>null</code> not permitted).
     */
    public void setEndType(AreaRendererEndType type) {
        if (type == null) {
            throw new IllegalArgumentException("Null 'type' argument.");   
        }
        this.endType = type;
        notifyListeners(new RendererChangeEvent(this));
    }
    
    /**
     * Returns a legend item for a series.
     *
     * @param datasetIndex  the dataset index (zero-based).
     * @param series  the series index (zero-based).
     *
     * @return The legend item.
     */
    public LegendItem getLegendItem(int datasetIndex, int series) {

        CategoryPlot cp = getPlot();
        if (cp == null) {
            return null;
        }

        CategoryDataset dataset;
        dataset = cp.getDataset(datasetIndex);
        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 Rectangle2D.Double(-4.0, -4.0, 8.0, 8.0);
        Paint paint = getSeriesPaint(series);
        Paint outlinePaint = getSeriesOutlinePaint(series);
        Stroke outlineStroke = getSeriesOutlineStroke(series);

        return new LegendItem(label, description, toolTipText, urlText, 
            shape, paint, outlineStroke, outlinePaint);

    }

    /**
     * Draw a single data item.
     *
     * @param g2  the graphics device.
     * @param state  the renderer state.
     * @param dataArea  the data plot area.
     * @param plot  the plot.
     * @param domainAxis  the domain axis.
     * @param rangeAxis  the range axis.
     * @param dataset  the dataset.
     * @param row  the row index (zero-based).
     * @param column  the column index (zero-based).
     * @param pass  the pass index.
     */
    public void drawItem(Graphics2D g2,
                         CategoryItemRendererState state,
                         Rectangle2D dataArea,
                         CategoryPlot plot,
                         CategoryAxis domainAxis,
                         ValueAxis rangeAxis,
                         CategoryDataset dataset,
                         int row,
                         int column,
                         int pass) {

        // plot non-null values only...
        Number value = dataset.getValue(row, column);
        if (value != null) {
            PlotOrientation orientation = plot.getOrientation();
            RectangleEdge axisEdge = plot.getDomainAxisEdge();
            int count = dataset.getColumnCount();
            float x0 = (float) domainAxis.getCategoryStart(
                column, count, dataArea, axisEdge
            );
            float x1 = (float) domainAxis.getCategoryMiddle(
                column, count, dataArea, axisEdge
            );
            float x2 = (float) domainAxis.getCategoryEnd(
                column, count, dataArea, axisEdge
            );

            x0 = Math.round(x0);
            x1 = Math.round(x1);
            x2 = Math.round(x2);

            if (this.endType == AreaRendererEndType.TRUNCATE) {
                if (column == 0) {
                    x0 = x1;   
                }
                else if (column == getColumnCount() - 1) {
                    x2 = x1;   
                }
            }
            
            double yy1 = value.doubleValue();

            double yy0 = 0.0;
            if (column > 0) {
                Number n0 = dataset.getValue(row, column - 1);
                if (n0 != null) {
                    yy0 = (n0.doubleValue() + yy1) / 2.0;
                }
            }

            double yy2 = 0.0;
            if (column < dataset.getColumnCount() - 1) {
                Number n2 = dataset.getValue(row, column + 1);
                if (n2 != null) {
                    yy2 = (n2.doubleValue() + yy1) / 2.0;
                }
            }

            RectangleEdge edge = plot.getRangeAxisEdge();
            float y0 = (float) rangeAxis.valueToJava2D(yy0, dataArea, edge);
            float y1 = (float) rangeAxis.valueToJava2D(yy1, dataArea, edge);
            float y2 = (float) rangeAxis.valueToJava2D(yy2, dataArea, edge);
            float yz = (float) rangeAxis.valueToJava2D(0.0, dataArea, edge);

            g2.setPaint(getItemPaint(row, column));
            g2.setStroke(getItemStroke(row, column));

            GeneralPath area = new GeneralPath();

            if (orientation == PlotOrientation.VERTICAL) {
                area.moveTo(x0, yz);
                area.lineTo(x0, y0);
                area.lineTo(x1, y1);
                area.lineTo(x2, y2);
                area.lineTo(x2, yz);
            }
            else if (orientation == PlotOrientation.HORIZONTAL) {
                area.moveTo(yz, x0);
                area.lineTo(y0, x0);
                area.lineTo(y1, x1);
                area.lineTo(y2, x2);
                area.lineTo(yz, x2);
            }
            area.closePath();

            g2.setPaint(getItemPaint(row, column));
            g2.fill(area);

            // draw the item labels if there are any...
            if (isItemLabelVisible(row, column)) {
                drawItemLabel(
                    g2, orientation, dataset, row, column, x1, y1, 
                    (value.doubleValue() < 0.0)
                );
            }

            // add an item entity, if this information is being collected
            EntityCollection entities = state.getEntityCollection();
            if (entities != null) {
                addItemEntity(entities, dataset, row, column, area);
            }
        }

    }
    
    /**
     * Returns an independent copy of the renderer.
     * 
     * @return A clone.
     * 
     * @throws CloneNotSupportedException  should not happen.
     */
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜激情影院| 2017欧美狠狠色| 色噜噜狠狠一区二区三区果冻| 成人av中文字幕| 成人免费视频caoporn| 成人毛片在线观看| 99久久综合99久久综合网站| 成人激情免费视频| 99国产精品99久久久久久| 成人aa视频在线观看| 色哟哟一区二区在线观看| 欧美熟乱第一页| 欧美日韩国产在线观看| 欧美久久免费观看| 精品久久久久久久久久久久久久久 | 国产·精品毛片| 国产91丝袜在线播放| 成人少妇影院yyyy| 色婷婷一区二区| 欧美日韩精品一区二区三区| 欧美一级搡bbbb搡bbbb| 欧美精品一区二区三区高清aⅴ| 国产目拍亚洲精品99久久精品| 国产精品护士白丝一区av| 亚洲男女毛片无遮挡| 亚洲成av人片一区二区| 蜜桃视频在线观看一区二区| 国产一区二区不卡在线| 99久久精品一区| 欧美久久一二三四区| 久久亚洲一级片| 亚洲色图一区二区| 五月天婷婷综合| 国产夫妻精品视频| 色综合一个色综合| 日韩一级黄色片| 国产精品网曝门| 婷婷夜色潮精品综合在线| 九九热在线视频观看这里只有精品 | 粉嫩av一区二区三区粉嫩| 91天堂素人约啪| 日韩一区二区三区免费看| 亚洲国产精品ⅴa在线观看| 亚洲国产精品久久久久秋霞影院| 久久精品国产精品亚洲综合| 福利91精品一区二区三区| 91福利精品视频| 2021中文字幕一区亚洲| 亚洲精品久久久蜜桃| 蜜臀久久99精品久久久久久9| 国产电影一区二区三区| 欧美色涩在线第一页| 久久久久久免费网| 亚洲成a人片在线观看中文| 国产精品亚洲一区二区三区在线| 欧洲一区在线观看| 国产欧美一区二区精品性| 亚洲国产精品久久久久秋霞影院 | 亚洲乱码日产精品bd| 国产性做久久久久久| 中文字幕av免费专区久久| 日韩理论片一区二区| 国产成人av一区二区三区在线| 91影视在线播放| 精品国产91亚洲一区二区三区婷婷| 国产精品进线69影院| 久久精品99国产精品| 91成人网在线| 中文字幕精品在线不卡| 欧美日韩一区二区三区高清| 精品剧情v国产在线观看在线| 国产精品家庭影院| 偷拍自拍另类欧美| 国产综合久久久久久久久久久久| 成人性色生活片免费看爆迷你毛片| 色94色欧美sute亚洲13| 日韩欧美国产一区在线观看| 欧美韩日一区二区三区| 天堂va蜜桃一区二区三区漫画版| 国产在线视频精品一区| 色老汉一区二区三区| 日韩免费福利电影在线观看| 国产精品丝袜在线| 日本欧美在线看| 99精品视频中文字幕| 欧美一区二区三区精品| 国产精品久久777777| 日产精品久久久久久久性色| av中文字幕不卡| 日韩精品一区二区在线观看| 亚洲精品写真福利| 国产在线麻豆精品观看| 欧美日韩mp4| 中文字幕一区二区不卡| 久久99国产精品免费网站| 日本乱人伦一区| 国产精品网站在线| 精品一区二区三区视频 | 国产精品夜夜嗨| 欧美精品在线观看播放| 日韩理论片在线| 国产高清亚洲一区| 91精品国产综合久久久久久漫画 | 久久综合国产精品| 亚洲成人午夜影院| ㊣最新国产の精品bt伙计久久| 久久99精品一区二区三区| 欧美午夜电影网| 一二三区精品福利视频| 成人精品国产一区二区4080| 国产一区二区三区黄视频| 欧美精品一级二级| 亚洲精品视频免费看| 成人在线视频一区二区| 久久在线免费观看| 免费看欧美女人艹b| 欧美日韩一级片网站| 亚洲人精品午夜| 99精品欧美一区二区三区综合在线| 欧美成人激情免费网| 免费高清在线视频一区·| 欧美色图片你懂的| 亚洲制服欧美中文字幕中文字幕| 99在线精品视频| 最好看的中文字幕久久| 国产精品456露脸| 久久久国产综合精品女国产盗摄| 久久不见久久见免费视频7| 91精品国产高清一区二区三区| 午夜视频在线观看一区二区三区| 欧美性生交片4| 午夜精品视频一区| 在线综合亚洲欧美在线视频| 亚洲成a人v欧美综合天堂下载| 欧美日韩小视频| 日韩和的一区二区| 欧美一区二区网站| 激情综合一区二区三区| ww久久中文字幕| 国产精品1区2区| 欧美韩国日本一区| 97精品视频在线观看自产线路二| 中文字幕亚洲成人| 色哟哟在线观看一区二区三区| 亚洲综合清纯丝袜自拍| 麻豆91精品91久久久的内涵| 蜜桃精品视频在线观看| 日本免费新一区视频| 亚洲一区二区三区自拍| 亚洲精品视频在线看| 亚洲欧美综合色| 亚洲欧美日韩在线播放| 久久久久久久性| 日韩精品一区二区三区四区视频| 欧美人妖巨大在线| 欧美大片顶级少妇| 国产精品天美传媒| 国产999精品久久| www.欧美色图| 久久这里都是精品| 久久精品72免费观看| 欧洲人成人精品| 精品国产凹凸成av人网站| 丝袜亚洲精品中文字幕一区| 91色九色蝌蚪| 国产精品高清亚洲| 久久精品国产**网站演员| 制服丝袜在线91| 日本美女视频一区二区| 成人午夜激情视频| 欧美视频一区在线观看| 精品盗摄一区二区三区| 久久亚洲综合色| 亚洲视频在线观看一区| 午夜视频久久久久久| 国产在线乱码一区二区三区| 欧美亚洲高清一区| 日韩一二三四区| 亚洲一区二区欧美激情| 国产一区二区剧情av在线| 91精品国产综合久久精品图片| 91精品欧美综合在线观看最新| 黄页网站大全一区二区| 国产嫩草影院久久久久| 欧美日韩国产首页| 国产精品1区2区3区在线观看| 亚洲综合久久av| 国产视频一区在线播放| 欧美日韩一区二区在线观看 | 美女视频一区二区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91精品福利在线一区二区三区| 成人av在线电影| 久久99热狠狠色一区二区| 亚洲男人都懂的| 国产精品视频一区二区三区不卡| 91精品国产手机| 欧美无砖砖区免费| 99久久精品免费| 国产黄色精品视频|