package gutenberg.itext;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.pdf.BaseFont;
import static gutenberg.itext.FontCopier.copyFont;
/**
* @author <a href="http://twitter.com/aloyer">@aloyer</a>
*/
public class FontDescriptor {
public static FontDescriptor fontDescriptor(Font font) {
return new FontDescriptor(font, font.getBaseFont(), null, font.getSize(), font.getStyle(), font.getColor());
}
public static FontDescriptor fontDescriptor(String fontName, float size, int style, BaseColor color) {
return new FontDescriptor(null, null, fontName, size, style, color);
}
public static FontDescriptor fontDescriptor(BaseFont baseFont, float size, int style, BaseColor color) {
return new FontDescriptor(null, baseFont, null, size, style, color);
}
private Font font;
private final BaseFont baseFont;
private final String fontName;
private final int style;
private final BaseColor color;
private final float size;
public FontDescriptor(Font font, BaseFont baseFont, String fontName, float size, int style, BaseColor color) {
this.font = font;
this.baseFont = baseFont;
this.fontName = fontName;
this.style = style;
this.color = color;
this.size = size;
}
public BaseFont baseFont() {
return font().getBaseFont();
}
public Font font() {
if (font == null) {
if (baseFont != null)
font = new Font(baseFont, size, style, color);
else
font = FontFactory.getFont(fontName, size, style, color);
}
return font;
}
public Font font(int style, BaseColor color) {
return copyFont(font()).style(style).color(color).get();
}
}