Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  ftbdf.h                                                                */
  4. /*                                                                         */
  5. /*    FreeType API for accessing BDF-specific strings (specification).     */
  6. /*                                                                         */
  7. /*  Copyright 2002, 2003, 2004, 2006, 2009 by                              */
  8. /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
  9. /*                                                                         */
  10. /*  This file is part of the FreeType project, and may only be used,       */
  11. /*  modified, and distributed under the terms of the FreeType project      */
  12. /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
  13. /*  this file you indicate that you have read the license and              */
  14. /*  understand and accept it fully.                                        */
  15. /*                                                                         */
  16. /***************************************************************************/
  17.  
  18.  
  19. #ifndef __FTBDF_H__
  20. #define __FTBDF_H__
  21.  
  22. #include <ft2build.h>
  23. #include FT_FREETYPE_H
  24.  
  25. #ifdef FREETYPE_H
  26. #error "freetype.h of FreeType 1 has been loaded!"
  27. #error "Please fix the directory search order for header files"
  28. #error "so that freetype.h of FreeType 2 is found first."
  29. #endif
  30.  
  31.  
  32. FT_BEGIN_HEADER
  33.  
  34.  
  35.   /*************************************************************************/
  36.   /*                                                                       */
  37.   /* <Section>                                                             */
  38.   /*    bdf_fonts                                                          */
  39.   /*                                                                       */
  40.   /* <Title>                                                               */
  41.   /*    BDF and PCF Files                                                  */
  42.   /*                                                                       */
  43.   /* <Abstract>                                                            */
  44.   /*    BDF and PCF specific API.                                          */
  45.   /*                                                                       */
  46.   /* <Description>                                                         */
  47.   /*    This section contains the declaration of functions specific to BDF */
  48.   /*    and PCF fonts.                                                     */
  49.   /*                                                                       */
  50.   /*************************************************************************/
  51.  
  52.  
  53.   /**********************************************************************
  54.    *
  55.    * @enum:
  56.    *    FT_PropertyType
  57.    *
  58.    * @description:
  59.    *    A list of BDF property types.
  60.    *
  61.    * @values:
  62.    *    BDF_PROPERTY_TYPE_NONE ::
  63.    *      Value~0 is used to indicate a missing property.
  64.    *
  65.    *    BDF_PROPERTY_TYPE_ATOM ::
  66.    *      Property is a string atom.
  67.    *
  68.    *    BDF_PROPERTY_TYPE_INTEGER ::
  69.    *      Property is a 32-bit signed integer.
  70.    *
  71.    *    BDF_PROPERTY_TYPE_CARDINAL ::
  72.    *      Property is a 32-bit unsigned integer.
  73.    */
  74.   typedef enum  BDF_PropertyType_
  75.   {
  76.     BDF_PROPERTY_TYPE_NONE     = 0,
  77.     BDF_PROPERTY_TYPE_ATOM     = 1,
  78.     BDF_PROPERTY_TYPE_INTEGER  = 2,
  79.     BDF_PROPERTY_TYPE_CARDINAL = 3
  80.  
  81.   } BDF_PropertyType;
  82.  
  83.  
  84.   /**********************************************************************
  85.    *
  86.    * @type:
  87.    *    BDF_Property
  88.    *
  89.    * @description:
  90.    *    A handle to a @BDF_PropertyRec structure to model a given
  91.    *    BDF/PCF property.
  92.    */
  93.   typedef struct BDF_PropertyRec_*  BDF_Property;
  94.  
  95.  
  96.  /**********************************************************************
  97.   *
  98.   * @struct:
  99.   *    BDF_PropertyRec
  100.   *
  101.   * @description:
  102.   *    This structure models a given BDF/PCF property.
  103.   *
  104.   * @fields:
  105.   *    type ::
  106.   *      The property type.
  107.   *
  108.   *    u.atom ::
  109.   *      The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.
  110.   *
  111.   *    u.integer ::
  112.   *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
  113.   *
  114.   *    u.cardinal ::
  115.   *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
  116.   */
  117.   typedef struct  BDF_PropertyRec_
  118.   {
  119.     BDF_PropertyType  type;
  120.     union {
  121.       const char*     atom;
  122.       FT_Int32        integer;
  123.       FT_UInt32       cardinal;
  124.  
  125.     } u;
  126.  
  127.   } BDF_PropertyRec;
  128.  
  129.  
  130.  /**********************************************************************
  131.   *
  132.   * @function:
  133.   *    FT_Get_BDF_Charset_ID
  134.   *
  135.   * @description:
  136.   *    Retrieve a BDF font character set identity, according to
  137.   *    the BDF specification.
  138.   *
  139.   * @input:
  140.   *    face ::
  141.   *       A handle to the input face.
  142.   *
  143.   * @output:
  144.   *    acharset_encoding ::
  145.   *       Charset encoding, as a C~string, owned by the face.
  146.   *
  147.   *    acharset_registry ::
  148.   *       Charset registry, as a C~string, owned by the face.
  149.   *
  150.   * @return:
  151.   *   FreeType error code.  0~means success.
  152.   *
  153.   * @note:
  154.   *   This function only works with BDF faces, returning an error otherwise.
  155.   */
  156.   FT_EXPORT( FT_Error )
  157.   FT_Get_BDF_Charset_ID( FT_Face       face,
  158.                          const char*  *acharset_encoding,
  159.                          const char*  *acharset_registry );
  160.  
  161.  
  162.  /**********************************************************************
  163.   *
  164.   * @function:
  165.   *    FT_Get_BDF_Property
  166.   *
  167.   * @description:
  168.   *    Retrieve a BDF property from a BDF or PCF font file.
  169.   *
  170.   * @input:
  171.   *    face :: A handle to the input face.
  172.   *
  173.   *    name :: The property name.
  174.   *
  175.   * @output:
  176.   *    aproperty :: The property.
  177.   *
  178.   * @return:
  179.   *   FreeType error code.  0~means success.
  180.   *
  181.   * @note:
  182.   *   This function works with BDF _and_ PCF fonts.  It returns an error
  183.   *   otherwise.  It also returns an error if the property is not in the
  184.   *   font.
  185.   *
  186.   *   A `property' is a either key-value pair within the STARTPROPERTIES
  187.   *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
  188.   *   `info->props' array within a `FontRec' structure of a PCF font.
  189.   *
  190.   *   Integer properties are always stored as `signed' within PCF fonts;
  191.   *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
  192.   *   for BDF fonts only.
  193.   *
  194.   *   In case of error, `aproperty->type' is always set to
  195.   *   @BDF_PROPERTY_TYPE_NONE.
  196.   */
  197.   FT_EXPORT( FT_Error )
  198.   FT_Get_BDF_Property( FT_Face           face,
  199.                        const char*       prop_name,
  200.                        BDF_PropertyRec  *aproperty );
  201.  
  202.  /* */
  203.  
  204. FT_END_HEADER
  205.  
  206. #endif /* __FTBDF_H__ */
  207.  
  208.  
  209. /* END */
  210.