package org.mt4j.components.css.style; import org.mt4j.components.css.util.CSSKeywords.CSSFontFamily; import org.mt4j.components.css.util.CSSKeywords.CSSFontStyle; import org.mt4j.components.css.util.CSSKeywords.CSSFontWeight; import org.mt4j.util.MTColor; /** * The Class CSSFont. */ public class CSSFont { /** The font family. */ private CSSFontFamily family = CSSFontFamily.CUSTOM; /** The font style. */ private CSSFontStyle style = CSSFontStyle.NORMAL; /** The custom font file string. */ private String customType = ""; /** The font weight. */ private CSSFontWeight weight = CSSFontWeight.NORMAL; /** The font size. */ private int fontsize = 16; /** The font color. */ private MTColor color = new MTColor(255, 255, 255, 255); /** Has the font been modified. */ private boolean modified = false; /** * Instantiates a new CSS font using the color * * @param color the color */ public CSSFont(MTColor color) { super(); this.color = color; this.modified = true; } /** * Instantiates a new default CSS font. */ public CSSFont() { super(); this.family = CSSFontFamily.DEFAULT; } /** * Instantiates a new CSS font using the font size * * @param fontsize the fontsize */ public CSSFont(int fontsize) { super(); this.fontsize = fontsize; this.modified = true; } /** * Instantiates a new CSS font using a custom font file name * * @param customType the custom custom font file name */ public CSSFont(String customType) { super(); this.customType = customType; this.modified = true; } /** * Instantiates a new CSS font using the font style * * @param style the font style */ public CSSFont(CSSFontStyle style) { super(); this.style = style; this.modified = true; } /** * Instantiates a new CSS font using the font family * * @param family the font family */ public CSSFont(CSSFontFamily family) { super(); this.family = family; this.modified = true; } /** * Instantiates a new CSS font using the font weight * * @param weight the font weight */ public CSSFont(CSSFontWeight weight) { super(); this.weight = weight; this.modified = true; } /** * Gets the color. * * @return the color */ public MTColor getColor() { return color; } /** * Sets the color. * * @param color the new color */ public void setColor(MTColor color) { this.color = color; this.modified = true; } /** * Gets the font size. * * @return the font size */ public int getFontsize() { return fontsize; } /** * Sets the font size. * * @param fontsize the new font size */ public void setFontsize(int fontsize) { this.fontsize = fontsize; this.modified = true; debugOutput(); } /** * Gets the weight. * * @return the weight */ public CSSFontWeight getWeight() { return weight; } /** * Sets the weight. * * @param weight the new weight */ public void setWeight(CSSFontWeight weight) { this.weight = weight; this.modified = true; debugOutput(); } /** * Gets the family. * * @return the family */ public CSSFontFamily getFamily() { return family; } /** * Sets the family. * * @param family the new family */ public void setFamily(CSSFontFamily family) { this.family = family; this.modified = true; debugOutput(); } /** * Gets the font style. * * @return the font style */ public CSSFontStyle getStyle() { return style; } /** * Sets the font style. * * @param style the new font style */ public void setStyle(CSSFontStyle style) { this.style = style; this.modified = true; debugOutput(); } /** * Gets the file name of custom fonts * * @return the file name of the custom font */ public String getCustomType() { return customType; } /** * Sets the file name of custom fonts * * @param customType the file name of the custom font */ public void setCustomType(String customType) { this.customType = customType; this.modified = true; debugOutput(); } /** * Sets, if the font has been modified * * @param modified the new modified */ public void setModified(boolean modified) { this.modified = modified; } /** * Checks if the font is modified. * * @return true, if is modified */ public boolean isModified() { return modified; } /** * Debug output. */ private void debugOutput() { /*Logger logger = Logger.getLogger("MT4J Extensions"); logger.debug("Font Family: " + family + ", Font Style: " + style + ", Font Weight: " + weight + ", Font Size: " + fontsize + ", Custom TTF Font: " + customType);*/ } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((color == null) ? 0 : color.hashCode()); result = prime * result + ((customType == null) ? 0 : customType.hashCode()); result = prime * result + ((family == null) ? 0 : family.hashCode()); result = prime * result + fontsize; result = prime * result + ((style == null) ? 0 : style.hashCode()); result = prime * result + ((weight == null) ? 0 : weight.hashCode()); return result; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; CSSFont other = (CSSFont) obj; if (color == null) { if (other.color != null) return false; } else if (!color.equals(other.color)) return false; if (customType == null) { if (other.customType != null) return false; } else if (!customType.equals(other.customType)) return false; if (family == null) { if (other.family != null) return false; } else if (!family.equals(other.family)) return false; if (fontsize != other.fontsize) return false; if (style == null) { if (other.style != null) return false; } else if (!style.equals(other.style)) return false; if (weight == null) { if (other.weight != null) return false; } else if (!weight.equals(other.weight)) return false; return true; } public CSSFont clone() { CSSFont newFont = new CSSFont(); newFont.color = this.color.getCopy(); newFont.customType = this.customType.substring(0); newFont.family = this.family; newFont.fontsize = this.fontsize; newFont.modified = this.modified; newFont.style = this.style; newFont.weight =this.weight; return newFont; } public CSSFont clone(int fontsize) { CSSFont newFont = this.clone(); newFont.setFontsize(fontsize); newFont.setModified(true); return newFont; } }