|
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 |
|