1.15.4 - 2017-11-08
-------------------
Fixes:
* Fix some enum conversation errors with (unused) large and negative values.
:pr:`81`
Tests:
* Fix a rare test error :pr:`80` (:user:`Sergei Trofimovich <trofi>`)
.. _v1.15.3:
1.15.3 - 2017-09-17
-------------------
Fixes:
* setup.py: Install pkgconfig file into /usr/share/pkgconfig to work around
JHBuild on Fedora not picking it up.
* Fix tests on big endian machines. 🐛`75`
* Support building with MSVC :pr:`72` (:user:`Chun-wei Fan <fanc999>`)
Tests:
* Test MSVC builds on appveyor
.. _v1.15.2:
1.15.2 - 2017-09-03
-------------------
Fixes:
* setup.py: Install pkgconfig file to the same library prefix that Python
uses. (/usr/lib64 instead of /usr/lib under Fedora for example) 🐛`70`
:pr:`71` (:user:`Sander Sweers <infirit>`)
.. _v1.15.1:
1.15.1 - 2017-08-19
-------------------
Fixes:
* Improved support for Python filesystem paths including
:class:`os.PathLike`. See :class:`pathlike` for details.
* Various minor fixes
Changes:
* Expose :class:`cairo.Path`
Tests:
* Improved test coverage from ~70% to ~90%
.. _v1.15.0:
1.15.0 - 2017-07-24
-------------------
New Features:
* Add :meth:`Surface.map_to_image` and :meth:`Surface.unmap_image` 🐛`51`
* Add :class:`RasterSourcePattern` 🐛`48`
* Add :class:`Glyph` 🐛`53`
* Add :class:`Rectangle` 🐛`54`
* Add :class:`TextCluster` 🐛`61`
* Add :meth:`ScaledFont.text_to_glyphs` and :meth:`ScaledFont.glyph_extents`
* Add :meth:`Context.show_text_glyphs`
* Add :class:`TextExtents` 🐛`62`
Changes:
* Pycairo instances wrapping the same underlying cairo object now hash and
compare equally e.g. ``context.get_target() == context.get_target()``
* Functions which returned a cairo error with :attr:`Status.NO_MEMORY` no
longer raise :exc:`python3:MemoryError`, but a subclass of :exc:`Error`
and :exc:`python3:MemoryError`. Similarly errors with
:attr:`Status.READ_ERROR` and :attr:`Status.WRITE_ERROR` no longer raise
:exc:`python3:IOError`, but a subclass of :exc:`Error` and
:exc:`python3:IOError`. 🐛`55`
* Some functions which previously returned a tuple now return a tuple
subclass like :class:`Rectangle`, :class:`Glyph`, :class:`TextCluster` and
:class:`TextExtents`
.. _v1.14.1:
1.14.1 - 2017-07-24
-------------------
Fixes:
* Fix a crash with :meth:`Surface.get_device` 🐛`57`
.. _v1.14.0:
1.14.0 - 2017-07-12
-------------------
General:
* Requires at least cairo 1.13.1 (The snapshop in Ubuntu 14.04)
Tests:
* Optional `Hypothesis <https://hypothesis.readthedocs.io>`__ tests.
New Features:
* Add :meth:`Surface.set_device_scale` and :meth:`Surface.get_device_scale`.
:pr:`44` (:user:`Sander Sweers <infirit>`)
* Add :class:`Device` :pr:`45`
* Add :meth:`Surface.get_device` :pr:`45`
* Add :class:`ScriptDevice` and :class:`ScriptMode` :pr:`46`
* Add :class:`ScriptSurface` 🐛`17`
* Add :attr:`Status.JBIG2_GLOBAL_MISSING`
* Add :meth:`Format.stride_for_width`
* Add :class:`TextClusterFlags` and :class:`SurfaceObserverMode`
* Add :meth:`Gradient.get_color_stops_rgba`
* Add :class:`TeeSurface`
* Add :class:`MeshPattern`
.. _v1.13.4:
1.13.4 - 2017-07-12
-------------------
Fixes:
* Fix a rare crash with :meth:`get_data() <ImageSurface.get_data>` under
Python 3 (1.13.3 regression).
.. _v1.13.3:
1.13.3 - 2017-06-01
-------------------
Fixes:
* Fix ImageSurface leaking in case :meth:`get_data() <ImageSurface.get_data>` is used under Python 3.
🐛`41`
Documentation:
* Add Pillow to ImageSurface example. :pr:`40` (:user:`Stuart Axon <stuaxo>`)
* Describe Freetype-py intergration. 🐛`25` :pr:`43`
(:user:`Hin-Tak Leung <HinTak>`)
.. _v1.13.2:
1.13.2 - 2017-05-21
-------------------
Fixes:
* Fix pip failing to install pycairo in some cases. 🐛`39`
Testing:
* Added continuous testing for Windows using MSYS2 and appveyor. 🐛`19`
.. _v1.13.1:
1.13.1 - 2017-05-07
-------------------
Fixes:
* setup.py install: Fix generated pkg-config file if ``--home`` or
``--user`` is specified. 🐛`34`
* Fix a build error on macOS Sierra. :pr:`36`
(:user:`Nicolas P. Rougier <rougier>`)
* examples: Fix snippet examples when .pyc files are present. 🐛`35`
Documentation:
* Add Pyglet integration example. :pr:`33` (:user:`Stuart Axon <stuaxo>`)
.. _v1.13.0:
1.13.0 - 2017-05-03
-------------------
New Features:
* The buffer returned by :meth:`ImageSurface.get_data` under Python 2 now
implements the character buffer interface to make it work with
pygame.image.frombuffer(). :pr:`29`
* All C enum types now have their own corresponding Python enum type:
:class:`Antialias`, :class:`Content`, :class:`Extend`, :class:`FillRule`,
:class:`Filter`, :class:`FontSlant`, :class:`FontWeight`, :class:`Format`,
:class:`HintMetrics`, :class:`HintStyle`, :class:`LineCap`,
:class:`LineJoin`, :class:`Operator`, :class:`PDFVersion`,
:class:`PSLevel`, :class:`PathDataType`, :class:`RegionOverlap`,
:class:`SVGVersion`, :class:`Status`, :class:`SubpixelOrder`. 🐛`26`
All relevant constants are now an alias to attributes of those types e.g.
:data:`ANTIALIAS_DEFAULT` is the same as :attr:`Antialias.DEFAULT`.
All functions returning enum values now return instances of the new types
e.g. :meth:`Context.get_antialias` returns a :class:`Antialias`.
:attr:`Error.status` is now a :class:`Status`.
* All included examples now work with Python 2 & 3
* All included examples using GTK+ have been ported to GTK+ 3/PyGObject 3
Fixes:
* Fix the signature of the :class:`ImageSurface` buffer interface for Python 2
(int -> Py_ssize_t)
* setup.py: Ensure "-fno-strict-aliasing" is used with Python 2.
Testing:
* Added travis-ci tests for flake8 and sphinx. :pr:`30`, :pr:`32`
* The test suite now has optional tests for numpy and pygame integration.
.. _v1.12.0:
1.12.0 - 2017-04-18
-------------------
General:
* Require cairo 1.12.0
* Use C90 and enforce it on travis-ci. 🐛`5`, :fdobug:`22940`
Constants:
* Add various new cairo.OPERATOR_*, cairo.ANTIALIAS_* and
cairo.FORMAT_* constants. 🐛`1`
* Add :data:`HAS_MIME_SURFACE` and cairo.MIME_TYPE_*. 🐛`7`,
:fdobug:`58771`
* Add cairo.PDF_VERSION_*. :pr:`16`
* Add cairo.SVG_VERSION_*
:exc:`Error`:
* Add a :data:`Error.status` attribute exposing cairo.STATUS_*
* Add :exc:`CairoError` alias for :exc:`Error` for cairocffi compatibility
:class:`Matrix`:
* Expose matrix components as read/write properties. e.g. :data:`Matrix.xx`
* Fix type checking of the multiplication operator under
Python 3. 🐛`8`, :fdobug:`89162` (Lawrence D'Oliveiro)
:class:`Surface`:
* Add :meth:`Surface.set_mime_data`. 🐛`7`, :fdobug:`58771`
* Add :meth:`Surface.get_mime_data`. 🐛`7`, :fdobug:`58771`
* Add :meth:`Surface.supports_mime_type`. 🐛`7`, :fdobug:`58771`
* Add :meth:`Surface.create_for_rectangle`. :pr:`13`
* Add :meth:`Surface.create_similar_image`. :pr:`15`
* Add :meth:`Surface.has_show_text_glyphs`
* Fix crash when the surface wrapper gets deallocated before the surface
object. 🐛`11`
:class:`Context`:
* Add :meth:`Context.in_clip`. :pr:`14`
:class:`PDFSurface`:
* Add :meth:`PDFSurface.restrict_to_version`. :pr:`16`
* Add :meth:`PDFSurface.get_versions`. :pr:`16`
* Add :meth:`PDFSurface.version_to_string`. :pr:`16`
:class:`SVGSurface`:
* Add :meth:`SVGSurface.restrict_to_version`
* Add :meth:`SVGSurface.get_versions`
* Add :meth:`SVGSurface.version_to_string`
:class:`XCBSurface`:
* Add :meth:`XCBSurface.set_size`
:class:`PSSurface`:
* Add :meth:`PSSurface.get_levels`
* Add :meth:`PSSurface.level_to_string`
:class:`Pattern`:
* Add :meth:`Pattern.set_filter`
* Add :meth:`Pattern.get_filter`
:class:`RecordingSurface`:
* Add :meth:`RecordingSurface.get_extents`
:class:`FontOptions`:
* Implement ``__eq__`` and ``__ne__``
* Add :meth:`FontOptions.copy`
* Add :meth:`FontOptions.hash`
* Add :meth:`FontOptions.equal`
* Add :meth:`FontOptions.merge`
:class:`ScaledFont`:
* Add :meth:`ScaledFont.get_ctm`
* Add :meth:`ScaledFont.get_font_matrix`
* Add :meth:`ScaledFont.get_font_options`
.. _v1.11.1:
1.11.1 - 2017-04-12
-------------------
This release fixes an ABI breakage. I missed that the original pycairo master
had already broken ABI compared to 1.10.0.
.. _v1.11.0:
1.11.0 - 2017-04-09
-------------------
This version is based on the Python 2 version of pycairo 1.10.0 and is API/ABI
compatible with both py2cairo 1.10.0 and py3cairo 1.10.0.
General Changes:
* Requires cairo 1.10.2+
* Switch to semantic versioning
* Switch build system to distutils/setup.py (xpyb integration can be
enabled with passing ``--enable-xpyb`` to setup.py build)
* Moved to GitHub: https://github.com/pygobject/pycairo
New Features:
* Python 3 support (API/ABI compatible with py3cairo 1.10.0) including
support for :exc:`cairo.Error`, :meth:`cairo.ImageSurface.get_data` and
:meth:`cairo.ImageSurface.create_for_data`, which were missing in
py3cairo.
* :class:`cairo.RecordingSurface` (:fdobug:`36854`,
`Torsten Landschoff <t.landschoff@gmx.net>`__)
* :class:`cairo.Region`, :class:`cairo.RectangleInt` and
cairo.REGION_OVERLAP_*
(:fdobug:`44336`, `Bug Fly <mozbugbox@yahoo.com.au>`__)
Bug Fixes:
* Fix crash when read()/write() methods of file objects passed to pycairo
raise exceptions.
* Fix possible value truncation of handles passed to Win32Surface and
Win32PrintingSurface on 64bit Windows. :fdobug:`57493`
Overview of changes from py2cairo 1.8.10 to py2cairo 1.10.0
===========================================================
General Changes:
py2cairo 1.10.0 requires cairo 1.10.0 (or later).
New Constants:
cairo.FORMAT_RGB16_565
Bug Fixes:
context.get_source().get_surface() fails #33013
Add support for './waf configure --libdir=XXX' #30230
Documentation Changes:
Upgrade to using Sphinx 1.0.7.
Include html documentation in the pycairo archive file.
Build Changes:
Update waf to 1.6.3
Other Changes:
Remove setup.py
Improve/simplify unicode filename support.
Improve/simplify unicode text support.
to address issues with NetBSD-6(and earlier)'s fontconfig not being
new enough for pango.
While doing that, also bump freetype2 dependency to current pkgsrc
version.
Suggested by tron in PR 47882
Remove devel/py-ctypes (only needed by and supporting python24).
Remove PYTHON_VERSIONS_ACCEPTED and PYTHON_VERSIONS_INCOMPATIBLE
lines that just mirror defaults now.
Miscellaneous cleanup while editing all these files.
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.
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
=======================================================
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.
Based on maintainer update request by PR 41063.
While here, add commented out LICENSE (LGPL-2.1 or MPL-1.1).
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_IMAGE_SURFACE
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.
changes:
-updated for newer cairo versions
-distutils support (unused in pkgsrc because broken)
-new example to demonstrate pattern masks
-cairo.svg module removed