/* * 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. */ /** * @author Ilya S. Okomin * @version $Revision$ */ package java.awt.font; import org.apache.harmony.awt.internal.nls.Messages; /** * The GlyphJustificationInfo class provides information about the glyph's * justification properties. There are four justification properties: weight, * priority, absorb, and limit. * <p> * There are two sets of metrics: growing and shrinking. Growing metrics are * used when the glyphs are to be spread apart to fit a larger width. Shrinking * metrics are used when the glyphs are to be moved together to fit a smaller * width. * </p> * * @since Android 1.0 */ public final class GlyphJustificationInfo { /** * The Constant PRIORITY_KASHIDA indicates the highest justification * priority. */ public static final int PRIORITY_KASHIDA = 0; /** * The Constant PRIORITY_WHITESPACE indicates the second highest * justification priority. */ public static final int PRIORITY_WHITESPACE = 1; /** * The Constant PRIORITY_INTERCHAR indicates the second lowest justification * priority. */ public static final int PRIORITY_INTERCHAR = 2; /** * The Constant PRIORITY_NONE indicates the lowest justification priority. */ public static final int PRIORITY_NONE = 3; /** * The grow absorb flag indicates if this glyph absorbs all extra space at * this and lower priority levels when it grows. */ public final boolean growAbsorb; /** * The grow left limit value represents the maximum value by which the left * side of this glyph grows. */ public final float growLeftLimit; /** * The grow right limit value repesents the maximum value by which the right * side of this glyph grows. */ public final float growRightLimit; /** * The grow priority value represents the priority level of this glyph as it * is growing. */ public final int growPriority; /** * The shrink absorb fleg indicates this glyph absorbs all remaining * shrinkage at this and lower priority levels as it shrinks. */ public final boolean shrinkAbsorb; /** * The shrink left limit value represents the maximum value by which the * left side of this glyph shrinks. */ public final float shrinkLeftLimit; /** * The shrink right limit value represents the maximum value by which the * right side of this glyph shrinks. */ public final float shrinkRightLimit; /** * The shrink priority represents the glyth's priority level as it is * shrinking. */ public final int shrinkPriority; /** * The weight of the glyph. */ public final float weight; /** * Instantiates a new GlyphJustificationInfo object which contains glyph's * justification properties. * * @param weight * the weight of glyph. * @param growAbsorb * indicates if this glyph contais all space at this priority and * lower priority levels when it grows. * @param growPriority * indicates the priority level of this glyph when it grows. * @param growLeftLimit * indicates the maximum value of which the left side of this * glyph can grow. * @param growRightLimit * the maximum value of which the right side of this glyph can * grow. * @param shrinkAbsorb * indicates if this glyph contains all remaining shrinkage at * this and lower priority levels when it shrinks. * @param shrinkPriority * indicates the glyph's priority level when it shrinks. * @param shrinkLeftLimit * indicates the maximum value of which the left side of this * glyph can shrink. * @param shrinkRightLimit * indicates the maximum amount by which the right side of this * glyph can shrink. */ public GlyphJustificationInfo(float weight, boolean growAbsorb, int growPriority, float growLeftLimit, float growRightLimit, boolean shrinkAbsorb, int shrinkPriority, float shrinkLeftLimit, float shrinkRightLimit) { if (weight < 0) { // awt.19C=weight must be a positive number throw new IllegalArgumentException(Messages.getString("awt.19C")); //$NON-NLS-1$ } this.weight = weight; if (growLeftLimit < 0) { // awt.19D=growLeftLimit must be a positive number throw new IllegalArgumentException(Messages.getString("awt.19D")); //$NON-NLS-1$ } this.growLeftLimit = growLeftLimit; if (growRightLimit < 0) { // awt.19E=growRightLimit must be a positive number throw new IllegalArgumentException(Messages.getString("awt.19E")); //$NON-NLS-1$ } this.growRightLimit = growRightLimit; if ((shrinkPriority < 0) || (shrinkPriority > PRIORITY_NONE)) { // awt.19F=incorrect value for shrinkPriority, more than // PRIORITY_NONE or less than PRIORITY_KASHIDA value throw new IllegalArgumentException(Messages.getString("awt.19F")); //$NON-NLS-1$ } this.shrinkPriority = shrinkPriority; if ((growPriority < 0) || (growPriority > PRIORITY_NONE)) { // awt.200=incorrect value for growPriority, more than PRIORITY_NONE // or less than PRIORITY_KASHIDA value throw new IllegalArgumentException(Messages.getString("awt.200")); //$NON-NLS-1$ } this.growPriority = growPriority; if (shrinkLeftLimit < 0) { // awt.201=shrinkLeftLimit must be a positive number throw new IllegalArgumentException(Messages.getString("awt.201")); //$NON-NLS-1$ } this.shrinkLeftLimit = shrinkLeftLimit; if (shrinkRightLimit < 0) { // awt.202=shrinkRightLimit must be a positive number throw new IllegalArgumentException(Messages.getString("awt.202")); //$NON-NLS-1$ } this.shrinkRightLimit = shrinkRightLimit; this.shrinkAbsorb = shrinkAbsorb; this.growAbsorb = growAbsorb; } }