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

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

?? polarplot.java

?? jfreechart1.0.1 jsp繪制圖表的開發包
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
       
        // draw the radius grid lines, if any...
        if (isRadiusGridlinesVisible()) {
            Stroke gridStroke = getRadiusGridlineStroke();
            Paint gridPaint = getRadiusGridlinePaint();
            if ((gridStroke != null) && (gridPaint != null)) {
                this.renderer.drawRadialGridLines(
                    g2, this, this.axis, radialTicks, dataArea
                );
            }
        }      
    }
   
    /**
     * Zooms the axis ranges by the specified percentage about the anchor point.
     *
     * @param percent  the amount of the zoom.
     */
    public void zoom(double percent) {
        if (percent > 0.0) {
            double radius = getMaxRadius();
            double scaledRadius = radius * percent;
            this.axis.setUpperBound(scaledRadius);
            getAxis().setAutoRange(false);
        } 
        else {
            getAxis().setAutoRange(true);
        }
    }
   
    /**
     * Returns the range for the specified axis.
     *
     * @param axis  the axis.
     *
     * @return The range.
     */
    public Range getDataRange(ValueAxis axis) {
        Range result = null;
        if (this.dataset != null) {
            result = Range.combine(result, 
                    DatasetUtilities.findRangeBounds(this.dataset));
        }
        return result;
    }
   
    /**
     * Receives notification of a change to the plot's m_Dataset.
     * <P>
     * The axis ranges are updated if necessary.
     *
     * @param event  information about the event (not used here).
     */
    public void datasetChanged(DatasetChangeEvent event) {

        if (this.axis != null) {
            this.axis.configure();
        }
       
        if (getParent() != null) {
            getParent().datasetChanged(event);
        }
        else {
            super.datasetChanged(event);
        }
    }
   
    /**
     * Notifies all registered listeners of a property change.
     * <P>
     * One source of property change events is the plot's m_Renderer.
     *
     * @param event  information about the property change.
     */
    public void rendererChanged(RendererChangeEvent event) {
        notifyListeners(new PlotChangeEvent(this));
    }
   
    /**
     * Returns the number of series in the dataset for this plot.  If the 
     * dataset is <code>null</code>, the method returns 0.
     *
     * @return The series count.
     */
    public int getSeriesCount() {
        int result = 0;
       
        if (this.dataset != null) {
            result = this.dataset.getSeriesCount();
        }
        return result;
    }
   
    /**
     * Returns the legend items for the plot.  Each legend item is generated by
     * the plot's m_Renderer, since the m_Renderer is responsible for the visual
     * representation of the data.
     *
     * @return The legend items.
     */
    public LegendItemCollection getLegendItems() {
        LegendItemCollection result = new LegendItemCollection();
       
        // get the legend items for the main m_Dataset...
        if (this.dataset != null) {
            if (this.renderer != null) {
                int seriesCount = this.dataset.getSeriesCount();
                for (int i = 0; i < seriesCount; i++) {
                    LegendItem item = this.renderer.getLegendItem(i);
                    result.add(item);
                }
            }
        }      
        return result;
    }
   
    /**
     * Tests this plot for equality with another object.
     *
     * @param obj  the object (<code>null</code> permitted).
     *
     * @return <code>true</code> or <code>false</code>.
     */
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof PolarPlot)) {
            return false;
        }
        if (!super.equals(obj)) {
            return false;
        }
        PolarPlot that = (PolarPlot) obj;
        if (!ObjectUtilities.equal(this.axis, that.axis)) {
            return false;
        }
        if (!ObjectUtilities.equal(this.renderer, that.renderer)) {
            return false;
        }
        if (this.angleGridlinesVisible != that.angleGridlinesVisible) {
            return false;
        }
        if (this.angleLabelsVisible != that.angleLabelsVisible) {
            return false;   
        }
        if (!this.angleLabelFont.equals(that.angleLabelFont)) {
            return false;   
        }
        if (!PaintUtilities.equal(this.angleLabelPaint, that.angleLabelPaint)) {
            return false;   
        }
        if (!ObjectUtilities.equal(
            this.angleGridlineStroke, that.angleGridlineStroke
        )) {
            return false;
        }
        if (!PaintUtilities.equal(
            this.angleGridlinePaint, that.angleGridlinePaint
        )) {
            return false;
        }
        if (this.radiusGridlinesVisible != that.radiusGridlinesVisible) {
            return false;
        }
        if (!ObjectUtilities.equal(
            this.radiusGridlineStroke, that.radiusGridlineStroke
        )) {
            return false;
        }
        if (!PaintUtilities.equal(
            this.radiusGridlinePaint, that.radiusGridlinePaint
        )) {
            return false;
        }
        return true;
    }
   
    /**
     * Returns a clone of the plot.
     *
     * @return A clone.
     *
     * @throws CloneNotSupportedException  this can occur if some component of 
     *         the plot cannot be cloned.
     */
    public Object clone() throws CloneNotSupportedException {
      
        PolarPlot clone = (PolarPlot) super.clone();
        if (this.axis != null) {
            clone.axis = (ValueAxis) ObjectUtilities.clone(this.axis);
            clone.axis.setPlot(clone);
            clone.axis.addChangeListener(clone);
        }
      
        if (clone.dataset != null) {
            clone.dataset.addChangeListener(clone);
        }
      
        if (this.renderer != null) {
            clone.renderer 
                = (PolarItemRenderer) ObjectUtilities.clone(this.renderer);
        }
       
        return 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.writeStroke(this.angleGridlineStroke, stream);
        SerialUtilities.writePaint(this.angleGridlinePaint, stream);
        SerialUtilities.writeStroke(this.radiusGridlineStroke, stream);
        SerialUtilities.writePaint(this.radiusGridlinePaint, 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.angleGridlineStroke = SerialUtilities.readStroke(stream);
        this.angleGridlinePaint = SerialUtilities.readPaint(stream);
        this.radiusGridlineStroke = SerialUtilities.readStroke(stream);
        this.radiusGridlinePaint = SerialUtilities.readPaint(stream);
      
        if (this.axis != null) {
            this.axis.setPlot(this);
            this.axis.addChangeListener(this);
        }
      
        if (this.dataset != null) {
            this.dataset.addChangeListener(this);
        }
    }
   
    /**
     * This method is required by the {@link Zoomable} interface, but since
     * the plot does not have any domain axes, it does nothing.
     *
     * @param factor  the zoom factor.
     * @param state  the plot state.
     * @param source  the source point (in Java2D coordinates).
     */
    public void zoomDomainAxes(double factor, PlotRenderingInfo state, 
                               Point2D source) {
        // do nothing
    }
   
    /**
     * This method is required by the {@link Zoomable} interface, but since
     * the plot does not have any domain axes, it does nothing.
     * 
     * @param lowerPercent  the new lower bound.
     * @param upperPercent  the new upper bound.
     * @param state  the plot state.
     * @param source  the source point (in Java2D coordinates).
     */
    public void zoomDomainAxes(double lowerPercent, double upperPercent, 
                               PlotRenderingInfo state, Point2D source) {
        // do nothing
    }
   
    /**
     * Multiplies the range on the range axis/axes by the specified factor.
     *
     * @param factor  the zoom factor.
     * @param state  the plot state.
     * @param source  the source point (in Java2D coordinates).
     */
    public void zoomRangeAxes(double factor, PlotRenderingInfo state, 
                              Point2D source) {
        zoom(factor);
    }
   
    /**
     * Zooms in on the range axes.
     * 
     * @param lowerPercent  the new lower bound.
     * @param upperPercent  the new upper bound.
     * @param state  the plot state.
     * @param source  the source point (in Java2D coordinates).
     */
    public void zoomRangeAxes(double lowerPercent, double upperPercent, 
                              PlotRenderingInfo state, Point2D source) {
        zoom((upperPercent + lowerPercent) / 2.0);
    }   

    /**
     * Returns <code>true</code>.
     * 
     * @return A boolean.
     */
    public boolean isDomainZoomable() {
        return false;
    }
    
    /**
     * Returns <code>true</code>.
     * 
     * @return A boolean.
     */
    public boolean isRangeZoomable() {
        return true;
    }
    
    /**
     * Returns the orientation of the plot.
     * 
     * @return The orientation.
     */
    public PlotOrientation getOrientation() {
        return PlotOrientation.HORIZONTAL;
    }


    // ----------------------
    // --- Public Methods ---
    // ----------------------

    /**
     * Returns the upper bound of the radius axis.
     * 
     * @return The upper bound.
     */
    public double getMaxRadius() {
        return this.axis.getUpperBound();
    }

    /**
     * Translates a (theta, radius) pair into Java2D coordinates.
     * 
     * @param angleDegrees  the angle in degrees.
     * @param radius  the radius.
     * @param dataArea  the data area.
     * 
     * @return A point in Java2D space.
     */   
    public Point translateValueThetaRadiusToJava2D(double angleDegrees, 
                                                   double radius,
                                                   Rectangle2D dataArea) {
       
        double radians = Math.toRadians(angleDegrees - 90.0);
      
        double minx = dataArea.getMinX() + MARGIN;
        double maxx = dataArea.getMaxX() - MARGIN;
        double miny = dataArea.getMinY() + MARGIN;
        double maxy = dataArea.getMaxY() - MARGIN;
      
        double lengthX = maxx - minx;
        double lengthY = maxy - miny;
        double length = Math.min(lengthX, lengthY);
      
        double midX = minx + lengthX / 2.0;
        double midY = miny + lengthY / 2.0;
      
        double axisMin = this.axis.getLowerBound();
        double axisMax =  getMaxRadius();

        double xv = length / 2.0 * Math.cos(radians);
        double yv = length / 2.0 * Math.sin(radians);

        float x = (float) (midX + (xv * (radius - axisMin) 
                / (axisMax - axisMin)));
        float y = (float) (midY + (yv * (radius - axisMin) 
                / (axisMax - axisMin)));
      
        int ix = Math.round(x);
        int iy = Math.round(y);
      
        Point p = new Point(ix, iy);
        return p;
        
    }
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美疯狂性受xxxxx喷水图片| 精品少妇一区二区三区| 久久99精品国产.久久久久久| 国产免费观看久久| 欧美一区二区三区不卡| 色综合久久88色综合天天6| 国产精品888| 蜜臀久久99精品久久久久宅男| 亚洲黄色小视频| 欧美国产禁国产网站cc| 欧美一级黄色片| 欧美视频一区二区三区在线观看| 成人综合日日夜夜| 蜜臀久久久久久久| 亚洲一区二区视频在线| 国产精品成人在线观看| 日本一区二区动态图| 久久午夜电影网| 欧美成人三级在线| 91精品国产色综合久久不卡蜜臀 | www.色综合.com| 激情综合色播激情啊| 日韩精品亚洲专区| 午夜视频在线观看一区| 夜夜精品浪潮av一区二区三区| 国产精品美女久久久久aⅴ国产馆| 日韩欧美电影一二三| 欧美放荡的少妇| 欧美欧美午夜aⅴ在线观看| 在线看国产一区二区| 欧美在线一二三四区| 91美女福利视频| 色丁香久综合在线久综合在线观看| 成人高清免费在线播放| 国产成人在线视频网址| 国产原创一区二区| 国产成人自拍网| 成人中文字幕电影| av资源站一区| 色综合久久久久综合99| 欧美专区亚洲专区| 欧美区一区二区三区| 91精品国产综合久久福利| 欧美大度的电影原声| 精品久久五月天| 国产女人水真多18毛片18精品视频| 久久精品夜色噜噜亚洲aⅴ| 国产亚洲综合在线| 欧美国产日韩亚洲一区| 亚洲三级在线观看| 亚欧色一区w666天堂| 日韩成人一区二区| 狠狠色综合播放一区二区| 国产尤物一区二区在线| www.性欧美| 欧美日韩在线三区| 日韩一级大片在线观看| 久久久久国产精品麻豆ai换脸| 中文字幕欧美三区| 亚洲资源在线观看| 免费高清不卡av| 国产jizzjizz一区二区| 91在线看国产| 91精品国产色综合久久ai换脸| 欧美mv和日韩mv国产网站| 国产精品乱人伦| 亚洲一级二级三级在线免费观看| 免费在线欧美视频| 成年人网站91| 3751色影院一区二区三区| 久久久久久久久一| 亚洲男人的天堂av| 久久精品国产亚洲a| 91麻豆精品在线观看| 日韩一区二区在线看| 国产欧美日韩不卡免费| 亚洲不卡一区二区三区| 国产suv精品一区二区三区| 欧美在线色视频| 久久久久久久综合狠狠综合| 亚洲一区二三区| 国产成人自拍网| 91精品国产色综合久久不卡电影| 国产精品人成在线观看免费| 午夜久久电影网| 成人午夜视频福利| 欧美一区二区在线观看| 亚洲乱码国产乱码精品精可以看 | 成人综合日日夜夜| 91麻豆精品国产91久久久久久久久| 国产拍揄自揄精品视频麻豆| 午夜影院在线观看欧美| 国产成人av一区二区| 6080午夜不卡| 亚洲精品免费在线播放| 国产精一区二区三区| 欧美精品免费视频| 亚洲九九爱视频| 国产精品伊人色| 欧美一区二区高清| 亚洲激情欧美激情| 波多野结衣亚洲| 日韩三级高清在线| 亚洲国产日韩精品| av动漫一区二区| 久久综合五月天婷婷伊人| 日韩和欧美一区二区| 日本韩国欧美一区二区三区| 国产蜜臀av在线一区二区三区| 蜜桃视频第一区免费观看| 欧美日韩在线三级| 亚洲欧美成人一区二区三区| 国产成人精品免费视频网站| 日韩久久久精品| 婷婷成人综合网| 欧美日韩视频第一区| 亚洲人成网站色在线观看| 成人高清伦理免费影院在线观看| 久久综合九色综合欧美98| 琪琪一区二区三区| 欧美一卡二卡三卡四卡| 首页综合国产亚洲丝袜| 欧美日韩三级一区二区| 亚洲成av人片在线| 欧美性大战久久久久久久| 一区二区在线观看免费| 99久久精品费精品国产一区二区| 日本一区二区电影| 成人一级片网址| 久久精品视频在线看| 国产尤物一区二区在线 | 亚洲福利一区二区| 91传媒视频在线播放| 一区二区三区精品| 欧美日韩综合色| 亚洲h精品动漫在线观看| 欧美日韩精品一区二区三区 | 天堂av在线一区| 欧美日韩国产精选| 日本色综合中文字幕| 欧美电影免费观看高清完整版在 | 欧美私模裸体表演在线观看| 亚洲福中文字幕伊人影院| 欧美人牲a欧美精品| 麻豆精品一区二区综合av| 精品国产免费人成电影在线观看四季| 极品少妇一区二区| 国产亚洲精品7777| 成人av影院在线| 亚洲最大成人网4388xx| 欧美一区二视频| 国产精品一区二区久激情瑜伽| 国产日韩欧美不卡在线| 91欧美一区二区| 丝袜国产日韩另类美女| 精品久久一区二区三区| www.亚洲色图.com| 午夜成人免费电影| 精品精品欲导航| av电影在线观看一区| 天天操天天色综合| 久久综合色播五月| 不卡欧美aaaaa| 日韩不卡手机在线v区| 久久久91精品国产一区二区精品 | 日韩精品三区四区| 国产色综合久久| 色哦色哦哦色天天综合| 奇米影视一区二区三区小说| 国产亚洲一区二区三区在线观看 | 国产一区二区三区免费播放| 中文一区一区三区高中清不卡| 色婷婷久久久综合中文字幕| 麻豆91在线观看| 亚洲欧美日韩国产综合| 欧美一区二区黄色| 色综合色综合色综合色综合色综合| 日韩高清在线电影| 国产精品免费aⅴ片在线观看| 欧美视频一区二区三区四区| 国产精品自在在线| 亚洲国产视频网站| 国产日韩视频一区二区三区| 色综合天天综合网天天狠天天| 免费观看91视频大全| 亚洲精品免费在线观看| 久久先锋影音av| 欧美福利电影网| 色网综合在线观看| 国产一区二区福利视频| 亚洲福利一二三区| 中文字幕亚洲一区二区av在线| 日韩天堂在线观看| 欧美在线色视频| 成人av一区二区三区| 精品一区二区久久| 偷拍亚洲欧洲综合| 自拍偷拍欧美激情| 国产女同互慰高潮91漫画| 日韩欧美国产一区在线观看|