summaryrefslogtreecommitdiffstats
path: root/awt/java/awt/font/GlyphJustificationInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'awt/java/awt/font/GlyphJustificationInfo.java')
-rw-r--r--awt/java/awt/font/GlyphJustificationInfo.java197
1 files changed, 197 insertions, 0 deletions
diff --git a/awt/java/awt/font/GlyphJustificationInfo.java b/awt/java/awt/font/GlyphJustificationInfo.java
new file mode 100644
index 0000000..b03de0a
--- /dev/null
+++ b/awt/java/awt/font/GlyphJustificationInfo.java
@@ -0,0 +1,197 @@
+/*
+ * 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;
+ }
+}