public final void testGlyphJustificationInfo() { GlyphJustificationInfo gji = new GlyphJustificationInfo(weight, growAbsorb, growPriority, growLeftLimit, growRightLimit, shrinkAbsorb, shrinkPriority, shrinkLeftLimit, shrinkRightLimit); assertEquals("weight", weight, gji.weight, 0F); assertEquals("growAbsorb", growAbsorb, gji.growAbsorb); assertEquals("growPriority", growPriority, gji.growPriority); assertEquals("growLeftLimit", growLeftLimit, gji.growLeftLimit, 0F); assertEquals("growRightLimit", growRightLimit, gji.growRightLimit, 0F); assertEquals("shrinkAbsorb", shrinkAbsorb, gji.shrinkAbsorb); assertEquals("shrinkPriority", shrinkPriority, gji.shrinkPriority); assertEquals("shrinkLeftLimit", shrinkLeftLimit, gji.shrinkLeftLimit, 0F); assertEquals("shrinkRightLimit", shrinkRightLimit, gji.shrinkRightLimit, 0F); }
public final void testGetJustificationInfo() { iga = new ImageGraphicAttribute(img, alignment); float advance = iga.getAdvance(); GlyphJustificationInfo gji = new GlyphJustificationInfo( advance, false, GlyphJustificationInfo.PRIORITY_INTERCHAR, advance / 3, advance / 3, false, GlyphJustificationInfo.PRIORITY_WHITESPACE, 0, 0); equalsGlyphJustificationInfo(gji, iga.getJustificationInfo()); }
public final void testGetJustificationInfo() { sga = new ShapeGraphicAttribute(shape, alignment, stroke); float advance = sga.getAdvance(); GlyphJustificationInfo gji = new GlyphJustificationInfo( advance, false, GlyphJustificationInfo.PRIORITY_INTERCHAR, advance / 3, advance / 3, false, GlyphJustificationInfo.PRIORITY_WHITESPACE, 0, 0); equalsGlyphJustificationInfo(gji, sga.getJustificationInfo()); }
public GlyphJustificationInfo getGlyphJustificationInfo(int ix) { if (ix < 0 || ix >= glyphs.length) { throw new IndexOutOfBoundsException("ix = " + ix); } // currently we don't have enough information to do this right. should // get info from the font and use real OT/GX justification. Right now // sun/font/ExtendedTextSourceLabel assigns one of three infos // based on whether the char is kanji, space, or other. return null; }
@Override public GlyphJustificationInfo getGlyphJustificationInfo(int ix) { if (ix < 0 || ix >= glyphs.length()) { throw new IndexOutOfBoundsException("ix = " + ix); } // currently we don't have enough information to do this right. should // get info from the font and use real OT/GX justification. Right now // sun/font/ExtendedTextSourceLabel assigns one of three infos // based on whether the char is kanji, space, or other. return null; }
/** * Returns the justification information for the glyph at the specified * index into this GlyphVector. */ public GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex) { if (glyphIndex < 0 || (glyphIndex > glyphs.length-1)) { throw new IndexOutOfBoundsException("glyphIndex: " + glyphIndex + ", is out of bounds. Should be between 0 and " + (glyphs.length-1) + "."); } return null; }
private boolean equalsGlyphJustificationInfo(GlyphJustificationInfo info1, GlyphJustificationInfo info2){ assertEquals("weight", info1.weight, info2.weight, 0F); assertEquals("growAbsorb", info1.growAbsorb, info2.growAbsorb); assertEquals("growPriority", info1.growPriority, info2.growPriority); assertEquals("growLeftLimit", info1.growLeftLimit, info2.growLeftLimit, 0F); assertEquals("growRightLimit", info1.growRightLimit, info2.growRightLimit, 0F); assertEquals("shrinkAbsorb", info1.shrinkAbsorb, info2.shrinkAbsorb); assertEquals("shrinkPriority", info1.shrinkPriority, info2.shrinkPriority); assertEquals("shrinkLeftLimit", info1.shrinkLeftLimit, info2.shrinkLeftLimit, 0F); assertEquals("shrinkRightLimit", info1.shrinkRightLimit, info2.shrinkRightLimit, 0F); return true; }
/** * Returns a justification information for the glyph with specified glyph * index. * @param glyphIndex index of a glyph which GlyphJustificationInfo is to be * received * @return a GlyphJustificationInfo object that contains glyph justification * properties of the specified glyph */ @Override public GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex) { // TODO : Find out the source of Justification info if (true) { throw new RuntimeException("Method is not implemented"); //$NON-NLS-1$ } return null; }
public void getJustificationInfos(GlyphJustificationInfo[] infos, int infoStart, int charStart, int charLimit) { // This simple implementation only uses spaces for justification. // Since regular characters aren't justified, we don't need to deal with // special infos for combining marks or ligature substitution glyphs. // added character justification for kanjii only 2/22/98 StandardGlyphVector gv = getGV(); float[] charinfo = getCharinfo(); float size = gv.getFont().getSize2D(); GlyphJustificationInfo nullInfo = new GlyphJustificationInfo(0, false, GlyphJustificationInfo.PRIORITY_NONE, 0, 0, false, GlyphJustificationInfo.PRIORITY_NONE, 0, 0); GlyphJustificationInfo spaceInfo = new GlyphJustificationInfo(size, true, GlyphJustificationInfo.PRIORITY_WHITESPACE, 0, size, true, GlyphJustificationInfo.PRIORITY_WHITESPACE, 0, size / 4f); GlyphJustificationInfo kanjiInfo = new GlyphJustificationInfo(size, true, GlyphJustificationInfo.PRIORITY_INTERCHAR, size, size, false, GlyphJustificationInfo.PRIORITY_NONE, 0, 0); char[] chars = source.getChars(); int offset = source.getStart(); // assume data is 1-1 and either all rtl or all ltr, for now int numGlyphs = gv.getNumGlyphs(); int minGlyph = 0; int maxGlyph = numGlyphs; boolean ltr = (source.getLayoutFlags() & 0x1) == 0; if (charStart != 0 || charLimit != source.getLength()) { if (ltr) { minGlyph = charStart; maxGlyph = charLimit; } else { minGlyph = numGlyphs - charLimit; maxGlyph = numGlyphs - charStart; } } for (int i = 0; i < numGlyphs; ++i) { GlyphJustificationInfo info = null; if (i >= minGlyph && i < maxGlyph) { if (charinfo[i * numvals + advx] == 0) { // combining marks don't justify info = nullInfo; } else { int ci = v2l(i); // 1-1 assumption again char c = chars[offset + ci]; if (Character.isWhitespace(c)) { info = spaceInfo; // CJK, Hangul, CJK Compatibility areas } else if (c >= 0x4e00 && (c < 0xa000) || (c >= 0xac00 && c < 0xd7b0) || (c >= 0xf900 && c < 0xfb00)) { info = kanjiInfo; } else { info = nullInfo; } } } infos[infoStart + i] = info; } }
/** * Returns the justification information for the glyph at the specified * index into this GlyphVector. */ public GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex) { int idx = getGVIdx(glyphIndex); return gvs[idx].getGlyphJustificationInfo(glyphIndex-off[idx]); }