org.apache.batik.gvt.flow.GlyphGroupInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of batik-gvt Show documentation
Show all versions of batik-gvt Show documentation
Batik Graphics Vector Tree (GVT)
The newest version!
/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package org.apache.batik.gvt.flow;
import org.apache.batik.gvt.font.GVTGlyphVector;
/**
* One line Class Desc
*
* Complete Class Desc
*
* @author deweese
* @version $Id$
*/
public class GlyphGroupInfo {
int start, end;
int glyphCount, lastGlyphCount;
boolean hideLast;
float advance, lastAdvance;
int range;
GVTGlyphVector gv;
boolean [] hide;
public GlyphGroupInfo(GVTGlyphVector gv,
int start,
int end,
boolean [] glyphHide,
boolean glyphGroupHideLast,
float [] glyphPos,
float [] advAdj,
float [] lastAdvAdj,
boolean [] space) {
this.gv = gv;
this.start = start;
this.end = end;
this.hide = new boolean[this.end-this.start+1];
this.hideLast = glyphGroupHideLast;
System.arraycopy(glyphHide, this.start, this.hide, 0,
this.hide.length);
float adv = glyphPos[2*end+2]-glyphPos[2*start];
float ladv = adv;
adv += advAdj[end];
int glyphCount = end-start+1;
for (int g=start; g=start; g--) {
ladv += lastAdvAdj[g];
if (!space[g]) break;
lastGlyphCount--;
}
if (hideLast) lastGlyphCount--;
this.glyphCount = glyphCount;
this.lastGlyphCount = lastGlyphCount;
this.advance = adv;
this.lastAdvance = ladv;
}
/**
* Get the GlyphVector for this GlyphGroup.
*/
public GVTGlyphVector getGlyphVector() { return gv; }
/** get the start glyph index for this glyph group. */
public int getStart() { return start; }
/** get the end glyph index for this glyph group. */
public int getEnd() { return end; }
/** get the number of glyphs that count when it's not the
* last in the line (basically end-start+1-sum(hide) ).
*/
public int getGlyphCount() { return glyphCount; }
/** get the number of glyphs that 'cout' when it is the
* last in the line. This is glyphCount minus any
* trailing spaces, and minus the last glyph if hideLast
* is true.
*/
public int getLastGlyphCount() { return lastGlyphCount; }
public boolean [] getHide() { return hide; }
/** return true if 'end' glyph should be hidden in cases
* where this is not the last glyph group in a span */
public boolean getHideLast() { return hideLast; }
/**
* returns the advance to use when this glyphGroup is
* not the last glyph group in a span.
*/
public float getAdvance() { return advance; }
/**
* returns the advance to use when this glyphGroup is
* the last glyph group in a span. This generally includes
* the width of the last glyph if 'HideLast' is true. Also
* in Japanese some glyphs should not be counted for line
* width (they may go outside the flow area).
*/
public float getLastAdvance() { return lastAdvance; }
public void setRange(int range) { this.range = range; }
public int getRange() { return this.range; }
}