]> git.wh0rd.org - fontconfig.git/blobdiff - doc/fcpattern.fncs
[fcformat] Add element filtering and deletion
[fontconfig.git] / doc / fcpattern.fncs
index 177bd9b1b3990c46d7a6d3fda37a4e5625e7524a..35ef68bdfbf9eb04da21ff638250c398bd270262 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * $Id$
+ * fontconfig/doc/fcpattern.fncs
  *
- * Copyright © 2003 Keith Packard
+ * Copyright Â© 2003 Keith Packard
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
 Creates a pattern with no properties; used to build patterns from scratch.
 @@
 
+@RET@          FcPattern *     
+@FUNC@         FcPatternDuplicate
+@TYPE1@                const FcPattern *               @ARG1@           p
+@PURPOSE@      Copy a pattern
+@DESC@
+Copy a pattern, returning a new pattern that matches
+<parameter>p</parameter>. Each pattern may be modified without affecting the
+other.
+@@
+
+@RET@          void
+@FUNC@         FcPatternReference
+@TYPE1@                FcPattern *                     @ARG1@           p
+@PURPOSE@      Increment pattern reference count
+@DESC@
+Add another reference to <parameter>p</parameter>. Patterns are freed only
+when the reference count reaches zero.
+@@
+
 @RET@          void
 @FUNC@         FcPatternDestroy
 @TYPE1@                FcPattern *                     @ARG1@           p
 @PURPOSE@      Destroy a pattern
 @DESC@
-Destroys a pattern, in the process destroying all related values.
+Decrement the pattern reference count. If all references are gone, destroys
+the pattern, in the process destroying all related values.
 @@
 
 @RET@          FcBool
@@ -57,6 +77,18 @@ Returns whether <parameter>pa</parameter> and <parameter>pb</parameter> have exa
 objects in <parameter>os</parameter>.
 @@
 
+@RET@          FcPattern *
+@FUNC@         FcPatternFilter
+@TYPE1@                FcPattern *                     @ARG1@           p
+@TYPE2@                const FcObjectSet *             @ARG1@           os
+@PURPOSE@      Filter the objects of pattern
+@DESC@
+Returns a new pattern that only has those objects from
+<parameter>p</parameter> that are in <parameter>os</parameter>.
+If <parameter>os</parameter> is NULL, a duplicate of
+<parameter>p</parameter> is returned.
+@@
+
 @RET@          FcChar32
 @FUNC@         FcPatternHash
 @TYPE1@                const FcPattern *               @ARG1@          p
@@ -70,8 +102,8 @@ equal.
 @FUNC@         FcPatternAdd
 @TYPE1@                FcPattern *                     @ARG1@          p
 @TYPE2@        const char *                    @ARG2@          object
-@TYPE3@                FcValue                         @ARG3@          value
-@TYPE4@                FcBool                          @ARG4@          append 
+@TYPE3@                FcValue%                        @ARG3@          value
+@TYPE4@                FcBool%                         @ARG4@          append 
 @PURPOSE@      Add a value to a pattern
 @DESC@
 Adds a single value to the list of values associated with the property named
@@ -85,8 +117,8 @@ retains no reference to any application-supplied data structure.
 @FUNC@         FcPatternAddWeak
 @TYPE1@        FcPattern *                     @ARG1@          p
 @TYPE2@        const char *                    @ARG2@          object
-@TYPE3@        FcValue                         @ARG3@          value
-@TYPE4@        FcBool                          @ARG4@          append 
+@TYPE3@        FcValue%                        @ARG3@          value
+@TYPE4@        FcBool%                         @ARG4@          append 
 @PURPOSE@      Add a value to a pattern with weak binding
 @DESC@
 FcPatternAddWeak is essentially the same as FcPatternAdd except that any
@@ -98,21 +130,21 @@ values added to the list have binding <parameter>weak</parameter> instead of <pa
 @FUNC@         FcPatternAddInteger
 @TYPE1@        FcPattern *                     @ARG1@          p
 @TYPE2@                const char *                    @ARG2@          object
-@TYPE3@                int                             @ARG3@          i
+@TYPE3@                int%                            @ARG3@          i
 
 @PROTOTYPE+@
 @RET+@         FcBool
 @FUNC+@                FcPatternAddDouble
 @TYPE1+@       FcPattern *                     @ARG1+@         p
 @TYPE2+@       const char *                    @ARG2+@         object
-@TYPE3+@       double                          @ARG3+@         d
+@TYPE3+@       double%                         @ARG3+@         d
 
 @PROTOTYPE++@
 @RET++@                FcBool
 @FUNC++@       FcPatternAddString
 @TYPE1++@      FcPattern *                     @ARG1++@        p
 @TYPE2++@      const char *                    @ARG2++@        object
-@TYPE3++@      const char *                    @ARG3++@        s
+@TYPE3++@      const FcChar8 *                 @ARG3++@        s
 
 @PROTOTYPE+++@
 @RET+++@       FcBool
