home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / awt / font.java < prev    next >
Text File  |  1995-08-11  |  6KB  |  193 lines

  1. /*
  2.  * @(#)Font.java    1.23 95/05/16 Sami Shaio
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19. package awt;
  20.  
  21. import java.lang.*;
  22. import awt.*;
  23.  
  24. /** A font object.  Since the pData field could point to an arbitrary
  25.  * amount of information needed by the AWT library, FontTable should
  26.  * be used to create new fonts to guarantee sharing of information.
  27.  *
  28.  * @see FontTable
  29.  * @see awt.Window#getFontMetrics
  30.  * @see awt.Graphics#getFontMetrics
  31.  * @version 1.23 16 May 1995
  32.  * @author Sami Shaio
  33.  */
  34. public class Font {
  35.     private int pData;
  36.     private WServer wServer;
  37.  
  38.     /* Constants to be used for styles. Can be added together to mix
  39.        constants. */
  40.  
  41.     public static final int PLAIN    = 0;
  42.     public static final int BOLD    = 1;
  43.     public static final int ITALIC    = 2;
  44.     public static final int UNDERLINE    = 4;
  45.  
  46.     /** The family name of this font. */
  47.     public String    family;
  48.  
  49.     /** The style of the font. This is the sum of the
  50.      * constants PLAIN, BOLD, ITALIC, or UNDERLINE.
  51.      */
  52.     public int        style;
  53.  
  54.     /** The point size of this font. */
  55.     public int        size;
  56.  
  57.     /** The logical ascent for this font, not guaranteed to be initialized
  58.      * until the first time the metrics for this font are fetched and
  59.      * not guaranteed to be applicable to all output devices.  This field
  60.      * is deprecated.  Use getFontMetrics instead.
  61.      * @see awt.Window#getFontMetrics
  62.      * @see awt.Graphics#getFontMetrics
  63.      */
  64.     public int        ascent;
  65.  
  66.     /** The logical descent for this font, not guaranteed to be initialized
  67.      * until the first time the metrics for this font are fetched and
  68.      * not guaranteed to be applicable to all output devices.  This field
  69.      * is deprecated.  Use getFontMetrics instead.
  70.      * @see awt.Window#getFontMetrics
  71.      * @see awt.Graphics#getFontMetrics
  72.      */
  73.     public int        descent;
  74.  
  75.     /** The old field name for the point size of this font.  This field
  76.      * was renamed to "size" to avoid confusion with the font metric of
  77.      * the same name which provides information about how tall the font
  78.      * actually is.  This field is deprecated.  Use size to refer to the
  79.      * requested size of the font and use getFontMetrics to obtain
  80.      * information about the font for layout purposes.
  81.      * @see awt.Window#getFontMetrics
  82.      * @see awt.Graphics#getFontMetrics
  83.      */
  84.     public int        height;
  85.  
  86.     /** The actual logical height of this font after possible size
  87.      * substitutions occur in the awt library when looking for a font
  88.      * match.  This field is deprecated.  Use getFontMetrics instead.
  89.      * @see awt.Window#getFontMetrics
  90.      * @see awt.Graphics#getFontMetrics
  91.      */
  92.     public int        actualHeight;
  93.  
  94.     /** This field is deprecated.  Use getFontMetrics instead.
  95.      * @see awt.Window#getFontMetrics
  96.      * @see awt.Graphics#getFontMetrics
  97.      */
  98.     public int        widths[];
  99.  
  100.     /**
  101.      * Use FontTable.getFont to create a font.
  102.      */
  103.     Font(String family, int style, int points) {
  104.     this.family = family;
  105.     this.style = style;
  106.     height = size = points;
  107.     }
  108.  
  109.     /** Convert this object to a string representation. */
  110.     public String toString() {
  111.     String    strStyle = "";
  112.  
  113.     if (style == Font.PLAIN) {
  114.         strStyle = "plain";
  115.     } else {
  116.         if ((style & Font.BOLD) == 1) {
  117.         strStyle += "bold";
  118.         }
  119.         if ((style & Font.ITALIC) == 1) {
  120.         strStyle += "italic";
  121.         }
  122.         if ((style & Font.UNDERLINE) == 1) {
  123.         strStyle += "underline";
  124.         }        
  125.     }
  126.     
  127.     return getClass().getName() + "[family=" + family + ", style=" +
  128.         strStyle + ", size=" + size + "]";
  129.     }
  130.  
  131.     /** Return the width of the specified character in this Font.
  132.      * This function is deprecated.  Use getFontMetrics instead.
  133.      * @see awt.Window#getFontMetrics
  134.      * @see awt.Graphics#getFontMetrics
  135.      */
  136.     public int charWidth(int ch) {
  137.     return widths[ch];
  138.     }
  139.  
  140.     /** Return the width of the specified string in this Font.
  141.      * This function is deprecated.  Use getFontMetrics instead.
  142.      * @see awt.Window#getFontMetrics
  143.      * @see awt.Graphics#getFontMetrics
  144.      */
  145.     public int stringWidth(String s) {
  146.     int w = 0;
  147.     int len = s.length();
  148.     for (int i = 0; i < len; i++) {
  149.         w += widths[s.charAt(i)];
  150.     }
  151.     return w;
  152.     }
  153.  
  154.     /** Return the width of the specified char[] in this Font.
  155.      * This function is deprecated.  Use getFontMetrics instead.
  156.      * @see awt.Window#getFontMetrics
  157.      * @see awt.Graphics#getFontMetrics
  158.      */
  159.     public int charsWidth(char data[], int off, int len) {
  160.     int w = 0;
  161.     for (int i = 0; i < len; i++) {
  162.         w += widths[data[i + off]];
  163.     }
  164.     return w;
  165.     }
  166.  
  167.     /** Return the width of the specified byte[] in this Font.
  168.      * This function is deprecated.  Use getFontMetrics instead.
  169.      * @see awt.Window#getFontMetrics
  170.      * @see awt.Graphics#getFontMetrics
  171.      */
  172.     public int bytesWidth(byte data[], int off, int len) {
  173.     int w = 0;
  174.     for (int i = 0; i < len; i++) {
  175.         w += widths[data[i + off]];
  176.     }
  177.     return w;
  178.     }
  179.  
  180.     /** Dispose of this font. The use of the font after calling
  181.      * dispose is undefined.
  182.      */
  183.     public void dispose() {
  184.     if (wServer != null) {
  185.         wServer.fontDispose(this);
  186.     }
  187.     }
  188.  
  189.     public void finalize() {
  190.     dispose();
  191.     }
  192. }
  193.