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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * font.h
  3.  *
  4.  * Font description 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: font.h,v $
  30.  * Revision 1.18  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.17  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.16  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.15  1998/09/23 06:23:32  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.14  1995/03/14 12:41:26  robertj
  43.  * Updated documentation to use HTML codes.
  44.  *
  45.  * Revision 1.13  1995/02/16  09:45:57  robertj
  46.  * Made constructors use PString as more general than PCaselessString.
  47.  *
  48.  * Revision 1.12  1995/01/27  11:07:04  robertj
  49.  * Changed face name strings to be caseless.
  50.  *
  51.  * Revision 1.11  1995/01/22  07:22:40  robertj
  52.  * Added font description string.
  53.  *
  54.  * Revision 1.10  1995/01/22  00:30:41  robertj
  55.  * Changed semantics of GetSize() and GetHeight() more in line with X definitions.
  56.  *
  57.  * Revision 1.9  1995/01/07  04:39:37  robertj
  58.  * Redesigned font enumeration code and changed font styles.
  59.  *
  60.  * Revision 1.8  1994/12/21  11:52:58  robertj
  61.  * Documentation and variable normalisation.
  62.  *
  63.  * Revision 1.7  1994/12/14  11:17:05  robertj
  64.  * Changed PDIMENSION to be unsigned causing untold number of changes.
  65.  *
  66.  * Revision 1.6  1994/08/23  11:32:52  robertj
  67.  * Oops
  68.  *
  69.  * Revision 1.5  1994/08/22  00:46:48  robertj
  70.  * Added pragma fro GNU C++ compiler.
  71.  *
  72.  * Revision 1.4  1994/07/02  03:03:49  robertj
  73.  * Fixed constructor to be better optimised.
  74.  *
  75.  * Revision 1.3  1994/01/03  04:42:23  robertj
  76.  * Mass changes to common container classes and interactors etc etc etc.
  77.  *
  78.  * Revision 1.2  1993/07/14  12:49:16  robertj
  79.  * Fixed RCS keywords.
  80.  *
  81.  */
  82. #define _PFONT
  83. #ifdef __GNUC__
  84. #pragma interface
  85. #endif
  86. /**A class representing the attributes of a text font. This is the
  87.    specification for a font request. The font may not be representable on the
  88.    particular Ref{PCanvas} that text is to drawn. A matching algorithm is
  89.    performed to find the nearest font that actually exists for the canvas. This
  90.    is called {it realising} the font and will return a Ref{PRealFont}
  91.    object. A realised font is tied to the device that a Ref{PCanvas} is
  92.    drawing to. Thus a Ref{PPrintCanvas} may realise a different font than a
  93.    Ref{PDrawCanvas} would given the same PFont specification.
  94.  */
  95. class PFont : public PObject
  96. {
  97.   PCLASSINFO(PFont, PObject);
  98.   public:
  99.     /** The style bits that are returned in GetStyles(). */
  100.     enum Style {
  101.       /// Font has no styles.
  102.       Regular = 0,    
  103.       /// Font has the Bold style.
  104.       Bold = 1,       
  105.       /// Font has the Italic or Oblique style.
  106.       Italic = 2,     
  107.       /// Font has the Underline style.
  108.       Underline = 4   
  109.     };
  110.    /**Create a new font with the specified attributes.
  111.     
  112.        A font description string consists of three fields separated by
  113.        commas. The first field is the face name, the second is the font
  114.        size in points and the last field has the any combination of the
  115.        letters 'B', 'I' and 'U' for bold, italic and underlined
  116.        respectively. The last field is optional.
  117.        Example description strings are:
  118.           "Times,12,B" for times 12 point bold,
  119.           "Hevetica, 24, IU" for helvetica 24 point italic with underline,
  120.           "Courier,10" for regular courier 10 point.
  121.        Note the font size are in printers points (1/72 inch).
  122.      */
  123.     PFont(
  124.       const char * fontDescriptionPtr
  125.       /// C String description of a font specification.
  126.     );
  127.     PFont(
  128.       const PString & fontDescriptionStr
  129.       /// String description of a font specification.
  130.     );
  131.     PFont(
  132.       const PString & theFacename,  /// The text name of the font face.
  133.       PDIMENSION theSize,           /// The nominal size of the font in points.
  134.       WORD theStyle = Regular       /// The style bits for the font.
  135.     );
  136.     /**@name Overrides from class PInteractor */
  137.    /**Create a copy of the font object.
  138.        @return
  139.        a new copy of the font on the heap.
  140.      */
  141.     virtual PObject * Clone() const;
  142.    /**Determine if the two fonts are the same. That is they have the same
  143.        face name, size and attributes.
  144.        
  145.        @return
  146.        #EqualTo# if fonts the same, #GreaterThan# if
  147.        different.
  148.      */
  149.     virtual Comparison Compare(
  150.       const PObject & obj   /// Other font to compare against.
  151.     ) const;
  152.   /**@name New methods for class */
  153.    /**Get the description string for the font specification.
  154.     
  155.        A font description string consists of three fields separated by
  156.        commas. The first field is the face name, the second is the font
  157.        size in points and the last field has the any combination of the
  158.        letters 'B', 'I' and 'U' for bold, italic and underlined
  159.        respectively. The last field is optional.
  160.        Example description strings are:
  161.           "Times,12,B" for times 12 point bold,
  162.           "Hevetica, 24, IU" for helvetica 24 point italic with underline,
  163.           "Courier,10" for regular courier 10 point.
  164.        @return
  165.        description string.
  166.      */
  167.     PCaselessString GetDescription() const;
  168.    /**Get the face name of the created font eg "Courier".
  169.        @return
  170.        string for the font face.
  171.      */
  172.     PCaselessString GetFacename() const;
  173.    /**Get the size of characters in the font. The font size is a nominal
  174.        height for characters. The actual height of characters for the font
  175.        is determined only when a font is realised.
  176.        
  177.        @return
  178.        size of the font in printers points (1/72 inch).
  179.      */
  180.     PDIMENSION GetSize() const;
  181.    /**Get the current style bits for the font. The style bits are defined by
  182.        the constants in the Style enum.
  183.        @return
  184.        style bits for font.
  185.      */
  186.     WORD GetStyles() const;
  187.    /**Determine if the font was created as a bold font.
  188.        @return
  189.        TRUE if is bold.
  190.      */
  191.     BOOL IsBold() const;
  192.    /**Determine if the font was created as an italic font.
  193.        @return
  194.        TRUE if is italic.
  195.      */
  196.     BOOL IsItalic() const;
  197.    /**Determine if the font was created as an underlined font.
  198.        @return
  199.        TRUE if is underlined.
  200.      */
  201.     BOOL IsUnderlined() const;
  202.   protected:
  203.       /** Face name string for the font. */
  204.     PCaselessString facename;
  205.       /** The size of the font. */
  206.     PDIMENSION size;
  207.       /** Indication of the font styles eg bold etc. */
  208.     WORD styles;
  209.   private:
  210.     void Construct(const PCaselessString & fontDescription);
  211.     // Common construction code for all constructors.
  212. #ifdef DOC_PLUS_PLUS
  213. };
  214. #endif
  215. // Class declaration continued in platform specific header file ///////////////