@@ -133,7 +165,22 @@ values added to the list have binding <parameter>weak</parameter> instead of <pa
 @FUNC+++++@    FcPatternAddBool
 @TYPE1+++++@   FcPattern *                     @ARG1+++++@     p
 @TYPE2+++++@   const char *                    @ARG2+++++@     object
-@TYPE3+++++@   FcBool                          @ARG3+++++@     b
+@TYPE3+++++@   FcBool%                         @ARG3+++++@     b
+
+@PROTOTYPE++++++@
+@RET++++++@    FcBool
+@FUNC++++++@   FcPatternAddFTFace
+@TYPE1++++++@  FcPattern *                     @ARG1++++++@    p
+@TYPE2++++++@  const char *                    @ARG2++++++@    object
+@TYPE3++++++@  const FT_Face                   @ARG3++++++@    f
+
+@PROTOTYPE+++++++@
+@RET+++++++@   FcBool
+@FUNC+++++++@  FcPatternAddLangSet
+@TYPE1+++++++@         FcPattern *                     @ARG1+++++++@   p
+@TYPE2+++++++@ const char *                    @ARG2+++++++@   object
+@TYPE3+++++++@ const FcLangSet *               @ARG3+++++++@   l
+
 @PURPOSE@      Add a typed value to a pattern
 @DESC@
 These are all convenience functions that insert objects of the specified
@@ -146,11 +193,12 @@ any existing list of values.
 @FUNC@         FcPatternGet
 @TYPE1@                FcPattern *                     @ARG1@          p
 @TYPE2@                const char *                    @ARG2@          object
-@TYPE3@                int                             @ARG3@          id
+@TYPE3@                int%                            @ARG3@          id
 @TYPE4@                FcValue *                       @ARG4@          v 
 @PURPOSE@      Return a value from a pattern
 @DESC@
-Returns in `v<parameter> the `id</parameter>th value associated with the property `object'.
+Returns in <parameter>v</parameter> the <parameter>id</parameter>'th value
+associated with the property <parameter>object</parameter>.
 The value returned is not a copy, but rather refers to the data stored
 within the pattern directly.  Applications must not free this value.
 @@
@@ -161,7 +209,7 @@ within the pattern directly.  Applications must not free this value.
 @FUNC@         FcPatternGetInteger
 @TYPE1@                FcPattern *                     @ARG1@          p
 @TYPE2@                const char *                    @ARG2@          object
-@TYPE3@                int                             @ARG3@          n
+@TYPE3@                int%                            @ARG3@          n
 @TYPE4@                int *                           @ARG4@          i
 
 @PROTOTYPE+@
@@ -169,7 +217,7 @@ within the pattern directly.  Applications must not free this value.
 @FUNC+@        FcPatternGetDouble
 @TYPE1+@       FcPattern *                     @ARG1+@         p
 @TYPE2+@       const char *                    @ARG2+@         object
-@TYPE3+@       int                             @ARG3+@         n
+@TYPE3+@       int%                            @ARG3+@         n
 @TYPE4+@       double *                        @ARG4+@         d 
 
 @PROTOTYPE++@
@@ -177,15 +225,15 @@ within the pattern directly.  Applications must not free this value.
 @FUNC++@       FcPatternGetString
 @TYPE1++@      FcPattern *                     @ARG1++@        p
 @TYPE2++@      const char *                    @ARG2++@        object
-@TYPE3++@      int                             @ARG3++@        n
-@TYPE4++@      char **const                    @ARG4++@        s
+@TYPE3++@      int%                            @ARG3++@        n
+@TYPE4++@      FcChar8 **                      @ARG4++@        s
 
 @PROTOTYPE+++@
 @RET+++@       FcResult
 @FUNC+++@      FcPatternGetMatrix 
 @TYPE1+++@     FcPattern *                     @ARG1+++@       p 
 @TYPE2+++@     const char *                    @ARG2+++@       object 
-@TYPE3+++@     int                             @ARG3+++@       n 
+@TYPE3+++@     int%                            @ARG3+++@       n 
 @TYPE4+++@     FcMatrix **                     @ARG4+++@       s 
 
 @PROTOTYPE++++@
@@ -193,7 +241,7 @@ within the pattern directly.  Applications must not free this value.
 @FUNC++++@     FcPatternGetCharSet 
 @TYPE1++++@    FcPattern *                     @ARG1++++@      p 
 @TYPE2++++@    const char *                    @ARG2++++@      object 
-@TYPE3++++@    int                             @ARG3++++@      n 
+@TYPE3++++@    int%                            @ARG3++++@      n 
 @TYPE4++++@    FcCharSet **                    @ARG4++++@      c 
 
 @PROTOTYPE+++++@
@@ -201,8 +249,25 @@ within the pattern directly.  Applications must not free this value.
 @FUNC+++++@    FcPatternGetBool                
 @TYPE1+++++@   FcPattern *                     @ARG1+++++@     p
 @TYPE2+++++@   const char *                    @ARG2+++++@     object 
-@TYPE3+++++@   int                             @ARG3+++++@     n 
+@TYPE3+++++@   int%                            @ARG3+++++@     n 
 @TYPE4+++++@   FcBool *                        @ARG4+++++@     b 
+
+@PROTOTYPE++++++@
+@RET++++++@    FcResult
+@FUNC++++++@   FcPatternGetFTFace
+@TYPE1++++++@  FcPattern *                     @ARG1++++++@    p
+@TYPE2++++++@  const char *                    @ARG2++++++@    object
+@TYPE3+++++@   int%                            @ARG3+++++@     n
+@TYPE3++++++@  FT_Face *                       @ARG3++++++@    f
+
+@PROTOTYPE+++++++@
+@RET+++++++@   FcResult
+@FUNC+++++++@  FcPatternGetLangSet
+@TYPE1+++++++@         FcPattern *                     @ARG1+++++++@   p
+@TYPE2+++++++@ const char *                    @ARG2+++++++@   object
+@TYPE3+++++@   int%                            @ARG3+++++@     n
+@TYPE3+++++++@ FcLangSet **                    @ARG3+++++++@   l
+
 @PURPOSE@      Return a typed value from a pattern
 @DESC@
 These are convenience functions that call FcPatternGet and verify that the
@@ -214,14 +279,22 @@ in preference to FcPatternGet to provide compile-time typechecking.
 
 @RET@          FcPattern *
 @FUNC@         FcPatternBuild
-@TYPE1@                FcPattern *                     @ARG1@          orig
+@TYPE1@                FcPattern *                     @ARG1@          pattern
 @TYPE2@        ...
 
 @PROTOTYPE+@
 @RET+@         FcPattern *
 @FUNC+@                FcPatternVaBuild
-@TYPE1+@       FcPattern *                     @ARG1+@         orig
-@TYPE2+@       va_list                         @ARG2+@         va
+@TYPE1+@       FcPattern *                     @ARG1+@         pattern
+@TYPE2+@       va_list%                        @ARG2+@         va
+
+@PROTOTYPE++@
+@RET++@                void
+@FUNC++@       FcPatternVapBuild
+@TYPE1++@      FcPattern *                     @ARG1++@        result
+@TYPE2++@      FcPattern *                     @ARG2++@        pattern
+@TYPE3++@      va_list%                        @ARG3++@        va
+
 @PURPOSE@      Create patterns from arguments
 @DESC@
 Builds a pattern using a list of objects, types and values.  Each
@@ -245,11 +318,13 @@ value need be passed for this.  The values are added to `pattern', if
 returned. Example
 </para>
 <programlisting>
