Ejemplo n.º 1
0
  @Override
  protected void loadSizes(boolean update) {
    bounds = new Rectangle(0, 0, 0, 0);
    min_size = new Dimension();
    max_size = new Dimension();
    margin = new LengthSet();
    emargin = margin;
    padding = new LengthSet();
    border = new LengthSet();
    isempty = true;
    displayed = false;
    visible = false;
    coords = new LengthSet();

    if (colwidth.equals("")) // no width set - try to get from style
    {
      int contw = cblock.getContentWidth();
      CSSDecoder dec = new CSSDecoder(ctx);
      CSSProperty.Width wprop = style.getProperty("width");
      if (wprop != null && wprop != CSSProperty.Width.AUTO) {
        TermLengthOrPercent width = getLengthValue("width");
        abswidth = dec.getLength(width, false, 0, 0, contw);
        content.width = abswidth;
        wset = true;
        if (width.isPercentage()) {
          wrelative = true;
          percent = Math.round(width.getValue());
          if (percent == 0) wrelative = false; // consider 0% as absolute 0
        }
      }
    }

    bounds.width = content.width;
  }
Ejemplo n.º 2
0
  /**
   * Converts a length from a CSS length or percentage to 'pt'.
   *
   * @param spec the CSS length specification
   * @param whole the value that corresponds to 100%. It is used only when spec is a percentage.
   * @return the length in 'pt'
   */
  public double ptLength(TermLengthOrPercent spec, double whole) {
    float nval = spec.getValue();
    if (spec.isPercentage()) return (whole * nval) / 100;
    else {
      TermLength.Unit unit = spec.getUnit();

      double ret = 0;
      if (unit == TermLength.Unit.pt) {
        ret = nval;
      } else if (unit == TermLength.Unit.in) {
        ret = nval * 72;
      } else if (unit == TermLength.Unit.cm) {
        ret = (nval * 72) / 2.54;
      } else if (unit == TermLength.Unit.mm) {
        ret = (nval * 72) / 25.4;
      } else if (unit == TermLength.Unit.pc) {
        ret = nval * 12;
      } else if (unit == TermLength.Unit.px) {
        ret = (nval * 72) / dpi;
      } else if (unit == TermLength.Unit.em) {
        ret = (em * nval * 72) / dpi; // em is in pixels
      } else if (unit == TermLength.Unit.rem) {
        ret = (rem * nval * 72) / dpi;
      } else if (unit == TermLength.Unit.ex) {
        ret = (ex * nval * 72) / dpi;
      } else if (unit == TermLength.Unit.ch) {
        ret = (ch * nval * 72) / dpi;
      } else if (unit == TermLength.Unit.vw) {
        return (viewport.getVisibleRect().getWidth() * nval * 72) / (100.0 * dpi);
      } else if (unit == TermLength.Unit.vh) {
        return (viewport.getVisibleRect().getHeight() * nval * 72) / (100.0 * dpi);
      } else if (unit == TermLength.Unit.vmin) {
        return (Math.min(
                    viewport.getVisibleRect().getWidth(), viewport.getVisibleRect().getHeight())
                * nval
                * 72)
            / (100.0 * dpi);
      } else if (unit == TermLength.Unit.vmax) {
        return (Math.max(
                    viewport.getVisibleRect().getWidth(), viewport.getVisibleRect().getHeight())
                * nval
                * 72)
            / (100.0 * dpi);
      }
      return ret;
    }
  }