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