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

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

?? xylineannotation.java

?? jfreechart1.0.1 jsp繪制圖表的開發包
?? JAVA
字號:
/* ===========================================================
 * 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.]
 *
 * ---------------------
 * XYLineAnnotation.java
 * ---------------------
 * (C) Copyright 2003-2005, by Object Refinery Limited.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited);
 * Contributor(s):   -;
 *
 * $Id: XYLineAnnotation.java,v 1.7.2.2 2005/10/25 16:51:15 mungady Exp $
 *
 * Changes:
 * --------
 * 02-Apr-2003 : Version 1 (DG);
 * 19-Aug-2003 : Added equals method, implemented Cloneable, and applied 
 *               serialization fixes (DG);
 * 21-Jan-2004 : Update for renamed method in ValueAxis (DG);
 * 14-Apr-2004 : Fixed draw() method to handle plot orientation correctly (DG);
 * 29-Sep-2004 : Added support for tool tips and URLS, now extends 
 *               AbstractXYAnnotation (DG);
 * 04-Oct-2004 : Renamed ShapeUtils --> ShapeUtilities (DG);
 * 08-Jun-2005 : Fixed equals() method to handle GradientPaint() (DG);
 * 
 */

package org.jfree.chart.annotations;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Stroke;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.PlotRenderingInfo;
import org.jfree.chart.plot.XYPlot;
import org.jfree.io.SerialUtilities;
import org.jfree.ui.RectangleEdge;
import org.jfree.util.ObjectUtilities;
import org.jfree.util.PaintUtilities;
import org.jfree.util.PublicCloneable;
import org.jfree.util.ShapeUtilities;

/**
 * A simple line annotation that can be placed on an {@link XYPlot}.
 */
