📄 fontsizer.java
字号:
// **********************************************************************// // <copyright>// // BBN Technologies// 10 Moulton Street// Cambridge, MA 02138// (617) 873-8000// // Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/omGraphics/FontSizer.java,v $// $RCSfile: FontSizer.java,v $// $Revision: 1.2.2.5 $// $Date: 2005/09/06 20:01:21 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.omGraphics;import java.awt.Font;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;/** * Helper class to OMText object that resizes font when scale changes. * Font gets bigger as you zoom in. */public class FontSizer implements Serializable { protected transient Font font = OMText.DEFAULT_FONT; protected transient Font lastFont = OMText.DEFAULT_FONT; protected float baseScale = -1; protected transient float lastScale = -1; protected transient float curScale = -1; protected int minPointSize = font.getSize(); protected int maxPointSize = font.getSize(); /** * Default of 1. Used against the base scale/current scale ratio * to speed up or slow down font size changes based on scale. */ protected int multiplier = 1; /** * @param font the font to use as the base font. * @param baseScale the scale where the base font is shown at its * natural size. * @param multiplier to use against the ratio of base * scale:current scale. * @param minPointSize the minimum point size to use for the * scaled font. * @param maxPointSize the maximum point size to use for the * scaled font. */ public FontSizer(Font font, float baseScale, int multiplier, int minPointSize, int maxPointSize) { this(baseScale, multiplier, minPointSize, maxPointSize); this.font = font; } /** * Contructor that uses the OMText DEFAULT_FONT as the base font. * * @param baseScale the scale where the base font is shown at its * natural size. * @param multiplier to use against the ratio of base * scale:current scale. * @param minPointSize the minimum point size to use for the * scaled font. * @param maxPointSize the maximum point size to use for the * scaled font. */ public FontSizer(float baseScale, int multiplier, int minPointSize, int maxPointSize) { this.baseScale = baseScale; this.multiplier = multiplier; this.minPointSize = minPointSize; this.maxPointSize = maxPointSize; } /** * Set the base font. */ public void setFont(Font font) { this.font = font; } /** * Get a font sized for the scale, given the size restrictions. */ public Font getFont(float scale) { curScale = scale; return getScaledFont(); } protected Font getScaledFont() { if (lastScale != curScale) { lastScale = curScale; if (baseScale < 0 || curScale < 0) { lastFont = font; } else { int newFontSize = multiplier * (int) ((baseScale / curScale) * (float) font.getSize()); if (newFontSize > maxPointSize) { newFontSize = maxPointSize; } else if (newFontSize < minPointSize) { newFontSize = minPointSize; } lastFont = new Font(font.getName(), font.getStyle(), newFontSize); } } return lastFont; } /** * Get the base font. */ public Font getFont() { return font; } public void setMultiplier(int mul) { lastScale = -1; multiplier = mul; } public int getMultiplier() { return multiplier; } private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); // Write the Font. Take into account the font member could be // null, although this is unlikely it never hurts to // protect one's self. boolean writeFont = (font != OMText.DEFAULT_FONT); // First write a flag indicating if a Font is on the stream. oos.writeBoolean(writeFont); // Write the Font data if a font is on this object. if (writeFont) { oos.writeObject(font.getName()); oos.writeInt(font.getSize()); oos.writeInt(font.getStyle()); } } /** * Reconstitute from an ObjectInputStream. */ private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); // Get the flag form the stream boolean hasFont = ois.readBoolean(); if (hasFont) { String name = (String) ois.readObject(); int size = ois.readInt(); int style = ois.readInt(); font = new Font(name, style, size); } else { font = OMText.DEFAULT_FONT; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -