|
Fonts |
|
package ij.plugin.frame;
import java.awt.*;
import java.awt.event.*;
import ij.*;
import ij.plugin.*;
import ij.gui.*;
/** Displays a window that allows the user to set the font, size and style. */
public class Fonts extends PlugInFrame implements PlugIn, ItemListener {
private static String[] sizes = {"8","9","10","12","14","18","24","28","36","48","60","72"};
private static int[] isizes = {8,9,10,12,14,18,24,28,36,48,60,72};
private Panel panel;
private Choice font;
private Choice size;
private Choice style;
private Checkbox checkbox;
private static Frame instance;
public Fonts() {
super("Fonts");
if (instance!=null) {
instance.toFront();
return;
}
WindowManager.addWindow(this);
instance = this;
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 5));
font = new Choice();
if (IJ.isJava2()) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fonts = ge.getAvailableFontFamilyNames();
font.add("SansSerif");
font.add("Serif");
font.add("Monospaced");
for (int i=0; i<fonts.length; i++) {
String f = fonts[i];
if (!(f.equals("SansSerif")||f.equals("Serif")||f.equals("Monospaced")))
font.add(f);
}
} else {
String[] fonts = Toolkit.getDefaultToolkit().getFontList();
for (int i=0; i<fonts.length; i++)
font.add(fonts[i]);
}
font.select(TextRoi.getFont());
font.addItemListener(this);
add(font);
size = new Choice();
for (int i=0; i<sizes.length; i++)
size.add(sizes[i]);
size.select(getSizeIndex());
size.addItemListener(this);
add(size);
style = new Choice();
style.add("Plain");
style.add("Bold");
style.add("Italic");
style.add("Bold+Italic");
int i = TextRoi.getStyle();
String s = "Plain";
if (i==Font.BOLD)
s = "Bold";
else if (i==Font.ITALIC)
s = "Italic";
else if (i==(Font.BOLD+Font.ITALIC))
s = "Bold+Italic";
style.select(s);
style.addItemListener(this);
add(style);
checkbox = new Checkbox("Smooth", TextRoi.isAntialiased());
add(checkbox);
checkbox.addItemListener(this);
pack();
GUI.center(this);
show();
IJ.register(Fonts.class);
}
int getSizeIndex() {
int size = TextRoi.getSize();
int index=0;
for (int i=0; i<isizes.length; i++) {
if (size>=isizes[i])
index = i;
}
return index;
}
public void itemStateChanged(ItemEvent e) {
String fontName = font.getSelectedItem();
int fontSize = Integer.parseInt(size.getSelectedItem());
String styleName = style.getSelectedItem();
int fontStyle = Font.PLAIN;
if (styleName.equals("Bold"))
fontStyle = Font.BOLD;
else if (styleName.equals("Italic"))
fontStyle = Font.ITALIC;
else if (styleName.equals("Bold+Italic"))
fontStyle = Font.BOLD+Font.ITALIC;
TextRoi.setFont(fontName, fontSize, fontStyle, checkbox.getState());
IJ.showStatus(fontSize+" point "+fontName + " " + styleName);
}
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
instance = null;
}
}
|
Fonts |
|