Changelog
由于1.11.0版的Pycairo使用 Semantic Versioning
1.26.0-2024-02-11
此版本仅包含与构建相关的更改/修复,不包含API更改。
1.25.1-2023-10-21
1.25.0-2023-09-26
针对Windows滚轮更新到开罗1.18.0
提供Windows ARM 64滚轮
新增接口:
1.24.0-2023-06-19
1.23.0-2022-11-28
提醒发行版打包人员:不建议使用setup.py构建/安装pycairo,请改用介子。
1.22.0-2022-11-19
正式支持Python3.11 #pr-285
PDFSurface.version_to_string():使用负版本修复崩溃 #pr-279
键入:ImageSurface.get_stride()返回一个int #pr-282
键入:修复矩阵构造函数的不正确接口 #pr-271
键入:使用泛型作为上下文 #pr-274
Docs:一些调用。上下文修复 #pr-276
文档:尝试使CREATE_FROM_PNG/WRITE_TO_PNG更清楚 #pr-261
DOCS:添加一个如何将表面转换为枕头的示例 #pr-281
Docs:cairo.Format.RGB24:可以覆盖未使用的字节的文档 #pr-289
测试:不依赖于特定的参考次数 #pr-291
测试:开罗1.17.6的兼容性修复 #pr-264
1.21.0-2022-03-07
1.20.1-2021-06-03
1.20.0-2020年10月5日
1.19.1-2020年2月16日
docs: Add moderngl in the integration section. #pr-174 (Einar Forselv)
支持操作系统路径PyPy3>=7.3.0时
1.19.0-2020年1月23日
不再支持Python2 #pr-172
Add machine-readable license statement #pr-158 (Maxim Ivanov)
travis ci:手动设置sysroot以便使用正确的SDK (Stuart Axon )
在Windows上支持Python3.8(由于DLL查找更改)
修复docs/types中set_dash()offset参数的错误类型。
1.18.2-2019年10月24日
修复了python3.8的一个小的兼容性问题(修复了测试套件)
1.18.1-2019年4月19日
meson:安装 .egg-info 到platlib
meson:修复 meson 0.50 re绝对路径的配置错误 #pr-145
PYPy:不要对PYP3.6使用PYOS_FSPath(),缺少:https://foss.heptapod.net/pypy/pypy/-/issues/2961
Docs fixes #pr-134 (Matteo Italia)
1.18.0-2018年11月4日
- 建造:
放弃 python 3.3支持
meson 构建需要 meson >=0.47(was>=0.46)
使用GCC8修复各种生成警告
meson:在非Windows系统上不要链接到libpython #pr-120
meson: Improve support for Visual Studio builds #pr-121 (Chun-wei Fan)
setup.py: Support specifying custom
--pkgconfigdir
#pr-127 (Michał Górny)
- 修正:
- 新API:
有些仅在使用较新的cairo版本构建时可用,有关详细信息,请参阅链接的api文档。
CAIRO_VERSION
,CAIRO_VERSION_STRING
,CAIRO_VERSION_MAJOR
,CAIRO_VERSION_MINOR
,CAIRO_VERSION_MICRO
Status.TAG_ERROR
,Status.FREETYPE_ERROR
,Status.PNG_ERROR
,Status.WIN32_GDI_ERROR
PDFSurface.set_page_label()
,PDFSurface.set_metadata()
,PDFSurface.set_thumbnail_size()
,PDFSurface.add_outline()
,PDF_OUTLINE_ROOT
SVGSurface.set_document_unit()
,SVGSurface.get_document_unit()
MIME_TYPE_CCITT_FAX
,MIME_TYPE_CCITT_FAX_PARAMS
,MIME_TYPE_EPS
,MIME_TYPE_EPS_PARAMS
,MIME_TYPE_JBIG2
,MIME_TYPE_JBIG2_GLOBAL
,MIME_TYPE_JBIG2_GLOBAL_ID
1.17.1-2018年7月7日
1.17.0-2018年4月15日
cairo.Surface
andcairo.Device
can now be used as context managers. #103修复引发cairo错误时的泄漏。
修复映射曲面GCED而不是UNMAPPED时的泄漏。
通过定义
PYCAIRO_NO_IMPORT
. #110实施PEP 561(添加了一个py.typed标记)
1.16.3-2018年2月27日
1.16.2-2018年2月10日
setup.py:对debian pybuild怪癖的一些修复。 #98
1.16.1-2018年2月6日
setup.py:再次将pkgconfig正确安装到/usr/lib*中。要使基于Fedora的jhbuild工作,需要以下补丁:https://bugzilla.gnome.org/show_bug.cgi?内径=793216
1.16.0-2018年2月5日
添加
get_include()
返回编译器的函数包含与pycairo C API接口所需的路径 #92打包程序注意:默认的头安装路径已更改,但在旧位置安装了一个compat头,以防止任何人硬编码旧路径而不是使用pkg配置时损坏。以防有人想知道为什么现在有两个头文件。
1.15.6-2018年1月30日
实验性Pypy和Pypy3支持 #90
1.15.5-2018年1月29日
1.15.4-2017年11月8日
- 修正:
使用(未使用的)大值和负值修复某些枚举会话错误。 #pr-81
- 测验:
Fix a rare test error #pr-80 (Sergei Trofimovich)
1.15.3-2017年9月17日
- 修正:
setup.py:将pkgconfig文件安装到/usr/share/pkgconfig中,以解决在fedora上构建jhbuild而不是拾取它的问题。
在big endian机器上修复测试。 #75
Support building with MSVC #pr-72 (Chun-wei Fan)
- 测验:
测试基于AppVeyor的MSVC
1.15.2-2017年9月3日
- 修正:
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 (Sander Sweers)
1.15.1-2017年8月19日
- 修正:
改进了对Python文件系统路径的支持,包括
os.PathLike
。看见_PathLike
了解更多细节。各种小修复
- 变化:
暴露
cairo.Path
- 测验:
将测试覆盖率从约70%提高到约90%
1.15.0-2017年7月24日
- 新功能:
- 变化:
包装相同底层cairo对象的pycairo实例现在可以进行哈希和同等比较,例如
context.get_target() == context.get_target()
返回cairo错误的函数
Status.NO_MEMORY
不再加薪MemoryError
但属于Error
和MemoryError
. 同样的错误Status.READ_ERROR
和Status.WRITE_ERROR
不再加薪IOError
但属于Error
和IOError
. #55以前返回元组的一些函数现在返回类似于
Rectangle
,Glyph
,TextCluster
和TextExtents
1.14.1-2017年7月24日
- 修正:
修复崩溃
Surface.get_device()
#57
1.14.0-2017年7月12日
- 一般:
至少需要 Cairo 1.13.1(Ubuntu 14.04中的Snapshop)
- 测验:
可选的 Hypothesis 测验。
- 新功能:
Add
Surface.set_device_scale()
andSurface.get_device_scale()
. #pr-44 (Sander Sweers)添加
ScriptDevice
和ScriptMode
#pr-46添加
ScriptSurface
#17添加
TeeSurface
添加
MeshPattern
1.13.4-2017年7月12日
- 修正:
修复罕见的车祸
get_data()
在python 3(1.13.3回归)下。
1.13.3-2017年6月1日
- 修正:
修复图像表面泄漏,以防
get_data()
在python 3下使用。 #41
- 文档:
Add Pillow to ImageSurface example. #pr-40 (Stuart Axon)
Describe Freetype-py intergration. #25 #pr-43 (Hin-Tak Leung)
1.13.2-2017年5月21日
1.13.1-2017年5月7日
- 修正:
setup.py安装:修复生成的pkg配置文件,如果
--home
或--user
指定。 #34Fix a build error on macOS Sierra. #pr-36 (Nicolas P. Rougier)
示例:在.pyc文件存在时修复代码段示例。 #35
- 文档:
Add Pyglet integration example. #pr-33 (Stuart Axon)
1.13.0-2017年5月3日
- 新功能:
返回的缓冲区
ImageSurface.get_data()
在python 2下,现在实现了字符缓冲区接口,使其与pygame.image.frombuffer()一起工作。 #pr-29所有C枚举类型现在都有自己对应的python枚举类型:
Antialias
,Content
,Extend
,FillRule
,Filter
,FontSlant
,FontWeight
,Format
,HintMetrics
,HintStyle
,LineCap
,LineJoin
,Operator
,PDFVersion
,PSLevel
,PathDataType
,RegionOverlap
,SVGVersion
,Status
,SubpixelOrder
. #26所有相关常量现在都是这些类型属性的别名,例如
ANTIALIAS_DEFAULT
是一样的Antialias.DEFAULT
.所有返回枚举值的函数现在都返回新类型的实例,例如
Context.get_antialias()
返回AAntialias
.Error.status
现在是Status
.所有包含的示例现在都可以与Python2和3一起使用。
所有使用gtk+的示例都已移植到gtk+3/pygobject 3
- 修正:
固定的签名
ImageSurface
python 2的缓冲区接口(int->py-ssize-t)py:确保在python 2中使用“-fno strict aliasing”。
- 测试:
1.12.0-2017年4月18日
- 一般:
要求 Cairo 1.12.0
使用C90并在Travis CI上强制执行。 #5 , #fdo-22940
- 常数:
添加各种新cairo.operator_ , cairo.ANTIALIAS_ 和cairo.format_*常量。 #1
添加
HAS_MIME_SURFACE
和cairo.mime_-type_u*。 #7 , #fdo-58771添加cairo.pdf_版本。 #pr-16
添加cairo.svg_版本_*
Error
:添加
Error.status
显示cairo.status的属性_*添加
CairoError
别名Error
对于cairocfi兼容性
Matrix
:将矩阵组件公开为读/写属性。例如
Matrix.xx
修复python 3下乘法运算符的类型检查。 #8 , #fdo-89162 (劳伦斯·奥利维罗)
Surface
:添加
Surface.set_mime_data()
. #7 , #fdo-58771添加
Surface.get_mime_data()
. #7 , #fdo-58771修复在Surface对象之前释放Surface包装时发生的崩溃。 #11
Context
:添加
Context.in_clip()
. #pr-14
PDFSurface
:SVGSurface
:XCBSurface
:PSSurface
:Pattern
:RecordingSurface
:FontOptions
:实施
__eq__
和__ne__
ScaledFont
:
1.11.1-2017年4月12日
此版本修复了ABI损坏。我错过了原来的 pycairo master 已经打破了ABI相比,1.10.0。
1.11.0-2017年4月9日
此版本基于pycairo 1.10.0的python 2版本,并且与py2cairo 1.10.0和py3cairo 1.10.0兼容。
- 一般变更:
要求 Cairo 1.10.2+
切换到语义版本控制
将构建系统切换到distutils/setup.py(xpyb集成可以通过传递启用)
--enable-xpyb
安装.py build)移动到github:https://github.com/pygobject/pycairo
- 新功能:
python 3支持(api/abi兼容py3cairo 1.10.0),包括对
cairo.Error
,cairo.ImageSurface.get_data()
和cairo.ImageSurface.create_for_data()
在Py3cairo失踪。cairo.Region
,cairo.RectangleInt
和 Cairo 地区重叠_* (#fdo-44336 , Bug Fly )
- 错误修复:
修复传递给pycairo的文件对象的read()/write()方法引发异常时的崩溃。
修复在64位窗口上传递给win32surface和win32printingsurface的句柄的可能值截断。 #fdo-57493
2011年10月1日-2001年5月
- 一般变更:
py2cairo 1.10.0需要cairo 1.10.0(或更高版本)。
- 新常量:
cairo.FORMAT_RGB16_565
- 错误修复:
context.get_source().get_surface()失败 #fdo-33013
添加对“./waf configure--libdir=xxx”的支持 #fdo-30230
- 文件变更:
升级到使用sphinx 1.0.7。
在pycairo存档文件中包含HTML文档。
- 生成更改:
将WAF更新为1.6.3
删除setup.py
- 其他变更:
改进/简化Unicode文件名支持。
改进/简化Unicode文本支持。
2010年5月20日
- 一般变更:
pycairo 1.8.10需要cairo 1.8.10(或更高版本)。
- 新类/类型:
win32打印表面
xcbsurface-使用xpyb添加xcb支持
- 错误修复:
修复libtool 2.2 (#fdo-27974 )
mingw32和pypy修复 (#fdo-25203 )
- 其他变更:
测试已更新。
win32printingsurface和xcbsurface的更改意味着pycairo 1.8.10与pycairo 1.8.8不兼容。因此,需要重新编译使用pycairo C API(如pygtk)的模块,才能使用pycairo 1.8.10。
1.8.8-2009年8月26日
- 一般变更:
pycairo 1.8.8需要cairo 1.8.8(或更高版本)。
从cvs移动到git。
添加对WAF构建工具的支持。
- 更新方法:
pdf/ps/svgsurface构造函数现在接受none作为文件名。
1.8.6-2009年6月25日
- 一般变更:
pycairo 1.8.6需要cairo 1.8.6(或更高版本)
- 错误修复:
imagesurface.create_from_png_read_func fix
ToyFontFace类型修复
#fdo-19221 :将cairo.matrix“*”运算符还原为其最初的工作方式。
- 其他变更:
文档已完成。
2009年3月19日
- 一般变更:
pycairo 1.8.4需要cairo 1.8.4(或更高版本)和python 2.6
- 错误修复:
20674:为渐变图案添加get/set_extend
- 新类:
cairo.ToyFontFace
- 新方法:
- Pattern.get_extendPattern.set_extendToyFontFace.get_familyToyFontFace.get_slantToyFontFace.get_weight
- 删除的方法:
- SurfacePattern.get_extendSurfacePattern.set_extend
- 其他变更:
已重新启用具有流函数的曲面的线程。文档更新。
2009年1月15日
pycairo 1.8.0导致一些使用线程的应用程序崩溃。因此,建议对线程应用程序升级到1.8.2。
- 错误修复:
#fdo-19287 :线程支持导致cairo.imagesurface崩溃
- 新方法:
Context.set_scaled_font
- API更改:
矩阵乘法:
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.
1.8.0-2008年12月15日
- 一般变更:
pycairo 1.8.0需要cairo 1.8.0(或更高版本)。添加文档(单独提供)
- 错误修复:
#fdo-18101 :添加线程支持
#fdo-18947 :cairo.surfacepattern应增加使用的表面
- 新方法:
- ScaledFont.get_scale_matrixSurface.mark_dirty_rectangleSurface.set_fallback_resolution
- 新常量:
- cairo.EXTEND_PADcairo.HAS_IMAGE_SURFACEcairo.HAS_USER_FONT
- API更改:
surface.mark_dirty:不再接受具有默认值的关键字参数。
pycaiopattern-frompattern(c api):有一个新的“base”参数-要修复 #fdo-18947 .
- 其他变更:
允许未知的cairo模式/表面类型使用pycairo基本模式/表面类型。
2008年8月18日
- 一般变更:
- pycairo 1.6.4需要cairo 1.6.4(或更高版本)。
需要python 2.5(或更高版本)。
- 错误修复:
#fdo-16112 :fix win32'python setup.py…'build--使用双引号
- 新方法:
- Context.has_current_pointContext.path_extentsImageSurface.format_stride_for_widthPSSurface.get_epsPSSurface.set_epsPSSurface.ps_level_to_stringPSSurface.restrict_to_levelSurface.copy_pageSurface.show_page
- 新常量:
cairo.ps_level_2,cairo.ps_level_3
- 其他变更:
test/pygame-test1.py,test/pygame-test2.py:pygame测试
示例/cairo-snippets/snippets/ellipse.py:update so line width is a constant width in device space not user space
2007年12月1日-2013年12月1日
- 一般变更:
pycairo 1.4.12需要cairo 1.4.12(或更高版本)。需要python 2.4(或更高版本)。
- 错误修复:
#fdo-10006 :更新autogen.sh以支持automake>=1.10
#fdo-13460 :使用python config获取python includes
- 其他变更:
允许对cairo.context进行子类化
创建“doc”子目录并启动FAQ文件
2007年3月14日
- 一般变更:
pycairo 1.4.0需要cairo 1.4.0(或更高版本)。
- 新方法:
- Context.clip_extentsContext.copy_clip_rectanglesContext.get_dashContext.get_dash_countContext.get_scaled_fontContext.glyph_extentsContext.glyph_pathContext.show_glyphsLinearGradient.get_linear_pointsRadialGradient.get_radial_circlesSolidPattern.get_rgbaSurfacePattern.get_surface
- 删除的方法:
imagesurface.create_for_array删除numeric python支持,因为numeric已经被numpy废弃,numpy数据可以使用imagesurface.create_读取。
- 其他变更:
已删除cairo.gtk模块(Pygtk 2.7.0及更高版本内置了cairo支持)。
2006年11月27日
pycairo 1.2.6需要cairo 1.2.6(或更高版本)。
mingw32编译器修复程序(cedric gustin)
设置.py改进(Cedric Gustin)
imagesurface.get_data()新方法添加了imagesurface.get_data_as_rgba()方法已删除
2006年8月21日
pycairo需要cairo 1.2.2(或更高版本)。
已通过执行$python setup.py install将setup.py更新为允许安装
examples/cairo-snippets/snippets/gradient-mask.py演示模式掩码的新示例。
cairo.svg模块已被删除,原因是:
cairo不包含SVG解析,因此此模块不属于pycairo。
libsvg cairo(底层C库)是未维护的。
2006年7月3日
- 一般变更:
pycairo已更新为与cairo 1.2.0一起使用。
- 新方法:
- Surface.set_fallback_resolutionSurface_get_contentImageSurface_get_formatImage_surface_get_stride
- 删除的方法:
- pdfsurface.set_dpi,pssurface.set_dpi,svgssurface.set_dpi
替换为surface.set_fallback_resolution
- 其他变更:
cairo.format_rgb16_565已添加
2006年5月29日
- 一般变更:
pycairo已更新为与cairo 1.1.6合作。
- 新对象:
SVGSurface
- 新方法:
- Context.get_group_targetContext.new_sub_pathContext.pop_groupContext.pop_group_to_sourceContext.push_groupContext.push_group_with_contentFontOptions.get_antialiasFontOptions.get_hint_metricsFontOptions.get_hint_styleFontOptions.get_subpixel_orderFontOptions.set_antialiasFontOptions.set_hint_metricsFontOptions.set_hint_styleFontOptions.set_subpixel_orderPDFSurface.set_sizePSSurface.dsc_begin_page_setupPSSurface.dsc_begin_setupPSSurface.dsc_commentPSSurface.set_sizeScaledFont.get_font_faceScaledFont.text_extentsSurface.get_device_offsetXlibSurface.get_depth
- 更新方法:
pdfsurface()/pssurface()-现在可以像对象一样写入文件(如stringio)。
surface.write_to_png()和imagesurface.create_from_png()现在可以像对象(如stringio)一样写入文件。
选择字体、显示文本、文本范围和文本路径,现在接受Unicode对象。
- 其他变更:
其他错误修复。
- 新示例:
- examples/cairo_snippets/snippets_svg.pyexamples/cairo_snippets/snippets/ellipse.pyexamples/cairo_snippets/snippets/group.pyexamples/svg/svgconvert.py
2005年10月11日
- 一般变更:
pycairo已更新为与cairo 1.0.2一起使用。
- 支持的新cairo函数:
cairo.imagesurface.create_for_data()。
- 更新功能:
ctx.set_source_rgba(r,g,b,a=1.0)现在支持默认的alpha参数
- 其他变更:
matrix现在支持python序列协议,所以可以这样做:xx,yx,xy,yy,x0,y0=matrix
2005年8月31日
- 一般变更:
pycairo已更新为与cairo 1.0.0一起使用。
- 支持的新cairo函数:
- cairo.cairo_版本()cairo.cairo_version_string()。pssurface.set_dpi()。
- 模式现在在类层次结构中实现,新的构造函数是:
- cairo.solidpattern(r,g,b,a=1.0)cairo.surfacepattern(表面)cairo.lineargradient(X0、Y0、X1、Y1)cairo.radialgradient(cx0,cy0,radius0,cx1,cy1,radius1)
- 更新功能:
surface.write_to_png()现在接受文件对象和文件名
- 更新的示例:
GTK示例现在可以与pygtk>=2.7.0一起使用,而不需要cairo.gtk模块
- 错误修复:
修复“初始值设定项元素不是常量”编译器警告
0.9.0-2005年8月10日
- 一般变更:
pycairo已更新为与cairo 0.9.0一起使用。
- 支持的新cairo函数:
- cairo_get_antialiascairo_set_antialiascairo_surface_mark_dirty_rectanglecairo_surface_flush
- 错误修复:
双缓冲现在可用于cairo.gtk模块
0.6.0-2005年8月1日
此版本有许多更改,将pycairo更新为新的cairo api。这里的更改列表不重复,请参阅cairo/news文件以获取所有这些API更改的完整详细信息。
与底层cairo函数名不同的pycairo方法名已被更改,以使pycairo更接近cairo,从而使cairo文档能够用于编写pycairo程序。注释已更新,以列出C API和pycairo API之间的差异。
context.copy_path()已经实现,它返回一个支持迭代器协议的路径实例。
现在需要python 2.3。
- 新示例:
examples/warpedtext.py:显示路径迭代器的用法
examples/cairo_snippets/:显示许多“cairo demo/cairo snippets”示例
示例/gtk/png_view.py:使用cairo.imagesurface.create_from_png()的示例
- 一般变更:
pycairo已更新为与cairo 0.6.0一起使用,包括使用cairo的新错误处理方案。
- 新功能:
cairo.content_color、cairo.alpha、cairo.color_alpha已添加用于处理曲面。
已添加新类cairo.fontoptions。
cairo.imagesurface.create_from_png()现在接受文件名字符串或文件对象
已为cairo_get_font_options、cairo set_font_options和cairo surface_get_font_options添加了新的包装函数。
0.5.1-2005年6月22日
- 新功能:
新类别cairo.win32surface(niki spahiev)
cairo.has_win32_surface,cairo.has_p_surface等被定义为允许访问cairo features.h中的值。
- 修正:
修复cairo_mask、cairo_mask_surface和cairo_stroke_preserve包装
根据GTK+2.7(Gustavo Carneiro)正确编译
其他小修复,包括GCC4.0警告的修复
0.4.0-2005年3月10日
- 新的 Cairo 绑定:
- cairo_font_extents
- 删除的绑定:
- cairo_font_set_transformcairo_font_current_transform
- 新示例:
gtk/hangman.py
- 其他:
更改了版本编号以直接对应 Cairo 版本pycairo。因此,例如,pycairo版本0.4.0表示已经用cairo 0.4.0开发和测试的pycairo版本。
2005年1月14日
pycairo许可证已经更改,现在它在lgpl和mpl下具有双重许可,与cairo本身相同。有关详细信息,请参阅复制文件以及copying-lgpl-2.1和copying-mpl-1.1。
- 新的 Cairo 绑定:
- cairo_pdf_surface_createcairo_set_target_pdf
- 新的libsvg cairo绑定:
- svg_cairo_parsesvg_cairo_parse_buffersvg_cairo_rendersvg_cairo_get_size
- 其他:
添加了——没有pygtk配置选项。
已将pycairo api _new()函数重命名为_wrap(),以允许_new()执行
用于python __new__ 功能。
新示例:svg2png.py和svview.py。
0.1.3-2004年11月24日
在最近的服务器崩溃之后,我们放弃了所有未签名的快照。这让我们没有了 pycairo 的快照。
另外,源存储库中没有标记,所以我无法重新创建0.1.2快照,所以这里有一个新的0.1.3快照。
如果我把版本号弄错了或者在这次发布中遗漏了一些重要的内容,我很抱歉,我不是一个通常要进行pycairo维护的人。
- 新绑定:
- current_pathcurrent_path_flatcurrent_font_extents
- 变化:
填充范围、笔划范围:删除不必要的参数,并从方法更改为属性。
- 其他:
添加了两个新示例:context-subclass.py和warpedtext.py