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

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

?? xyshapeannotation.java

?? jfreechart1.0.1 jsp繪制圖表的開發(fā)包
?? 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.]
 *
 * ----------------------
 * XYShapeAnnotation.java
 * ----------------------
 * (C) Copyright 2003-2005, by Ondax, Inc. and Contributors.
 *
 * Original Author:  Greg Steckman (for Ondax, Inc.);
 * Contributor(s):   David Gilbert (for Object Refinery Limited);
 *
 * $Id: XYShapeAnnotation.java,v 1.8.2.2 2005/10/25 16:51:15 mungady Exp $
 *
 * Changes:
 * --------
 * 15-Aug-2003 : Version 1, adapted from 
 *               org.jfree.chart.annotations.XYLineAnnotation (GS);
 * 21-Jan-2004 : Update for renamed method in ValueAxis (DG);
 * 20-Apr-2004 : Added new constructor and fixed bug 934258 (DG);
 * 29-Sep-2004 : Added 'fillPaint' to allow for colored shapes, now extends
 *               AbstractXYAnnotation to add tool tip and URL support, and 
 *               implemented equals() and Cloneable (DG);
 * 21-Jan-2005 : Modified constructor for consistency with other 
 *               constructors (DG);
 * 06-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.Shape;
import java.awt.Stroke;
import java.awt.geom.AffineTransform;
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;

/**
 * A simple <code>Shape</code> annotation that can be placed on an 
 * {@link XYPlot}.  The shape coordinates are specified in data space.
 *
 * @author Greg Steckman
 */
