/*
* SyntaxStyle.java - A simple text style class
* Copyright (C) 1999 Slava Pestov
*
* You may use and modify this package for any purpose. Redistribution is
* permitted, in both source and binary form, provided that this notice
* remains intact in all source distributions of this package.
*/
package processing.app.syntax;
import java.awt.Color;
/**
* A simple text style class.
* It can specify the color and bold flag of a run of text.
* @author Slava Pestov
* @version $Id$
*/
public class SyntaxStyle {
private Color color;
// private boolean italic;
private boolean bold;
// private Font lastFont;
// private Font lastStyledFont;
// private FontMetrics fontMetrics;
/**
* Creates a new SyntaxStyle.
* @param color The text color
* @param bold True if the text should be bold
*/
// * @param italic True if the text should be italics
// public SyntaxStyle(Color color, boolean italic, boolean bold) {
public SyntaxStyle(Color color, boolean bold) {
this.color = color;
// this.italic = italic;
this.bold = bold;
}
/** Returns the color specified in this style. */
public Color getColor() {
return color;
}
// /**
// * Returns true if no font styles are enabled.
// */
// public boolean isPlain() {
// return !(bold || italic);
// }
// /**
// * Returns true if italics is enabled for this style.
// */
// public boolean isItalic() {
// return italic;
// }
/** Returns true if boldface is enabled for this style. */
public boolean isBold() {
return bold;
}
// /**
// * Returns the specified font, but with the style's bold flags applied.
// */
// public Font getStyledFont(Font font) {
// if (font.equals(lastFont)) {
// return lastStyledFont;
// }
// lastFont = font;
// lastStyledFont =
// findFont(font.getFamily(), bold ? Font.BOLD : Font.PLAIN, font.getSize());
// return lastStyledFont;
// }
//
//
// /**
// * Returns the font metrics for the styled font.
// */
// public FontMetrics getFontMetrics(Font font, JComponent comp) {
//// if (font == null) {
//// throw new NullPointerException("font param must not be null");
//// }
// if (font.equals(lastFont) && fontMetrics != null) {
// return fontMetrics;
// }
// lastFont = font;
//// lastStyledFont = new Font(font.getFamily(),
//// (bold ? Font.BOLD : 0)
//// | (italic ? Font.ITALIC : 0),
//// font.getSize());
// lastStyledFont =
// findFont(font.getFamily(), bold ? Font.BOLD : Font.PLAIN, font.getSize());
//
// //fontMetrics = Toolkit.getDefaultToolkit().getFontMetrics(lastStyledFont);
// fontMetrics = comp.getFontMetrics(lastStyledFont);
// return fontMetrics;
// }
//
//
// /*
// on Windows (and I presume Linux) we get something like this:
//
// mono family Source Code Pro
// mono fontname Source Code Pro
// mono name Source Code Pro
// mono psname SourceCodePro-Regular
//
// mono family Source Code Pro Semibold
// mono fontname Source Code Pro Semibold
// mono name Source Code Pro Semibold
// mono psname SourceCodePro-Semibold
//
// ...which means that 'family' is not a usable method.
// */
// //private String monoFontFamily;
//
// private Font findFont(String familyName, int style, int size) {
//// // getFamily() is too unreliable across platforms
//// if (Preferences.get("editor.font").startsWith("processing.mono")) {
//// return processing.app.Toolkit.getMonoFont(size, style);
//// } else {
// System.out.println("creating new font for " + familyName);
// return new Font(familyName, style, size);
//// }
//
// /*
// if (monoFontFamily == null) {
// // This should be more reliable across platforms than the
// // family name, which only seems to work correctly on OS X.
// // (Or perhaps only when it's installed locally.)
// String psName =
// processing.app.Toolkit.getMonoFont(size, style).getPSName();
// int dash = psName.indexOf('-');
// monoFontFamily = psName.substring(0, dash);
//
// // Just get the font family name for comparison
// //monoFontFamily =
// //processing.app.Toolkit.getMonoFont(size, style).getFamily();
// //processing.app.Toolkit.getMonoFont(size, style).getFamily();
// Font mono = processing.app.Toolkit.getMonoFont(size, style);
// System.out.println("mono family " + mono.getFamily());
// System.out.println("mono fontname " + mono.getFontName());
// System.out.println("mono name " + mono.getName());
// System.out.println("mono psname " + mono.getPSName());
// }
// if (familyName.equals(monoFontFamily)) {
// System.out.println("getting style bold? " + (style == Font.BOLD));
// return processing.app.Toolkit.getMonoFont(size, style);
// } else {
// //System.out.println("name is " + name + " mono name is " + monoFontName + " " + style);
// return new Font(familyName, style, size);
// }
// */
// }
//
//
// /**
// * Sets the foreground color and font of the specified graphics
// * context to that specified in this style.
// * @param gfx The graphics context
// * @param font The font to add the styles to
// */
// public void setGraphicsFlags(Graphics gfx, Font font) {
// Font _font = getStyledFont(font);
// gfx.setFont(_font);
// gfx.setColor(color);
// }
/**
* Returns a string representation of this object.
*/
public String toString() {
return getClass().getName() + "[color=" + color +
// (italic ? ",italic" : "") +
(bold ? ",bold" : "") + "]";
}
}