Package org.jfree.fonts.registry

Examples of org.jfree.fonts.registry.BaselineInfo


    }
  }

  public static ExtendedBaselineInfo createBaselineInfo (final int codepoint, final FontMetrics fontMetrics)
  {
    final BaselineInfo baselineInfo = fontMetrics.getBaselines(codepoint, null);
    final int dominantBaseline =
        TextUtility.translateBaselines(baselineInfo.getDominantBaseline());
    final DefaultExtendedBaselineInfo extBaselineInfo =
        new DefaultExtendedBaselineInfo(dominantBaseline);

    final long[] baselines = new long[ExtendedBaselineInfo.BASELINE_COUNT];
    baselines[ExtendedBaselineInfo.ALPHABETHIC] = (baselineInfo.getBaseline(BaselineInfo.ALPHABETIC));
    baselines[ExtendedBaselineInfo.CENTRAL] = (baselineInfo.getBaseline(BaselineInfo.CENTRAL));
    baselines[ExtendedBaselineInfo.HANGING] = (baselineInfo.getBaseline(BaselineInfo.HANGING));
    baselines[ExtendedBaselineInfo.IDEOGRAPHIC] = (baselineInfo.getBaseline(BaselineInfo.IDEOGRAPHIC));
    baselines[ExtendedBaselineInfo.MATHEMATICAL] = (baselineInfo.getBaseline(BaselineInfo.MATHEMATICAL));
    baselines[ExtendedBaselineInfo.MIDDLE] = (baselineInfo.getBaseline(BaselineInfo.MIDDLE));
    baselines[ExtendedBaselineInfo.BEFORE_EDGE] = 0;
    baselines[ExtendedBaselineInfo.TEXT_BEFORE_EDGE] = 0;
    baselines[ExtendedBaselineInfo.TEXT_AFTER_EDGE] = (fontMetrics.getMaxHeight());
    baselines[ExtendedBaselineInfo.AFTER_EDGE] = baselines[ExtendedBaselineInfo.TEXT_AFTER_EDGE];
    extBaselineInfo.setBaselines(baselines);
View Full Code Here


  public BaselineInfo getBaselines(final int c, BaselineInfo info)
  {
    final boolean cacheable = (c >=32 && c < 256);
    if (cacheable)
    {
      final BaselineInfo fromCache = cachedBaselines[c - 32];
      if (fromCache != null)
      {
        if (info == null)
        {
          info = new BaselineInfo();
        }
        info.update(fromCache);
        return info;
      }
    }

    cpBuffer[0] = (char) (c & 0xFFFF);
    final LineMetrics lm = font.getLineMetrics(cpBuffer, 0, 1, frc);
    final float[] bls = lm.getBaselineOffsets();
    final int idx = lm.getBaselineIndex();

    if (info == null)
    {
      info = new BaselineInfo();
    }

    // The ascent is local - but we need the global baseline, relative to the
    // MaxAscent.
    final long maxAscent = getMaxAscent();
    final long ascent = StrictGeomUtility.toInternalValue(lm.getAscent());
    final long delta = maxAscent - ascent;
    info.setBaseline(BaselineInfo.MATHEMATICAL, delta + maxAscent - getXHeight());
    info.setBaseline(BaselineInfo.IDEOGRAPHIC, getMaxHeight());
    info.setBaseline(BaselineInfo.MIDDLE, maxAscent / 2);

    final long base = delta + ascent;

    switch (idx)
    {
      case Font.CENTER_BASELINE:
      {
        info.setBaseline(BaselineInfo.CENTRAL, base);
        info.setBaseline(BaselineInfo.ALPHABETIC, base + StrictGeomUtility.toInternalValue(bls[Font.ROMAN_BASELINE]));
        info.setBaseline(BaselineInfo.HANGING, base + StrictGeomUtility.toInternalValue(bls[Font.HANGING_BASELINE]));
        info.setDominantBaseline(BaselineInfo.CENTRAL);
        break;
      }
      case Font.HANGING_BASELINE:
      {
        info.setBaseline(BaselineInfo.CENTRAL, base + StrictGeomUtility.toInternalValue(bls[Font.CENTER_BASELINE]));
        info.setBaseline(BaselineInfo.ALPHABETIC, base + StrictGeomUtility.toInternalValue(bls[Font.ROMAN_BASELINE]));
        info.setBaseline(BaselineInfo.HANGING, base);
        info.setDominantBaseline(BaselineInfo.HANGING);
        break;
      }
      default: // ROMAN Base-line
      {
        info.setBaseline(BaselineInfo.ALPHABETIC, base);
        info.setBaseline(BaselineInfo.CENTRAL, base + StrictGeomUtility.toInternalValue(bls[Font.CENTER_BASELINE]));
        info.setBaseline(BaselineInfo.HANGING, base + StrictGeomUtility.toInternalValue(bls[Font.HANGING_BASELINE]));
        info.setDominantBaseline(BaselineInfo.ALPHABETIC);
        break;
      }
    }

    if (cacheable)
    {
      final BaselineInfo cached = new BaselineInfo();
      cached.update(info);
      cachedBaselines[c - 32] = cached;
    }

    return info;
  }
View Full Code Here

  public BaselineInfo getBaselines(final int c, BaselineInfo info)
  {
    final boolean cacheable = (c >= 32 && c < 256);
    if (cacheable)
    {
      final BaselineInfo fromCache = cachedBaselines[c - 32];
      if (fromCache != null)
      {
        if (info == null)
        {
          info = new BaselineInfo();
        }
        info.update(fromCache);
        return info;
      }
    }

    cpBuffer[0] = (char) (c & 0xFFFF);

    if (info == null)
    {
      info = new BaselineInfo();
    }

    // If we had more data, we could surely create something better. Well, this has to be enough ..
    final long maxAscent = getMaxAscent();
    info.setBaseline(BaselineInfo.MATHEMATICAL, maxAscent - getXHeight());
    info.setBaseline(BaselineInfo.IDEOGRAPHIC, getMaxHeight());
    info.setBaseline(BaselineInfo.MIDDLE, maxAscent / 2);
    info.setBaseline(BaselineInfo.ALPHABETIC, maxAscent);
    info.setBaseline(BaselineInfo.CENTRAL, maxAscent / 2);
    info.setBaseline(BaselineInfo.HANGING, maxAscent - getXHeight());
    info.setDominantBaseline(BaselineInfo.ALPHABETIC);

    if (cacheable)
    {
      final BaselineInfo cached = new BaselineInfo();
      cached.update(info);
      cachedBaselines[c - 32] = cached;
    }

    return info;
View Full Code Here

   */
  public BaselineInfo getBaselines(final int codePoint, BaselineInfo info)
  {
    if (info == null)
    {
      info = new BaselineInfo();
    }


    info.setBaseline(BaselineInfo.HANGING, 0);
    info.setBaseline(BaselineInfo.MATHEMATICAL, charHeight / 2);
View Full Code Here

    }
  }

  public static ExtendedBaselineInfo createBaselineInfo (final int codepoint, final FontMetrics fontMetrics)
  {
    final BaselineInfo baselineInfo = fontMetrics.getBaselines(codepoint, null);
    final int dominantBaseline =
        TextUtility.translateBaselines(baselineInfo.getDominantBaseline());
    final DefaultExtendedBaselineInfo extBaselineInfo =
        new DefaultExtendedBaselineInfo(dominantBaseline);

    final long[] baselines = new long[ExtendedBaselineInfo.BASELINE_COUNT];
    baselines[ExtendedBaselineInfo.ALPHABETHIC] =
        StrictGeomUtility.toInternalValue
            (baselineInfo.getBaseline(BaselineInfo.ALPHABETIC));
    baselines[ExtendedBaselineInfo.CENTRAL] =
        StrictGeomUtility.toInternalValue
            (baselineInfo.getBaseline(BaselineInfo.CENTRAL));
    baselines[ExtendedBaselineInfo.HANGING] =
        StrictGeomUtility.toInternalValue
            (baselineInfo.getBaseline(BaselineInfo.HANGING));
    baselines[ExtendedBaselineInfo.IDEOGRAPHIC] =
        StrictGeomUtility.toInternalValue
            (baselineInfo.getBaseline(BaselineInfo.IDEOGRAPHIC));
    baselines[ExtendedBaselineInfo.MATHEMATICAL] =
        StrictGeomUtility.toInternalValue
            (baselineInfo.getBaseline(BaselineInfo.MATHEMATICAL));
    baselines[ExtendedBaselineInfo.MIDDLE] =
        StrictGeomUtility.toInternalValue
            (baselineInfo.getBaseline(BaselineInfo.MIDDLE));
    baselines[ExtendedBaselineInfo.BEFORE_EDGE] = 0;
    baselines[ExtendedBaselineInfo.TEXT_BEFORE_EDGE] = 0;
    baselines[ExtendedBaselineInfo.TEXT_AFTER_EDGE] =
        StrictGeomUtility.toInternalValue
            (fontMetrics.getMaxHeight());
View Full Code Here

  public BaselineInfo getBaselines(final int c, BaselineInfo info)
  {
    final boolean cacheable = (c >=32 && c < 256);
    if (cacheable)
    {
      final BaselineInfo fromCache = cachedBaselines[c - 32];
      if (fromCache != null)
      {
        if (info == null)
        {
          info = new BaselineInfo();
        }
        info.update(fromCache);
        return info;
      }
    }

    cpBuffer[0] = (char) (c & 0xFFFF);
    final LineMetrics lm = font.getLineMetrics(cpBuffer, 0, 1, frc);
    final float[] bls = lm.getBaselineOffsets();
    final int idx = lm.getBaselineIndex();

    if (info == null)
    {
      info = new BaselineInfo();
    }

    // The ascent is local - but we need the global baseline, relative to the
    // MaxAscent.
    final double maxAscent = getMaxAscent();
    final double delta = maxAscent - lm.getAscent();
    info.setBaseline(BaselineInfo.MATHEMATICAL, delta + maxAscent - getXHeight());
    info.setBaseline(BaselineInfo.IDEOGRAPHIC, getMaxHeight());
    info.setBaseline(BaselineInfo.MIDDLE, maxAscent / 2);

    final double base = delta + lm.getAscent();

    switch (idx)
    {
      case Font.CENTER_BASELINE:
      {
        info.setBaseline(BaselineInfo.CENTRAL, base);
        info.setBaseline(BaselineInfo.ALPHABETIC, base + bls[Font.ROMAN_BASELINE]);
        info.setBaseline(BaselineInfo.HANGING, base + bls[Font.HANGING_BASELINE]);
        info.setDominantBaseline(BaselineInfo.CENTRAL);
        break;
      }
      case Font.HANGING_BASELINE:
      {
        info.setBaseline(BaselineInfo.CENTRAL, base + bls[Font.CENTER_BASELINE]);
        info.setBaseline(BaselineInfo.ALPHABETIC, base + bls[Font.ROMAN_BASELINE]);
        info.setBaseline(BaselineInfo.HANGING, base);
        info.setDominantBaseline(BaselineInfo.HANGING);
        break;
      }
      default: // ROMAN Base-line
      {
        info.setBaseline(BaselineInfo.ALPHABETIC, base);
        info.setBaseline(BaselineInfo.CENTRAL, base + bls[Font.CENTER_BASELINE]);
        info.setBaseline(BaselineInfo.HANGING, base + bls[Font.HANGING_BASELINE]);
        info.setDominantBaseline(BaselineInfo.ALPHABETIC);
        break;
      }
    }

    if (cacheable)
    {
      final BaselineInfo cached = new BaselineInfo();
      cached.update(info);
      cachedBaselines[c - 32] = cached;
    }

    return info;
  }
View Full Code Here

   */
  public BaselineInfo getBaselines(final int codePoint, BaselineInfo info)
  {
    if (info == null)
    {
      info = new BaselineInfo();
    }


    info.setBaseline(BaselineInfo.HANGING, 0);
    info.setBaseline(BaselineInfo.MATHEMATICAL, charHeight * 0.5);
 
View Full Code Here

TOP

Related Classes of org.jfree.fonts.registry.BaselineInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.