public class XYShapeAnnotation extends AbstractXYAnnotation
                               implements Cloneable, PublicCloneable, 
                                          Serializable {
    
    /** For serialization. */
    private static final long serialVersionUID = -8553218317600684041L;
    
    /** The shape. */
    private transient Shape shape;

    /** The stroke used to draw the shape's outline. */
    private transient Stroke stroke;

    /** The paint used to draw the shape's outline. */
    private transient Paint outlinePaint;
    
    /** The paint used to fill the shape. */
    private transient Paint fillPaint;

    /**
     * Creates a new annotation (where, by default, the shape is drawn 
     * with a black outline).
     * 
     * @param shape  the shape (coordinates in data space).
     */
    public XYShapeAnnotation(Shape shape) {
        this(shape, new BasicStroke(1.0f), Color.black);
    }
    
    /**
     * Creates a new annotation where the shape is drawn as an outline using
     * the specified <code>stroke</code> and <code>outlinePaint</code>.
     *
     * @param shape  the shape (<code>null</code> not permitted).
     * @param stroke  the shape stroke (<code>null</code> permitted).
     * @param outlinePaint  the shape color (<code>null</code> permitted).
     */
    public XYShapeAnnotation(Shape shape, Stroke stroke, Paint outlinePaint) {
        this(shape, stroke, outlinePaint, null);
    }

    /**
     * Creates a new annotation.
     *
     * @param shape  the shape (<code>null</code> not permitted).
     * @param stroke  the shape stroke (<code>null</code> permitted).
     * @param outlinePaint  the shape color (<code>null</code> permitted).
     * @param fillPaint  the paint used to fill the shape (<code>null</code> 
     *                   permitted.
     */
    public XYShapeAnnotation(Shape shape, Stroke stroke, Paint outlinePaint, 
                             Paint fillPaint) {
        if (shape == null) {
            throw new IllegalArgumentException("Null 'shape' argument.");   
        }
        this.shape = shape;
        this.stroke = stroke;
        this.outlinePaint = outlinePaint;
        this.fillPaint = fillPaint;
    }

    /**
     * Draws the annotation.  This method is usually called by the 
     * {@link XYPlot} class, you shouldn't need to call it directly.
     *
     * @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  the plot rendering info.
     */
    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
        );

        //compute transform matrix elements via sample points. Assume no 
        // rotation or shear.
        // x-axis translation
        double m02 = domainAxis.valueToJava2D(0, dataArea, domainEdge); 
        // y-axis translation
        double m12 = rangeAxis.valueToJava2D(0, dataArea, rangeEdge);
        // x-axis scale 
        double m00 = domainAxis.valueToJava2D(1, dataArea, domainEdge) - m02; 
        // y-axis scale
        double m11 = rangeAxis.valueToJava2D(1, dataArea, rangeEdge) - m12; 

        //create transform & transform shape
        Shape s = null;
        if (orientation == PlotOrientation.HORIZONTAL) {
            AffineTransform t1 = new AffineTransform(
                0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f
            );
            AffineTransform t2 = new AffineTransform(
                m11, 0.0f, 0.0f, m00, m12, m02
            );
            s = t1.createTransformedShape(this.shape);
            s = t2.createTransformedShape(s);
        }
        else if (orientation == PlotOrientation.VERTICAL) {
            AffineTransform t = new AffineTransform(m00, 0, 0, m11, m02, m12);
            s = t.createTransformedShape(this.shape);
        }

        if (this.fillPaint != null) {
            g2.setPaint(this.fillPaint);
            g2.fill(s);
        }
        
        if (this.stroke != null && this.outlinePaint != null) {
            g2.setPaint(this.outlinePaint);
            g2.setStroke(this.stroke);
            g2.draw(s);
        }
        addEntity(info, s, rendererIndex, getToolTipText(), getURL());
        
    }
        
    /**
     * Tests this annotation for equality with an arbitrary object.
     * 
     * @param obj  the object (<code>null</code> permitted).
     * 
     * @return A boolean.
     */
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        // now try to reject equality
        if (!super.equals(obj)) {
            return false;
        }
        if (!(obj instanceof XYShapeAnnotation)) {
            return false;
        }
        XYShapeAnnotation that = (XYShapeAnnotation) obj;
        if (!this.shape.equals(that.shape)) {
            return false;
        }
        if (!ObjectUtilities.equal(this.stroke, that.stroke)) {
            return false;
        }
        if (!PaintUtilities.equal(this.outlinePaint, that.outlinePaint)) {
            return false;
        }
        if (!PaintUtilities.equal(this.fillPaint, that.fillPaint)) {
            return false;
        }
        // seem to be the same
        return true;
    }
    
    /**
     * Returns a hash code for this instance.
     * 
     * @return A hash code.
     */
    public int hashCode() {
        // TODO:  implement this properly.
        return this.shape.hashCode();   
    }
    
    /**
     * Returns a clone.
     * 
     * @return A clone.
     * 
     * @throws CloneNotSupportedException ???.
     */
    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.writeShape(this.shape, stream);
        SerialUtilities.writeStroke(this.stroke, stream);
        SerialUtilities.writePaint(this.outlinePaint, stream);
        SerialUtilities.writePaint(this.fillPaint, 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.shape = SerialUtilities.readShape(stream);
        this.stroke = SerialUtilities.readStroke(stream);
        this.outlinePaint = SerialUtilities.readPaint(stream);
        this.fillPaint = SerialUtilities.readPaint(stream);
    }

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费在线视频一区| 久久精品欧美一区二区三区不卡| 国产激情一区二区三区四区| 日韩精品一区第一页| 亚洲福利一二三区| 一区二区三区91| 亚洲综合偷拍欧美一区色| 一区二区三区不卡视频在线观看| 亚洲理论在线观看| 亚洲国产日日夜夜| 蜜臀久久久99精品久久久久久| 乱一区二区av| 国产91在线观看| 色综合久久综合网| 欧美色图第一页| 精品欧美乱码久久久久久1区2区| 久久亚洲精精品中文字幕早川悠里| 国产欧美日韩在线| 一区二区三区中文字幕电影| 亚洲va国产va欧美va观看| 青青草国产精品亚洲专区无| 国产高清在线精品| 91理论电影在线观看| 91.com在线观看| 亚洲国产精品二十页| 亚洲国产精品久久人人爱| 国产制服丝袜一区| 日本乱人伦一区| 精品动漫一区二区三区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 一片黄亚洲嫩模| 国产精品一二三区| 欧美日韩免费高清一区色橹橹| 日韩视频一区在线观看| 日韩伦理电影网| 国产自产视频一区二区三区| 欧美无砖砖区免费| 国产女同性恋一区二区| 日韩精品福利网| 一本高清dvd不卡在线观看| 欧美va亚洲va| 亚洲成av人综合在线观看| 成人性色生活片| 精品久久久三级丝袜| 亚洲尤物在线视频观看| 成人短视频下载| www精品美女久久久tv| 日韩综合小视频| 一本色道久久综合精品竹菊| 国产亚洲欧美日韩在线一区| 日韩av电影免费观看高清完整版| 99视频在线观看一区三区| 欧美成人艳星乳罩| 日韩黄色免费网站| 欧美性猛交xxxx乱大交退制版 | 一区二区三区在线免费视频| 麻豆91精品视频| 欧美三级一区二区| 一区二区三区四区视频精品免费| 懂色av中文字幕一区二区三区| 精品福利二区三区| 九色porny丨国产精品| 91精品在线一区二区| 亚洲大片一区二区三区| 91女神在线视频| 国产精品色婷婷| 成人免费福利片| 国产精品女人毛片| 丁香啪啪综合成人亚洲小说| 久久免费看少妇高潮| 韩国午夜理伦三级不卡影院| 日韩免费观看高清完整版| 免费观看30秒视频久久| 91精品国产综合久久精品性色| 午夜精品久久久久久久久| 欧美日韩在线精品一区二区三区激情 | 亚洲视频免费看| eeuss国产一区二区三区| 中文字幕中文在线不卡住| 成人在线视频首页| 最新不卡av在线| 日本韩国视频一区二区| 亚洲国产视频直播| 日韩午夜电影在线观看| 国产精品一区二区在线看| 欧美国产综合一区二区| 成人av电影在线网| 亚洲精品午夜久久久| 欧美天堂一区二区三区| 奇米888四色在线精品| 精品国产免费一区二区三区香蕉 | 国产精品美女久久久久久久| 97久久人人超碰| 亚洲电影在线播放| 日韩视频免费观看高清完整版 | 国产精品福利av| 在线免费av一区| 蓝色福利精品导航| 国产精品久久久久久久久动漫| 一本到高清视频免费精品| 日产欧产美韩系列久久99| 国产网红主播福利一区二区| 一本色道久久综合亚洲精品按摩| 日日夜夜免费精品视频| 久久久精品国产免大香伊| 色婷婷久久久综合中文字幕| 免费成人av在线| 国产精品久久久久久久久搜平片| 欧美久久高跟鞋激| 国产福利一区二区| 亚洲成人免费电影| 国产精品看片你懂得| 欧美一二三四区在线| 99国产一区二区三精品乱码| 日韩黄色免费网站| 日韩理论片一区二区| 日韩欧美中文字幕一区| 成人免费视频视频| 美女视频一区在线观看| 亚洲自拍偷拍图区| 国产欧美一区二区精品性色| 3d成人动漫网站| 9色porny自拍视频一区二区| 精品伊人久久久久7777人| 亚洲国产裸拍裸体视频在线观看乱了| 日韩色视频在线观看| 欧美系列在线观看| 99久久精品费精品国产一区二区| 欧美bbbbb| 亚洲成人1区2区| 国产精品成人免费| 国产精品美女久久久久高潮| 日韩精品在线网站| 日韩一区二区三区免费观看| 欧美亚洲图片小说| 91福利视频网站| 91丨porny丨在线| 成人激情视频网站| 国产aⅴ综合色| 粉嫩高潮美女一区二区三区 | 制服丝袜在线91| 91久久精品一区二区二区| 成人av片在线观看| 成人午夜在线免费| 丁香婷婷深情五月亚洲| 国产精品一线二线三线| 国产一区二区三区综合| 极品美女销魂一区二区三区 | 99r精品视频| 不卡高清视频专区| 99精品国产99久久久久久白柏| 成人综合日日夜夜| 99久久精品费精品国产一区二区| 菠萝蜜视频在线观看一区| 成人国产精品免费观看| jiyouzz国产精品久久| 一本久道久久综合中文字幕| 日本丶国产丶欧美色综合| 欧美午夜电影一区| 制服丝袜国产精品| 久久尤物电影视频在线观看| 国产亚洲一二三区| 亚洲色图都市小说| 亚洲自拍偷拍麻豆| 日本不卡不码高清免费观看| 久久国产欧美日韩精品| 国产精品影视网| 色呦呦网站一区| 91麻豆精品国产自产在线观看一区 | 精品国产乱码久久久久久蜜臀| 日韩欧美一区中文| 国产日韩一级二级三级| 亚洲欧美怡红院| 亚洲国产精品精华液网站| 人人精品人人爱| 成人av免费在线播放| 欧美无砖砖区免费| 日韩精品一区二区三区视频 | www激情久久| 国产精品二三区| 欧美aaaaaa午夜精品| 国产乱码一区二区三区| 91视频com| 精品少妇一区二区三区免费观看| 国产精品女同互慰在线看| 日韩影视精彩在线| 白白色 亚洲乱淫| 日韩欧美www| 亚洲自拍偷拍av| 成人av午夜影院| 51午夜精品国产| 亚洲欧洲日产国码二区| 精品一区二区三区av| 日本高清视频一区二区| 久久久五月婷婷| 日韩精品国产欧美| 色999日韩国产欧美一区二区| 久久久久久久久久久久久夜| 亚洲一区二区免费视频| 9人人澡人人爽人人精品|