1 /* Copyright (C) 2000 Free Software Foundation 2 3 This file is part of libgcj. 4 5 This software is copyrighted work licensed under the terms of the 6 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for 7 details. */ 8 9 package gnu.gcj.xlib; 10 11 import gnu.gcj.RawData; 12 13 /** 14 * An X11 Font, implemented as a wrapper around an X11 Font XID and 15 * the associated Xlib XFontStruct structure. 16 * 17 * @author Rolf W. Rasmussen <rolfwr@ii.uib.no> 18 */ 19 public final class Font extends XID 20 { 21 22 /** 23 * @param lfdNamePattern a font name pattern following the 24 * <em>X Logical Font Description Conventions</em>. 25 */ Font(Display display, String lfdNamePattern)26 public Font(Display display, String lfdNamePattern) 27 { 28 this(display, loadFont(display, lfdNamePattern)); 29 } 30 Font(Display display, RawData struct)31 Font(Display display, RawData struct) 32 { 33 super(display, getXIDFromStruct(struct)); 34 structure = struct; 35 } 36 loadFont(Display display, String lfdNamePattern)37 static RawData loadFont(Display display, String lfdNamePattern) 38 { 39 RawData returnValue = null; 40 try 41 { 42 returnValue = loadFontImpl (display,lfdNamePattern); 43 } 44 catch (XException e) 45 { 46 // Throw a descriptive exception, including the font pattern 47 throw new XException ("Font not found: " + lfdNamePattern); 48 } 49 return returnValue; 50 } loadFontImpl(Display display, String lfdNamePattern)51 static native RawData loadFontImpl(Display display, String lfdNamePattern); 52 getXIDFromStruct(RawData structure)53 static native int getXIDFromStruct(RawData structure); 54 getAscent()55 public native int getAscent(); getDescent()56 public native int getDescent(); getMaxAscent()57 public native int getMaxAscent(); getMaxDescent()58 public native int getMaxDescent(); 59 getStringWidth(String str)60 public native int getStringWidth(String str); 61 finalize()62 protected native void finalize(); 63 64 RawData structure; 65 } 66