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

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

?? categoryplot.java

?? Web圖形化的Java庫
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
     * Returns the pen-style (<code>Stroke</code>) used to draw the crosshair (if visible).
     *
     * @return the crosshair stroke.
     */
    public Stroke getRangeCrosshairStroke() {
        return rangeCrosshairStroke;
    }

    /**
     * Sets the pen-style (<code>Stroke</code>) used to draw the crosshairs (if visible).
     * A {@link PlotChangeEvent} is sent to all registered listeners.
     *
     * @param stroke  the new crosshair stroke.
     */
    public void setRangeCrosshairStroke(Stroke stroke) {
        rangeCrosshairStroke = stroke;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Returns the range crosshair color.
     *
     * @return the crosshair color.
     */
    public Paint getRangeCrosshairPaint() {
        return this.rangeCrosshairPaint;
    }

    /**
     * Sets the Paint used to color the crosshairs (if visible) and notifies
     * registered listeners that the axis has been modified.
     *
     * @param paint the new crosshair paint.
     */
    public void setRangeCrosshairPaint(Paint paint) {
        this.rangeCrosshairPaint = paint;
        notifyListeners(new PlotChangeEvent(this));
    }

    /**
     * Returns the list of annotations.
     *
     * @return The list of annotations.
     */
    public List getAnnotations() {
        return this.annotations;
    }

    /**
     * Adds an annotation to the plot.
     *
     * @param annotation  the annotation.
     */
    public void addAnnotation(CategoryAnnotation annotation) {

        if (this.annotations == null) {
            this.annotations = new java.util.ArrayList();
        }
        this.annotations.add(annotation);
        notifyListeners(new PlotChangeEvent(this));

    }

    /**
     * Calculates the space required for the domain axis/axes.
     * 
     * @param g2  the graphics device.
     * @param plotArea  the plot area.
     * @param space  a carrier for the result (<code>null</code> permitted).
     * 
     * @return  The required space.
     */
    protected AxisSpace calculateDomainAxisSpace(Graphics2D g2, Rectangle2D plotArea, 
                                                 AxisSpace space) {
                                                     
        if (space == null) {
            space = new AxisSpace();
        }
        
        // reserve some space for the domain axis...
        if (this.fixedDomainAxisSpace != null) {
            if (orientation == PlotOrientation.HORIZONTAL) {
                space.ensureAtLeast(this.fixedDomainAxisSpace.getLeft(), RectangleEdge.LEFT);
                space.ensureAtLeast(this.fixedDomainAxisSpace.getRight(), RectangleEdge.RIGHT);
            }
            else if (orientation == PlotOrientation.VERTICAL) {
                space.ensureAtLeast(this.fixedDomainAxisSpace.getTop(), RectangleEdge.TOP);
                space.ensureAtLeast(this.fixedDomainAxisSpace.getBottom(), RectangleEdge.BOTTOM);
            }
        }
        else {
            // reserve space for the primary domain axis...
            RectangleEdge domainEdge = Plot.resolveDomainAxisLocation(
                getDomainAxisLocation(), this.orientation
            );
            if (this.domainAxis != null) {
                space = this.domainAxis.reserveSpace(g2, this, plotArea, domainEdge, space);
            }
            else {
                if (this.drawSharedDomainAxis) {
                    space = getDomainAxis().reserveSpace(g2, this, plotArea, domainEdge, space);
                }
            }
            
            // reserve space for any secondary domain axes...
            for (int i = 0; i < this.secondaryDomainAxes.size(); i++) {
                Axis secondaryDomainAxis = getSecondaryDomainAxis(i);
                if (secondaryDomainAxis != null) {
                    RectangleEdge edge = getSecondaryDomainAxisEdge(i);
                    space = secondaryDomainAxis.reserveSpace(g2, this, plotArea, edge, space);
                }
            }
        }

        return space;
                                                     
    }
    
    /**
     * Calculates the space required for the range axis/axes.
     * 
     * @param g2  the graphics device.
     * @param plotArea  the plot area.
     * @param space  a carrier for the result (<code>null</code> permitted).
     * 
     * @return  The required space.
     */
    protected AxisSpace calculateRangeAxisSpace(Graphics2D g2, Rectangle2D plotArea, 
                                                AxisSpace space) {
                                                  
        if (space == null) {
            space = new AxisSpace(); 
        }
        
        // reserve some space for the range axis...
        if (this.fixedRangeAxisSpace != null) {
            if (orientation == PlotOrientation.HORIZONTAL) {
                space.ensureAtLeast(this.fixedRangeAxisSpace.getTop(), RectangleEdge.TOP);
                space.ensureAtLeast(this.fixedRangeAxisSpace.getBottom(), RectangleEdge.BOTTOM);
            }
            else if (orientation == PlotOrientation.VERTICAL) {
                space.ensureAtLeast(this.fixedRangeAxisSpace.getLeft(), RectangleEdge.LEFT);
                space.ensureAtLeast(this.fixedRangeAxisSpace.getRight(), RectangleEdge.RIGHT);
            }
        }
        else {
            Axis rangeAxis1 = this.rangeAxis;
            if (rangeAxis1 != null) {
                space = rangeAxis1.reserveSpace(g2, this, plotArea, getRangeAxisEdge(), space);
            }

            // reserve space for the secondary range axes (if any)...
            for (int i = 0; i < this.secondaryRangeAxes.size(); i++) {
                Axis secondaryRangeAxis = getSecondaryRangeAxis(i);
                if (secondaryRangeAxis != null) {
                    RectangleEdge edge = getSecondaryRangeAxisEdge(i);
                    space = secondaryRangeAxis.reserveSpace(g2, this, plotArea, edge, space);
                }
            }
        }
        return space;
                                                    
    }


    /**
     * Calculates the space required for the axes.
     *
     * @param g2  the graphics device.
     * @param plotArea  the plot area.
     *
     * @return The space required for the axes.
     */
    protected AxisSpace calculateAxisSpace(Graphics2D g2, Rectangle2D plotArea) {

        AxisSpace space = new AxisSpace();
        space = calculateRangeAxisSpace(g2, plotArea, space);
        space = calculateDomainAxisSpace(g2, plotArea, space);
        return space;
        
    }

    /**
     * Draws the plot on a Java 2D graphics device (such as the screen or a printer).
     * <P>
     * At your option, you may supply an instance of {@link ChartRenderingInfo}.
     * If you do, it will be populated with information about the drawing,
     * including various plot dimensions and tooltip info.
     *
     * @param g2  the graphics device.
     * @param plotArea  the area within which the plot (including axes) should be drawn.
     * @param info  collects info as the chart is drawn.
     */
    public void draw(Graphics2D g2, Rectangle2D plotArea, ChartRenderingInfo info) {

        // if the plot area is too small, just return...
        boolean b1 = (plotArea.getWidth() <= MINIMUM_WIDTH_TO_DRAW);
        boolean b2 = (plotArea.getHeight() <= MINIMUM_HEIGHT_TO_DRAW);
        if (b1 || b2) {
            return;
        }

        // record the plot area...
        if (info != null) {
            info.setPlotArea(plotArea);
        }

        // adjust the drawing area for the plot insets (if any)...
        Insets insets = getInsets();
        if (insets != null) {
            plotArea.setRect(plotArea.getX() + insets.left,
                             plotArea.getY() + insets.top,
                             plotArea.getWidth() - insets.left - insets.right,
                             plotArea.getHeight() - insets.top - insets.bottom);
        }

        // calculate the data area...
        AxisSpace space = calculateAxisSpace(g2, plotArea);
        Rectangle2D dataArea = space.shrink(plotArea, null);

        if (info != null) {
            info.setDataArea(dataArea);
        }

        // if there is a renderer, it draws the background, otherwise use the default background...
        if (this.renderer != null) {
            this.renderer.drawBackground(g2, this, dataArea);
        }
        else {
            drawBackground(g2, dataArea);
        }

        drawAxes(g2, plotArea, dataArea);
        drawGridlines(g2, dataArea);

        // draw the range markers...
        drawSecondaryRangeMarkers(g2, dataArea);
        drawRangeMarkers(g2, dataArea);

        // now render data items...
        DatasetRenderingOrder order = getDatasetRenderingOrder();
        if (order == DatasetRenderingOrder.STANDARD) {
            render2(g2, dataArea, info);
            render(g2, dataArea, info);
        }
        else if (order == DatasetRenderingOrder.REVERSE) {
            render(g2, dataArea, info);
            render2(g2, dataArea, info);
        }

        // draw vertical crosshair if required...
        if (isRangeCrosshairVisible()) {
            drawRangeLine(g2, dataArea, getRangeCrosshairValue(),
                          getRangeCrosshairStroke(),
                          getRangeCrosshairPaint());
        }

        // draw the annotations (if any)...
        drawAnnotations(g2, dataArea);

        // draw an outline around the plot area...
        if (renderer != null) {
            renderer.drawOutline(g2, this, dataArea);
        }
        else {
            drawOutline(g2, dataArea);
        }

    }

    /**
     * A utility method for drawing the axes.
     * 
     * @param g2  the graphics device.
     * @param plotArea  the plot area.
     * @param dataArea  the data area.
     */
    protected void drawAxes(Graphics2D g2, Rectangle2D plotArea, Rectangle2D dataArea) {

        this.axesAtTop.clear();
        this.axesAtBottom.clear();
        this.axesAtLeft.clear();
        this.axesAtRight.clear();

        // add each axis to the appropriate list...
        if (this.domainAxis != null) {
            addAxisToList(this.domainAxis, getDomainAxisEdge());
        }
        if (this.rangeAxis != null) {
            addAxisToList(this.rangeAxis, getRangeAxisEdge());
        }

        // add secondary domain axes to lists...
        for (int index = 0; index < this.secondaryDomainAxes.size(); index++) {
            CategoryAxis secondaryAxis = (CategoryAxis) this.secondaryDomainAxes.get(index);
            if (secondaryAxis != null) {
                addAxisToList(secondaryAxis, getSecondaryDomainAxisEdge(index));
            }
        }

        // add secondary range axes to lists...
        for (int index = 0; index < this.secondaryRangeAxes.size(); index++) {
            ValueAxis secondaryAxis = (ValueAxis) this.secondaryRangeAxes.get(index);
            if (secondaryAxis != null) {
                addAxisToList(secondaryAxis, getSecondaryRangeAxisEdge(index));
            }
        }

        // draw the top axes
        double cursor = dataArea.getMinY() - this.axisOffset.getTopSpace(dataArea.getHeight());
        Iterator iterator = this.axesAtTop.iterator();
        while (iterator.hasNext()) {
            Axis axis = (Axis) iterator.next();
            if (axis != null) {
                double used = axis.draw(g2, cursor, plotArea, dataArea, RectangleEdge.TOP);
                cursor = cursor - used;
            }
        }

        // draw the bottom axes
        cursor = dataArea.getMaxY() + this.axisOffset.getBottomSpace(dataArea.getHeight());
        iterator = this.axesAtBottom.iterator();
        while (iterator.hasNext()) {
            Axis axis = (Axis) iterator.next();
            if (axis != null) {
                double used = axis.draw(g2, cursor, plotArea, dataArea, RectangleEdge.BOTTOM);
                cursor = cursor + used;
            }
        }

        // draw the left axes
        cursor = dataArea.getMinX() - this.axisOffset.getLeftSpace(dataArea.getWidth());
        iterator = this.axesAtLeft.iterator();
        while (iterator.hasNext()) {
            Axis axis = (Axis) iterator.next();
            if (axis != null) {
                double used = axis.draw(g2, cursor, plotArea, dataArea, RectangleEdge.LEFT);
                cursor = cursor - used;
            }
        }

        // draw the right axes
        cursor = dataArea.getMaxX() + this.axisOffset.getRightSpace(dataArea.getWidth());
        iterator = this.axesAtRight.iterator();
        while (iterator.hasNext()) {
            Axis axis = (Axis) iterator.next();
            if (axis != null) {
                double used = axis.draw(g2, cursor, plotArea, dataArea, RectangleEdge.RIGHT);
                cursor = cursor + used;
            }
        }
        
    }
    
    /**
     * Draws a representation of the data within the dataArea region, using
     * the current renderer.
     *
     * @param g2  the graphics device.
     * @param dataArea  the region in which the data is to be drawn.
     * @param info  an optional object for collection dimension information.
     */
    public void render(Graphics2D g2, Rectangle2D dataArea, ChartRenderingInfo info) {

        if (this.renderer == null) {
            return;
        }

        CategoryDataset data = getDataset();
        if (!DatasetUtilities.isEmptyOrNull(data)) {

            Shape savedClip = g2.getClip();
            g2.clip(dataArea);

            // set up the alpha-transparency...
            Composite originalComposite = g2.getComposite();
            g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
                                                       getForegroundAlpha()));

            this.renderer.initialise(g2, dataArea, this, null, info);

            int columnCount = data.getColumnCount();
            int rowCount = data.getRowCount();
            for (int column = 0; column < columnCount; column++) {
                for (int row = 0; ro

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产传媒日韩欧美成人| 国产精品欧美一区喷水| 日韩高清不卡在线| 欧美高清视频在线高清观看mv色露露十八| 亚洲综合久久久| 在线不卡中文字幕播放| 激情深爱一区二区| 国产精品视频九色porn| 色哟哟日韩精品| 婷婷国产v国产偷v亚洲高清| 日韩欧美中文字幕公布| 国产乱理伦片在线观看夜一区| 中文字幕日本乱码精品影院| 在线观看亚洲精品| 麻豆精品视频在线| 国产精品白丝在线| 欧美日韩不卡在线| 国产iv一区二区三区| 一区二区三区中文字幕精品精品| 欧美日韩成人在线| 成人黄色电影在线 | 国产日韩高清在线| 色呦呦网站一区| 久久精品国产网站| 自拍偷拍亚洲激情| 日韩欧美黄色影院| 97久久超碰精品国产| 免费人成网站在线观看欧美高清| 国产蜜臀av在线一区二区三区| 欧美性高清videossexo| 国产精品一区二区久久精品爱涩| 亚洲一区二区三区中文字幕 | 蜜桃av一区二区| 中文字幕在线观看一区| 欧美一区二区三区性视频| 99这里只有久久精品视频| 日韩精品亚洲一区二区三区免费| 国产精品家庭影院| 欧美成va人片在线观看| 欧美在线看片a免费观看| 国产在线观看一区二区| 午夜影院久久久| 国产女人18水真多18精品一级做| 欧美一区午夜精品| 色域天天综合网| 成人理论电影网| 久久精品国产免费| 日韩在线一区二区| 一级日本不卡的影视| 欧美激情综合五月色丁香| 日韩欧美一级二级三级久久久| 欧洲一区二区av| 97久久超碰国产精品电影| 国产成+人+日韩+欧美+亚洲| 日韩av一级片| 首页亚洲欧美制服丝腿| 亚洲欧美日本在线| 亚洲视频精选在线| 国产精品久久久久婷婷二区次| 久久亚洲精精品中文字幕早川悠里| 欧美日韩精品一区二区天天拍小说| 91麻豆swag| 91小视频在线观看| 成人美女视频在线观看18| 国产69精品久久99不卡| 国产一区999| 国产成人精品影院| 国产成人免费在线视频| 懂色av中文字幕一区二区三区| 国产麻豆日韩欧美久久| 极品少妇xxxx偷拍精品少妇| 久色婷婷小香蕉久久| 国产综合久久久久久鬼色| 精品一区二区免费视频| 精品一区二区三区在线观看国产| 美国一区二区三区在线播放| 老鸭窝一区二区久久精品| 免费一区二区视频| 国模冰冰炮一区二区| 国产一区二区三区av电影| 国产酒店精品激情| 成熟亚洲日本毛茸茸凸凹| 成人丝袜高跟foot| 99re这里只有精品首页| 91免费精品国自产拍在线不卡| 91免费视频大全| 欧美日本国产一区| 欧美一区日本一区韩国一区| 精品区一区二区| 国产日韩一级二级三级| 国产精品电影一区二区三区| 亚洲麻豆国产自偷在线| 亚洲成人你懂的| 久久精品国产亚洲一区二区三区| 国产一区二区不卡在线 | 日日摸夜夜添夜夜添精品视频 | av亚洲产国偷v产偷v自拍| 91在线观看地址| 欧美日韩另类国产亚洲欧美一级| 日韩欧美在线网站| 欧美激情一区二区三区全黄| 中文字幕亚洲欧美在线不卡| 亚洲综合一区二区三区| 激情五月播播久久久精品| 成人精品电影在线观看| 欧美日韩一区二区三区在线看| 欧美精三区欧美精三区| 久久精品免费在线观看| 亚洲精品视频一区| 美女在线视频一区| 99久久精品一区二区| 91 com成人网| 国产精品高潮久久久久无| 亚洲gay无套男同| 国产成人激情av| 欧美日韩一区小说| 国产欧美va欧美不卡在线| 亚洲国产色一区| 国产成人综合视频| 欧美日本乱大交xxxxx| 国产精品入口麻豆九色| 亚洲成年人影院| 成人午夜电影久久影院| 日韩一级片网站| 亚洲精品高清视频在线观看| 国产福利精品导航| 欧美高清视频不卡网| 中文字幕一区二区三区av| 日本v片在线高清不卡在线观看| yourporn久久国产精品| 91麻豆精品国产91久久久使用方法| 日本一区二区三区在线不卡| 日本欧美一区二区三区乱码| eeuss鲁片一区二区三区| 欧美大片日本大片免费观看| 亚洲色图.com| 懂色中文一区二区在线播放| 日韩一级欧美一级| 亚洲第一搞黄网站| av影院午夜一区| 日本一区二区三区dvd视频在线| 美洲天堂一区二卡三卡四卡视频| 色偷偷一区二区三区| 国产精品区一区二区三区| 激情综合网av| 日韩欧美一级二级三级久久久| 亚洲国产精品一区二区www在线| 波多野结衣中文一区| 久久亚洲精品国产精品紫薇 | 国产91精品入口| 精品国产一区二区三区不卡 | 亚洲免费色视频| 成人激情免费网站| 欧美国产欧美综合| 国产一区二区在线视频| 日韩欧美一区电影| 麻豆精品一区二区av白丝在线| 337p亚洲精品色噜噜狠狠| 亚洲h动漫在线| 欧美军同video69gay| 亚洲一区二区三区四区在线观看 | 91国产精品成人| 自拍偷拍国产精品| av一区二区三区四区| 中文字幕乱码亚洲精品一区 | 成人高清视频在线| 久久久久99精品一区| 国产在线观看免费一区| 久久精品人人做人人爽人人| 成人性色生活片| 国产精品伦一区| av激情综合网| 一区二区三区久久| 欧美在线短视频| 日韩高清不卡在线| 精品国产伦一区二区三区免费| 国产一区二区三区免费在线观看| 欧美精品一区二区久久久| 国产精品小仙女| 亚洲人成精品久久久久久| 欧美色中文字幕| 久久精品国产成人一区二区三区| 精品国产sm最大网站免费看| 国产乱码精品1区2区3区| 中文字幕亚洲综合久久菠萝蜜| 91激情五月电影| 美女被吸乳得到大胸91| 国产视频在线观看一区二区三区| a在线欧美一区| 亚洲在线中文字幕| 日韩亚洲国产中文字幕欧美| 狠狠久久亚洲欧美| 综合电影一区二区三区| 91麻豆精品国产自产在线观看一区 | 日韩二区三区四区| 久久久久久麻豆| 欧美怡红院视频| 麻豆成人在线观看| 国产精品欧美经典| 欧美日韩激情一区|