fontfam.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:6k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * fontfam.h
  3.  *
  4.  * Font Family class.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: fontfam.h,v $
  30.  * Revision 1.8  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.7  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.6  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.5  1998/09/23 06:23:39  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.4  1995/06/17 11:12:37  robertj
  43.  * Documentation update.
  44.  *
  45.  * Revision 1.3  1995/03/14 12:41:28  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.2  1995/01/27  11:07:52  robertj
  49.  * Changed face name strings to be caseless.
  50.  *
  51.  * Revision 1.1  1995/01/07  12:44:42  robertj
  52.  * Initial revision
  53.  *
  54.  */
  55. #define _PFONTFAMILY
  56. #ifdef __GNUC__
  57. #pragma interface
  58. #endif
  59. class PFontFamily;
  60. PSORTED_LIST(PFontFamilyList, PFontFamily);
  61. /**This class describes a font family. A font family are all variations of a
  62.    particular face name eg {it Times italic 9 point} and {it Times bold 16
  63.    point} are two fonts of the {it Times} font family.
  64.    This describes all of the variations that are possible with the font in a
  65.    given device. This must be created using a canvas.
  66.  */
  67. class PFontFamily : public PObject
  68. {
  69.   PCLASSINFO(PFontFamily, PObject);
  70.   public:
  71.    /**Construct an empty font family. This constructor only sets the face
  72.        name for the font family the other fields are meaningless.
  73.        The other contents of the font family are set by friend functions as
  74.        fonts are enumerated by a canvas.
  75.        The user should never directly create instances of this class, except
  76.        when an object for comparison in searches is required. For example to
  77.        find the "Courier" family in the PFontFamilyList returned by a
  78.        Ref{PCanvas} instance a PFontFamily instance must be created for the
  79.        Ref{PCollection::GetValuesIndex()} function.
  80.      */
  81.     PFontFamily(
  82.       const PCaselessString & face   /// Name of font face.
  83.     );
  84.   /**@name Overrides from class PInteractor */
  85.    /**Determine if the two font families are the same. That is they have the
  86.        same face name. This is equivalent to call compare on the face name
  87.        string.
  88.        
  89.        @return
  90.        #EqualTo# if fonts the same, #GreaterThan# if
  91.        different.
  92.      */
  93.     virtual Comparison Compare(
  94.       const PObject & obj   /// Other font to compare against.
  95.     ) const;
  96.   /**@name New methods for class */
  97.    /**Get the face name of the font family eg "Courier".
  98.        @return
  99.        string for the font face.
  100.      */
  101.     const PCaselessString & GetFacename() const;
  102.    /**Determine if the font is scalable in size. This is true for Adobe Type 1
  103.        and True Type fonts. Old style bitmap fonts are not scalable and a list
  104.        of the sizes that are present is provided by the Ref{GetSizes()}
  105.        function.
  106.        @return
  107.        TRUE if font size is fully scalable.
  108.      */
  109.     BOOL IsScalable() const;
  110.    /**Get a list of all the sizes for bitmap versions of the font. If the font
  111.        is scalable this list may be empty as only if there are bitmap fonts of
  112.        the same face name are sizes returned.
  113.        @return
  114.        array of physical font sizes for the font family.
  115.      */
  116.     const PWORDArray & GetSizes() const;
  117.    /**Get all of the style combinations that are physically present in the
  118.        canvas. For example there may be a bold font and an italic font but no
  119.        bold italic font.
  120.        
  121.        Other font style combinations than the ones in this list may be possible
  122.        for particular canvases but are synthesized by the system.
  123.        @return
  124.        array of physical style combinations in a font family.
  125.      */
  126.     const PWORDArray & GetStyles() const;
  127.    /**Get the names for each of the style combinations that are physically
  128.        present in the canvas. There is a one to one correspondence between the
  129.        string in this array and the bit masks returned by the
  130.        Ref{GetStyles()} funtion.
  131.        @return
  132.        array of names for the physical style combinations in a font family.
  133.      */
  134.     const PStringArray & GetStyleNames() const;
  135.   protected:
  136.       /** Face name string for the font family. */
  137.     PCaselessString facename;
  138.       /** The size of the font is scalable. */
  139.     BOOL scalable;
  140.       /** Array of possible size for font family. */
  141.     PWORDArray sizes;
  142.       /** Array of possible style combinations for font family. */
  143.     PWORDArray styles;
  144.       /** Array of names for possible style combinations for font family. */
  145.     PStringArray styleNames;
  146. #ifdef DOC_PLUS_PLUS
  147. };
  148. #endif
  149. // Class declaration continued in platform specific header file ///////////////