コード例 #1
0
ファイル: DrawAxis3D.java プロジェクト: aliali555/geogebra
  protected void updateLabel() {

    // draw numbers
    GeoAxis3D axis = (GeoAxis3D) getGeoElement();

    NumberFormat numberFormat = axis.getNumberFormat();
    double distance = axis.getNumbersDistance();

    // Application.debug("drawMinMax="+getDrawMin()+","+getDrawMax());
    double[] minmax = getDrawMinMax();

    int iMin = (int) (minmax[0] / distance);
    int iMax = (int) (minmax[1] / distance);
    int nb = iMax - iMin + 1;

    // Application.debug("iMinMax="+iMin+","+iMax);

    if (nb < 1) {
      Application.debug("nb=" + nb);
      // labels = null;
      return;
    }

    // sets all already existing labels not visible
    for (DrawLabel3D label : labels.values()) label.setIsVisible(false);

    for (int i = iMin; i <= iMax; i++) {
      double val = i * distance;
      Coords origin = ((GeoCoordSys1D) getGeoElement()).getPoint(val);

      // draw numbers
      String strNum = getView3D().getKernel().formatPiE(val, numberFormat);

      // check if the label already exists
      DrawLabel3D label = labels.get(strNum);
      if (label != null) {
        // sets the label visible
        label.setIsVisible(true);
        label.update(
            strNum,
            10,
            getGeoElement().getObjectColor(),
            origin.copyVector(),
            axis.getNumbersXOffset(),
            axis.getNumbersYOffset());
        // TODO optimize this
      } else {
        // creates new label
        label = new DrawLabel3D(getView3D());
        label.setAnchor(true);
        label.update(
            strNum,
            10,
            getGeoElement().getObjectColor(),
            origin.copyVector(),
            axis.getNumbersXOffset(),
            axis.getNumbersYOffset());
        labels.put(strNum, label);
      }
    }

    // update end of axis label
    label.update(
        ((GeoAxis3D) getGeoElement()).getAxisLabel(),
        10,
        getGeoElement().getObjectColor(),
        ((GeoCoordSys1D) getGeoElement()).getPoint(minmax[1]),
        axis.labelOffsetX - 4,
        axis.labelOffsetY - 6);
  }