-pattern = FcPatternBuild (0, FC_FAMILY, FtTypeString, "Times", (char *) 0);
+pattern = FcPatternBuild (0, FC_FAMILY, FcTypeString, "Times", (char *) 0);
 </programlisting>
 <para>
 FcPatternVaBuild is used when the arguments are already in the form of a
-varargs value.
+varargs value. FcPatternVapBuild is a macro version of FcPatternVaBuild
+which returns its result directly in the <parameter>result</parameter>
+variable.
 @@
 
 @RET@          FcBool
@@ -266,7 +341,7 @@ whether the property existed or not.
 @FUNC@         FcPatternRemove
 @TYPE1@                FcPattern *                     @ARG1@          p
 @TYPE2@                const char *                    @ARG2@          object 
-@TYPE3@                int                             @ARG3@          id
+@TYPE3@                int%                            @ARG3@          id
 @PURPOSE@      Remove one object of the specified type from the pattern
 @DESC@
 Removes the value associated with the property `object' at position `id', returning 
@@ -305,7 +380,7 @@ specified point size (default 12), dpi (default 75) and scale (default 1).
 
 @RET@          FcPattern *
 @FUNC@         FcNameParse
-@TYPE1@                const char *                    @ARG1@          name 
+@TYPE1@                const FcChar8 *                 @ARG1@          name 
 @PURPOSE@      Parse a pattern string
 @DESC@
 Converts <parameter>name</parameter> from the standard text format described above into a pattern.
@@ -318,5 +393,25 @@ Converts <parameter>name</parameter> from the standard text format described abo
 @DESC@
 Converts the given pattern into the standard text format described above.
 The return value is not static, but instead refers to newly allocated memory
-which should be freed by the caller.
+which should be freed by the caller using free().
+@@
+
+@RET@          FcChar8 *
+@FUNC@         FcPatternFormat
+@TYPE1@                FcPattern *                     @ARG1@          pat
+@TYPE2@                const FcChar8 *                 @ARG2@          format
+@PURPOSE@      Format a pattern into a string according to a format specifier
+@DESC@
+
+Converts the given pattern into text format described by the format specifier.
+The format specifier is similar to a C style printf string, which the
+printf(2) man page provides a good introduction to. However, as fontconfig
+already knows the type of data that is being printed, you must omit the type
+specifier. In its place put the element name you wish to print enclosed in
+curly braces ({}). For example, to print the family name and style the
+pattern, use the format "%{family} %{style}\n".
+There can be an option width specifier after the percent sign and before
+the opening brace.  The width modifier acts similar to those in printf.
+The return value refers to newly allocated memory which should be freed by the
+caller using free(), or NULL if <parameter>format</parameter> is invalid.
 @@