public class XYLineAnnotation extends AbstractXYAnnotation
                              implements Cloneable, PublicCloneable, 
                                         Serializable {

    /** For serialization. */
    private static final long serialVersionUID = -80535465244091334L;
    
    /** The x-coordinate. */
    private double x1;

    /** The y-coordinate. */
    private double y1;

    /** The x-coordinate. */
    private double x2;

    /** The y-coordinate. */
    private double y2;

    /** The line stroke. */
    private transient Stroke stroke;

    /** The line color. */
    private transient Paint paint;

    /**
     * Creates a new annotation that draws a line from (x1, y1) to (x2, y2) 
     * where the coordinates are measured in data space (that is, against the 
     * plot's axes).
     * 
     * @param x1  the x-coordinate for the start of the line.
     * @param y1  the y-coordinate for the start of the line.
     * @param x2  the x-coordinate for the end of the line.
     * @param y2  the y-coordinate for the end of the line.
     */
    public XYLineAnnotation(double x1, double y1, double x2, double y2) {
        this(x1, y1, x2, y2, new BasicStroke(1.0f), Color.black);
    }
    
    /**
     * Creates a new annotation that draws a line from (x1, y1) to (x2, y2) 
     * where the coordinates are measured in data space (that is, against the 
     * plot's axes).
     *
     * @param x1  the x-coordinate for the start of the line.
     * @param y1  the y-coordinate for the start of the line.
     * @param x2  the x-coordinate for the end of the line.
     * @param y2  the y-coordinate for the end of the line.
     * @param stroke  the line stroke (<code>null</code> not permitted).
     * @param paint  the line color (<code>null</code> not permitted).
     */
    public XYLineAnnotation(double x1, double y1, double x2, double y2,
                            Stroke stroke, Paint paint) {

        if (stroke == null) {
            throw new IllegalArgumentException("Null 'stroke' argument.");   
        }
        if (paint == null) {
            throw new IllegalArgumentException("Null 'paint' argument.");   
        }
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
        this.stroke = stroke;
        this.paint = paint;

    }

    /**
     * Draws the annotation.  This method is called by the {@link XYPlot} 
     * class, you won't normally need to call it yourself.
     *
     * @param g2  the graphics device.
     * @param plot  the plot.
     * @param dataArea  the data area.
     * @param domainAxis  the domain axis.
     * @param rangeAxis  the range axis.
     * @param rendererIndex  the renderer index.
     * @param info  if supplied, this info object will be populated with
     *              entity information.
     */
    public void draw(Graphics2D g2, XYPlot plot, Rectangle2D dataArea,
                     ValueAxis domainAxis, ValueAxis rangeAxis, 
                     int rendererIndex,
                     PlotRenderingInfo info) {

        PlotOrientation orientation = plot.getOrientation();
        RectangleEdge domainEdge = Plot.resolveDomainAxisLocation(
            plot.getDomainAxisLocation(), orientation
        );
        RectangleEdge rangeEdge = Plot.resolveRangeAxisLocation(
            plot.getRangeAxisLocation(), orientation
        );
        float j2DX1 = 0.0f;
        float j2DX2 = 0.0f;
        float j2DY1 = 0.0f;
        float j2DY2 = 0.0f;
        if (orientation == PlotOrientation.VERTICAL) {
            j2DX1 = (float) domainAxis.valueToJava2D(
                this.x1, dataArea, domainEdge
            );
            j2DY1 = (float) rangeAxis.valueToJava2D(
                this.y1, dataArea, rangeEdge
            );
            j2DX2 = (float) domainAxis.valueToJava2D(
                this.x2, dataArea, domainEdge
            );
            j2DY2 = (float) rangeAxis.valueToJava2D(
                this.y2, dataArea, rangeEdge
            );
        }
        else if (orientation == PlotOrientation.HORIZONTAL) {
            j2DY1 = (float) domainAxis.valueToJava2D(
                this.x1, dataArea, domainEdge
            );
            j2DX1 = (float) rangeAxis.valueToJava2D(
                this.y1, dataArea, rangeEdge
            );
            j2DY2 = (float) domainAxis.valueToJava2D(
                this.x2, dataArea, domainEdge
            );
            j2DX2 = (float) rangeAxis.valueToJava2D(
                this.y2, dataArea, rangeEdge
            );                
        }
        g2.setPaint(this.paint);
        g2.setStroke(this.stroke);
        Line2D line = new Line2D.Float(j2DX1, j2DY1, j2DX2, j2DY2);
        g2.draw(line);

        String toolTip = getToolTipText();
        String url = getURL();
        if (toolTip != null || url != null) {
            addEntity(
                info, ShapeUtilities.createLineRegion(line, 1.0f), 
                rendererIndex, toolTip, url
            );
        }
    }

    /**
     * Tests this object for equality with an arbitrary object.
     * 
     * @param obj  the object to test against (<code>null</code> permitted).
     * 
     * @return <code>true</code> or <code>false</code>.
     */
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!super.equals(obj)) {
            return false;
        }
        if (!(obj instanceof XYLineAnnotation)) {
            return false;
        }
        XYLineAnnotation that = (XYLineAnnotation) obj;
        if (this.x1 != that.x1) {
            return false;
        }
        if (this.y1 != that.y1) {
            return false;
        }
        if (this.x2 != that.x2) {
            return false;
        }
        if (this.y2 != that.y2) {
            return false;
        }
        if (!PaintUtilities.equal(this.paint, that.paint)) {
            return false;
        }
        if (!ObjectUtilities.equal(this.stroke, that.stroke)) {
            return false;
        }
        // seems to be the same...
        return true;
    }
    
    /**
     * Returns a hash code.
     * 
     * @return A hash code.
     */
    public int hashCode() {
        int result;
        long temp;
        temp = Double.doubleToLongBits(this.x1);
        result = (int) (temp ^ (temp >>> 32));
        temp = Double.doubleToLongBits(this.x2);
        result = 29 * result + (int) (temp ^ (temp >>> 32));
        temp = Double.doubleToLongBits(this.y1);
        result = 29 * result + (int) (temp ^ (temp >>> 32));
        temp = Double.doubleToLongBits(this.y2);
        result = 29 * result + (int) (temp ^ (temp >>> 32));
        return result;
    }

    /**
     * Returns a clone of the annotation.
     * 
     * @return A clone.
     * 
     * @throws CloneNotSupportedException  if the annotation can't be cloned.
     */
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
    
    /**
     * Provides serialization support.
     *
     * @param stream  the output stream.
     *
     * @throws IOException  if there is an I/O error.
     */
    private void writeObject(ObjectOutputStream stream) throws IOException {

        stream.defaultWriteObject();
        SerialUtilities.writePaint(this.paint, stream);
        SerialUtilities.writeStroke(this.stroke, stream);

    }

    /**
     * Provides serialization support.
     *
     * @param stream  the input stream.
     *
     * @throws IOException  if there is an I/O error.
     * @throws ClassNotFoundException  if there is a classpath problem.
     */
    private void readObject(ObjectInputStream stream) 
        throws IOException, ClassNotFoundException {
        stream.defaultReadObject();
        this.paint = SerialUtilities.readPaint(stream);
        this.stroke = SerialUtilities.readStroke(stream);
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕免费一区| 91看片淫黄大片一级在线观看| 国产精品久久久久久亚洲伦| 欧美精品一区二区三区久久久| 在线国产电影不卡| 日本道精品一区二区三区| 91浏览器打开| 欧美日韩在线观看一区二区 | 亚洲精品一区二区三区精华液 | 国产99久久久国产精品潘金| 国产最新精品免费| 粉嫩高潮美女一区二区三区| 成人一区二区视频| 一本一本大道香蕉久在线精品 | 香港成人在线视频| 日韩va欧美va亚洲va久久| 极品美女销魂一区二区三区免费| 激情综合色综合久久综合| 成人黄色综合网站| 欧美无乱码久久久免费午夜一区 | 日韩欧美国产一区在线观看| 久久久亚洲精华液精华液精华液| 7777精品伊人久久久大香线蕉完整版 | 亚洲精品一区二区三区福利| 国产夜色精品一区二区av| 中文字幕电影一区| 亚洲综合视频在线观看| 人人爽香蕉精品| 丁香一区二区三区| 欧美日韩性生活| 久久亚洲一区二区三区四区| 国产精品久久久久久久裸模 | 久久综合九色综合97_久久久 | 亚洲成a人v欧美综合天堂| 久久超碰97人人做人人爱| 99精品视频在线观看免费| 91精品国产综合久久婷婷香蕉| 国产三级欧美三级| 亚洲va欧美va国产va天堂影院| 精品一二三四区| 欧美亚一区二区| 国产午夜精品一区二区三区嫩草| 亚洲一区二区三区中文字幕 | 欧美va亚洲va| 亚洲黄色片在线观看| 国产精品资源在线| 欧美日韩国产免费一区二区 | 日韩一区二区影院| 亚洲蜜臀av乱码久久精品| 国产自产2019最新不卡| 精品视频一区三区九区| 中文字幕在线一区二区三区| 极品瑜伽女神91| 欧美一级欧美三级| 亚洲午夜久久久久久久久电影院| 国产乱人伦偷精品视频不卡| 久久久久亚洲综合| 亚洲一区二区综合| 99这里只有精品| 精品国精品国产尤物美女| 亚洲一二三四在线观看| 成人激情视频网站| 欧美精品一区二区三区蜜臀| 久久精品国产亚洲高清剧情介绍| 日本韩国一区二区三区| 国产精品传媒在线| 成人在线综合网站| 国产精品久久777777| 国产高清在线精品| 久久精品这里都是精品| 蜜臀av在线播放一区二区三区| 欧美无砖专区一中文字| 亚洲一区国产视频| 欧美日韩成人综合在线一区二区| 亚洲自拍另类综合| 欧美日韩性生活| 亚洲成av人片在线| 日韩一本二本av| 激情五月播播久久久精品| 欧美精品一区二区三| 激情六月婷婷综合| 国产三区在线成人av| 成人午夜在线视频| 亚洲免费观看在线观看| 91成人免费网站| 一区二区久久久久久| 欧美日韩高清一区| 蜜桃一区二区三区四区| 精品国产欧美一区二区| 成人午夜激情片| 亚洲啪啪综合av一区二区三区| 99久久国产综合精品麻豆| 亚洲精品视频免费观看| 欧美在线短视频| 秋霞午夜鲁丝一区二区老狼| 欧美成人精品二区三区99精品| 国产一区二区三区美女| 国产精品伦一区二区三级视频| av电影在线观看一区| 亚洲已满18点击进入久久| 91精品麻豆日日躁夜夜躁| 国产精品99久久久久久久女警| 久久久午夜电影| 欧洲中文字幕精品| 精品在线播放免费| 日韩美女视频一区二区| 欧美一区二区三区四区视频| 韩国av一区二区| 综合久久久久久久| 欧美一级久久久久久久大片| 国产剧情av麻豆香蕉精品| 亚洲精品久久嫩草网站秘色| 日韩一级片网站| 91亚洲国产成人精品一区二三| 婷婷综合五月天| 国产精品美女久久久久av爽李琼| 精品视频一区三区九区| caoporen国产精品视频| 蜜桃av一区二区在线观看| 中文字幕中文字幕一区| 日韩免费在线观看| 欧美丝袜丝nylons| 成人免费高清视频| 久久不见久久见中文字幕免费| 成人欧美一区二区三区黑人麻豆| 91精品麻豆日日躁夜夜躁| 色八戒一区二区三区| 国产伦精品一区二区三区免费迷| 亚洲成人激情综合网| 亚洲图片你懂的| 国产无遮挡一区二区三区毛片日本| 在线观看不卡视频| 91网站黄www| 丁香婷婷综合五月| 国产一区高清在线| 麻豆一区二区99久久久久| 亚洲h动漫在线| 伊人婷婷欧美激情| 成人免费一区二区三区在线观看| 精品久久久三级丝袜| 欧美一区二区三区爱爱| 欧美人妖巨大在线| 欧美私人免费视频| 欧美乱妇20p| 欧美日韩国产小视频在线观看| 在线视频国内一区二区| 91麻豆精品秘密| 91国偷自产一区二区三区成为亚洲经典| 国产一区二区三区四| 久久国产精品无码网站| 久久国产综合精品| 蜜桃精品视频在线观看| 老司机免费视频一区二区| 蜜臀99久久精品久久久久久软件| 视频在线观看一区| 日本vs亚洲vs韩国一区三区二区 | 成人v精品蜜桃久久一区| 国产91对白在线观看九色| 国产精品888| 国产大陆精品国产| 成人av手机在线观看| 99久久精品情趣| 一本久久a久久精品亚洲 | 日韩精品国产欧美| 日韩二区三区在线观看| 老司机午夜精品| 国产激情精品久久久第一区二区 | 亚洲影院免费观看| 日韩av网站免费在线| 韩国一区二区在线观看| 国产成人精品亚洲日本在线桃色| 国产精品一二三区在线| av在线不卡电影| 欧美日韩不卡一区二区| 日韩欧美三级在线| 国产精品免费av| 亚洲成人一区在线| 国产精品一区二区在线观看网站| 成人综合在线观看| 在线观看精品一区| 久久久亚洲综合| 亚洲午夜免费电影| 国产91精品露脸国语对白| 欧美在线999| 欧美精品一区二区久久久| 亚洲天堂免费在线观看视频| 天堂久久久久va久久久久| 国产乱人伦偷精品视频免下载| 一本大道久久a久久精二百 | 国产一区二区美女诱惑| 91色综合久久久久婷婷| 日韩一区二区在线免费观看| 亚洲欧洲日韩女同| 看电影不卡的网站| 91性感美女视频| 久久精品在这里| 欧美bbbbb| 欧美日韩精品免费观看视频| 日本一区二区视频在线| 日本大胆欧美人术艺术动态|