基于LWVCL开发的库

源代码在线查看: font.java

软件大小: 3714 K
上传用户: ywq9089
关键词: LWVCL
下载地址: 免注册下载 普通下载 VIP

相关代码

				package java.awt;								import gnu.classpath.Pointer;								import java.awt.geom.AffineTransform;				import java.awt.font.FontRenderContext;				import java.awt.font.GlyphVector;				import java.awt.peer.FontPeer;				import java.io.Serializable;				import java.text.CharacterIterator;				import java.util.Map;								/**				 * XXX: implement serial form! 				 */				public class Font				  implements Serializable				{					Pointer nativeData;					protected String name;					protected int style;					protected int size;					final public static int PLAIN = 0;					final public static int BOLD = 1;					final public static int ITALIC = 2;					final public static int ROMAN_BASELINE = 0;					final public static int CENTER_BASELINE = 1;					final public static int HANGING_BASELINE = 2;					final private static long serialVersionUID = -4206021311591459213L;								public Font ( String fntName, int fntStyle, int fntSize ) {					String spec;									name = fntName;					style = fntStyle;					size = fntSize;										/* Translate a font name into the true font - we have a number					 * of aliases to deal with which are kept in java.awt.Defaults.					 * We no longer cache them since this means Default changes will					 * not be seen.  However to speed the comparision we intern the					 * search string so we can do simple pointer checks (since string					 * constants are interned by default).					 */									name = name.intern();					if (name == "Default") {						spec = Defaults.FsDefault;					}					else if (name == "Monospaced") {						spec = Defaults.FsMonospaced;					}					else if (name == "SansSerif") {						spec = Defaults.FsSansSerif;					}					else if (name == "Serif") {						spec = Defaults.FsSerif;					}					else if (name == "Dialog") {						spec = Defaults.FsDialog;					}					else if (name == "DialogInput") {						spec = Defaults.FsDialogInput;					}					else if (name == "ZapfDingbats") {						spec = Defaults.FsZapfDingbats;					}					else if (name == "Helvetica") {						spec = Defaults.FsSansSerif;					}					else if (name == "TimesRoman") {						spec = Defaults.FsSerif;					}					else if (name == "Courier") {						spec = Defaults.FsMonospaced;					}					else {						spec = name;					}									nativeData = Toolkit.fntInitFont( spec, style, size);				}								/**				 * @rework				 */				public static Font decode ( String fntSpec ) {					Font     fnt;					String   name;					int      style = PLAIN;					int      size = 12;					int      i, n, l = 0;					char     c;										name = fntSpec;									if ( (i = fntSpec.indexOf( '-')) >= 0 ) {  // format : [-[-]]						name = fntSpec.substring( 0, i);												i++;						if ( fntSpec.regionMatches( true, i, "plain-", 0, 6) ){							l = 6;						}						else if ( fntSpec.regionMatches( true, i, "bold-", 0, 5) ){							style = BOLD;							l = 5;						}						else if ( fntSpec.regionMatches( true, i, "italic-", 0, 7) ){							style = ITALIC;							l = 7;						}						else if ( fntSpec.regionMatches( true, i, "bolditalic-", 0, 11) ) {							style = BOLD | ITALIC;							l = 11;						}										if ( l > 0 ) {							i += l;							size = 0;							for ( n = fntSpec.length(); i < n; i++ ) {								c = fntSpec.charAt( i);								if ( c >= '0' && c 									size = size*10 + (c - '0');								else									break;							}						}					}										fnt = new Font( name, style, size);					return fnt;				}								String encode () {					String s;										if ( style == PLAIN ){						s = "-plain-";					}					else if ( style == ITALIC ){						s = "-italic-";					}					else if ( style == BOLD ) {						s = "-bold-";					}					else {						s = "-bolditalic-";					}										return (name + s + size);				}								public boolean equals ( Object o ) {					if ( o instanceof Font ) {						Font fnt = (Font) o;						if ( !fnt.name.equals( name) ) return false;						if ( fnt.style != style ) return false;						if ( fnt.size != size ) return false;						return true;					}									return false;					}								protected void finalize () throws Throwable {				  if ( nativeData != null ) {				    Toolkit.fntFreeFont( nativeData);				    nativeData = null;				  }				  super.finalize();				}								public String getFamily() {					return System.getProperty( ("awt.font." + name.toLowerCase()), name);				}								public static Font getFont ( String key ) {					return getFont( key, null);				}								/**				* Returns a Font object from the passed property name.				 *				 * @param propname The name of the system property.				 * @param defval Value to use if the property is not found.				 *				 * @return The requested font, or default if the property				 * not exist or is malformed.				 */				public static Font getFont(String propname, Font defval)				{				    String propval = System.getProperty(propname);				    if (propval != null)				        return decode(propval);				    return defval;				}								public String getName() {					return name;				}								public FontPeer getPeer(){					return null;				}								public int getSize() {					return size;				}								public int getStyle() {					return style;				}								public boolean isBold () {					return ((style & BOLD) != 0);				}								public boolean isItalic () {					return ((style & ITALIC) != 0);				}								public boolean isPlain() {					return (style == 0);				}								public String toString() {					String	s = "";									if ( style == 0 )						s = "plain";					else {						if ( (style & BOLD) != 0 )   s = "bold";						if ( (style & ITALIC) != 0 ) s += "italic";					}									return getClass().getName() + "[family=" +getFamily() + ",name=" + name					    + ",style=" + s + ",size=" + size + ']';				}								// TODO all these derive font methods should actually derive a font!				public Font deriveFont(int style, float size)				{				    return this;				}				public Font deriveFont(float size)				{				    return this;				}				public Font deriveFont(int style)				{				    return this;				}				public Font deriveFont(int style, AffineTransform a)				{				    if (a == null)				        throw new IllegalArgumentException("Affine transformation is null");								    return this;				}				public Font deriveFont(AffineTransform a)				{				    if (a == null)				        throw new IllegalArgumentException("Affine transformation is null");								    return this;				}								public Font deriveFont(Map attributes)				{				    return this;				}												/* taken from GNU Classpath */				public GlyphVector				createGlyphVector(FontRenderContext ctx, String str)				{				  throw new UnsupportedOperationException ();				}								public GlyphVector				createGlyphVector(FontRenderContext ctx, CharacterIterator i)				{				  throw new UnsupportedOperationException ();				}								public GlyphVector				createGlyphVector(FontRenderContext ctx, char[] chars)				{				  throw new UnsupportedOperationException ();				}								public GlyphVector				createGlyphVector(FontRenderContext ctx, int[] glyphCodes)				{				  throw new UnsupportedOperationException ();				}				}							

相关资源