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

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

?? meterplot.java

?? Web圖形化的Java庫
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
                break;

            default:
                return;
        }

//        if (data.getBorderType() == type) {
//            drawArc(g2, meterArea,
//                    minValue.doubleValue(),
//                    data.getMinimumValue().doubleValue(),
//                    paint);
//            drawArc(g2, meterArea,
//                    data.getMaximumValue().doubleValue(),
//                    maxValue.doubleValue(),
//                    paint);
//        }
//        else {
        drawArc(g2, meterArea,
                minValue,
                maxValue,
                paint);
//        }

            // draw a tick at each end of the range...
            drawTick(g2, meterArea, minValue, true, paint);
            drawTick(g2, meterArea, maxValue, true, paint);
        //}

    }

    /**
     * Draws an arc.
     *
     * @param g2  the graphics device.
     * @param area  the plot area.
     * @param minValue  the minimum value.
     * @param maxValue  the maximum value.
     * @param paint  the paint.
     */
    void drawArc(Graphics2D g2, Rectangle2D area, double minValue, double maxValue, Paint paint) {
        drawArc(g2, area, minValue, maxValue, paint, 0);
    }

    /**
     * Draws an arc.
     *
     * @param g2  the graphics device.
     * @param area  the plot area.
     * @param minValue  the minimum value.
     * @param maxValue  the maximum value.
     * @param paint  the paint.
     * @param outlineType  the outline type.
     */
    void drawArc(Graphics2D g2, Rectangle2D area, double minValue, double maxValue,
                 Paint paint, int outlineType) {

        double startAngle = calculateAngle(maxValue);
        double endAngle = calculateAngle(minValue);
        double extent = endAngle - startAngle;

        double x = area.getX();
        double y = area.getY();
        double w = area.getWidth();
        double h = area.getHeight();
        g2.setPaint(paint);

        if (outlineType > 0) {
            g2.setStroke(new BasicStroke(10.0f));
        }
        else {
            g2.setStroke(new BasicStroke(DEFAULT_BORDER_SIZE));
        }

        int joinType = Arc2D.OPEN;
        if (outlineType > 0) {
            if (this.shape == DialShape.PIE) {
                joinType = Arc2D.PIE;
            }
            else if (this.shape == DialShape.CHORD) {
                if (meterAngle > 180) {
                    joinType = Arc2D.CHORD;
                }
                else {
                    joinType = Arc2D.PIE;
                }
            }
            else if (this.shape == DialShape.CIRCLE) {
                joinType = Arc2D.PIE;
                extent = 360;
            }
            else {
                throw new IllegalStateException("MeterPlot.drawArc(...): "
                                              + "dialType not recognised.");
            }
        }
        Arc2D.Double arc = new Arc2D.Double(x, y, w, h, startAngle, extent, joinType);
        if (outlineType > 0) {
            g2.fill(arc);
        }
        else {
            g2.draw(arc);
        }

    }

    /**
     * Calculate an angle ???
     *
     * @param value  the value.
     *
     * @return the result.
     */
    double calculateAngle(double value) {
        value -= minMeterValue;
        double ret = meterCalcAngle - ((value / meterRange) * meterAngle);
        return ret;
    }

    /**
     * Draws the ticks.
     *
     * @param g2  the graphics device.
     * @param meterArea  the meter area.
     * @param minValue  the minimum value.
     * @param maxValue  the maximum value.
     */
    void drawTicks(Graphics2D g2, Rectangle2D meterArea, double minValue, double maxValue) {

        int numberOfTicks = 20;
        double diff = (maxValue - minValue) / numberOfTicks;

        for (double i = minValue; i <= maxValue; i += diff) {
            drawTick(g2, meterArea, i);
        }

    }

    /**
     * Draws a tick.
     *
     * @param g2  the graphics device.
     * @param meterArea  the meter area.
     * @param value  the value.
     */
    void drawTick(Graphics2D g2, Rectangle2D meterArea, double value) {
        drawTick(g2, meterArea, value, false, null, false, null);
    }

    /**
     * Draws a tick.
     *
     * @param g2  the graphics device.
     * @param meterArea  the meter area.
     * @param value  the value.
     * @param label  the label.
     * @param color  the color.
     */
    void drawTick(Graphics2D g2, Rectangle2D meterArea, double value, boolean label, Paint color) {
        drawTick(g2, meterArea, value, label, color, false, null);
    }

    /**
     * Draws a tick on the chart (also handles a special case [curValue=true] that draws the
     * value in the middle of the dial).
     *
     * @param g2  the graphics device.
     * @param meterArea  the meter area.
     * @param value  the tick value.
     * @param label  a flag that controls whether or not a value label is drawn.
     * @param labelPaint  the label color.
     * @param curValue  a flag for the special case of the current value.
     * @param units  the unit-of-measure for the dial.
     */
    void drawTick(Graphics2D g2, Rectangle2D meterArea,
                  double value, boolean label, Paint labelPaint, boolean curValue, String units) {

        double valueAngle = calculateAngle(value);

        double meterMiddleX = meterArea.getCenterX();
        double meterMiddleY = meterArea.getCenterY();

        if (labelPaint == null) {
            labelPaint = Color.white;
        }
        g2.setPaint(labelPaint);
        g2.setStroke(new BasicStroke(2.0f));

        double valueP2X = 0;
        double valueP2Y = 0;

        if (!curValue) {
            double radius = (meterArea.getWidth() / 2) + DEFAULT_BORDER_SIZE;
            double radius1 = radius - 15;

            double valueP1X = meterMiddleX + (radius * Math.cos(Math.PI * (valueAngle / 180)));
            double valueP1Y = meterMiddleY - (radius * Math.sin(Math.PI * (valueAngle / 180)));

            valueP2X = meterMiddleX + (radius1 * Math.cos(Math.PI * (valueAngle / 180)));
            valueP2Y = meterMiddleY - (radius1 * Math.sin(Math.PI * (valueAngle / 180)));

            Line2D.Double line = new Line2D.Double(valueP1X, valueP1Y, valueP2X, valueP2Y);
            g2.draw(line);
        }
        else {
            valueP2X = meterMiddleX;
            valueP2Y = meterMiddleY;
            valueAngle = 90;
        }

        if (this.tickLabelType == VALUE_LABELS && label) {

            DecimalFormat df = new DecimalFormat("#,###,###,##0.00");
            String tickLabel =  df.format(value);
            if (curValue && units != null) {
                tickLabel += " " + units;
            }
            if (curValue) {
                g2.setFont(getValueFont());
            }
            else {
                if (tickLabelFont != null) {
                    g2.setFont(tickLabelFont);
                }
            }

            Rectangle2D tickLabelBounds = g2.getFont().getStringBounds(tickLabel,
                                                                       g2.getFontRenderContext());

            double x = valueP2X;
            double y = valueP2Y;
            if (curValue) {
                y += DEFAULT_CIRCLE_SIZE;
            }
            if (valueAngle == 90 || valueAngle == 270) {
                x = x - tickLabelBounds.getWidth() / 2;
            }
            else if (valueAngle < 90 || valueAngle > 270) {
                x = x - tickLabelBounds.getWidth();
            }
            if ((valueAngle > 135 && valueAngle < 225) || valueAngle > 315 || valueAngle < 45) {
                y = y - tickLabelBounds.getHeight() / 2;
            }
            else {
                y = y + tickLabelBounds.getHeight() / 2;
            }
            g2.drawString(tickLabel, (float) x, (float) y);
        }
    }

    /**
     * Returns a short string describing the type of plot.
     *
     * @return always <i>Meter Plot</i>.
     */
    public String getPlotType() {
        return localizationResources.getString("Meter_Plot");
    }

    /**
     * A zoom method that does nothing.
     * <p>
     * Plots are required to support the zoom operation.  In the case of a pie
     * chart, it doesn't make sense to zoom in or out, so the method is empty.
     *
     * @param percent   The zoom percentage.
     */
    public void zoom(double percent) {
    }
    
    /**
     * Tests an object for equality with this plot.
     * 
     * @param object  the object.
     * 
     * @return A boolean.
     */
    public boolean equals(Object object) {
    
        if (object == null) {
            return false;    
        }
        
        if (object == this) {
            return true;
        }
        
        if (object instanceof MeterPlot && super.equals(object)) {
            MeterPlot p = (MeterPlot) object;
            //private ValueDataset dataset <-- ignored
            boolean b0 = (this.units.equals(p.units));
            boolean b1 = (this.range.equals(p.range));
            boolean b2 = (this.normalRange.equals(p.normalRange));
            boolean b3 = (this.warningRange.equals(p.warningRange));
            boolean b4 = (this.criticalRange.equals(p.criticalRange));
            boolean b5 = ObjectUtils.equal(this.dialOutlinePaint, p.dialOutlinePaint);
            boolean b6 = ObjectUtils.equal(this.normalPaint, p.normalPaint);
            boolean b7 = ObjectUtils.equal(this.warningPaint, p.warningPaint);
            boolean b8 = ObjectUtils.equal(this.criticalPaint, p.criticalPaint);
            boolean b9 = (this.shape == p.shape);
            boolean b10 = ObjectUtils.equal(this.dialBackgroundPaint, p.dialBackgroundPaint);
            boolean b11 = ObjectUtils.equal(this.needlePaint, p.needlePaint);
            boolean b12 = ObjectUtils.equal(this.valueFont, p.valueFont);
            boolean b13 = ObjectUtils.equal(this.valuePaint, p.valuePaint);
            //private int tickLabelType;
            //private Font tickLabelFont;
            //private boolean drawBorder;
            //private int meterCalcAngle = -1;
            //private double meterRange = -1;
            //private int meterAngle = DEFAULT_METER_ANGLE;
            //private double minMeterValue = 0.0;
            return b0 && b1 && b2 && b3 && b4 && b5 && b6 && b7 && b8 && b9 
                && b10 && b11 && b12 && b13;
                        
        }
        
        return false;
        
    }
    
    /**
     * 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.criticalPaint, stream);
        SerialUtilities.writePaint(this.dialBackgroundPaint, stream);
        SerialUtilities.writePaint(this.needlePaint, stream);
        SerialUtilities.writePaint(this.normalPaint, stream);
        SerialUtilities.writePaint(this.valuePaint, stream);
        SerialUtilities.writePaint(this.warningPaint, 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.criticalPaint = SerialUtilities.readPaint(stream);
        this.dialBackgroundPaint = SerialUtilities.readPaint(stream);
        this.needlePaint = SerialUtilities.readPaint(stream);
        this.normalPaint = SerialUtilities.readPaint(stream);
        this.valuePaint = SerialUtilities.readPaint(stream);
        this.warningPaint = SerialUtilities.readPaint(stream);
          
        if (dataset != null) dataset.addChangeListener(this);
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////
    // DEPRECATED
    ///////////////////////////////////////////////////////////////////////////////////////////////
    
    /** Constant for meter type 'pie'. */
    public static final int DIALTYPE_PIE = 0;

    /** Constant for meter type 'circle'. */
    public static final int DIALTYPE_CIRCLE = 1;

    /** Constant for meter type 'chord'. */
    public static final int DIALTYPE_CHORD = 2;

    /**
     * Returns the type of dial (DIALTYPE_PIE, DIALTYPE_CIRCLE, DIALTYPE_CHORD).
     *
     * @return The dial type.
     * 
     * @deprecated Use getDialShape().
     */
    public int getDialType() {
        if (this.shape == DialShape.CIRCLE) {
            return MeterPlot.DIALTYPE_CIRCLE;
        }
        else if (this.shape == DialShape.CHORD) {
            return MeterPlot.DIALTYPE_CHORD;
        }
        else if (this.shape == DialShape.PIE) {
            return MeterPlot.DIALTYPE_PIE;
        }
        else {
            throw new IllegalStateException("MeterPlot.getDialType: unrecognised dial type.");
        }        
    }

    /**
     * Sets the dial type (background shape).
     * <P>
     * This controls the shape of the dial background.  Use one of the constants:
     * DIALTYPE_PIE, DIALTYPE_CIRCLE, or DIALTYPE_CHORD.
     *
     * @param type The dial type.
     * 
     * @deprecated Use setDialShape(...).
     */
    public void setDialType(int type) {
        switch (type) {
            case MeterPlot.DIALTYPE_CIRCLE:
                setDialShape(DialShape.CIRCLE);
                break;
            case MeterPlot.DIALTYPE_CHORD:
                setDialShape(DialShape.CHORD);
                break;
            case MeterPlot.DIALTYPE_PIE:
                setDialShape(DialShape.PIE);
                break;
            default:
                throw new IllegalArgumentException("MeterPlot.setDialType: unrecognised type.");
        }
    }

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久夜| 欧美一区二区三区精品| 国产欧美一区二区三区鸳鸯浴| 精品一区二区三区免费观看| 久久影音资源网| 成人一二三区视频| 亚洲精品v日韩精品| 欧美乱妇15p| 狠狠色丁香久久婷婷综合_中 | 亚洲一区二区三区美女| 欧美日韩国产色站一区二区三区| 五月天精品一区二区三区| 日韩欧美国产小视频| 国产成人在线色| 伊人色综合久久天天人手人婷| 欧美一区二区三区在线电影| 国产精品亚洲视频| 亚洲精品欧美激情| 欧美日本国产视频| 国产一区在线视频| 亚洲精品五月天| 欧美日韩成人激情| 国产精品资源网| 欧美色图天堂网| 亚洲欧美自拍偷拍| 日韩美女主播在线视频一区二区三区| 久久久久久免费网| 成人av在线一区二区| 亚洲香蕉伊在人在线观| 亚洲精品一区二区三区在线观看| 粉嫩绯色av一区二区在线观看 | 欧美成人国产一区二区| 成人美女在线视频| 亚洲成人动漫av| 久久久久国产精品厨房| 欧美亚洲国产一区在线观看网站| 青椒成人免费视频| 亚洲人成亚洲人成在线观看图片| 日韩一二三区视频| 色综合久久综合网97色综合| 五月天国产精品| 日韩一区中文字幕| 精品国产伦一区二区三区免费| 91在线视频在线| 黄一区二区三区| 亚洲成在线观看| 国产精品成人免费精品自在线观看 | 国产精品欧美极品| 日韩三级视频在线看| 一本色道久久综合亚洲91| 丁香五精品蜜臀久久久久99网站 | 91精品国产综合久久香蕉麻豆 | 欧美日韩小视频| av午夜一区麻豆| 国产精品18久久久久久久久| 日本va欧美va精品发布| 亚洲精品美国一| 国产精品视频线看| 国产亚洲成年网址在线观看| 日韩欧美精品三级| 欧美精品乱人伦久久久久久| 日本韩国欧美在线| 不卡一区二区在线| 粉嫩绯色av一区二区在线观看| 蜜桃在线一区二区三区| 婷婷久久综合九色综合伊人色| 亚洲精品久久久久久国产精华液| 欧美激情一区二区三区全黄| 国产亚洲一区二区三区在线观看| 精品国产精品网麻豆系列| 精品裸体舞一区二区三区| 欧美一区二区免费| 日韩三级av在线播放| 欧美日韩成人综合天天影院| 欧美裸体一区二区三区| 欧美日韩免费观看一区二区三区 | 久久久久久日产精品| 精品久久久久久综合日本欧美| 8x8x8国产精品| 日韩一区二区三区在线| 日韩欧美一卡二卡| 欧美精品一区二区三区一线天视频| 欧美电视剧在线看免费| 精品国产一二三区| 国产欧美一区二区精品秋霞影院| 国产偷国产偷精品高清尤物| 国产精品色哟哟| 亚洲黄色小视频| 三级不卡在线观看| 狠狠色综合日日| voyeur盗摄精品| 欧日韩精品视频| 欧美一区二区美女| 久久看人人爽人人| 亚洲欧美日韩久久| 日韩综合小视频| 国模套图日韩精品一区二区 | av亚洲精华国产精华精华| 91啪亚洲精品| 欧美精品日韩综合在线| 欧美tk—视频vk| 成人欧美一区二区三区小说| 亚洲成av人片观看| 国产一区二区三区电影在线观看 | 亚洲乱码一区二区三区在线观看| 亚洲最新视频在线观看| 日本不卡中文字幕| 国产成人av一区二区| 91激情在线视频| 日韩精品一区二区三区在线播放 | 欧美最新大片在线看| 日韩一二三区不卡| 综合欧美亚洲日本| 免费高清视频精品| 99久久久久久99| 日韩视频123| 亚洲天天做日日做天天谢日日欢 | 欧美激情一区二区三区不卡| 亚洲一区二区精品久久av| 精品亚洲免费视频| 91麻豆国产自产在线观看| 日韩免费看的电影| 亚洲色图清纯唯美| 精品一区二区三区免费| 色狠狠桃花综合| 国产欧美一区二区在线观看| 亚洲成av人片一区二区梦乃| 丁香婷婷深情五月亚洲| 91精品一区二区三区久久久久久 | 国产午夜精品在线观看| 亚洲一区在线看| 成人午夜又粗又硬又大| 91精品啪在线观看国产60岁| 国产精品久久久久影院老司| 麻豆精品视频在线观看视频| 欧美在线观看视频一区二区 | 国产一区二区三区视频在线播放| 在线观看视频91| 国产精品国产自产拍在线| 久久成人久久爱| 欧美日韩亚洲综合| 综合欧美一区二区三区| 成人免费视频视频在线观看免费| 91精品国产色综合久久| 亚洲综合色成人| 色婷婷一区二区| 中文字幕免费不卡| 国产一区 二区 三区一级| 欧美电视剧在线看免费| 日产国产高清一区二区三区| 欧美中文字幕一区二区三区亚洲| 中文字幕在线不卡| 不卡的av电影在线观看| 久久久精品天堂| 国产麻豆精品在线| 亚洲精品一区二区三区香蕉| 玖玖九九国产精品| 91精品国产综合久久蜜臀| 三级一区在线视频先锋| 欧美人牲a欧美精品| 婷婷久久综合九色国产成人| 欧美日韩免费电影| 亚洲成a人片在线不卡一二三区| 在线日韩一区二区| 亚洲综合成人网| 精品视频在线免费观看| 亚洲第一av色| 91精品在线麻豆| 精一区二区三区| 久久日韩精品一区二区五区| 国精产品一区一区三区mba视频| 精品国产伦一区二区三区观看体验 | 成人久久视频在线观看| 久久久久久久久蜜桃| 国产成人超碰人人澡人人澡| 国产精品色哟哟| 色一情一伦一子一伦一区| 亚洲国产中文字幕| 91精品中文字幕一区二区三区| 免费成人你懂的| 久久久久国产精品麻豆ai换脸 | 国产乱码精品一品二品| 国产精品你懂的在线欣赏| 色先锋资源久久综合| 日日摸夜夜添夜夜添亚洲女人| 欧美一区永久视频免费观看| 免费在线成人网| 国产三级欧美三级| 91美女视频网站| 日韩影院免费视频| 精品99999| 99re这里都是精品| 午夜不卡av免费| 久久久www成人免费毛片麻豆| 成人激情校园春色| 亚洲午夜免费电影| 日韩免费看的电影| 97se亚洲国产综合自在线观| 婷婷综合另类小说色区| 久久精品人人做人人爽人人|