Yevgen Muntyan committed d17e786

Vanilla pycairo-1.8.10 (4bdc290959c4464016083bce16a37ef1c0527c82) from git://

Comments (0)

Files changed (103)

+Original Author
+James Henstridge <>
+Steve Chaplin <stevech1097 #>
+Maarten Breddels
+PyCairo is free software.
+Every source file in the implementation of PyCairo is available to be
+redistributed and/or modified under the terms of either the GNU Lesser
+General Public License (LGPL) version 2.1 or the Mozilla Public
+License (MPL) version 1.1.  Some files are available under more
+liberal terms, but we believe that in all cases, each file may be used
+under either the LGPL or the MPL.
+See the following files in this directory for the precise terms and
+conditions of either license:
+Please see each file in the implementation for Copyright and licensing
+                       Version 2.1, February 1999
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+                            Preamble
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard.  To achieve this, non-free programs must
+be allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+    a) The modified work must itself be a software library.
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+    c) Accompany the work with a written offer, valid for at least
+    three years, to give the same user the materials specified in
+    Subsection 6a, above, for a charge no more than the cost of
+    performing this distribution.
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+                            NO WARRANTY
+                     END OF TERMS AND CONDITIONS
+           How to Apply These Terms to Your New Libraries
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+  To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    Lesser General Public License for more details.
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
+Also add information on how to contact you by electronic and paper mail.
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary.  Here is a sample; alter the names:
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+  Random Hacker.
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+That's all there is to it!
+                          MOZILLA PUBLIC LICENSE
+                                Version 1.1
+                              ---------------
+1. Definitions.
+     1.0.1. "Commercial Use" means distribution or otherwise making the
+     Covered Code available to a third party.
+     1.1. "Contributor" means each entity that creates or contributes to
+     the creation of Modifications.
+     1.2. "Contributor Version" means the combination of the Original
+     Code, prior Modifications used by a Contributor, and the Modifications
+     made by that particular Contributor.
+     1.3. "Covered Code" means the Original Code or Modifications or the
+     combination of the Original Code and Modifications, in each case
+     including portions thereof.
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally
+     accepted in the software development community for the electronic
+     transfer of data.
+     1.5. "Executable" means Covered Code in any form other than Source
+     Code.
+     1.6. "Initial Developer" means the individual or entity identified
+     as the Initial Developer in the Source Code notice required by Exhibit
+     A.
+     1.7. "Larger Work" means a work which combines Covered Code or
+     portions thereof with code not governed by the terms of this License.
+     1.8. "License" means this document.
+     1.8.1. "Licensable" means having the right to grant, to the maximum
+     extent possible, whether at the time of the initial grant or
+     subsequently acquired, any and all of the rights conveyed herein.
+     1.9. "Modifications" means any addition to or deletion from the
+     substance or structure of either the Original Code or any previous
+     Modifications. When Covered Code is released as a series of files, a
+     Modification is:
+          A. Any addition to or deletion from the contents of a file
+          containing Original Code or previous Modifications.
+          B. Any new file that contains any part of the Original Code or
+          previous Modifications.
+     1.10. "Original Code" means Source Code of computer software code
+     which is described in the Source Code notice required by Exhibit A as
+     Original Code, and which, at the time of its release under this
+     License is not already Covered Code governed by this License.
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or
+     hereafter acquired, including without limitation,  method, process,
+     and apparatus claims, in any patent Licensable by grantor.
+     1.11. "Source Code" means the preferred form of the Covered Code for
+     making modifications to it, including all modules it contains, plus
+     any associated interface definition files, scripts used to control
+     compilation and installation of an Executable, or source code
+     differential comparisons against either the Original Code or another
+     well known, available Covered Code of the Contributor's choice. The
+     Source Code can be in a compressed or archival form, provided the
+     appropriate decompression or de-archiving software is widely available
+     for no charge.
+     1.12. "You" (or "Your")  means an individual or a legal entity
+     exercising rights under, and complying with all of the terms of, this
+     License or a future version of this License issued under Section 6.1.
+     For legal entities, "You" includes any entity which controls, is
+     controlled by, or is under common control with You. For purposes of
+     this definition, "control" means (a) the power, direct or indirect,
+     to cause the direction or management of such entity, whether by
+     contract or otherwise, or (b) ownership of more than fifty percent
+     (50%) of the outstanding shares or beneficial ownership of such
+     entity.
+2. Source Code License.
+     2.1. The Initial Developer Grant.
+     The Initial Developer hereby grants You a world-wide, royalty-free,
+     non-exclusive license, subject to third party intellectual property
+     claims:
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Initial Developer to use, reproduce,
+          modify, display, perform, sublicense and distribute the Original
+          Code (or portions thereof) with or without Modifications, and/or
+          as part of a Larger Work; and
+          (b) under Patents Claims infringed by the making, using or
+          selling of Original Code, to make, have made, use, practice,
+          sell, and offer for sale, and/or otherwise dispose of the
+          Original Code (or portions thereof).
+          (c) the licenses granted in this Section 2.1(a) and (b) are
+          effective on the date Initial Developer first distributes
+          Original Code under the terms of this License.
+          (d) Notwithstanding Section 2.1(b) above, no patent license is
+          granted: 1) for code that You delete from the Original Code; 2)
+          separate from the Original Code;  or 3) for infringements caused
+          by: i) the modification of the Original Code or ii) the
+          combination of the Original Code with other software or devices.
+     2.2. Contributor Grant.
+     Subject to third party intellectual property claims, each Contributor
+     hereby grants You a world-wide, royalty-free, non-exclusive license
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Contributor, to use, reproduce, modify,
+          display, perform, sublicense and distribute the Modifications
+          created by such Contributor (or portions thereof) either on an
+          unmodified basis, with other Modifications, as Covered Code
+          and/or as part of a Larger Work; and
+          (b) under Patent Claims infringed by the making, using, or
+          selling of  Modifications made by that Contributor either alone
+          and/or in combination with its Contributor Version (or portions
+          of such combination), to make, use, sell, offer for sale, have
+          made, and/or otherwise dispose of: 1) Modifications made by that
+          Contributor (or portions thereof); and 2) the combination of
+          Modifications made by that Contributor with its Contributor
+          Version (or portions of such combination).
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+          effective on the date Contributor first makes Commercial Use of
+          the Covered Code.
+          (d)    Notwithstanding Section 2.2(b) above, no patent license is
+          granted: 1) for any code that Contributor has deleted from the
+          Contributor Version; 2)  separate from the Contributor Version;
+          3)  for infringements caused by: i) third party modifications of
+          Contributor Version or ii)  the combination of Modifications made
+          by that Contributor with other software  (except as part of the
+          Contributor Version) or other devices; or 4) under Patent Claims
+          infringed by Covered Code in the absence of Modifications made by
+          that Contributor.
+3. Distribution Obligations.
+     3.1. Application of License.
+     The Modifications which You create or to which You contribute are
+     governed by the terms of this License, including without limitation
+     Section 2.2. The Source Code version of Covered Code may be
+     distributed only under the terms of this License or a future version
+     of this License released under Section 6.1, and You must include a
+     copy of this License with every copy of the Source Code You
+     distribute. You may not offer or impose any terms on any Source Code
+     version that alters or restricts the applicable version of this
+     License or the recipients' rights hereunder. However, You may include
+     an additional document offering the additional rights described in
+     Section 3.5.
+     3.2. Availability of Source Code.
+     Any Modification which You create or to which You contribute must be
+     made available in Source Code form under the terms of this License
+     either on the same media as an Executable version or via an accepted
+     Electronic Distribution Mechanism to anyone to whom you made an
+     Executable version available; and if made available via Electronic
+     Distribution Mechanism, must remain available for at least twelve (12)
+     months after the date it initially became available, or at least six
+     (6) months after a subsequent version of that particular Modification
+     has been made available to such recipients. You are responsible for
+     ensuring that the Source Code version remains available even if the
+     Electronic Distribution Mechanism is maintained by a third party.
+     3.3. Description of Modifications.
+     You must cause all Covered Code to which You contribute to contain a
+     file documenting the changes You made to create that Covered Code and
+     the date of any change. You must include a prominent statement that
+     the Modification is derived, directly or indirectly, from Original
+     Code provided by the Initial Developer and including the name of the
+     Initial Developer in (a) the Source Code, and (b) in any notice in an
+     Executable version or related documentation in which You describe the
+     origin or ownership of the Covered Code.
+     3.4. Intellectual Property Matters
+          (a) Third Party Claims.
+          If Contributor has knowledge that a license under a third party's
+          intellectual property rights is required to exercise the rights
+          granted by such Contributor under Sections 2.1 or 2.2,
+          Contributor must include a text file with the Source Code
+          distribution titled "LEGAL" which describes the claim and the
+          party making the claim in sufficient detail that a recipient will
+          know whom to contact. If Contributor obtains such knowledge after
+          the Modification is made available as described in Section 3.2,
+          Contributor shall promptly modify the LEGAL file in all copies
+          Contributor makes available thereafter and shall take other steps
+          (such as notifying appropriate mailing lists or newsgroups)
+          reasonably calculated to inform those who received the Covered
+          Code that new knowledge has been obtained.
+          (b) Contributor APIs.
+          If Contributor's Modifications include an application programming
+          interface and Contributor has knowledge of patent licenses which
+          are reasonably necessary to implement that API, Contributor must
+          also include this information in the LEGAL file.
+               (c)    Representations.
+          Contributor represents that, except as disclosed pursuant to
+          Section 3.4(a) above, Contributor believes that Contributor's
+          Modifications are Contributor's original creation(s) and/or
+          Contributor has sufficient rights to grant the rights conveyed by
+          this License.
+     3.5. Required Notices.
+     You must duplicate the notice in Exhibit A in each file of the Source
+     Code.  If it is not possible to put such notice in a particular Source
+     Code file due to its structure, then You must include such notice in a
+     location (such as a relevant directory) where a user would be likely
+     to look for such a notice.  If You created one or more Modification(s)
+     You may add your name as a Contributor to the notice described in
+     Exhibit A.  You must also duplicate this License in any documentation
+     for the Source Code where You describe recipients' rights or ownership
+     rights relating to Covered Code.  You may choose to offer, and to
+     charge a fee for, warranty, support, indemnity or liability
+     obligations to one or more recipients of Covered Code. However, You
+     may do so only on Your own behalf, and not on behalf of the Initial
+     Developer or any Contributor. You must make it absolutely clear than
+     any such warranty, support, indemnity or liability obligation is
+     offered by You alone, and You hereby agree to indemnify the Initial
+     Developer and every Contributor for any liability incurred by the
+     Initial Developer or such Contributor as a result of warranty,
+     support, indemnity or liability terms You offer.
+     3.6. Distribution of Executable Versions.
+     You may distribute Covered Code in Executable form only if the
+     requirements of Section 3.1-3.5 have been met for that Covered Code,
+     and if You include a notice stating that the Source Code version of
+     the Covered Code is available under the terms of this License,
+     including a description of how and where You have fulfilled the
+     obligations of Section 3.2. The notice must be conspicuously included
+     in any notice in an Executable version, related documentation or
+     collateral in which You describe recipients' rights relating to the
+     Covered Code. You may distribute the Executable version of Covered
+     Code or ownership rights under a license of Your choice, which may
+     contain terms different from this License, provided that You are in
+     compliance with the terms of this License and that the license for the
+     Executable version does not attempt to limit or alter the recipient's
+     rights in the Source Code version from the rights set forth in this
+     License. If You distribute the Executable version under a different
+     license You must make it absolutely clear that any terms which differ
+     from this License are offered by You alone, not by the Initial
+     Developer or any Contributor. You hereby agree to indemnify the
+     Initial Developer and every Contributor for any liability incurred by
+     the Initial Developer or such Contributor as a result of any such
+     terms You offer.
+     3.7. Larger Works.
+     You may create a Larger Work by combining Covered Code with other code
+     not governed by the terms of this License and distribute the Larger
+     Work as a single product. In such a case, You must make sure the
+     requirements of this License are fulfilled for the Covered Code.
+4. Inability to Comply Due to Statute or Regulation.
+     If it is impossible for You to comply with any of the terms of this
+     License with respect to some or all of the Covered Code due to
+     statute, judicial order, or regulation then You must: (a) comply with
+     the terms of this License to the maximum extent possible; and (b)
+     describe the limitations and the code they affect. Such description
+     must be included in the LEGAL file described in Section 3.4 and must
+     be included with all distributions of the Source Code. Except to the
+     extent prohibited by statute or regulation, such description must be
+     sufficiently detailed for a recipient of ordinary skill to be able to
+     understand it.
+5. Application of this License.
+     This License applies to code to which the Initial Developer has
+     attached the notice in Exhibit A and to related Covered Code.
+6. Versions of the License.
+     6.1. New Versions.
+     Netscape Communications Corporation ("Netscape") may publish revised
+     and/or new versions of the License from time to time. Each version
+     will be given a distinguishing version number.
+     6.2. Effect of New Versions.
+     Once Covered Code has been published under a particular version of the
+     License, You may always continue to use it under the terms of that
+     version. You may also choose to use such Covered Code under the terms
+     of any subsequent version of the License published by Netscape. No one
+     other than Netscape has the right to modify the terms applicable to
+     Covered Code created under this License.
+     6.3. Derivative Works.
+     If You create or use a modified version of this License (which you may
+     only do in order to apply it to code which is not already Covered Code
+     governed by this License), You must (a) rename Your license so that
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your
+     license (except to note that your license differs from this License)
+     and (b) otherwise make it clear that Your version of the license
+     contains terms which differ from the Mozilla Public License and
+     Netscape Public License. (Filling in the name of the Initial
+     Developer, Original Code or Contributor in the notice described in
+     Exhibit A shall not of themselves be deemed to be modifications of
+     this License.)
+     8.1.  This License and the rights granted hereunder will terminate
+     automatically if You fail to comply with terms herein and fail to cure
+     such breach within 30 days of becoming aware of the breach. All
+     sublicenses to the Covered Code which are properly granted shall
+     survive any termination of this License. Provisions which, by their
+     nature, must remain in effect beyond the termination of this License
+     shall survive.
+     8.2.  If You initiate litigation by asserting a patent infringement
+     claim (excluding declatory judgment actions) against Initial Developer
+     or a Contributor (the Initial Developer or Contributor against whom
+     You file such action is referred to as "Participant")  alleging that:
+     (a)  such Participant's Contributor Version directly or indirectly
+     infringes any patent, then any and all rights granted by such
+     Participant to You under Sections 2.1 and/or 2.2 of this License
+     shall, upon 60 days notice from Participant terminate prospectively,
+     unless if within 60 days after receipt of notice You either: (i)
+     agree in writing to pay Participant a mutually agreeable reasonable
+     royalty for Your past and future use of Modifications made by such
+     Participant, or (ii) withdraw Your litigation claim with respect to
+     the Contributor Version against such Participant.  If within 60 days
+     of notice, a reasonable royalty and payment arrangement are not
+     mutually agreed upon in writing by the parties or the litigation claim
+     is not withdrawn, the rights granted by Participant to You under
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+     the 60 day notice period specified above.
+     (b)  any software, hardware, or device, other than such Participant's
+     Contributor Version, directly or indirectly infringes any patent, then
+     any rights granted to You by such Participant under Sections 2.1(b)
+     and 2.2(b) are revoked effective as of the date You first made, used,
+     sold, distributed, or had made, Modifications made by that
+     Participant.
+     8.3.  If You assert a patent infringement claim against Participant
+     alleging that such Participant's Contributor Version directly or
+     indirectly infringes any patent where such claim is resolved (such as
+     by license or settlement) prior to the initiation of patent
+     infringement litigation, then the reasonable value of the licenses
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken
+     into account in determining the amount or value of any payment or
+     license.
+     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
+     all end user license agreements (excluding distributors and resellers)
+     which have been validly granted by You or any distributor hereunder
+     prior to termination shall survive termination.
+     The Covered Code is a "commercial item," as that term is defined in
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+     software" and "commercial computer software documentation," as such
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+     all U.S. Government End Users acquire Covered Code with only those
+     rights set forth herein.
+     This License represents the complete agreement concerning subject
+     matter hereof. If any provision of this License is held to be
+     unenforceable, such provision shall be reformed only to the extent
+     necessary to make it enforceable. This License shall be governed by
+     California law provisions (except to the extent applicable law, if
+     any, provides otherwise), excluding its conflict-of-law provisions.
+     With respect to disputes in which at least one party is a citizen of,
+     or an entity chartered or registered to do business in the United
+     States of America, any litigation relating to this License shall be
+     subject to the jurisdiction of the Federal Courts of the Northern
+     District of California, with venue lying in Santa Clara County,
+     California, with the losing party responsible for costs, including
+     without limitation, court costs and reasonable attorneys' fees and
+     expenses. The application of the United Nations Convention on
+     Contracts for the International Sale of Goods is expressly excluded.
+     Any law or regulation which provides that the language of a contract
+     shall be construed against the drafter shall not apply to this
+     License.
+     As between Initial Developer and the Contributors, each party is
+     responsible for claims and damages arising, directly or indirectly,
+     out of its utilization of rights under this License and You agree to
+     work with Initial Developer and Contributors to distribute such
+     responsibility on an equitable basis. Nothing herein is intended or
+     shall be deemed to constitute any admission of liability.
+     Initial Developer may designate portions of the Covered Code as
+     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
+     Developer permits you to utilize portions of the Covered Code under
+     Your choice of the NPL or the alternative licenses, if any, specified
+     by the Initial Developer in the file described in Exhibit A.
+EXHIBIT A -Mozilla Public License.
+     ``The contents of this file are subject to the Mozilla Public License
+     Version 1.1 (the "License"); you may not use this file except in
+     compliance with the License. You may obtain a copy of the License at
+     Software distributed under the License is distributed on an "AS IS"
+     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+     License for the specific language governing rights and limitations
+     under the License.
+     The Original Code is ______________________________________.
+     The Initial Developer of the Original Code is ________________________.
+     Portions created by ______________________ are Copyright (C) ______
+     _______________________. All Rights Reserved.
+     Contributor(s): ______________________________________.
+     Alternatively, the contents of this file may be used under the terms
+     of the _____ license (the  "[___] License"), in which case the
+     provisions of [______] License are applicable instead of those
+     above.  If you wish to allow use of your version of this file only
+     under the terms of the [____] License and not to allow others to use
+     your version of this file under the MPL, indicate your decision by
+     deleting  the provisions above and replace  them with the notice and
+     other provisions required by the [___] License.  If you do not delete
+     the provisions above, a recipient may use your version of this file
+     under either the MPL or the [___] License."
+     [NOTE: The text of this Exhibit A may differ slightly from the text of
+     the notices in the Source Code files of the Original Code. You should
+     use the text of this Exhibit A rather than the text found in the
+     Original Code Source Code for Your Modifications.]
+Install Procedure
+$ ./waf --help     # shows available waf options
+$ ./waf configure  # use '--prefix=PREFIX' if needed
+$ ./waf build
+$ ./waf install
+Unsupported alternative install methods
+GNU Autotools
+Using the same install method of install as cairo - GNU autotools.
+$ python -c "import sys; print sys.prefix"
+  # make a note of the python prefix
+$ ./configure --prefix=<python_prefix>
+$ make
+$ make install       # may require superuser access
+To build from git, use this line instead of the configure line above:
+$ ./ --prefix=<python_prefix>
+If you're installing to another prefix than the one where Python is installed
+Python will not be able to find the cairo module until you add
+$prefix/lib/pythonX.Y/site-packages to the PYTHONPATH variable.
+Python distutils
+$ python install
+See test/README
+SUBDIRS = src examples test doc
+  COPYING-MPL-1.1 \
+ \
+ \
+  waf \
+  wscript
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = pycairo.pc
+# release targets from cairo/
+# Some custom targets to make it easier to release things.
+# Use either:
+#		make release-check
+# or		make release-publish
+tar_file = $(PACKAGE)-$(VERSION).tar.gz
+md5_file = $(tar_file).md5
+$(md5_file): $(tar_file)
+	md5sum $^ > $@
+	@echo -n "Checking that $(VERSION) has an even micro component..."
+	@test "$(PYCAIRO_VERSION_MICRO)" = "`echo $(PYCAIRO_VERSION_MICRO)/2*2 | bc`" \
+		|| (echo "Ouch." && echo "The version micro component '$(PYCAIRO_VERSION_MICRO)' is not an even number." \
+		&& echo "The version in must be incremented before a new release." \
+		&& false)
+	@echo "Good."
+	@echo -n "Checking that no $(VERSION) release already exists..."
+	@ssh $(RELEASE_UPLOAD_HOST) test ! -e $(RELEASE_UPLOAD_DIR)/$(tar_file) \
+		|| (echo "Ouch." && echo "Found: $(RELEASE_UPLOAD_HOST):$(RELEASE_UPLOAD_DIR)/$(tar_file)" \
+		&& echo "Are you sure you have an updated CVS checkout?" \
+		&& echo "This should never happen." \
+		&& false)
+	@echo "Good."
+	rm -f $(tar_file) $(md5_file)
+release-check: release-verify-even-micro release-verify-newer release-remove-old distcheck $(md5_file)
+release-upload: release-check $(tar_file) $(md5_file)
+	mkdir -p releases
+	scp $(tar_file) $(md5_file) $(RELEASE_UPLOAD_HOST):$(RELEASE_UPLOAD_DIR)
+	mv $(tar_file) $(md5_file) releases
+release-publish: release-upload releases/$(md5_file)
+	@echo ""
+	@echo "Please send an announcement to $(RELEASE_ANNOUNCE_LIST)"
+	@echo "including the following:"
+	@echo ""
+	@echo "Subject: ANN: $(PACKAGE) release $(VERSION) now available"
+	@echo ""
+	@echo "============================== CUT HERE =============================="
+	@echo "Pycairo is a set of Python bindings for the multi-platform 2D graphics library cairo."
+	@echo ""
+	@echo ""
+	@echo ""
+	@echo "A new $(PACKAGE) release $(VERSION) is now available from:"
+	@echo ""
+	@echo "	$(RELEASE_URL_BASE)/$(tar_file)"
+	@echo "	$(RELEASE_URL_BASE)/$(md5_file)"
+	@echo ""
+	@echo -n "	"
+	@cat releases/$(md5_file)
+	@echo ""
+	@echo "============================== CUT HERE =============================="
+	@echo "Also, please include the new entries from the NEWS file."
+	@echo ""
+	@echo "Last but not least, do not forget to bump up the micro"
+	@echo "version component to the next (odd) number and commit."
+.PHONY: release-verify-even-micro release-verify-newer release-remove-old release-check release-upload release-publish
+Overview of changes from pycairo 1.8.8 to pycairo 1.8.10
+General Changes:
+    Pycairo 1.8.10 requires cairo 1.8.10 (or later).
+New Classes/Types:
+    Win32PrintingSurface
+    XCBSurface - add XCB support using xpyb
+Bug Fixes:
+    Fix for libtool 2.2 (#27974).
+    Mingw32 and pypy fixes (#25203).
+Other Changes:
+    Tests updated.
+The Win32PrintingSurface and XCBSurface changes mean that pycairo 1.8.10 is
+not binary compatible with pycairo 1.8.8. So modules that use the pycairo C
+API (like pygtk) will need to be recompiled to use pycairo 1.8.10.
+Overview of changes from pycairo 1.8.6 to pycairo 1.8.8
+General Changes:
+    Pycairo 1.8.8 requires cairo 1.8.8 (or later).
+    Move from CVS to git.
+    Add support for the waf build tool.
+Updated Methods:
+    The PDF/PS/SVGSurface constructors now accept None as a filename.
+Overview of changes from pycairo 1.8.4 to pycairo 1.8.6
+General Changes:
+    Pycairo 1.8.6 requires cairo 1.8.6 (or later)
+Bug Fixes:
+    ImageSurface.create_from_png _read_func fix
+    ToyFontFace type fix
+    19221: restore cairo.Matrix '*' operator to the way it originally worked.
+Other Changes:
+    Documentation completed.
+Overview of changes from pycairo 1.8.2 to pycairo 1.8.4
+General Changes:
+    Pycairo 1.8.4 requires cairo 1.8.4 (or later) and Python 2.6
+Bug Fixes:
+    20674: Add get/set_extend for Gradient Patterns
+New Classes:
+    cairo.ToyFontFace
+New Methods:
+    Pattern.get_extend
+    Pattern.set_extend
+    ToyFontFace.get_family
+    ToyFontFace.get_slant
+    ToyFontFace.get_weight
+Deleted Methods:
+    SurfacePattern.get_extend
+    SurfacePattern.set_extend
+Other Changes:
+    Threading for surfaces with stream functions has been reenabled.
+    Documentation updates.
+Overview of changes from pycairo 1.8.0 to pycairo 1.8.2
+Pycairo 1.8.0 resulted in crashes for some applications using threads. So
+upgrading to 1.8.2 is recommended for threaded applications.
+Bug Fixes: #19287: Threading support results in crashes in cairo.ImageSurface
+New Methods:
+    Context.set_scaled_font
+API Changes:
+    Matrix multiplication:
+    old code: matrix3 = matrix1 * matrix2
+    new equivalent code: matrix3 = matrix1.multiply(matrix2)
+    matrix3 = matrix1 * matrix2
+    is now equivalent to matrix3 = matrix2.multiply(matrix1)
+    which is consistent with standard matrix multiplication.
+Overview of changes from pycairo 1.6.4 to pycairo 1.8.0
+General Changes:
+    Pycairo 1.8.0 requires cairo 1.8.0 (or later).
+    Add documentation (available separately)
+Bug Fixes:
+    18101: Add support for threading
+    18947: cairo.SurfacePattern should INCREF the used surface
+New Methods:
+    ScaledFont.get_scale_matrix
+    Surface.mark_dirty_rectangle
+    Surface.set_fallback_resolution
+New Constants:
+    cairo.EXTEND_PAD
+    cairo.HAS_USER_FONT
+API Changes:
+    Surface.mark_dirty: no longer accepts keyword arguments with default
+    values.
+    PycairoPattern_FromPattern (C API): has a new 'base' argument - to fix
+    #18947.
+Other Changes:
+    Allow unknown cairo Pattern/Surface types to use the pycairo base
+    Pattern/Surface type.
+Overview of changes from pycairo 1.4.12 to pycairo 1.6.4
+General changes:
+    Pycairo 1.6.4 requires cairo 1.6.4 (or later).
+                  requires Python 2.5 (or later).
+Bug fixes:
+    16112: Fix win32 'python ...' build -- use double quotes
+New Methods:
+    Context.has_current_point
+    Context.path_extents
+    ImageSurface.format_stride_for_width
+    PSSurface.get_eps
+    PSSurface.set_eps
+    PSSurface.ps_level_to_string
+    PSSurface.restrict_to_level
+    Surface.copy_page
+    Surface.show_page
+New Constants:
+    cairo.PS_LEVEL_2, cairo.PS_LEVEL_3
+Other changes:
+    test/, test/ : pygame tests
+    examples/cairo_snippets/snippets/ : Update
+    so line-width is a constant width in device-space not user-space
+Overview of changes from pycairo 1.4.0 to pycairo 1.4.12
+General changes:
+    Pycairo 1.4.12 requires cairo 1.4.12 (or later).
+                   requires Python 2.4 (or later).
+Bug fixes:
+    10006: update to support automake >= 1.10
+    13460: use python-config to get python includes
+Other changes:
+    - allow cairo.Context to be subclassed
+    - create a 'doc' subdirectory and start a FAQ file
+Overview of changes from pycairo 1.2.6 to pycairo 1.4.0
+General changes:
+Pycairo 1.4.0 requires cairo 1.4.0 (or later).
+New methods:
+    Context.clip_extents
+    Context.copy_clip_rectangles
+    Context.get_dash
+    Context.get_dash_count
+    Context.get_scaled_font
+    Context.glyph_extents
+    Context.glyph_path
+    Context.show_glyphs
+    LinearGradient.get_linear_points
+    RadialGradient.get_radial_circles
+    SolidPattern.get_rgba
+    SurfacePattern.get_surface
+Deleted methods:
+    ImageSurface.create_for_array
+    Remove Numeric Python support, since Numeric has been made obsolete by
+    numpy, and numpy data can be read using ImageSurface.create_for_data.
+Other changes:
+    the module cairo.gtk has been removed (pygtk 2.7.0 onwards has cairo
+    support built in).
+Overview of changes from pycairo 1.2.2 to pycairo 1.2.6
+* Pycairo 1.2.6 requires cairo 1.2.6 (or later).
+* mingw32 compiler fixes (Cedric Gustin)
+* improvements  (Cedric Gustin)
+* ImageSurface.get_data() new method added
+  ImageSurface.get_data_as_rgba() method removed
+Overview of changes from pycairo 1.2.0 to pycairo 1.2.2
+* Pycairo requires cairo 1.2.2 (or later).
+* has been updated to allow installation by executing
+  $ python install
+* examples/cairo_snippets/snippets/
+  A new example to demonstrate pattern masks.
+* The cairo.svg module has been removed because:
+  1) Cairo does not include SVG parsing, so this module does not belong
+     in pycairo.
+  2) libsvg-cairo (the underlying C library) is unmaintained.
+Overview of changes from pycairo 1.1.6 to pycairo 1.2.0
+General changes:
+Pycairo has been updated to work with cairo 1.2.0.
+New methods:
+    Surface.set_fallback_resolution
+    Surface_get_content
+    ImageSurface_get_format
+    Image_surface_get_stride
+Deleted methods:
+    PDFSurface.set_dpi, PSSurface.set_dpi, SVGSurface.set_dpi
+     - replaced by Surface.set_fallback_resolution
+Other changes:
+    cairo.FORMAT_RGB16_565 added
+Overview of changes from pycairo 1.0.2 to pycairo 1.1.6
+General changes:
+Pycairo has been updated to work with cairo 1.1.6.
+New objects:
+    SVGSurface
+New methods:
+    Context.get_group_target
+    Context.new_sub_path
+    Context.pop_group
+    Context.pop_group_to_source
+    Context.push_group
+    Context.push_group_with_content
+    FontOptions.get_antialias
+    FontOptions.get_hint_metrics
+    FontOptions.get_hint_style
+    FontOptions.get_subpixel_order
+    FontOptions.set_antialias
+    FontOptions.set_hint_metrics
+    FontOptions.set_hint_style
+    FontOptions.set_subpixel_order
+    PDFSurface.set_size
+    PSSurface.dsc_begin_page_setup
+    PSSurface.dsc_begin_setup
+    PSSurface.dsc_comment
+    PSSurface.set_size
+    ScaledFont.get_font_face
+    ScaledFont.text_extents
+    Surface.get_device_offset
+    XlibSurface.get_depth
+Updated methods:
+    PDFSurface()/PSSurface() - can now write to file-like objects (like
+    StringIO).
+    surface.write_to_png() and ImageSurface.create_from_png() can now write to
+    file-like objects (like StringIO).
+    select_font_face, show_text, text_extents and text_path now accept unicode
+    objects.
+Other changes:
+    misc bug fixes.
+New examples:
+    examples/cairo_snippets/
+    examples/cairo_snippets/snippets/
+    examples/cairo_snippets/snippets/
+    examples/svg/
+Overview of changes from pycairo 1.0.0 to pycairo 1.0.2
+General changes:
+Pycairo has been updated to work with cairo 1.0.2.
+New cairo functions supported:
+    cairo.ImageSurface.create_for_data()
+Updated functions:
+    ctx.set_source_rgba (r, g, b, a=1.0) now supports a default alpha argument
+Other changes:
+    cairo.Matrix now supports the Python sequence protocol, so you can do:
+    xx, yx, xy, yy, x0, y0 = matrix
+Overview of changes from pycairo 0.9.0 to pycairo 1.0.0
+General changes:
+Pycairo has been updated to work with cairo 1.0.0.
+New cairo functions supported:
+    cairo.cairo_version()
+    cairo.cairo_version_string()
+    PSSurface.set_dpi()
+Patterns are now implemented in a class hierarchy, the new constructors are:
+    cairo.SolidPattern (r, g, b, a=1.0)
+    cairo.SurfacePattern (surface)
+    cairo.LinearGradient (x0, y0, x1, y1)
+    cairo.RadialGradient (cx0, cy0, radius0, cx1, cy1, radius1)
+Updated functions:
+    Surface.write_to_png() now accepts a file object as well as a filename
+Updated examples:
+    The gtk examples now work with pygtk >= 2.7.0 without requiring the
+    cairo.gtk module
+Bug Fixes
+    fix "initializer element is not constant" compiler warnings
+Overview of changes from pycairo 0.6.0 to pycairo 0.9.0
+General changes:
+Pycairo has been updated to work with cairo 0.9.0.
+New cairo functions supported:
+	cairo_get_antialias
+	cairo_set_antialias
+	cairo_surface_mark_dirty_rectangle
+	cairo_surface_flush
+Bug Fixes
+- double buffering now works with the cairo.gtk module
+Overview of changes from pycairo 0.5.1 to pycairo 0.6.0
+General changes:
+ Pycairo has been updated to work with cairo 0.6.0, including using cairo's new
+ error handling scheme.
+New features:
+ cairo.CONTENT_COLOR, cairo.ALPHA, cairo.COLOR_ALPHA have been added for
+ working with surfaces.
+ A new class cairo.FontOptions has been added.
+ cairo.ImageSurface.create_from_png() now accepts a filename string or a file
+ object
+ New wrapper functions have been added for cairo_get_font_options,
+ cairo_set_font_options and cairo_surface_get_font_options.
+Overview of changes from pycairo 0.5.0 to pycairo 0.5.1
+New features:
+- new class cairo.Win32Surface (Niki Spahiev)
+- cairo.HAS_WIN32_SURFACE, cairo.HAS_PS_SURFACE etc are defined to give access
+  to the values from cairo-features.h
+- fix cairo_mask, cairo_mask_surface and cairo_stroke_preserve wrappers
+- compile properly against GTK+ 2.7 (Gustavo Carneiro)
+- other small fixes, including fixes for gcc 4.0 warnings
+Overview of changes from pycairo 0.5.1 to pycairo 0.6.0
+This version has many changes which update Pycairo to the new cairo API. The
+change list is not duplicated here, instead see the cairo/NEWS file for full
+details of all these API changes.
+Pycairo method names that were different from the underlying cairo function
+names have been changed to make Pycairo more closely follow cairo and so
+enable the cairo documentation to be used for writing Pycairo programs.
+NOTES has been updated to list the differences between the C API and the
+Pycairo API.
+Context.copy_path() has been implemented, it returns a Path instance which
+supports the iterator protocol.
+Python 2.3 is now required.
+New examples:
+	shows usage of the Path iterator
+	shows many of the 'cairo-demo/cairo_snippets' examples
+	example using cairo.ImageSurface.create_from_png()
+Overview of changes from pycairo 0.1.4 to pycairo 0.4.0
+New cairo bindings:
+	cairo_font_extents
+Bindings removed:
+	cairo_font_set_transform
+	cairo_font_current_transform
+New examples:
+	gtk/
+	Changed version numbering to correspond directly with the Cairo
+	version Pycairo was developed to work with. So, for example,
+	Pycairo version 0.4.0 represents the Pycairo version that has been
+	developed and tested with Cairo 0.4.0.
+Overview of changes from pycairo 0.1.3 to pycairo 0.1.4
+The Pycairo license has changed so that it is now dual-licensed under the LGPL
+and the MPL, the same as Cairo itself. For details see the COPYING file as
+well as COPYING-LGPL-2.1 and COPYING-MPL-1.1.
+New cairo bindings:
+	cairo_pdf_surface_create
+	cairo_set_target_pdf
+New libsvg-cairo bindings:
+	svg_cairo_parse
+	svg_cairo_parse_buffer
+	svg_cairo_render
+	svg_cairo_get_size
+	Added --without-pygtk configure option.
+	Renamed the Pycairo API _new() functions to _wrap() to allow _new() to
+	be used for python __new__ functions.
+	New examples: and
+Overview of changes for pycairo 0.1.3
+After the recent server compromise we discarded all unsigned
+snapshots. That left us without a pycairo snapshot.
+Additionally, there were no tags in the source repository so I
+couldn't recreate the 0.1.2 snapshot, so here's a new 0.1.3 snapshot.
+I apologize if I botched the version number or left something
+significant out of this announcement---I'm not the one who will
+usually be doing pycairo maintenance.
+New bindings:
+	current_path
+	current_path_flat
+	current_font_extents
+	fill_extents,stroke_extents: Remove unnecessary args and
+	change from a method to an attribute.
+	Added two new examples: and
+Pycairo - Python bindings for cairo
+    cairo   >= 1.8.10
+    Python  >= 2.6
+See the INSTALL document for build instructions.
+The 'doc' directory contains reStructuredText files which are used by Sphinx
+to generate html (and other format) documentation.
+Pycairo is free software and is available to be redistributed and/or modified
+under the terms of either the GNU Lesser General Public License (LGPL) version
+2.1 or the Mozilla Public License (MPL) version 1.1.
+Mailing List:
+If you have some ideas for how cairo or Pycairo could be improved, please feel
+free to send a message to
+If you find a bug in Pycairo, please go to
+and submit a bugreport.
+IMPORTANT: make sure you state which version of cairo, pycairo, and Python you
+are using when you report a problem or bug.
+>>> import cairo
+>>> cairo.cairo_version_string()  # shows the cairo version
+>>> cairo.version                 # shows the pycairo version
+Here are the steps to follow to create a new pycairo release:
+1) Fill out an entry in the NEWS file
+Sift through the information in 'git log' since the last release. Summarize
+major changes briefly in a style similar to other entries in NEWS.
+2) Increment pycairo and cairo version numbers in:
+   doc/
+   wscript
+Increment pycairo_major/minor/micro_version in
+Increase the cairo_required_version - to an even numbered version.
+Increment pycairo_major/minor version to match the cairo major/minor version
+that pycairo requires (and increment the micro version if necessary for any
+subsequent pycairo updates).
+3) Run "make distcheck" and verify that it gives no warnings or errors and
+   ends with a message of the form:
+	===============================================
+	pycairo-X.Y.Z archives ready for distribution:
+	pycairo-X.Y.Z.tar.gz
+	===============================================
+Install from the tar.gz archive, run tests and examples.
+4) Commit the changes to NEWS, etc
+It's especially important to mention the new version number in the git commit
+Add a '=== Pycairo x.x.x ===' header.
+$ git tag v X.Y.Z
+  push the changes to the freedesktop server.
+$ git push origin master
+5) Edit and select either 'snapshot' or 'release'.
+   Run "make release-publish" which will perform the following steps for you:
+* Check that the version number ends with an even micro component
+* Check that no release exists with the current version
+* Verify that make distcheck completes successfully
+* Generate the final tar file
+* Generate an md5sum file
+* scp both files to appear on
+* Place local copies of the files in the releases directory
+* Create a LATEST-package-version file (after deleting any old one)
+* Provide some text for the release announcement (see below).
+6) Verify that the tar file arrived at the website.
+   Check tar file has read permissions for all.
+   Update the pycairo webpage to reference the new release.
+   Update entry for pycairo.
+7) Edit:
+   wscript
+   to increment pycairo_version_micro to the next larger (odd) number and
+   commit.
+8) Send a message to
+              and CC
+   to announce the new release using the text provided from
+   "make release-publish".
+Generating documentation archives
+$ cd doc/
+$ vi  # update the version and release numbers
+$ make clean
+$ make html
+$ cd .build/
+$ mv html pycairo-x.x.x-docs-html
+$ tar cjf /tmp/pycairo-x.x.x-docs-html.tar.bz2 pycairo-x.x.x-docs-html
+$ zip -r  /tmp/     pycairo-x.x.x-docs-html
+$ chmod a+r /tmp/pycairo*
+untar docs in /tmp and check that they have correct version number and view
+copy file to the 'releases' directory on cairo website:
+  scp pycairo-xxx
+cd doc
+## this one is commonly used with AM_PATH_PYTHONDIR ...
+dnl Check if a module containing a given symbol is visible to python.
+py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
+AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+        import $1
+except ImportError:
+        sys.exit(1)
+        sys.exit(0)
+sys.exit(0)"], [prog="
+import $1
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+  then
+    eval "py_cv_mod_$py_mod_var=yes"
+  else
+    eval "py_cv_mod_$py_mod_var=no"
+  fi
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+  ifelse([$3], [],, [$3
+  ifelse([$4], [],, [$4
+dnl a macro to check for ability to create python extensions
+dnl function also defines PYTHON_INCLUDES
+AC_MSG_CHECKING(for headers required to compile python extensions)
+if test -x "$PYTHON-config"; then
+  PYTHON_INCLUDES=`$PYTHON-config --includes 2>/dev/null`
+  py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+  py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+  PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+  if test "$py_prefix" != "$py_exec_prefix"; then
+    PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+  fi
+dnl check if the headers exist:
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(not found)
+# Run this to generate all the initial makefiles, etc.
+set -e
+# Allow invocation from a separate build directory; in that case, we change
+# to the source directory to run the auto*, then change back before running configure
+srcdir=`dirname $ARGV0`
+test -z "$srcdir" && srcdir=.
+cd $srcdir
+LIBTOOLIZE_FLAGS="--copy --force"
+AUTOMAKE_FLAGS="--add-missing --foreign"
+test -f &&
+test -f &&
+if test "X$CONFIGURE_IN" = X; then
+  echo "$ARGV0: ERROR: No $srcdir/ or $srcdir/ found."
+  exit 1
+extract_version() {  # modified from cairo/
+    grep "^ *$1" $CONFIGURE_IN | sed 's/.*(\[*\([^]) ]*\).*/\1/';
+autoconf_min_vers=`extract_version AC_PREREQ`
+automake_min_vers=`extract_version AM_INIT_AUTOMAKE`
+libtoolize_min_vers=`extract_version AC_PROG_LIBTOOL`
+# Not all echo versions allow -n, so we check what is possible. This test is
+# based on the one in autoconf.
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ;;
+  *c*,*  ) ECHO_N=-n ;;
+  *)       ECHO_N= ;;
+# some terminal codes ...
+boldface="`tput bold 2>/dev/null || true`"
+normal="`tput sgr0 2>/dev/null || true`"
+printbold() {
+    echo $ECHO_N "$boldface"
+    echo "$@"
+    echo $ECHO_N "$normal"
+printerr() {
+    echo "$@" >&2
+# Usage:
+#     compare_versions MIN_VERSION ACTUAL_VERSION
+# returns true if ACTUAL_VERSION >= MIN_VERSION
+compare_versions() {
+    ch_min_version=$1
+    ch_actual_version=$2
+    ch_status=0
+    IFS="${IFS=         }"; ch_save_IFS="$IFS"; IFS="."
+    set $ch_actual_version
+    for ch_min in $ch_min_version; do
+        ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes
+        if [ -z "$ch_min" ]; then break; fi
+        if [ -z "$ch_cur" ]; then ch_status=1; break; fi
+        if [ $ch_cur -gt $ch_min ]; then break; fi
+        if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi
+    done
+    IFS="$ch_save_IFS"
+    return $ch_status
+# Usage:
+# checks to see if the package is available
+version_check() {
+    vc_package=$1
+    vc_variable=$2
+    vc_checkprogs=$3
+    vc_min_version=$4
+    vc_source=$5
+    vc_status=1
+    vc_checkprog=`eval echo "\\$$vc_variable"`
+    if [ -n "$vc_checkprog" ]; then
+	printbold "using $vc_checkprog for $vc_package"
+	return 0
+    fi
+    printbold "checking for $vc_package >= $vc_min_version..."
+    for vc_checkprog in $vc_checkprogs; do
+	echo $ECHO_N "  testing $vc_checkprog... "
+	if $vc_checkprog --version < /dev/null > /dev/null 2>&1; then
+	    vc_actual_version=`$vc_checkprog --version | head -n 1 | \
+                               sed 's/^.*[ 	]\([0-9.]*[a-z]*\).*$/\1/'`
+	    if compare_versions $vc_min_version $vc_actual_version; then
+		echo "found $vc_actual_version"
+		# set variable
+		eval "$vc_variable=$vc_checkprog"
+		vc_status=0
+		break
+	    else
+		echo "too old (found version $vc_actual_version)"
+	    fi
+	else
+	    echo "not found."
+	fi
+    done
+    if [ "$vc_status" != 0 ]; then
+	printerr "***Error***: You must have $vc_package >= $vc_min_version installed"
+	printerr "  to build $PROJECT.  Download the appropriate package for"
+	printerr "  from your distribution or get the source tarball at"
+        printerr "    $vc_source"
+	printerr
+    fi
+    return $vc_status
+version_check autoconf AUTOCONF $AUTOCONF $autoconf_min_vers \
+    "${autoconf_min_vers}.tar.gz" || DIE=1
+# Hunt for an appropriate version of automake and aclocal; we can't
+# assume that 'automake' is necessarily the most recent installed version
+# We check automake first to allow it to be a newer version than we know about.
+version_check automake AUTOMAKE "$AUTOMAKE automake automake-1.10 automake-1.9 automake-1.8 automake-1.7" $automake_min_vers \
+    "${automake_min_vers}.tar.gz" || DIE=1
+ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/`
+version_check libtool LIBTOOLIZE $LIBTOOLIZE $libtoolize_min_vers \
+    "${libtool_min_vers}.tar.gz" || DIE=1
+if test -z "$ACLOCAL_FLAGS"; then
+    acdir=`$ACLOCAL --print-ac-dir`
+    if [ ! -f $acdir/pkg.m4 ]; then
+	echo "$ARGV0: Error: Could not find pkg-config macros."
+	echo "        (Looked in $acdir/pkg.m4)"
+	echo "        If pkg.m4 is available in /another/directory, please set"
+	echo "        ACLOCAL_FLAGS=\"-I /another/directory\""
+	echo "        Otherwise, please install pkg-config."
+	echo ""
+	echo "pkg-config is available from:"
+	echo ""
+	DIE=yes
+    fi
+if test "X$DIE" != X; then
+  exit 1
+if test -z "$*"; then
+  echo "$ARGV0:	Note: \`./configure' will be run with no arguments."
+  echo "		If you wish to pass any to it, please specify them on the"
+  echo "		\`$0' command line."
+  echo
+do_cmd() {
+    echo "$ARGV0: running \`$@'"
+    $@
+do_cmd $AUTOCONF
+cd $ORIGDIR || exit 1
+# don't use 'do_cmd' since it prevents
+# './ --prefix=/usr CFLAGS="$CFLAGS -Werror"'  from working
+#do_cmd $srcdir/configure --enable-maintainer-mode ${1+"$@"} && echo "Now type \`make' to compile" || exit 1
+$srcdir/configure --enable-maintainer-mode ${1+"$@"} && echo "Now type \`make' to compile" || exit 1