| /* |
| * 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. |
| */ |
| |
| /* $Id$ */ |
| |
| package org.apache.fop.fonts; |
| |
| import java.io.IOException; |
| import java.io.ObjectInputStream; |
| import java.io.Serializable; |
| |
| |
| /** |
| * FontTriplet contains information on name, style and weight of one font |
| */ |
| public class FontTriplet implements Comparable<FontTriplet>, Serializable { |
| |
| public static final FontTriplet DEFAULT_FONT_TRIPLET |
| = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL); |
| |
| /** serial version UID */ |
| private static final long serialVersionUID = 1168991106658033508L; |
| |
| private String name; |
| private String style; |
| private int weight; |
| private int priority; // priority of this triplet/font mapping |
| |
| //This is only a cache |
| private transient String key; |
| |
| public FontTriplet() { |
| this(null, null, 0); |
| } |
| |
| /** |
| * Creates a new font triplet. |
| * @param name font name |
| * @param style font style (normal, italic etc.) |
| * @param weight font weight (100, 200, 300...800, 900) |
| */ |
| public FontTriplet(String name, String style, int weight) { |
| this(name, style, weight, Font.PRIORITY_DEFAULT); |
| } |
| |
| /** |
| * Creates a new font triplet. |
| * @param name font name |
| * @param style font style (normal, italic etc.) |
| * @param weight font weight (100, 200, 300...800, 900) |
| * @param priority priority of this triplet/font mapping |
| */ |
| public FontTriplet(String name, String style, int weight, int priority) { |
| this.name = name; |
| this.style = style; |
| this.weight = weight; |
| this.priority = priority; |
| } |
| |
| private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { |
| ois.defaultReadObject(); |
| } |
| |
| /** @return the font name */ |
| public String getName() { |
| return name; |
| } |
| |
| /** @return the font style */ |
| public String getStyle() { |
| return style; |
| } |
| |
| /** @return the font weight */ |
| public int getWeight() { |
| return weight; |
| } |
| |
| /** @return the priority of this triplet/font mapping */ |
| public int getPriority() { |
| return priority; |
| } |
| |
| private String getKey() { |
| if (this.key == null) { |
| //This caches the combined key |
| this.key = getName() + "," + getStyle() + "," + getWeight(); |
| } |
| return this.key; |
| } |
| |
| /** {@inheritDoc} */ |
| public int compareTo(FontTriplet o) { |
| return getKey().compareTo(o.getKey()); |
| } |
| |
| /** {@inheritDoc} */ |
| public int hashCode() { |
| return toString().hashCode(); |
| } |
| |
| /** {@inheritDoc} */ |
| public boolean equals(Object obj) { |
| if (obj == null) { |
| return false; |
| } else if (obj == this) { |
| return true; |
| } else { |
| if (obj instanceof FontTriplet) { |
| FontTriplet other = (FontTriplet)obj; |
| return (getName().equals(other.getName()) |
| && getStyle().equals(other.getStyle()) |
| && (getWeight() == other.getWeight())); |
| } |
| } |
| return false; |
| } |
| |
| /** {@inheritDoc} */ |
| public String toString() { |
| return getKey(); |
| } |
| |
| |
| /** |
| * Matcher interface for {@link FontTriplet}. |
| */ |
| public interface Matcher { |
| |
| /** |
| * Indicates whether the given {@link FontTriplet} matches a particular criterium. |
| * @param triplet the font triplet |
| * @return true if the font triplet is a match |
| */ |
| boolean matches(FontTriplet triplet); |
| } |
| } |
| |